diff options
-rw-r--r-- | scripting/workben/installer/IdeFinal.java | 125 | ||||
-rw-r--r-- | scripting/workben/installer/IdeUpdater.java | 176 | ||||
-rw-r--r-- | scripting/workben/installer/IdeVersion.java | 239 | ||||
-rw-r--r-- | scripting/workben/installer/IdeWelcome.java | 79 |
4 files changed, 619 insertions, 0 deletions
diff --git a/scripting/workben/installer/IdeFinal.java b/scripting/workben/installer/IdeFinal.java new file mode 100644 index 000000000000..47728a90bdf2 --- /dev/null +++ b/scripting/workben/installer/IdeFinal.java @@ -0,0 +1,125 @@ +package installer; + +/*
+ * Welcome.java
+ *
+ * Created on 04 July 2002, 15:43
+ */
+
+/**
+ *
+ * @author mike
+ */
+
+import java.awt.event.*;
+import java.util.*;
+import java.net.*;
+import javax.swing.*;
+
+public class IdeFinal extends javax.swing.JPanel implements ActionListener, InstallListener {
+
+ /** Creates new form Welcome */
+ public IdeFinal(InstallWizard wizard) {
+ this.wizard = wizard;
+ setBackground(java.awt.Color.white);
+ ideupdater = null;
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ private void initComponents() {//GEN-BEGIN:initComponents
+ statusPanel = new javax.swing.JPanel();
+ statusPanel.setBackground(java.awt.Color.white);
+ statusLine = new javax.swing.JLabel("Ready", javax.swing.JLabel.CENTER);
+
+ setLayout(new java.awt.BorderLayout());
+
+ statusPanel.setLayout(new java.awt.BorderLayout());
+
+ statusLine.setText("Waiting to install IDE support.");
+ statusPanel.add(statusLine, java.awt.BorderLayout.CENTER);
+
+ add(statusPanel, java.awt.BorderLayout.CENTER);
+ nav = new NavPanel(wizard, true, true, true, InstallWizard.IDEVERSIONS, "");
+ nav.setNextListener(this);
+ nav.removeCancelListener(nav);
+ nav.setCancelListener(this);
+ nav.navNext.setText("Install");
+ add(nav, java.awt.BorderLayout.SOUTH);
+ }//GEN-END:initComponents
+
+ public java.awt.Dimension getPreferredSize() {
+ return new java.awt.Dimension(InstallWizard.DEFWIDTH, InstallWizard.DEFHEIGHT);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ // navNext is "Install"
+ if (e.getSource() == nav.navNext)
+ {
+ JProgressBar progressBar=new JProgressBar();
+ progressBar.setMaximum(10);
+ progressBar.setValue(0);
+ statusPanel.add(progressBar, java.awt.BorderLayout.SOUTH);
+ nav.enableNext(false);
+ nav.enableBack(false);
+ nav.enableCancel(false);
+ ArrayList locations = wizard.getLocations();
+ //System.out.println("here "+locations.size());
+ // Returned 1
+ String progpath=null;
+ String path=null;
+ String classespath=null;
+ for (int i =0;i<locations.size();i++){
+ path= (String)locations.get(i);
+
+ //InstallWizard.currentPath = path;
+ ideupdater = new IdeUpdater( path, statusLine, progressBar );
+ ideupdater.addInstallListener(this);
+ InstallWizard.setInstallStarted(true);
+ //InstallWizard.setPatchedTypes(false);
+ //InstallWizard.setPatchedJava(false);
+ //InstallWizard.setPatchedRDB(false);
+ ideupdater.start();
+ }
+ }
+
+ // set to "Exit" at end of installation process
+ if (e.getSource() == nav.navCancel) {
+ int answer = JOptionPane.showConfirmDialog(wizard, "Are you sure you want to exit?");
+ if (answer == JOptionPane.YES_OPTION)
+ {
+ wizard.exitForm(null);
+ }
+ else
+ {
+ return;
+ }
+ }
+ }// actionPerformed
+
+
+ public void installationComplete(InstallationEvent ev) {
+ //System.out.println("Detected installation complete");
+ //if( InstUtil.hasNetbeansInstallation() || InstUtil.hasJeditInstallation() ) {
+ //System.out.println("Detected installation complete (IDE(s) detected)");
+ nav.removeCancelListener(this);
+ nav.setCancelListener(nav);
+ nav.navCancel.setText("Finish");
+ nav.enableCancel(true);
+ ideupdater = null;
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel statusPanel;
+ private javax.swing.JLabel statusLine;
+ private InstallWizard wizard;
+ private NavPanel nav;
+ //private XmlUpdater xud;
+ private IdeUpdater ideupdater;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/scripting/workben/installer/IdeUpdater.java b/scripting/workben/installer/IdeUpdater.java new file mode 100644 index 000000000000..def08e6d7a63 --- /dev/null +++ b/scripting/workben/installer/IdeUpdater.java @@ -0,0 +1,176 @@ +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) { + + File jeditLauncher = new File( installPath + File.separator + "jedit.jar" ); + File netbeansLauncher = null; + + String opSys =System.getProperty("os.name"); + if (opSys.indexOf("Windows") != -1) { + netbeansLauncher = new File( installPath + "bin" + File.separator + "runide.exe" ); + } + else { + netbeansLauncher = new File( installPath + "bin" + File.separator + "runide.sh" ); + } + + if( netbeansLauncher.isFile() ) { + 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 diff --git a/scripting/workben/installer/IdeVersion.java b/scripting/workben/installer/IdeVersion.java new file mode 100644 index 000000000000..9513398fd08e --- /dev/null +++ b/scripting/workben/installer/IdeVersion.java @@ -0,0 +1,239 @@ +package installer; + +/*
+ * Welcome.java
+ *
+ * Created on 04 July 2002, 15:43
+ */
+
+/**
+ *
+ * @author mike
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.util.*;
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.table.*;
+import javax.swing.SwingUtilities.*;
+
+public class IdeVersion extends javax.swing.JPanel implements ActionListener, TableModelListener {
+
+ /** Creates new form Welcome */
+ public IdeVersion(InstallWizard wizard) {
+ this.wizard=wizard;
+ setBackground(Color.white);
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ private void initComponents() {
+ Properties props = null;
+ JPanel versionPanel = new JPanel();
+ setLayout(new BorderLayout());
+
+
+ try {
+ //props = InstUtil.getNetbeansLocation();
+
+ Properties netbeansProps = InstUtil.getNetbeansLocation();
+ Properties jeditProps = InstUtil.getJeditLocation();
+ Properties ideProps = new Properties();
+ for( int n = 0; n < netbeansProps.size(); n++ ) {
+ for( int v = 0; v < versions.length; v++ ) {
+ String key = versions[v];
+ String path = null;
+ if ( (path = netbeansProps.getProperty(key) ) != null ) {
+ //System.out.println( "n="+n+" v="+v + " Netbeans " + " key=" + key + " path=" + path );
+ ideProps.put(key, path);
+ }
+ }
+ }
+ for( int j = 0; j < jeditProps.size(); j++ ) {
+ for( int v = 0; v < versions.length; v++ ) {
+ String key = versions[v];
+ String path = null;
+ if ((path = jeditProps.getProperty(key)) != null) {
+ //System.out.println( "j="+j+" v="+v + " jEdit " + " key=" + key + " path=" + path );
+ ideProps.put(key, path);
+ }
+ }
+ }
+ props = ideProps;
+
+ /*
+ int len = versions.length;
+ for (int i = 0; i < len; i++) {
+ System.out.println( i + "start for" );
+ String key = versions[i];
+ String path = null;
+ if ((path = netbeansProps.getProperty(key)) != null) {
+ System.out.println( i + " Netbeans " + " key=" + key + " path=" + path );
+ //props.put(key, path);
+ }
+ else if ((path = jeditProps.getProperty(key)) != null) {
+ System.out.println( i + " jEdit " + " key=" + key + " path=" + path );
+ //props.put(key, path);
+ }
+ System.out.println( i + "end for" );
+ }
+ */
+ }
+ catch (IOException eIO) {
+ //Message about no installed versions found
+ System.err.println("Failed to parse .netbeans/ide.log");
+ //JOptionPane.showMessageDialog(this, "There was a problem reading from the NetBeans ide.log file.", "Parse Error", JOptionPane.ERROR_MESSAGE);
+ //wizard.exitForm(null);
+ }
+
+ tableModel = new MyTableModelIDE (props, versions);
+ if (tableModel.getRowCount() == 0)
+ {
+ JOptionPane.showMessageDialog(this, "No compatible IDEs were found.", "Invalid versions", JOptionPane.ERROR_MESSAGE);
+ //wizard.exitForm(null);
+ }
+
+ tableModel.addTableModelListener(this);
+ JTable tableVersions = new JTable(tableModel);
+ tableVersions.setPreferredSize(new Dimension(InstallWizard.DEFWIDTH,InstallWizard.DEFHEIGHT));
+ tableVersions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
+ tableVersions.doLayout();
+ setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+ //JScrollPane scroll = new JScrollPane(tableVersions);
+ //versionPanel.add(scroll);
+ versionPanel.add(tableVersions);
+ JTextArea area = new JTextArea("Please select IDEs below that you wish to add Scripting support to");
+ area.setLineWrap(true);
+ area.setEditable(false);
+ add(area, BorderLayout.NORTH);
+ add(versionPanel, BorderLayout.CENTER);
+ nav = new NavPanel(wizard, true, false, true, InstallWizard.IDEWELCOME, InstallWizard.IDEFINAL);
+ nav.setNextListener(this);
+ add(nav, BorderLayout.SOUTH);
+
+ }// initComponents
+
+
+ public java.awt.Dimension getPreferredSize() {
+ return new java.awt.Dimension(320, 280);
+ }
+
+
+ public void actionPerformed(ActionEvent ev) {
+ wizard.clearLocations();
+ int len = tableModel.data.size();
+ for (int i = 0; i < len; i++) {
+ ArrayList list = (ArrayList)tableModel.data.get(i);
+ if (((Boolean)list.get(0)).booleanValue() == true)
+ wizard.storeLocation((String)list.get(2));
+ }
+
+ //System.out.println(wizard.getLocations());
+ }
+
+
+ public void tableChanged(TableModelEvent e) {
+ if (tableModel.isAnySelected()) {
+ nav.enableNext(true);
+ }
+ else {
+ nav.enableNext(false);
+ }
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JTextField jTextField2;
+ private InstallWizard wizard;
+ private MyTableModelIDE tableModel;
+ private NavPanel nav;
+ //private static final String [] versions = {"StarOffice 6.0", "OpenOffice.org 1.0","OpenOffice.org 1.0.1","OpenOffice.org 642","OpenOffice.org 643","StarOffice 6.1"};
+ //private static final String [] versions = {"OpenOffice.org 643"};
+
+ private static final String [] versions = {"NetBeans 3.4", "jEdit 4.0.3"};
+ // End of variables declaration//GEN-END:variables
+
+}
+
+
+class MyTableModelIDE extends AbstractTableModel {
+ ArrayList data;
+ String colNames[] = {"Install", "Name", "Location"};
+
+ MyTableModelIDE (Properties properties, String [] validVersions) {
+ data = new ArrayList();
+ //System.out.println(properties);
+
+ int len = validVersions.length;
+ for (int i = 0; i < len; i++) {
+ String key = validVersions[i];
+ String path = null;
+
+ if ((path = properties.getProperty(key)) != null) {
+ ArrayList row = new ArrayList();
+ row.add(0, new Boolean(false));
+ row.add(1, key);
+ row.add(2, properties.getProperty(key));
+ data.add(row);
+ }
+ }
+ }// MyTableModel
+
+ public int getColumnCount() {
+ return 3;
+ }
+
+ public int getRowCount() {
+ return data.size();
+ }
+
+ public String getColumnName(int col) {
+ return colNames[col];
+ }
+
+ public Object getValueAt(int row, int col) {
+ ArrayList aRow = (ArrayList)data.get(row);
+ return aRow.get(col);
+ }
+
+ public Class getColumnClass(int c) {
+ return getValueAt(0, c).getClass();
+ }
+
+ public boolean isCellEditable(int row, int col) {
+ if (col == 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public void setValueAt(Object value, int row, int col) {
+ ArrayList aRow = (ArrayList)data.get(row);
+ aRow.set(col, value);
+ fireTableCellUpdated(row, col);
+ }
+
+ String [] getSelected() {
+ return null;
+ }
+
+ public boolean isAnySelected() {
+ Iterator iter = data.iterator();
+ while (iter.hasNext()) {
+ ArrayList row = (ArrayList)iter.next();
+ if (((Boolean)row.get(0)).booleanValue() == true) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
+
diff --git a/scripting/workben/installer/IdeWelcome.java b/scripting/workben/installer/IdeWelcome.java new file mode 100644 index 000000000000..f2e25b67c7b4 --- /dev/null +++ b/scripting/workben/installer/IdeWelcome.java @@ -0,0 +1,79 @@ +package installer; + +/*
+ * Welcome.java
+ *
+ * Created on 04 July 2002, 15:43
+ */
+
+/**
+ *
+ * @author mike
+ */
+import java.awt.event.*;
+import javax.swing.*;
+import java.io.*;
+import java.net.*;
+import java.awt.*;
+
+public class IdeWelcome extends javax.swing.JPanel implements ActionListener {
+
+ /** Creates new form Welcome */
+ public IdeWelcome(InstallWizard wizard) {
+ this.wizard = wizard;
+ setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ private void initComponents() {//GEN-BEGIN:initComponents
+ welcomePanel = new javax.swing.JPanel();
+ area = new javax.swing.JTextArea();
+
+ setLayout(new java.awt.BorderLayout());
+
+ welcomePanel.setLayout(new java.awt.BorderLayout());
+ //area.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+ area.setEditable(false);
+ area.setLineWrap(true);
+ area.setText("\n Click Next to include Scripting Framework support for IDEs.");
+ area.append("\n Click Cancel exit the Installation process. \n");
+ if( InstUtil.hasNetbeansInstallation() ) {
+ area.append("\n \tA version of Netbeans has been detected. \n");
+ }
+ if( InstUtil.hasJeditInstallation() ) {
+ area.append("\n \tA version of jEdit has been detected.");
+ }
+
+ welcomePanel.add(area, java.awt.BorderLayout.CENTER);
+ add(welcomePanel, java.awt.BorderLayout.CENTER);
+ NavPanel nav = new NavPanel(wizard, false, true, true, "", InstallWizard.IDEVERSIONS);
+ nav.setNextListener(this);
+ add(nav, java.awt.BorderLayout.SOUTH);
+
+ //Banner br = new Banner();
+ //add(br, java.awt.BorderLayout.WEST);
+
+ }//GEN-END:initComponents
+
+ public java.awt.Dimension getPreferredSize() {
+ return new java.awt.Dimension(InstallWizard.DEFWIDTH, InstallWizard.DEFHEIGHT);
+ }
+
+ public void actionPerformed(ActionEvent ev)
+ {
+ //Perform next actions here...
+ }
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel welcomePanel;
+ private javax.swing.JTextArea area;
+ private InstallWizard wizard;
+
+ // End of variables declaration//GEN-END:variables
+}
|