summaryrefslogtreecommitdiff
path: root/scripting/workben/installer/IdeUpdater.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/workben/installer/IdeUpdater.java')
-rw-r--r--scripting/workben/installer/IdeUpdater.java172
1 files changed, 172 insertions, 0 deletions
diff --git a/scripting/workben/installer/IdeUpdater.java b/scripting/workben/installer/IdeUpdater.java
new file mode 100644
index 000000000000..dd7dbb0991a8
--- /dev/null
+++ b/scripting/workben/installer/IdeUpdater.java
@@ -0,0 +1,172 @@
+package installer;
+
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+//import org.xml.sax.*;
+//import org.w3c.dom.*;
+//import javax.xml.parsers.*;
+import java.net.URL;
+import java.net.JarURLConnection;
+//import javax.xml.parsers.*;
+import javax.swing.*;
+
+/**
+ * The <code>XmlUpdater</code> pulls a META-INF/converter.xml
+ * file out of a jar file and parses it, providing access to this
+ * information in a <code>Vector</code> of <code>ConverterInfo</code>
+ * objects.
+ *
+ * @author Aidan Butler
+ */
+public class IdeUpdater extends Thread {
+
+ private String classesPath = null;
+ private String jarfilename;
+ private String installPath;
+
+ private JLabel statusLabel;
+
+ private Vector listeners;
+ private Thread internalThread;
+ private boolean threadSuspended;
+ private JProgressBar progressBar;
+
+ private boolean isNetbeansPath = false;
+
+
+ public IdeUpdater(String installPath, JLabel statusLabel, JProgressBar pBar) {
+
+ if (installPath.endsWith(File.separator) == false)
+ installPath += File.separator;
+
+ //File jeditLauncher = new File( installPath + "jedit.jar" );
+ File netbeansLauncher = new File( installPath + "bin" );
+
+ if( netbeansLauncher.isDirectory() ) {
+ isNetbeansPath = true;
+ installPath = installPath +"modules" + File.separator;
+ }
+ /*
+ else if( jeditLauncher.isFile() ){
+ isNetbeansPath = false;
+ installPath = installPath + "jars" + File.separator;
+ }
+ */
+
+ System.out.println( "IdeUpdater installPath is " + installPath + " isNetbeansPath is " + isNetbeansPath );
+ this.installPath = installPath;
+ this.statusLabel = statusLabel;
+ listeners = new Vector();
+ threadSuspended = false;
+ progressBar=pBar;
+ progressBar.setStringPainted(true);
+ }// XmlUpdater
+
+
+ public boolean checkStop()
+ {
+ if (internalThread == Thread.currentThread())
+ return false;
+ return true;
+ }// checkStop
+
+
+ public void checkSuspend()
+ {
+ if (threadSuspended)
+ {
+ synchronized(this)
+ {
+ while (threadSuspended)
+ {
+ try {
+ wait();
+ } catch (InterruptedException eInt) {
+ //...
+ }
+ }
+ }
+ }
+ }// checkSuspend
+
+
+ public void setSuspend()
+ {
+ threadSuspended = true;
+ }// setSuspend
+
+
+ public void setResume()
+ {
+ threadSuspended = false;
+ notify();
+ }// setResume
+
+
+ public void setStop()
+ {
+ internalThread = null;
+ }// setStop
+
+
+ public void run() {
+
+ //InputStream istream;
+ //URL url;
+ //String fileName = null;
+
+ internalThread = Thread.currentThread();
+
+ progressBar.setString("Unzipping Required Files");
+ ZipData zd = new ZipData("SFrameworkInstall.jar");
+
+ // Adding IDE support
+ if( isNetbeansPath ) {
+ if (!zd.extractEntry("ide/office.jar",installPath, statusLabel))
+ {
+ onInstallComplete();
+ return;
+ }
+ }
+ else {
+ if (!zd.extractEntry("ide/idesupport.jar",installPath, statusLabel))
+ {
+ onInstallComplete();
+ return;
+ }
+ if (!zd.extractEntry("ide/OfficeScripting.jar",installPath, statusLabel))
+ {
+ onInstallComplete();
+ return;
+ }
+ }
+
+ //System.out.println("About to call register");
+ //Register.register(installPath+File.separator, statusLabel, progressBar);
+
+ statusLabel.setText("Installation Complete");
+ progressBar.setString("Installation Complete");
+ progressBar.setValue(10);
+ onInstallComplete();
+
+ }// run
+
+
+ public void addInstallListener(InstallListener listener)
+ {
+ listeners.addElement(listener);
+ }// addInstallListener
+
+
+ private void onInstallComplete()
+ {
+ Enumeration e = listeners.elements();
+ while (e.hasMoreElements())
+ {
+ InstallListener listener = (InstallListener)e.nextElement();
+ listener.installationComplete(null);
+ }
+ }// onInstallComplete
+
+}// XmlUpdater class