blob: 8c3e666eb0737f58cd1229aa38c82d17318c1d42 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package installer;
/*
* InstallWizard.java
*
* Created on 04 July 2002, 15:09
*/
/**
*
* @author mike
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
public class InstallWizard extends javax.swing.JFrame implements ActionListener {
/*
private static class ShutdownHook extends Thread {
public void run()
{
if (InstallWizard.isInstallStarted())
{
// Check for and backup any config.xml files
// Check for and backup any StarBasic macro files
// Check for and backup ProtocolHandler
if (!InstallWizard.isPatchedTypes())
{
File backup = new File(InstUtil.getTmpDir(), "TypeDetection.xml");
File destination = new File(InstallWizard.getTypesPath());
InstUtil.copy(backup, destination); //Restore typedetection.xml
}
if (!InstallWizard.isPatchedJava())
{
File backup = new File(InstUtil.getTmpDir(), "Java.xml");
File destination = new File(InstallWizard.getJavaPath());
InstUtil.copy(backup, destination); //Restore typedetection.xml
}
if (!InstallWizard.isPatchedRDB())
{
File backup = new File(InstUtil.getTmpDir(), "applicat.rdb");
File destination = new File(InstallWizard.getJavaPath());
//InstUtil.copy(backup, destination); //Restore typedetection.xml
}
System.out.println( "ShutdownHook" );
}
InstUtil.removeTmpDir();
}
}// class ShutdownHook
static {
Runtime rt=Runtime.getRuntime();
rt.addShutdownHook(new ShutdownHook());
}
*/
/** Creates new form InstallWizard */
public InstallWizard() {
super("Office Scripting Framework Installer - Early Developer Release");
try {
System.out.print("All diagnostic output is being redirected to SFrameworkInstall.log\n");
System.out.print("Location: "+ System.getProperty( "user.dir" ) +
File.separator + "SFrameworkInstall.log\n");
LogStream log = new LogStream( "SFrameworkInstall.log" );
System.setErr(log);
System.setOut(log);
}
catch( FileNotFoundException fnfe ) {
System.err.println("Office Scripting Framework Installer - Error: ");
System.err.println("Unable to create log file for installation.");
exitForm(null);
}
//setBackground(Color.WHITE);
setBackground(new Color(0,0,0));
locations = new ArrayList();
//Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
Point center = new Point( 400, 400 );
int windowWidth=200;
int windowHeight=300;
setSize(windowWidth,windowHeight);
setBounds((center.x-windowWidth/2)-115,(center.y-windowWidth/2)-100, windowWidth,windowHeight);
initComponents();
setResizable(false);
}
/** This method is called from within the constructor to
* initialize the form.
*/
private void initComponents() {
navigation = new javax.swing.JPanel();
navBack = new javax.swing.JButton();
navNext = new javax.swing.JButton();
navCancel = new javax.swing.JButton();
screens = new javax.swing.JPanel();
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
navigation.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gridBagConstraints1;
navBack.setText("<< Back");
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.insets = new java.awt.Insets(1, 1, 1, 1);
navNext.setText("Next >>");
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 2;
gridBagConstraints1.gridy = 0;
navCancel.setText("Cancel");
gridBagConstraints1 = new java.awt.GridBagConstraints();
gridBagConstraints1.gridx = 6;
gridBagConstraints1.gridy = 0;
//navigation.add(navNext, gridBagConstraints1);
//navigation.add(navBack, gridBagConstraints1);
//navigation.add(navCancel, gridBagConstraints1);
getContentPane().add(navigation, java.awt.BorderLayout.SOUTH);
screens.setLayout(new java.awt.CardLayout());
screens.add(WELCOME, new Welcome(this));
version = new Version(this);
screens.add(VERSIONS, version);
_final = new Final(this);
screens.add(FINAL, _final);
//boolean hasIDEInstallation = (InstUtil.hasNetbeansInstallation() || InstUtil.hasJeditInstallation()) ;
boolean hasIDEInstallation = ( InstUtil.hasNetbeansInstallation() ) ;
if( hasIDEInstallation )
{
idewelcome = new IdeWelcome(this);
screens.add(IDEWELCOME, idewelcome);
ideversion = new IdeVersion(this);
screens.add(IDEVERSIONS, ideversion);
idefinal = new IdeFinal(this);
screens.add(IDEFINAL, idefinal);
}
getContentPane().add(screens, java.awt.BorderLayout.CENTER);
navNext.addActionListener(this);
navNext.addActionListener(version);
navNext.addActionListener(_final);
if( hasIDEInstallation )
{
navNext.addActionListener(ideversion);
navNext.addActionListener(idefinal);
}
navCancel.addActionListener(this);
navBack.addActionListener(this);
URL url = this.getClass().getResource("sidebar.jpg");
JLabel sideBar = new JLabel();
sideBar.setIcon(new ImageIcon(url));
getContentPane().add (sideBar, java.awt.BorderLayout.WEST);
pack();
}// initComponents
/** Exit the Application */
public void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == navNext)
{
((CardLayout)screens.getLayout()).next(screens);
}
if (e.getSource() == navCancel)
{
exitForm(null);
}
if (e.getSource() == navBack)
{
((CardLayout)screens.getLayout()).previous(screens);
}
}// actionPerformed
public static void storeLocation(String path)
{
locations.add(path);
}
public static ArrayList getLocations()
{
return locations;
}
public static void clearLocations()
{
locations.clear();
}
public void show(String cardName)
{
((CardLayout)screens.getLayout()).show(screens, cardName);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
String officePath = null;
String netbeansPath = null;
//String jeditPath = null;
int i = 0;
while (i < args.length) {
if (args[i].equals("-help")) {
printUsage();
System.exit(0);
}
if (args[i].equals("-office"))
officePath = args[++i];
if (args[i].equals("-netbeans"))
netbeansPath = args[++i];
if (args[i].equals("-net"))
bNetworkInstall = true;
if (args[i].equals("-bindings"))
bBindingsInstall = true;
//if (args[i].equals("-jedit"))
// jeditPath = args[++i];
i++;
}
//if (officePath == null && netbeansPath == null && jeditPath == null)
if (officePath == null && netbeansPath == null)
new InstallWizard().show();
JLabel label = new JLabel();
JProgressBar progressbar = new JProgressBar();
try {
System.out.println("Log file is: " +
System.getProperty("user.dir") +
File.separator + "SFrameworkInstall.log");
LogStream log = new LogStream( "SFrameworkInstall.log" );
System.setErr(log);
System.setOut(log);
}
catch( FileNotFoundException fnfe ) {
System.err.println("Error: Unable to create log file: "
+ fnfe.getMessage());
System.exit(-1);
}
if (officePath != null) {
XmlUpdater xud = new XmlUpdater(officePath, label, progressbar, bNetworkInstall, bBindingsInstall );
xud.run();
}
if (netbeansPath != null) {
IdeUpdater ideup = new IdeUpdater(netbeansPath, label, progressbar);
ideup.run();
}
//if (jeditPath != null) {
// IdeUpdater ideup = new IdeUpdater(jeditPath, label, progressbar);
// ideup.run();
//}
}
private static void printUsage() {
System.err.println("java -jar SFrameworkInstall.jar");
System.err.println("\t[-office <path_to_office_installation]");
System.err.println("\t[-netbeans <path_to_netbeans_installation]");
System.err.println("\t[-net]");
System.err.println("\t[-bindings]");
System.err.println("\n\n-net indicates that this is the network part of a network install.");
System.err.println("-bindings will only install the menu & key bindings in user/config/soffice.cfg.");
//System.err.println("\t[-jedit <path_to_jedit_installation]");
}
public static synchronized boolean isPatchedTypes()
{
return bPatchedTypes;
}
public static synchronized boolean isPatchedJava()
{
return bPatchedJava;
}
public static synchronized boolean isPatchedRDB()
{
return bPatchedRDB;
}
public static synchronized boolean isInstallStarted()
{
return bInstallStarted;
}
public static synchronized void setPatchedTypes(boolean value)
{
bPatchedTypes = value;
}
public static synchronized void setPatchedJava(boolean value)
{
bPatchedJava = value;
}
public static synchronized void setPatchedRDB(boolean value)
{
bPatchedRDB = value;
}
public static synchronized void setInstallStarted(boolean value)
{
bInstallStarted = value;
}
public static synchronized void setTypesPath(String path)
{
typesPath = path;
}
public static synchronized void setJavaPath(String path)
{
javaPath = path;
}
public static synchronized String getTypesPath()
{
return typesPath;
}
public static synchronized String getJavaPath()
{
return javaPath;
}
private javax.swing.JPanel navigation;
private javax.swing.JButton navBack;
private javax.swing.JButton navNext;
private javax.swing.JButton navCancel;
private javax.swing.JPanel screens;
private Version version = null;
private Final _final = null;
private IdeVersion ideversion = null;
private IdeFinal idefinal = null;
private IdeWelcome idewelcome = null;
private static ArrayList locations = null;
public static String VERSIONS = "VERSIONS";
public static String WELCOME = "WELCOME";
public static String FINAL = "FINAL";
public static String IDEVERSIONS = "IDEVERSIONS";
public static String IDEWELCOME = "IDEWELCOME";
public static String IDEFINAL = "IDEFINAL";
public static int DEFWIDTH = 480;
public static int DEFHEIGHT = 240;
private static String typesPath = null;
private static String javaPath = null;
public static boolean bNetworkInstall = false;
public static boolean bBindingsInstall = false;
private static boolean bPatchedTypes = false;
private static boolean bPatchedJava = false;
private static boolean bPatchedRDB = false;
private static boolean bInstallStarted = false;
}// InstallWizard