mev-4.0.01/source/org/tigr/microarray/mev/script/scriptGUI/ScriptValueChangeDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * ScriptValueChangeDialog.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on March 10, 2004, 11:36 AM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.script.scriptGUI;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Color;
2 26 Feb 07 jari 14 import java.awt.Dimension;
2 26 Feb 07 jari 15 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 16 import java.awt.GridBagLayout;
2 26 Feb 07 jari 17 import java.awt.GridLayout;
2 26 Feb 07 jari 18 import java.awt.Insets;
2 26 Feb 07 jari 19 import java.awt.Toolkit;
2 26 Feb 07 jari 20 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 21 import java.awt.event.ActionListener;
2 26 Feb 07 jari 22 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 23 import java.util.Hashtable;
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25 import javax.swing.BorderFactory;
2 26 Feb 07 jari 26 import javax.swing.JButton;
2 26 Feb 07 jari 27 import javax.swing.JComboBox;
2 26 Feb 07 jari 28 import javax.swing.JComponent;
2 26 Feb 07 jari 29 import javax.swing.JDialog;
2 26 Feb 07 jari 30 import javax.swing.JFrame;
2 26 Feb 07 jari 31 import javax.swing.JLabel;
2 26 Feb 07 jari 32 import javax.swing.JOptionPane;
2 26 Feb 07 jari 33 import javax.swing.JPanel;
2 26 Feb 07 jari 34 import javax.swing.JScrollPane;
2 26 Feb 07 jari 35 import javax.swing.JTextField;
2 26 Feb 07 jari 36 import javax.swing.JTextPane;
2 26 Feb 07 jari 37 import javax.swing.border.BevelBorder;
2 26 Feb 07 jari 38
2 26 Feb 07 jari 39 import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory;
2 26 Feb 07 jari 40 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 41 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 42 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 43 import org.tigr.microarray.mev.script.ScriptManager;
2 26 Feb 07 jari 44 import org.tigr.microarray.mev.script.util.ParameterAttributes;
2 26 Feb 07 jari 45
2 26 Feb 07 jari 46 /**
2 26 Feb 07 jari 47  *
2 26 Feb 07 jari 48  * @author  braisted
2 26 Feb 07 jari 49  */
2 26 Feb 07 jari 50 public class ScriptValueChangeDialog extends AlgorithmDialog {
2 26 Feb 07 jari 51     
2 26 Feb 07 jari 52     private int result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 53     private ScriptManager manager;
2 26 Feb 07 jari 54     private String algName;
2 26 Feb 07 jari 55     private String origLine;
2 26 Feb 07 jari 56     private String line;
2 26 Feb 07 jari 57     private String key;
2 26 Feb 07 jari 58     private String origValue;
2 26 Feb 07 jari 59     private String valueType;
2 26 Feb 07 jari 60     
2 26 Feb 07 jari 61     private String leadingSpaces;
2 26 Feb 07 jari 62     private JLabel prefix;
2 26 Feb 07 jari 63     private String value;
2 26 Feb 07 jari 64     private JLabel suffix;
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     private JComponent valueComponent;
2 26 Feb 07 jari 67     
2 26 Feb 07 jari 68     private Hashtable parameterHash;
2 26 Feb 07 jari 69     
2 26 Feb 07 jari 70     /** Creates a new instance of ScriptValueChangeDialog
2 26 Feb 07 jari 71      * @param origLine original line from xml fiels
2 26 Feb 07 jari 72      * @param algName Algorithm name
2 26 Feb 07 jari 73      * @param manager
2 26 Feb 07 jari 74      */
2 26 Feb 07 jari 75     public ScriptValueChangeDialog(String origLine, String algName, ScriptManager manager) {
2 26 Feb 07 jari 76         super(new JFrame(), "Value Editor", true);
2 26 Feb 07 jari 77         this.manager = manager;
2 26 Feb 07 jari 78         this.algName = algName;
2 26 Feb 07 jari 79         this.origLine = origLine;
2 26 Feb 07 jari 80         leadingSpaces = new String();
2 26 Feb 07 jari 81         
2 26 Feb 07 jari 82         initializeValues();
2 26 Feb 07 jari 83         
2 26 Feb 07 jari 84         ParameterPanel paramPanel = new ParameterPanel("Script Line");
2 26 Feb 07 jari 85         paramPanel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 86         
2 26 Feb 07 jari 87         JLabel hintLabel = null;
2 26 Feb 07 jari 88         int lineBottomInset = 0;
2 26 Feb 07 jari 89         
2 26 Feb 07 jari 90     /*    if(valueType != null) {
2 26 Feb 07 jari 91             if(valueType.equals("unknown"))
2 26 Feb 07 jari 92                 hintLabel = new JLabel("(The proper value type could not be determined.)");
2 26 Feb 07 jari 93             else if(!valueType.equals("boolean"))
2 26 Feb 07 jari 94                 hintLabel = new JLabel("(Hint: The input value type appears to be "+valueType+".)");
2 26 Feb 07 jari 95             else
2 26 Feb 07 jari 96                 lineBottomInset = 15;
2 26 Feb 07 jari 97         }
2 26 Feb 07 jari 98      */
2 26 Feb 07 jari 99         
2 26 Feb 07 jari 100         paramPanel.add(prefix, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,lineBottomInset,0), 0, 0));
2 26 Feb 07 jari 101         paramPanel.add(valueComponent, new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,2,lineBottomInset,2), 0, 0));
2 26 Feb 07 jari 102         paramPanel.add(suffix, new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,lineBottomInset,0), 0, 0));
2 26 Feb 07 jari 103         if(hintLabel != null)
2 26 Feb 07 jari 104             paramPanel.add(hintLabel, new GridBagConstraints(0,1,3,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(20,0,5,0), 0, 0));
2 26 Feb 07 jari 105         
2 26 Feb 07 jari 106         JButton paramButton = new JButton("View Valid Parameters");
2 26 Feb 07 jari 107         paramButton.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
2 26 Feb 07 jari 108         paramButton.setFocusPainted(false);
2 26 Feb 07 jari 109         paramButton.addActionListener(new ParameterListener());
2 26 Feb 07 jari 110         paramButton.setPreferredSize(new Dimension(180, 30));
2 26 Feb 07 jari 111         paramButton.setSize(180, 30);
2 26 Feb 07 jari 112         paramPanel.add(paramButton, new GridBagConstraints(0,1,3,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(20,0,5,0), 0, 0));
2 26 Feb 07 jari 113                 
2 26 Feb 07 jari 114         parameterHash = manager.getParameterHash(algName);
2 26 Feb 07 jari 115         
2 26 Feb 07 jari 116         ButtonPanel bp = new ButtonPanel();
2 26 Feb 07 jari 117         
2 26 Feb 07 jari 118         supplantButtonPanel(bp);
2 26 Feb 07 jari 119         addContent(paramPanel);
2 26 Feb 07 jari 120         pack();
2 26 Feb 07 jari 121     }
2 26 Feb 07 jari 122     
2 26 Feb 07 jari 123     private void initializeValues() {
2 26 Feb 07 jari 124         String strPre;
2 26 Feb 07 jari 125         String strPost;
2 26 Feb 07 jari 126         int pnt = origLine.indexOf("value");
2 26 Feb 07 jari 127         
2 26 Feb 07 jari 128         if(pnt >= 0) {
2 26 Feb 07 jari 129             
2 26 Feb 07 jari 130             strPre = origLine.substring(0, pnt);
2 26 Feb 07 jari 131             
2 26 Feb 07 jari 132             leadingSpaces = "";
2 26 Feb 07 jari 133             
2 26 Feb 07 jari 134             char [] array = strPre.toCharArray();
2 26 Feb 07 jari 135             int i = 0;
2 26 Feb 07 jari 136             while( i < array.length && array[i] == ' ' ){
2 26 Feb 07 jari 137                 leadingSpaces += " ";
2 26 Feb 07 jari 138                 i++;
2 26 Feb 07 jari 139             }
2 26 Feb 07 jari 140             
2 26 Feb 07 jari 141             strPre = strPre.trim();
2 26 Feb 07 jari 142             
2 26 Feb 07 jari 143             strPost = origLine.substring(pnt);
2 26 Feb 07 jari 144             
2 26 Feb 07 jari 145             pnt = strPost.indexOf("\"");
2 26 Feb 07 jari 146             value = strPost.substring(pnt+1);
2 26 Feb 07 jari 147             strPost = new String(value);
2 26 Feb 07 jari 148             
2 26 Feb 07 jari 149             pnt = value.indexOf("\"");
2 26 Feb 07 jari 150             value = value.substring(0, pnt);
2 26 Feb 07 jari 151             value.trim();
2 26 Feb 07 jari 152             
2 26 Feb 07 jari 153             strPost = strPost.substring(pnt+1);
2 26 Feb 07 jari 154             
2 26 Feb 07 jari 155             prefix = createJLabel(strPre+" value=\"");
2 26 Feb 07 jari 156             suffix = createJLabel("\""+strPost);
2 26 Feb 07 jari 157             valueComponent = getValueComponent(value);        
2 26 Feb 07 jari 158         } else {
2 26 Feb 07 jari 159             prefix = createJLabel(" ");
2 26 Feb 07 jari 160             suffix = createJLabel(" ");
2 26 Feb 07 jari 161             valueComponent = new JLabel("Incorrect construction");
2 26 Feb 07 jari 162         }
2 26 Feb 07 jari 163         
2 26 Feb 07 jari 164         //get key
2 26 Feb 07 jari 165         pnt = origLine.indexOf("key");
2 26 Feb 07 jari 166         if(pnt >= 0) {
2 26 Feb 07 jari 167             strPost = origLine.substring(pnt);
2 26 Feb 07 jari 168             pnt = strPost.indexOf("\""); //leading quote
2 26 Feb 07 jari 169             strPost = strPost.substring(pnt+1);
2 26 Feb 07 jari 170             pnt = strPost.indexOf("\"");
2 26 Feb 07 jari 171             this.key = strPost.substring(0, pnt);
2 26 Feb 07 jari 172             this.key = this.key.trim();
2 26 Feb 07 jari 173         }
2 26 Feb 07 jari 174         
2 26 Feb 07 jari 175         
2 26 Feb 07 jari 176         //  }
2 26 Feb 07 jari 177     }
2 26 Feb 07 jari 178     
2 26 Feb 07 jari 179     private JLabel createJLabel(String text) {
2 26 Feb 07 jari 180         JLabel label = new JLabel(text);
2 26 Feb 07 jari 181         label.setBackground(Color.white);
2 26 Feb 07 jari 182         return label;
2 26 Feb 07 jari 183     }
2 26 Feb 07 jari 184     
2 26 Feb 07 jari 185     private JComponent getValueComponent(String val) {
2 26 Feb 07 jari 186         String type = "unknown";
2 26 Feb 07 jari 187         if(val.equals("true") || val.equals("false")) {
2 26 Feb 07 jari 188             String [] vals = new String[2];
2 26 Feb 07 jari 189             vals[0] = "true";
2 26 Feb 07 jari 190             vals[1] = "false";
2 26 Feb 07 jari 191             JComboBox box = new JComboBox(vals);
2 26 Feb 07 jari 192             if(val.equals("true"))
2 26 Feb 07 jari 193                 box.setSelectedIndex(0);
2 26 Feb 07 jari 194             else
2 26 Feb 07 jari 195                 box.setSelectedIndex(1);
2 26 Feb 07 jari 196             type = "boolean";
2 26 Feb 07 jari 197             valueType = type;
2 26 Feb 07 jari 198             return box;
2 26 Feb 07 jari 199         } else {
2 26 Feb 07 jari 200             boolean haveType = false;
2 26 Feb 07 jari 201             char [] array = val.toCharArray();
2 26 Feb 07 jari 202             for(int i = 0; i < array.length; i++) {
2 26 Feb 07 jari 203                 if(Character.isLetter(array[i]) && array[i] != '.'){
2 26 Feb 07 jari 204                     type = "a character string";
2 26 Feb 07 jari 205                     haveType = true;
2 26 Feb 07 jari 206                     break;
2 26 Feb 07 jari 207                 }
2 26 Feb 07 jari 208             }
2 26 Feb 07 jari 209             
2 26 Feb 07 jari 210             int dotCnt = 0;
2 26 Feb 07 jari 211             
2 26 Feb 07 jari 212             if(!haveType) {  //must be integer or fp
2 26 Feb 07 jari 213                 for(int i = 0; i < array.length; i++) {
2 26 Feb 07 jari 214                     if(array[i] == '.'){
2 26 Feb 07 jari 215                         dotCnt++;
2 26 Feb 07 jari 216                     }
2 26 Feb 07 jari 217                 }
2 26 Feb 07 jari 218                 if(dotCnt == 1) {
2 26 Feb 07 jari 219                     type = "a floating point number";
2 26 Feb 07 jari 220                     haveType = true;
2 26 Feb 07 jari 221                 } else if (dotCnt > 1) {
2 26 Feb 07 jari 222                     type = "a character string";
2 26 Feb 07 jari 223                     haveType = true;
2 26 Feb 07 jari 224                 } else if (dotCnt == 0) {
2 26 Feb 07 jari 225                     type = "an integer number";
2 26 Feb 07 jari 226                     haveType = true;
2 26 Feb 07 jari 227                 }
2 26 Feb 07 jari 228             }
2 26 Feb 07 jari 229             
2 26 Feb 07 jari 230             
2 26 Feb 07 jari 231             
2 26 Feb 07 jari 232             JTextField valField = new JTextField(val, val.length()+3);
2 26 Feb 07 jari 233             valueType = type;
2 26 Feb 07 jari 234             return valField;
2 26 Feb 07 jari 235         }
2 26 Feb 07 jari 236     }
2 26 Feb 07 jari 237     
2 26 Feb 07 jari 238     /**
2 26 Feb 07 jari 239      * Shows the dialog.
2 26 Feb 07 jari 240      */
2 26 Feb 07 jari 241     public int showModal() {
2 26 Feb 07 jari 242         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 243         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 244         show();
2 26 Feb 07 jari 245         return result;
2 26 Feb 07 jari 246     }
2 26 Feb 07 jari 247     
2 26 Feb 07 jari 248     public void onReset() {
2 26 Feb 07 jari 249         
2 26 Feb 07 jari 250     }
2 26 Feb 07 jari 251     
2 26 Feb 07 jari 252     /** Returns the currently selected and possibly edited XML line
2 26 Feb 07 jari 253      */
2 26 Feb 07 jari 254     public String getLine() {
2 26 Feb 07 jari 255         return line;
2 26 Feb 07 jari 256     }
2 26 Feb 07 jari 257     
2 26 Feb 07 jari 258     /** Returns the edited line
2 26 Feb 07 jari 259      */
2 26 Feb 07 jari 260     public String getValue() {
2 26 Feb 07 jari 261         if(valueComponent != null) {
2 26 Feb 07 jari 262             if(valueComponent instanceof JTextField)
2 26 Feb 07 jari 263                 return ((JTextField)valueComponent).getText();
2 26 Feb 07 jari 264             if(valueComponent instanceof JComboBox)
2 26 Feb 07 jari 265                 return (String)(((JComboBox)valueComponent).getSelectedItem());
2 26 Feb 07 jari 266         }
2 26 Feb 07 jari 267         return null;
2 26 Feb 07 jari 268     }
2 26 Feb 07 jari 269     
2 26 Feb 07 jari 270     private boolean validateValue(String val) {
2 26 Feb 07 jari 271         ParameterAttributes atts = manager.getParameterAttributes(this.algName, this.key);
2 26 Feb 07 jari 272         
2 26 Feb 07 jari 273         if(atts == null) {
2 26 Feb 07 jari 274             JOptionPane.showMessageDialog(this, "Parameter value, type, and constraints could not be verified.\n"+
2 26 Feb 07 jari 275             "Value will be committed but please consider it's validity.", "Parameter Validataion Warning", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 276             return true;
2 26 Feb 07 jari 277         }
2 26 Feb 07 jari 278         
2 26 Feb 07 jari 279         String type = atts.getValueType();
2 26 Feb 07 jari 280         if(!checkType(val, type)) {
2 26 Feb 07 jari 281             JOptionPane.showMessageDialog(this, "Parameter type seems incorrect ( requires: "+type+" )","Parameter Validataion Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 282             return false;
2 26 Feb 07 jari 283         }
2 26 Feb 07 jari 284         
2 26 Feb 07 jari 285         if(atts.hasConstraints()) {
2 26 Feb 07 jari 286             String minStr = atts.getMin();
2 26 Feb 07 jari 287             String maxStr = atts.getMax();
2 26 Feb 07 jari 288             
2 26 Feb 07 jari 289             if(!checkConstraints(val, type, minStr, maxStr)){
2 26 Feb 07 jari 290                 JOptionPane.showMessageDialog(this, "Parameter falls outside the constraints.","Parameter Validataion Error", JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 291                 return false;
2 26 Feb 07 jari 292                 
2 26 Feb 07 jari 293             }
2 26 Feb 07 jari 294             
2 26 Feb 07 jari 295         }           
2 26 Feb 07 jari 296         return true;
2 26 Feb 07 jari 297     }
2 26 Feb 07 jari 298     
2 26 Feb 07 jari 299     
2 26 Feb 07 jari 300     private boolean checkConstraints(String val, String type, String min, String max) {
2 26 Feb 07 jari 301         if(type.equals("int")){
2 26 Feb 07 jari 302             int value = Integer.parseInt(val);
2 26 Feb 07 jari 303             if(!min.equals("") && !max.equals(""))
2 26 Feb 07 jari 304                 return (value >= Integer.parseInt(min) && value <= Integer.parseInt(max));
2 26 Feb 07 jari 305             else if(!max.equals(""))
2 26 Feb 07 jari 306                 return (value <= Integer.parseInt(max));
2 26 Feb 07 jari 307             else if(!min.equals(""))
2 26 Feb 07 jari 308                 return (value >= Integer.parseInt(min));
2 26 Feb 07 jari 309             return true;
2 26 Feb 07 jari 310         } else if(type.equals("float")){
2 26 Feb 07 jari 311             float value = Float.parseFloat(val);
2 26 Feb 07 jari 312             if(!min.equals("") && !max.equals(""))
2 26 Feb 07 jari 313                 return (value >= Float.parseFloat(min) && value <= Float.parseFloat(max));
2 26 Feb 07 jari 314             else if(!max.equals(""))
2 26 Feb 07 jari 315                 return (value <= Float.parseFloat(max));
2 26 Feb 07 jari 316             else if(!min.equals(""))
2 26 Feb 07 jari 317                 return (value >= Float.parseFloat(min));
2 26 Feb 07 jari 318             return true;
2 26 Feb 07 jari 319         } else if(type.equals("long")){
2 26 Feb 07 jari 320             long value = Long.parseLong(val);
2 26 Feb 07 jari 321             if(!min.equals("") && !max.equals(""))
2 26 Feb 07 jari 322                 return (value >= Long.parseLong(min) && value <= Long.parseLong(max));
2 26 Feb 07 jari 323             else if(!max.equals(""))
2 26 Feb 07 jari 324                 return (value <= Long.parseLong(max));
2 26 Feb 07 jari 325             else if(!min.equals(""))
2 26 Feb 07 jari 326                 return (value >= Long.parseLong(min));
2 26 Feb 07 jari 327             return true;
2 26 Feb 07 jari 328         } else if(type.equals("double")){
2 26 Feb 07 jari 329             double value = Double.parseDouble(val);
2 26 Feb 07 jari 330             if(!min.equals("") && !max.equals(""))
2 26 Feb 07 jari 331                 return (value >= Double.parseDouble(min) && value <= Double.parseDouble(max));
2 26 Feb 07 jari 332             else if(!max.equals(""))
2 26 Feb 07 jari 333                 return (value <= Double.parseDouble(max));
2 26 Feb 07 jari 334             else if(!min.equals(""))
2 26 Feb 07 jari 335                 return (value >= Double.parseDouble(min));
2 26 Feb 07 jari 336             return true;
2 26 Feb 07 jari 337         }
2 26 Feb 07 jari 338         return true;
2 26 Feb 07 jari 339     }
2 26 Feb 07 jari 340     
2 26 Feb 07 jari 341     private boolean checkType(String val, String type) {
2 26 Feb 07 jari 342         try {
2 26 Feb 07 jari 343             if(type.equals("int"))
2 26 Feb 07 jari 344                 Integer.parseInt(val);
2 26 Feb 07 jari 345             else if(type.equals("float"))
2 26 Feb 07 jari 346                 Float.parseFloat(val);
2 26 Feb 07 jari 347             else if(type.equals("long"))
2 26 Feb 07 jari 348                 Long.parseLong(val);
2 26 Feb 07 jari 349             else if(type.equals("double"))
2 26 Feb 07 jari 350                 Double.parseDouble(val);
2 26 Feb 07 jari 351         } catch (Exception e) {
2 26 Feb 07 jari 352             return false;
2 26 Feb 07 jari 353         }
2 26 Feb 07 jari 354         return true;
2 26 Feb 07 jari 355     }
2 26 Feb 07 jari 356     
2 26 Feb 07 jari 357     
2 26 Feb 07 jari 358     private class ParameterListener implements ActionListener {
2 26 Feb 07 jari 359         public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 360             if(manager != null && algName != null) {
2 26 Feb 07 jari 361                 String table = manager.getValidParametersTable(algName);
2 26 Feb 07 jari 362                 if(table != null && table.length() > 0) {
2 26 Feb 07 jari 363                     JFrame frame = new JFrame("Valid Parameters for "+algName);
2 26 Feb 07 jari 364                     javax.swing.JDialog d = new JDialog(ScriptValueChangeDialog.this, "Valid Parameters for "+algName);
2 26 Feb 07 jari 365                     JTextPane pane = new JTextPane();
2 26 Feb 07 jari 366                     pane.setContentType("text/html");
2 26 Feb 07 jari 367                     pane.setText(table);
2 26 Feb 07 jari 368                     pane.setEditable(false);
2 26 Feb 07 jari 369                     pane.setBackground(new Color(Integer.parseInt("FFFFCC",16)));
2 26 Feb 07 jari 370                     pane.setMargin(new Insets(5,10,5,10));
2 26 Feb 07 jari 371                     JScrollPane spane = new JScrollPane(pane);
2 26 Feb 07 jari 372                     d.getContentPane().add(spane);
2 26 Feb 07 jari 373                     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 374                     d.setSize(screenSize.width/3, (int)(screenSize.height/1.5));
2 26 Feb 07 jari 375                     d.setLocation((screenSize.width - d.getSize().width)/2, (screenSize.height - d.getSize().height)/2);
2 26 Feb 07 jari 376                     d.setVisible(true);
2 26 Feb 07 jari 377                 }
2 26 Feb 07 jari 378             }
2 26 Feb 07 jari 379         }
2 26 Feb 07 jari 380     }
2 26 Feb 07 jari 381     
2 26 Feb 07 jari 382     
2 26 Feb 07 jari 383     private class ButtonPanel extends JPanel {
2 26 Feb 07 jari 384         
2 26 Feb 07 jari 385         private JButton refreshBut;
2 26 Feb 07 jari 386         private JButton resetBut;
2 26 Feb 07 jari 387         private JButton cancelBut;
2 26 Feb 07 jari 388         private JButton okBut;
2 26 Feb 07 jari 389         private JButton infoButton;
2 26 Feb 07 jari 390         
2 26 Feb 07 jari 391         public ButtonPanel() {
2 26 Feb 07 jari 392             super(new GridBagLayout());
2 26 Feb 07 jari 393             ButtonListener listener = new ButtonListener();
2 26 Feb 07 jari 394             JPanel buttonsPanel = new JPanel(new GridLayout(1, 3, 10, 10));
2 26 Feb 07 jari 395
2 26 Feb 07 jari 396             resetBut = new JButton("Reset");
2 26 Feb 07 jari 397             resetBut.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
2 26 Feb 07 jari 398             resetBut.setFocusPainted(false);
2 26 Feb 07 jari 399             resetBut.setActionCommand("reset-cmd");
2 26 Feb 07 jari 400             resetBut.addActionListener(listener);
2 26 Feb 07 jari 401             
2 26 Feb 07 jari 402             buttonsPanel.add(resetBut);
2 26 Feb 07 jari 403             
2 26 Feb 07 jari 404             cancelBut = new JButton("Cancel");
2 26 Feb 07 jari 405             cancelBut.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
2 26 Feb 07 jari 406             cancelBut.setSize(60,30);
2 26 Feb 07 jari 407             cancelBut.setPreferredSize(new Dimension(60,30));
2 26 Feb 07 jari 408             cancelBut.setFocusPainted(false);
2 26 Feb 07 jari 409             cancelBut.setActionCommand("cancel-cmd");
2 26 Feb 07 jari 410             cancelBut.addActionListener(listener);
2 26 Feb 07 jari 411             buttonsPanel.add(cancelBut);
2 26 Feb 07 jari 412             
2 26 Feb 07 jari 413             okBut = new JButton("Commit");
2 26 Feb 07 jari 414             okBut.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED, new Color(240,240,240), new Color(180,180,180), new Color(10,0,0), new Color(10,10,10) ));
2 26 Feb 07 jari 415             okBut.setSize(60,30);
2 26 Feb 07 jari 416             okBut.setPreferredSize(new Dimension(60,30));
2 26 Feb 07 jari 417             okBut.setFocusPainted(false);
2 26 Feb 07 jari 418             okBut.setActionCommand("commit-cmd");
2 26 Feb 07 jari 419             okBut.addActionListener(listener);
2 26 Feb 07 jari 420             buttonsPanel.add(okBut);
2 26 Feb 07 jari 421             
2 26 Feb 07 jari 422             infoButton = new JButton(null, GUIFactory.getIcon("Information24.gif"));
2 26 Feb 07 jari 423             infoButton.setActionCommand("info-cmd");
2 26 Feb 07 jari 424             infoButton.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
2 26 Feb 07 jari 425             infoButton.setSize(30,30);
2 26 Feb 07 jari 426             infoButton.setPreferredSize(new Dimension(30,30));
2 26 Feb 07 jari 427             infoButton.setFocusPainted(false);
2 26 Feb 07 jari 428             infoButton.addActionListener(listener);
2 26 Feb 07 jari 429             
2 26 Feb 07 jari 430             add(infoButton, new GridBagConstraints(0,0,1,1,1.0,1.0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 431             add(buttonsPanel, new GridBagConstraints(1,0,1,1,1.0,1.0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0),0,0));
2 26 Feb 07 jari 432         }
2 26 Feb 07 jari 433         
2 26 Feb 07 jari 434         public class ButtonListener implements ActionListener {
2 26 Feb 07 jari 435             
2 26 Feb 07 jari 436             public void actionPerformed(ActionEvent ae) {
2 26 Feb 07 jari 437                 String cmd = ae.getActionCommand();
2 26 Feb 07 jari 438                 if(cmd.equals("apply-cmd")) {
2 26 Feb 07 jari 439                     
2 26 Feb 07 jari 440                 } else if(cmd.equals("cancel-cmd")) {                    
2 26 Feb 07 jari 441                     dispose();
2 26 Feb 07 jari 442                 } else if(cmd.equals("commit-cmd")) {
2 26 Feb 07 jari 443                     result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 444                     
2 26 Feb 07 jari 445                     if(valueType != null && valueType.equals("boolean")){
2 26 Feb 07 jari 446                         value = (String)((JComboBox)valueComponent).getSelectedItem();
2 26 Feb 07 jari 447                         line = leadingSpaces + prefix.getText()+value+suffix.getText();
2 26 Feb 07 jari 448                         dispose();
2 26 Feb 07 jari 449                     } else {
2 26 Feb 07 jari 450                         value = ((JTextField)valueComponent).getText();
2 26 Feb 07 jari 451                         if(validateValue(value)) {
2 26 Feb 07 jari 452                             line = leadingSpaces + prefix.getText()+value+suffix.getText();
2 26 Feb 07 jari 453                             dispose();
2 26 Feb 07 jari 454                         }
2 26 Feb 07 jari 455                     }
2 26 Feb 07 jari 456                 } else if(cmd.equals("reset-cmd")) {
2 26 Feb 07 jari 457
2 26 Feb 07 jari 458                 } else if(cmd.equals("info-cmd")) {
2 26 Feb 07 jari 459                     HelpWindow hw = new HelpWindow(ScriptValueChangeDialog.this, "Script Value Input Dialog");
2 26 Feb 07 jari 460                     if(hw.getWindowContent()){
2 26 Feb 07 jari 461                         hw.setSize(450,650);
2 26 Feb 07 jari 462                         hw.setLocation();
2 26 Feb 07 jari 463                         hw.show();
2 26 Feb 07 jari 464                     }
2 26 Feb 07 jari 465                 }
2 26 Feb 07 jari 466             }
2 26 Feb 07 jari 467             
2 26 Feb 07 jari 468             public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 469                 result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 470                 dispose();
2 26 Feb 07 jari 471             }
2 26 Feb 07 jari 472             
2 26 Feb 07 jari 473         }
2 26 Feb 07 jari 474     }
2 26 Feb 07 jari 475     
2 26 Feb 07 jari 476 }