xref: /trunk/main/scripting/workben/installer/InstallWizard.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 package installer;
2 
3 /*
4  * InstallWizard.java
5  *
6  * Created on 04 July 2002, 15:09
7  */
8 
9 /**
10  *
11  * @author  mike
12  */
13 
14 import javax.swing.*;
15 import java.awt.*;
16 import java.awt.event.*;
17 import java.util.*;
18 import java.net.*;
19 import java.io.*;
20 
21 public class InstallWizard extends javax.swing.JFrame implements ActionListener {
22 /*
23     private static class ShutdownHook extends Thread {
24         public void run()
25     {
26             if (InstallWizard.isInstallStarted())
27             {
28                 // Check for and backup any config.xml files
29                 // Check for and backup any StarBasic macro files
30                 // Check for and backup ProtocolHandler
31 
32                 if (!InstallWizard.isPatchedTypes())
33         {
34                     File backup = new File(InstUtil.getTmpDir(), "TypeDetection.xml");
35                     File destination = new File(InstallWizard.getTypesPath());
36                     InstUtil.copy(backup, destination); //Restore typedetection.xml
37         }
38         if (!InstallWizard.isPatchedJava())
39         {
40                     File backup = new File(InstUtil.getTmpDir(), "Java.xml");
41                     File destination = new File(InstallWizard.getJavaPath());
42                     InstUtil.copy(backup, destination); //Restore typedetection.xml
43         }
44         if (!InstallWizard.isPatchedRDB())
45         {
46                     File backup = new File(InstUtil.getTmpDir(), "applicat.rdb");
47                     File destination = new File(InstallWizard.getJavaPath());
48                     //InstUtil.copy(backup, destination); //Restore typedetection.xml
49         }
50 
51                 System.out.println( "ShutdownHook" );
52             }
53 
54             InstUtil.removeTmpDir();
55     }
56     }// class ShutdownHook
57 
58     static {
59         Runtime rt=Runtime.getRuntime();
60         rt.addShutdownHook(new ShutdownHook());
61     }
62 */
63     /** Creates new form InstallWizard */
64     public InstallWizard() {
65         super("Office Scripting Framework Installer - Early Developer Release");
66 
67     try {
68         System.out.print("All diagnostic output is being redirected to SFrameworkInstall.log\n");
69         System.out.print("Location: "+  System.getProperty( "user.dir" ) +
70             File.separator + "SFrameworkInstall.log\n");
71 
72         LogStream log = new LogStream( "SFrameworkInstall.log" );
73                  System.setErr(log);
74 
75                  System.setOut(log);
76     }
77     catch( FileNotFoundException fnfe ) {
78         System.err.println("Office Scripting Framework Installer - Error: ");
79         System.err.println("Unable to create log file for installation.");
80         exitForm(null);
81     }
82 
83     //setBackground(Color.WHITE);
84     setBackground(new Color(0,0,0));
85     locations = new ArrayList();
86     //Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
87     Point center = new Point( 400, 400 );
88     int windowWidth=200;
89     int windowHeight=300;
90     setSize(windowWidth,windowHeight);
91     setBounds((center.x-windowWidth/2)-115,(center.y-windowWidth/2)-100, windowWidth,windowHeight);
92     initComponents();
93     setResizable(false);
94     }
95 
96     /** This method is called from within the constructor to
97      * initialize the form.
98      */
99     private void initComponents() {
100         navigation = new javax.swing.JPanel();
101         navBack = new javax.swing.JButton();
102         navNext = new javax.swing.JButton();
103         navCancel = new javax.swing.JButton();
104         screens = new javax.swing.JPanel();
105 
106         addWindowListener(new java.awt.event.WindowAdapter() {
107             public void windowClosing(java.awt.event.WindowEvent evt) {
108                 exitForm(evt);
109             }
110         });
111 
112         navigation.setLayout(new java.awt.GridBagLayout());
113         java.awt.GridBagConstraints gridBagConstraints1;
114 
115         navBack.setText("<< Back");
116         gridBagConstraints1 = new java.awt.GridBagConstraints();
117         gridBagConstraints1.insets = new java.awt.Insets(1, 1, 1, 1);
118 
119         navNext.setText("Next >>");
120         gridBagConstraints1 = new java.awt.GridBagConstraints();
121         gridBagConstraints1.gridx = 2;
122         gridBagConstraints1.gridy = 0;
123 
124         navCancel.setText("Cancel");
125         gridBagConstraints1 = new java.awt.GridBagConstraints();
126         gridBagConstraints1.gridx = 6;
127         gridBagConstraints1.gridy = 0;
128         //navigation.add(navNext, gridBagConstraints1);
129         //navigation.add(navBack, gridBagConstraints1);
130         //navigation.add(navCancel, gridBagConstraints1);
131 
132         getContentPane().add(navigation, java.awt.BorderLayout.SOUTH);
133         screens.setLayout(new java.awt.CardLayout());
134         screens.add(WELCOME, new Welcome(this));
135         version = new Version(this);
136         screens.add(VERSIONS, version);
137     _final = new Final(this);
138         screens.add(FINAL, _final);
139 
140     //boolean hasIDEInstallation = (InstUtil.hasNetbeansInstallation() || InstUtil.hasJeditInstallation()) ;
141     boolean hasIDEInstallation = ( InstUtil.hasNetbeansInstallation() ) ;
142 
143     if( hasIDEInstallation )
144     {
145         idewelcome = new IdeWelcome(this);
146         screens.add(IDEWELCOME, idewelcome);
147         ideversion = new IdeVersion(this);
148         screens.add(IDEVERSIONS, ideversion);
149         idefinal = new IdeFinal(this);
150         screens.add(IDEFINAL, idefinal);
151     }
152         getContentPane().add(screens, java.awt.BorderLayout.CENTER);
153 
154     navNext.addActionListener(this);
155     navNext.addActionListener(version);
156     navNext.addActionListener(_final);
157 
158     if( hasIDEInstallation )
159     {
160         navNext.addActionListener(ideversion);
161         navNext.addActionListener(idefinal);
162     }
163 
164     navCancel.addActionListener(this);
165     navBack.addActionListener(this);
166 
167 
168     URL url = this.getClass().getResource("sidebar.jpg");
169     JLabel sideBar = new JLabel();
170     sideBar.setIcon(new ImageIcon(url));
171     getContentPane().add (sideBar, java.awt.BorderLayout.WEST);
172         pack();
173     }// initComponents
174 
175     /** Exit the Application */
176     public void exitForm(java.awt.event.WindowEvent evt) {
177         System.exit(0);
178     }
179 
180 
181     public void actionPerformed(ActionEvent e)
182     {
183         if (e.getSource() == navNext)
184     {
185             ((CardLayout)screens.getLayout()).next(screens);
186     }
187 
188     if (e.getSource() == navCancel)
189     {
190             exitForm(null);
191     }
192 
193     if (e.getSource() == navBack)
194     {
195             ((CardLayout)screens.getLayout()).previous(screens);
196     }
197     }// actionPerformed
198 
199     public static void storeLocation(String path)
200     {
201         locations.add(path);
202     }
203 
204     public static ArrayList getLocations()
205     {
206         return locations;
207     }
208 
209     public static void clearLocations()
210     {
211         locations.clear();
212     }
213 
214     public void show(String cardName)
215     {
216         ((CardLayout)screens.getLayout()).show(screens, cardName);
217     }
218 
219     /**
220     * @param args the command line arguments
221     */
222     public static void main(String args[]) {
223         String officePath = null;
224         String netbeansPath = null;
225         //String jeditPath = null;
226         int i = 0;
227 
228         while (i < args.length) {
229             if (args[i].equals("-help")) {
230                 printUsage();
231                 System.exit(0);
232             }
233             if (args[i].equals("-office"))
234                 officePath = args[++i];
235             if (args[i].equals("-netbeans"))
236                 netbeansPath = args[++i];
237             if (args[i].equals("-net"))
238                 bNetworkInstall = true;
239             if (args[i].equals("-bindings"))
240                 bBindingsInstall = true;
241             //if (args[i].equals("-jedit"))
242             //    jeditPath = args[++i];
243             i++;
244         }
245 
246         //if (officePath == null && netbeansPath == null && jeditPath == null)
247         if (officePath == null && netbeansPath == null)
248             new InstallWizard().show();
249 
250         JLabel label = new JLabel();
251         JProgressBar progressbar = new JProgressBar();
252 
253         try {
254             System.out.println("Log file is: " +
255                 System.getProperty("user.dir") +
256                 File.separator + "SFrameworkInstall.log");
257 
258             LogStream log = new LogStream( "SFrameworkInstall.log" );
259             System.setErr(log);
260             System.setOut(log);
261         }
262         catch( FileNotFoundException fnfe ) {
263             System.err.println("Error: Unable to create log file: "
264                 + fnfe.getMessage());
265             System.exit(-1);
266         }
267 
268         if (officePath != null) {
269             XmlUpdater xud = new XmlUpdater(officePath, label, progressbar, bNetworkInstall, bBindingsInstall );
270             xud.run();
271         }
272 
273         if (netbeansPath != null) {
274             IdeUpdater ideup = new IdeUpdater(netbeansPath, label, progressbar);
275             ideup.run();
276         }
277 
278         //if (jeditPath != null) {
279         //    IdeUpdater ideup = new IdeUpdater(jeditPath, label, progressbar);
280         //    ideup.run();
281         //}
282     }
283 
284     private static void printUsage() {
285         System.err.println("java -jar SFrameworkInstall.jar");
286         System.err.println("\t[-office <path_to_office_installation]");
287         System.err.println("\t[-netbeans <path_to_netbeans_installation]");
288         System.err.println("\t[-net]");
289         System.err.println("\t[-bindings]");
290         System.err.println("\n\n-net indicates that this is the network part of a network install.");
291         System.err.println("-bindings will only install the menu & key bindings in user/config/soffice.cfg.");
292         //System.err.println("\t[-jedit <path_to_jedit_installation]");
293     }
294 
295     public static synchronized boolean isPatchedTypes()
296     {
297         return bPatchedTypes;
298     }
299 
300     public static synchronized boolean isPatchedJava()
301     {
302         return bPatchedJava;
303     }
304 
305     public static synchronized boolean isPatchedRDB()
306     {
307         return bPatchedRDB;
308     }
309 
310     public static synchronized boolean isInstallStarted()
311     {
312         return bInstallStarted;
313     }
314 
315     public static synchronized void setPatchedTypes(boolean value)
316     {
317         bPatchedTypes = value;
318     }
319 
320     public static synchronized void setPatchedJava(boolean value)
321     {
322         bPatchedJava = value;
323     }
324 
325     public static synchronized void setPatchedRDB(boolean value)
326     {
327         bPatchedRDB = value;
328     }
329 
330     public static synchronized void setInstallStarted(boolean value)
331     {
332         bInstallStarted = value;
333     }
334 
335     public static synchronized void setTypesPath(String path)
336     {
337         typesPath = path;
338     }
339 
340     public static synchronized void setJavaPath(String path)
341     {
342         javaPath = path;
343     }
344 
345     public static synchronized String getTypesPath()
346     {
347         return typesPath;
348     }
349 
350     public static synchronized String getJavaPath()
351     {
352         return javaPath;
353     }
354 
355     private javax.swing.JPanel  navigation;
356     private javax.swing.JButton navBack;
357     private javax.swing.JButton navNext;
358     private javax.swing.JButton navCancel;
359     private javax.swing.JPanel  screens;
360 
361     private Version version = null;
362     private Final _final  = null;
363     private IdeVersion ideversion = null;
364     private IdeFinal idefinal = null;
365     private IdeWelcome idewelcome = null;
366     private static ArrayList locations = null;
367 
368     public static String VERSIONS = "VERSIONS";
369     public static String WELCOME  = "WELCOME";
370     public static String FINAL    = "FINAL";
371     public static String IDEVERSIONS = "IDEVERSIONS";
372     public static String IDEWELCOME  = "IDEWELCOME";
373     public static String IDEFINAL    = "IDEFINAL";
374 
375     public static int DEFWIDTH     = 480;
376     public static int DEFHEIGHT    = 240;
377 
378     private static String typesPath = null;
379     private static String javaPath  = null;
380 
381     public static boolean bNetworkInstall   = false;
382     public static boolean bBindingsInstall   = false;
383 
384     private static boolean bPatchedTypes     = false;
385     private static boolean bPatchedJava      = false;
386     private static boolean bPatchedRDB       = false;
387     private static boolean bInstallStarted   = false;
388 
389 }// InstallWizard
390