package net.sf.launch4j.form; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public abstract class JreForm extends JPanel { protected final JLabel _jrePathLabel = new JLabel(); protected final JLabel _jreMinLabel = new JLabel(); protected final JLabel _jreMaxLabel = new JLabel(); protected final JLabel _jvmOptionsTextLabel = new JLabel(); protected final JTextField _jrePathField = new JTextField(); protected final JTextField _jreMinField = new JTextField(); protected final JTextField _jreMaxField = new JTextField(); protected final JTextArea _jvmOptionsTextArea = new JTextArea(); protected final JLabel _initialHeapSizeLabel = new JLabel(); protected final JLabel _maxHeapSizeLabel = new JLabel(); protected final JTextField _initialHeapSizeField = new JTextField(); protected final JTextField _maxHeapSizeField = new JTextField(); protected final JComboBox _varCombo = new JComboBox(); protected final JButton _propertyButton = new JButton(); protected final JButton _optionButton = new JButton(); protected final JButton _envPropertyButton = new JButton(); protected final JButton _envOptionButton = new JButton(); protected final JTextField _envVarField = new JTextField(); protected final JTextField _maxHeapPercentField = new JTextField(); protected final JTextField _initialHeapPercentField = new JTextField(); protected final JComboBox _jdkPreferenceCombo = new JComboBox(); /** * Default constructor */ public JreForm() { initializePanel(); } /** * Adds fill components to empty cells in the first row and first column of the grid. * This ensures that the grid spacing will be the same as shown in the designer. * @param cols an array of column indices in the first row where fill components should be added. * @param rows an array of row indices in the first column where fill components should be added. */ void addFillComponents( Container panel, int[] cols, int[] rows ) { Dimension filler = new Dimension(10,10); boolean filled_cell_11 = false; CellConstraints cc = new CellConstraints(); if ( cols.length > 0 && rows.length > 0 ) { if ( cols[0] == 1 && rows[0] == 1 ) { /** add a rigid area */ panel.add( Box.createRigidArea( filler ), cc.xy(1,1) ); filled_cell_11 = true; } } for( int index = 0; index < cols.length; index++ ) { if ( cols[index] == 1 && filled_cell_11 ) { continue; } panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) ); } for( int index = 0; index < rows.length; index++ ) { if ( rows[index] == 1 && filled_cell_11 ) { continue; } panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) ); } } /** * Helper method to load an image file from the CLASSPATH * @param imageName the package and name of the file to load relative to the CLASSPATH * @return an ImageIcon instance with the specified image file * @throws IllegalArgumentException if the image resource cannot be loaded. */ public ImageIcon loadImage( String imageName ) { try { ClassLoader classloader = getClass().getClassLoader(); java.net.URL url = classloader.getResource( imageName ); if ( url != null ) { ImageIcon icon = new ImageIcon( url ); return icon; } } catch( Exception e ) { e.printStackTrace(); } throw new IllegalArgumentException( "Unable to load image: " + imageName ); } public JPanel createPanel() { JPanel jpanel1 = new JPanel(); FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:7DLU:NONE,FILL:60DLU:NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,FILL:50DLU:GROW(1.0),CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE"); CellConstraints cc = new CellConstraints(); jpanel1.setLayout(formlayout1); _jrePathLabel.setName("jrePathLabel"); _jrePathLabel.setText(Messages.getString("jrePath")); jpanel1.add(_jrePathLabel,cc.xy(2,2)); _jreMinLabel.setName("jreMinLabel"); _jreMinLabel.setText(Messages.getString("jreMin")); jpanel1.add(_jreMinLabel,cc.xy(2,4)); _jreMaxLabel.setName("jreMaxLabel"); _jreMaxLabel.setText(Messages.getString("jreMax")); jpanel1.add(_jreMaxLabel,cc.xy(2,6)); _jvmOptionsTextLabel.setName("jvmOptionsTextLabel"); _jvmOptionsTextLabel.setText(Messages.getString("jvmOptions")); jpanel1.add(_jvmOptionsTextLabel,new CellConstraints(2,12,1,1,CellConstraints.DEFAULT,CellConstraints.TOP)); _jrePathField.setName("jrePathField"); _jrePathField.setToolTipText(Messages.getString("jrePathTip")); jpanel1.add(_jrePathField,cc.xywh(4,2,7,1)); _jreMinField.setName("jreMinField"); jpanel1.add(_jreMinField,cc.xy(4,4)); _jreMaxField.setName("jreMaxField"); jpanel1.add(_jreMaxField,cc.xy(4,6)); _jvmOptionsTextArea.setName("jvmOptionsTextArea"); _jvmOptionsTextArea.setToolTipText(Messages.getString("jvmOptionsTip")); JScrollPane jscrollpane1 = new JScrollPane(); jscrollpane1.setViewportView(_jvmOptionsTextArea); jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); jpanel1.add(jscrollpane1,cc.xywh(4,12,7,1)); _initialHeapSizeLabel.setName("initialHeapSizeLabel"); _initialHeapSizeLabel.setText(Messages.getString("initialHeapSize")); jpanel1.add(_initialHeapSizeLabel,cc.xy(2,8)); _maxHeapSizeLabel.setName("maxHeapSizeLabel"); _maxHeapSizeLabel.setText(Messages.getString("maxHeapSize")); jpanel1.add(_maxHeapSizeLabel,cc.xy(2,10)); JLabel jlabel1 = new JLabel(); jlabel1.setText("MB"); jpanel1.add(jlabel1,cc.xy(6,8)); JLabel jlabel2 = new JLabel(); jlabel2.setText("MB"); jpanel1.add(jlabel2,cc.xy(6,10)); _initialHeapSizeField.setName("initialHeapSizeField"); jpanel1.add(_initialHeapSizeField,cc.xy(4,8)); _maxHeapSizeField.setName("maxHeapSizeField"); jpanel1.add(_maxHeapSizeField,cc.xy(4,10)); jpanel1.add(createPanel1(),cc.xywh(2,14,9,1)); _maxHeapPercentField.setName("maxHeapPercentField"); jpanel1.add(_maxHeapPercentField,cc.xy(8,10)); _initialHeapPercentField.setName("initialHeapPercentField"); jpanel1.add(_initialHeapPercentField,cc.xy(8,8)); _jdkPreferenceCombo.setName("jdkPreferenceCombo"); jpanel1.add(_jdkPreferenceCombo,cc.xywh(8,4,3,1)); JLabel jlabel3 = new JLabel(); jlabel3.setText(Messages.getString("freeMemory")); jpanel1.add(jlabel3,cc.xy(10,8)); JLabel jlabel4 = new JLabel(); jlabel4.setText(Messages.getString("freeMemory")); jpanel1.add(jlabel4,cc.xy(10,10)); addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7,8,9,10,11 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }); return jpanel1; } public JPanel createPanel1() { JPanel jpanel1 = new JPanel(); FormLayout formlayout1 = new FormLayout("RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:3DLU:NONE,FILL:DEFAULT:NONE,FILL:3DLU:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE"); CellConstraints cc = new CellConstraints(); jpanel1.setLayout(formlayout1); _varCombo.setName("varCombo"); jpanel1.add(_varCombo,cc.xy(3,1)); _propertyButton.setActionCommand("Add"); _propertyButton.setIcon(loadImage("images/edit_add16.png")); _propertyButton.setName("propertyButton"); _propertyButton.setText(Messages.getString("property")); _propertyButton.setToolTipText(Messages.getString("propertyTip")); jpanel1.add(_propertyButton,cc.xy(5,1)); _optionButton.setActionCommand("Add"); _optionButton.setIcon(loadImage("images/edit_add16.png")); _optionButton.setName("optionButton"); _optionButton.setText(Messages.getString("option")); _optionButton.setToolTipText(Messages.getString("optionTip")); jpanel1.add(_optionButton,cc.xy(7,1)); _envPropertyButton.setActionCommand("Add"); _envPropertyButton.setIcon(loadImage("images/edit_add16.png")); _envPropertyButton.setName("envPropertyButton"); _envPropertyButton.setText(Messages.getString("property")); _envPropertyButton.setToolTipText(Messages.getString("propertyTip")); jpanel1.add(_envPropertyButton,cc.xy(5,3)); JLabel jlabel1 = new JLabel(); jlabel1.setText(Messages.getString("varsAndRegistry")); jpanel1.add(jlabel1,cc.xy(1,1)); JLabel jlabel2 = new JLabel(); jlabel2.setIcon(loadImage("images/asterix.gif")); jlabel2.setText(Messages.getString("envVar")); jpanel1.add(jlabel2,cc.xy(1,3)); _envOptionButton.setActionCommand("Add"); _envOptionButton.setIcon(loadImage("images/edit_add16.png")); _envOptionButton.setName("envOptionButton"); _envOptionButton.setText(Messages.getString("option")); _envOptionButton.setToolTipText(Messages.getString("optionTip")); jpanel1.add(_envOptionButton,cc.xy(7,3)); _envVarField.setName("envVarField"); jpanel1.add(_envVarField,cc.xy(3,3)); addFillComponents(jpanel1,new int[]{ 2,4,6 },new int[]{ 2 }); return jpanel1; } /** * Initializer */ protected void initializePanel() { setLayout(new BorderLayout()); add(createPanel(), BorderLayout.CENTER); } }