1*cdf0e10cSrcweir package installer; 2*cdf0e10cSrcweir 3*cdf0e10cSrcweir /* 4*cdf0e10cSrcweir * Welcome.java 5*cdf0e10cSrcweir * 6*cdf0e10cSrcweir * Created on 04 July 2002, 15:43 7*cdf0e10cSrcweir */ 8*cdf0e10cSrcweir 9*cdf0e10cSrcweir /** 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * @author mike 12*cdf0e10cSrcweir */ 13*cdf0e10cSrcweir 14*cdf0e10cSrcweir import java.awt.*; 15*cdf0e10cSrcweir import java.awt.event.*; 16*cdf0e10cSrcweir import java.io.*; 17*cdf0e10cSrcweir import java.util.*; 18*cdf0e10cSrcweir import javax.swing.*; 19*cdf0e10cSrcweir import javax.swing.event.*; 20*cdf0e10cSrcweir import javax.swing.table.*; 21*cdf0e10cSrcweir import javax.swing.SwingUtilities.*; 22*cdf0e10cSrcweir 23*cdf0e10cSrcweir public class IdeVersion extends javax.swing.JPanel implements ActionListener, TableModelListener { 24*cdf0e10cSrcweir 25*cdf0e10cSrcweir /** Creates new form Welcome */ 26*cdf0e10cSrcweir public IdeVersion(InstallWizard wizard) { 27*cdf0e10cSrcweir this.wizard=wizard; 28*cdf0e10cSrcweir setBackground(Color.white); 29*cdf0e10cSrcweir initComponents(); 30*cdf0e10cSrcweir } 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir /** This method is called from within the constructor to 33*cdf0e10cSrcweir * initialize the form. 34*cdf0e10cSrcweir * WARNING: Do NOT modify this code. The content of this method is 35*cdf0e10cSrcweir * always regenerated by the Form Editor. 36*cdf0e10cSrcweir */ 37*cdf0e10cSrcweir private void initComponents() { 38*cdf0e10cSrcweir Properties props = null; 39*cdf0e10cSrcweir JPanel versionPanel = new JPanel(); 40*cdf0e10cSrcweir setLayout(new BorderLayout()); 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir try { 44*cdf0e10cSrcweir //props = InstUtil.getNetbeansLocation(); 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir Properties netbeansProps = InstUtil.getNetbeansLocation(); 47*cdf0e10cSrcweir //Properties jeditProps = InstUtil.getJeditLocation(); 48*cdf0e10cSrcweir Properties ideProps = new Properties(); 49*cdf0e10cSrcweir if(netbeansProps!=null ) 50*cdf0e10cSrcweir { 51*cdf0e10cSrcweir System.out.println("**** Found netbeans install"); 52*cdf0e10cSrcweir for( int n = 0; n < netbeansProps.size(); n++ ) { 53*cdf0e10cSrcweir for( int v = 0; v < InstUtil.versions.length; v++ ) { 54*cdf0e10cSrcweir System.out.println("n: " +n+" v: " +v); 55*cdf0e10cSrcweir String key = InstUtil.versions[v]; 56*cdf0e10cSrcweir System.out.println("It got here1"); 57*cdf0e10cSrcweir String path = null; 58*cdf0e10cSrcweir if ( (path = netbeansProps.getProperty(key) ) != null ) { 59*cdf0e10cSrcweir //System.out.println( "n="+n+" v="+v + " Netbeans " + " key=" + key + " path=" + path ); 60*cdf0e10cSrcweir ideProps.put(key, path); 61*cdf0e10cSrcweir } 62*cdf0e10cSrcweir } 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir } 65*cdf0e10cSrcweir //System.out.println("*** About to look for jedit install"); 66*cdf0e10cSrcweir /* 67*cdf0e10cSrcweir if(jeditProps!=null) 68*cdf0e10cSrcweir { 69*cdf0e10cSrcweir for( int j = 0; j < jeditProps.size(); j++ ) { 70*cdf0e10cSrcweir for( int v = 0; v < InstUtil.versions.length; v++ ) { 71*cdf0e10cSrcweir System.out.println("j: " +j+" v: " +v); 72*cdf0e10cSrcweir String key = InstUtil.versions[v]; 73*cdf0e10cSrcweir String path = null; 74*cdf0e10cSrcweir if ((path = jeditProps.getProperty(key)) != null) { 75*cdf0e10cSrcweir //System.out.println( "j="+j+" v="+v + " jEdit " + " key=" + key + " path=" + path ); 76*cdf0e10cSrcweir ideProps.put(key, path); 77*cdf0e10cSrcweir } 78*cdf0e10cSrcweir } 79*cdf0e10cSrcweir } 80*cdf0e10cSrcweir } 81*cdf0e10cSrcweir */ 82*cdf0e10cSrcweir props = ideProps; 83*cdf0e10cSrcweir } 84*cdf0e10cSrcweir catch (IOException eIO) { 85*cdf0e10cSrcweir System.err.println("Failed to parse .netbeans/ide.log"); 86*cdf0e10cSrcweir //JOptionPane.showMessageDialog(this, "There was a problem reading from the NetBeans ide.log file.", "Parse Error", JOptionPane.ERROR_MESSAGE); 87*cdf0e10cSrcweir } 88*cdf0e10cSrcweir catch (Exception e) { 89*cdf0e10cSrcweir System.err.println("Exception thrown in initComponents"); 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir tableModel = new MyTableModelIDE (props, InstUtil.versions); 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir if (tableModel.getRowCount() == 0) 95*cdf0e10cSrcweir { 96*cdf0e10cSrcweir JOptionPane.showMessageDialog(this, "No compatible IDEs were found.", "Invalid versions", JOptionPane.ERROR_MESSAGE); 97*cdf0e10cSrcweir //wizard.exitForm(null); 98*cdf0e10cSrcweir } 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir tableModel.addTableModelListener(this); 101*cdf0e10cSrcweir JTable tableVersions = new JTable(tableModel) { 102*cdf0e10cSrcweir public String getToolTipText(MouseEvent event) 103*cdf0e10cSrcweir { 104*cdf0e10cSrcweir int col = columnAtPoint( event.getPoint() ); 105*cdf0e10cSrcweir if (col != 2) 106*cdf0e10cSrcweir return null; 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir int row = rowAtPoint( event.getPoint() ); 109*cdf0e10cSrcweir Object o = getValueAt(row, col); 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir if (o == null) 112*cdf0e10cSrcweir return null; 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir if (o.toString().equals("")) 115*cdf0e10cSrcweir return null; 116*cdf0e10cSrcweir 117*cdf0e10cSrcweir return o.toString(); 118*cdf0e10cSrcweir } 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir public Point getToolTipLocation(MouseEvent event) 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir int col = columnAtPoint( event.getPoint() ); 123*cdf0e10cSrcweir if (col != 2) 124*cdf0e10cSrcweir return null; 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir int row = rowAtPoint( event.getPoint() ); 127*cdf0e10cSrcweir Object o = getValueAt(row,col); 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir if (o == null) 130*cdf0e10cSrcweir return null; 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir if (o.toString().equals("")) 133*cdf0e10cSrcweir return null; 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir Point pt = getCellRect(row, col, true).getLocation(); 136*cdf0e10cSrcweir pt.translate(-1,-2); 137*cdf0e10cSrcweir return pt; 138*cdf0e10cSrcweir } 139*cdf0e10cSrcweir }; 140*cdf0e10cSrcweir 141*cdf0e10cSrcweir JScrollPane scroll = new JScrollPane(tableVersions); 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir tableVersions.setPreferredSize( 144*cdf0e10cSrcweir new Dimension(InstallWizard.DEFWIDTH,InstallWizard.DEFHEIGHT)); 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir tableVersions.setRowSelectionAllowed(false); 147*cdf0e10cSrcweir tableVersions.setColumnSelectionAllowed(false); 148*cdf0e10cSrcweir tableVersions.setCellSelectionEnabled(false); 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir initColumnSizes(tableVersions, tableModel); 151*cdf0e10cSrcweir versionPanel.add(scroll); 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir JTextArea area = new JTextArea("Please select IDEs below that you wish to add Scripting support to"); 154*cdf0e10cSrcweir area.setLineWrap(true); 155*cdf0e10cSrcweir area.setEditable(false); 156*cdf0e10cSrcweir add(area, BorderLayout.NORTH); 157*cdf0e10cSrcweir add(versionPanel, BorderLayout.CENTER); 158*cdf0e10cSrcweir nav = new NavPanel(wizard, true, false, true, InstallWizard.IDEWELCOME, InstallWizard.IDEFINAL); 159*cdf0e10cSrcweir nav.setNextListener(this); 160*cdf0e10cSrcweir add(nav, BorderLayout.SOUTH); 161*cdf0e10cSrcweir 162*cdf0e10cSrcweir }// initComponents 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir public java.awt.Dimension getPreferredSize() { 166*cdf0e10cSrcweir return new java.awt.Dimension(320, 280); 167*cdf0e10cSrcweir } 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir public void actionPerformed(ActionEvent ev) { 171*cdf0e10cSrcweir wizard.clearLocations(); 172*cdf0e10cSrcweir int len = tableModel.data.size(); 173*cdf0e10cSrcweir for (int i = 0; i < len; i++) { 174*cdf0e10cSrcweir ArrayList list = (ArrayList)tableModel.data.get(i); 175*cdf0e10cSrcweir if (((Boolean)list.get(0)).booleanValue() == true) 176*cdf0e10cSrcweir wizard.storeLocation((String)list.get(2)); 177*cdf0e10cSrcweir } 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir //System.out.println(wizard.getLocations()); 180*cdf0e10cSrcweir } 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir public void tableChanged(TableModelEvent e) { 184*cdf0e10cSrcweir if (tableModel.isAnySelected()) { 185*cdf0e10cSrcweir nav.enableNext(true); 186*cdf0e10cSrcweir } 187*cdf0e10cSrcweir else { 188*cdf0e10cSrcweir nav.enableNext(false); 189*cdf0e10cSrcweir } 190*cdf0e10cSrcweir } 191*cdf0e10cSrcweir 192*cdf0e10cSrcweir private void initColumnSizes(JTable table, MyTableModelIDE model) { 193*cdf0e10cSrcweir TableColumn column = null; 194*cdf0e10cSrcweir Component comp = null; 195*cdf0e10cSrcweir int headerWidth = 0; 196*cdf0e10cSrcweir int cellWidth = 0; 197*cdf0e10cSrcweir int preferredWidth = 0; 198*cdf0e10cSrcweir int totalWidth = 0; 199*cdf0e10cSrcweir Object[] longValues = model.longValues; 200*cdf0e10cSrcweir 201*cdf0e10cSrcweir for (int i = 0; i < 3; i++) { 202*cdf0e10cSrcweir column = table.getColumnModel().getColumn(i); 203*cdf0e10cSrcweir 204*cdf0e10cSrcweir try { 205*cdf0e10cSrcweir comp = column.getHeaderRenderer(). 206*cdf0e10cSrcweir getTableCellRendererComponent( 207*cdf0e10cSrcweir null, column.getHeaderValue(), 208*cdf0e10cSrcweir false, false, 0, 0); 209*cdf0e10cSrcweir headerWidth = comp.getPreferredSize().width; 210*cdf0e10cSrcweir } catch (NullPointerException e) { 211*cdf0e10cSrcweir // System.err.println("Null pointer exception!"); 212*cdf0e10cSrcweir // System.err.println(" getHeaderRenderer returns null in 1.3."); 213*cdf0e10cSrcweir // System.err.println(" The replacement is getDefaultRenderer."); 214*cdf0e10cSrcweir } 215*cdf0e10cSrcweir 216*cdf0e10cSrcweir // need to replace spaces in String before getting preferred width 217*cdf0e10cSrcweir if (longValues[i] instanceof String) { 218*cdf0e10cSrcweir longValues[i] = ((String)longValues[i]).replace(' ', '_'); 219*cdf0e10cSrcweir } 220*cdf0e10cSrcweir 221*cdf0e10cSrcweir System.out.println("longValues: " + longValues[i]); 222*cdf0e10cSrcweir comp = table.getDefaultRenderer(model.getColumnClass(i)). 223*cdf0e10cSrcweir getTableCellRendererComponent( 224*cdf0e10cSrcweir table, longValues[i], 225*cdf0e10cSrcweir false, false, 0, i); 226*cdf0e10cSrcweir cellWidth = comp.getPreferredSize().width; 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir preferredWidth = Math.max(headerWidth, cellWidth); 229*cdf0e10cSrcweir 230*cdf0e10cSrcweir if (false) { 231*cdf0e10cSrcweir System.out.println("Initializing width of column " 232*cdf0e10cSrcweir + i + ". " 233*cdf0e10cSrcweir + "preferredWidth = " + preferredWidth 234*cdf0e10cSrcweir + "; totalWidth = " + totalWidth 235*cdf0e10cSrcweir + "; leftWidth = " + (InstallWizard.DEFWIDTH - totalWidth)); 236*cdf0e10cSrcweir } 237*cdf0e10cSrcweir 238*cdf0e10cSrcweir //XXX: Before Swing 1.1 Beta 2, use setMinWidth instead. 239*cdf0e10cSrcweir if (i == 2) { 240*cdf0e10cSrcweir if (preferredWidth > InstallWizard.DEFWIDTH - totalWidth) 241*cdf0e10cSrcweir column.setPreferredWidth(InstallWizard.DEFWIDTH - totalWidth); 242*cdf0e10cSrcweir else 243*cdf0e10cSrcweir column.setPreferredWidth(preferredWidth); 244*cdf0e10cSrcweir } 245*cdf0e10cSrcweir else { 246*cdf0e10cSrcweir column.setMinWidth(preferredWidth); 247*cdf0e10cSrcweir totalWidth += preferredWidth; 248*cdf0e10cSrcweir } 249*cdf0e10cSrcweir } 250*cdf0e10cSrcweir } 251*cdf0e10cSrcweir 252*cdf0e10cSrcweir // Variables declaration - do not modify//GEN-BEGIN:variables 253*cdf0e10cSrcweir private javax.swing.JTextField jTextField2; 254*cdf0e10cSrcweir private InstallWizard wizard; 255*cdf0e10cSrcweir private MyTableModelIDE tableModel; 256*cdf0e10cSrcweir private NavPanel nav; 257*cdf0e10cSrcweir // End of variables declaration//GEN-END:variables 258*cdf0e10cSrcweir 259*cdf0e10cSrcweir } 260*cdf0e10cSrcweir 261*cdf0e10cSrcweir class MyTableModelIDE extends AbstractTableModel { 262*cdf0e10cSrcweir ArrayList data; 263*cdf0e10cSrcweir String colNames[] = {"", "IDE Name", "IDE Location"}; 264*cdf0e10cSrcweir Object[] longValues = new Object[] {Boolean.TRUE, "Name", "Location"}; 265*cdf0e10cSrcweir 266*cdf0e10cSrcweir MyTableModelIDE (Properties properties, String [] validVersions) { 267*cdf0e10cSrcweir data = new ArrayList(); 268*cdf0e10cSrcweir //System.out.println(properties); 269*cdf0e10cSrcweir 270*cdf0e10cSrcweir int len = validVersions.length; 271*cdf0e10cSrcweir for (int i = 0; i < len; i++) { 272*cdf0e10cSrcweir String key = validVersions[i]; 273*cdf0e10cSrcweir String path = null; 274*cdf0e10cSrcweir 275*cdf0e10cSrcweir if ((path = properties.getProperty(key)) != null) { 276*cdf0e10cSrcweir ArrayList row = new ArrayList(); 277*cdf0e10cSrcweir row.add(0, new Boolean(false)); 278*cdf0e10cSrcweir 279*cdf0e10cSrcweir row.add(1, key); 280*cdf0e10cSrcweir if (key.length() > ((String)longValues[1]).length()) { 281*cdf0e10cSrcweir longValues[1] = key; 282*cdf0e10cSrcweir } 283*cdf0e10cSrcweir 284*cdf0e10cSrcweir row.add(2, path); 285*cdf0e10cSrcweir if (path.length() > ((String)longValues[2]).length()) { 286*cdf0e10cSrcweir longValues[2] = path; 287*cdf0e10cSrcweir } 288*cdf0e10cSrcweir 289*cdf0e10cSrcweir data.add(row); 290*cdf0e10cSrcweir } 291*cdf0e10cSrcweir } 292*cdf0e10cSrcweir }// MyTableModel 293*cdf0e10cSrcweir 294*cdf0e10cSrcweir public int getColumnCount() { 295*cdf0e10cSrcweir return 3; 296*cdf0e10cSrcweir } 297*cdf0e10cSrcweir 298*cdf0e10cSrcweir public int getRowCount() { 299*cdf0e10cSrcweir return data.size(); 300*cdf0e10cSrcweir } 301*cdf0e10cSrcweir 302*cdf0e10cSrcweir public String getColumnName(int col) { 303*cdf0e10cSrcweir return colNames[col]; 304*cdf0e10cSrcweir } 305*cdf0e10cSrcweir 306*cdf0e10cSrcweir public Object getValueAt(int row, int col) { 307*cdf0e10cSrcweir if (row < 0 || row > getRowCount() || 308*cdf0e10cSrcweir col < 0 || col > getColumnCount()) 309*cdf0e10cSrcweir return null; 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir ArrayList aRow = (ArrayList)data.get(row); 312*cdf0e10cSrcweir return aRow.get(col); 313*cdf0e10cSrcweir } 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir public Class getColumnClass(int c) { 316*cdf0e10cSrcweir return getValueAt(0, c).getClass(); 317*cdf0e10cSrcweir } 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir public boolean isCellEditable(int row, int col) { 320*cdf0e10cSrcweir if (col == 0) { 321*cdf0e10cSrcweir return true; 322*cdf0e10cSrcweir } else { 323*cdf0e10cSrcweir return false; 324*cdf0e10cSrcweir } 325*cdf0e10cSrcweir } 326*cdf0e10cSrcweir 327*cdf0e10cSrcweir public void setValueAt(Object value, int row, int col) { 328*cdf0e10cSrcweir ArrayList aRow = (ArrayList)data.get(row); 329*cdf0e10cSrcweir aRow.set(col, value); 330*cdf0e10cSrcweir fireTableCellUpdated(row, col); 331*cdf0e10cSrcweir } 332*cdf0e10cSrcweir 333*cdf0e10cSrcweir String [] getSelected() { 334*cdf0e10cSrcweir return null; 335*cdf0e10cSrcweir } 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir public boolean isAnySelected() { 338*cdf0e10cSrcweir Iterator iter = data.iterator(); 339*cdf0e10cSrcweir while (iter.hasNext()) { 340*cdf0e10cSrcweir ArrayList row = (ArrayList)iter.next(); 341*cdf0e10cSrcweir if (((Boolean)row.get(0)).booleanValue() == true) { 342*cdf0e10cSrcweir return true; 343*cdf0e10cSrcweir } 344*cdf0e10cSrcweir } 345*cdf0e10cSrcweir return false; 346*cdf0e10cSrcweir } 347*cdf0e10cSrcweir 348*cdf0e10cSrcweir } 349*cdf0e10cSrcweir 350