1 package jimm.datavision.gui; 2 import jimm.datavision.Scripting; 3 import jimm.datavision.gui.cmd.ScriptingCommand; 4 import jimm.util.I18N; 5 import java.util.*; 6 import java.awt.BorderLayout ; 7 import java.awt.event.*; 8 import javax.swing.*; 9 import javax.swing.event.DocumentListener ; 10 import javax.swing.event.DocumentEvent ; 11 12 17 public class ScriptingWin 18 extends EditWin 19 implements ItemListener, ActionListener, DocumentListener 20 { 21 22 protected static final int LANG_NAME_COLS = 16; 23 protected static final int CLASS_NAME_COLS = 40; 24 25 protected Scripting scripting; 26 protected JComboBox defaultLangMenu; 27 protected JTextField langName; 28 protected JTextField langClass; 29 protected JButton addLangButton; 30 protected JButton testLangButton; 31 protected String defaultLang; 32 protected Map languages; 33 34 40 public ScriptingWin(Designer designer, Scripting scripting) { 41 super(designer, I18N.get("ScriptingWin.title"), "ScriptingCommand.name"); 42 43 this.scripting = scripting; 44 defaultLang = scripting.getDefaultLanguage(); 45 languages = new HashMap(scripting.getLanguages()); 47 buildWindow(); 48 pack(); 49 setVisible(true); 50 } 51 52 55 protected void buildWindow() { 56 JPanel editorPanel = buildEditor(); 58 59 JPanel buttonPanel = closeButtonPanel(); 61 62 getContentPane().add(editorPanel, BorderLayout.CENTER); 64 getContentPane().add(buttonPanel, BorderLayout.SOUTH); 65 66 fillEditFields(); 67 } 68 69 protected JPanel buildEditor() { 70 EditFieldLayout efl = new EditFieldLayout(); 71 72 defaultLangMenu = efl.addComboBox(I18N.get("ScriptingWin.default_lang"), 73 langChoices()); 74 defaultLangMenu.addItemListener(this); 75 76 efl.skipRow(); 77 langName = efl.addTextField(I18N.get("ScriptingWin.add_name"), "", 78 LANG_NAME_COLS); 79 langClass = efl.addTextField(I18N.get("ScriptingWin.add_class"), "", 80 CLASS_NAME_COLS); 81 82 langName.getDocument().addDocumentListener(this); 83 langClass.getDocument().addDocumentListener(this); 84 85 JPanel buttonPanel = new JPanel(); 86 addLangButton = new JButton(I18N.get("ScriptingWin.add_button")); 87 testLangButton = new JButton(I18N.get("ScriptingWin.test_button")); 88 89 buttonPanel.add(addLangButton); 90 buttonPanel.add(testLangButton); 91 efl.add("", buttonPanel); 92 93 addLangButton.addActionListener(this); 94 testLangButton.addActionListener(this); 95 96 return efl.getPanel(); 97 } 98 99 protected Object [] langChoices() { 100 return languages.keySet().toArray(); 101 } 102 103 104 protected void fillEditFields() { 105 fillEditFields(defaultLang); 106 } 107 108 109 protected void fillEditFields(String lang) { 110 defaultLangMenu.setSelectedItem(lang); 111 langName.setText(lang); 112 langClass.setText((String )languages.get(lang)); 113 enableButtons(); 114 } 115 116 117 public void itemStateChanged(ItemEvent e) { 118 fillEditFields(e.getItem().toString()); 119 } 120 121 public void actionPerformed(ActionEvent e) { 122 String cmd = e.getActionCommand(); 123 if (I18N.get("ScriptingWin.add_button").equals(cmd)) 124 addLanguage(); 125 else if (I18N.get("ScriptingWin.test_button").equals(cmd)) 126 testLanguage(); 127 else 128 super.actionPerformed(e); 129 } 130 131 protected void addLanguage() { 132 String name = langName.getText().trim(); 133 String klass = langClass.getText().trim(); 134 135 if (languages.get(name) == null) defaultLangMenu.addItem(name); 137 languages.put(name, klass); fillEditFields(); 139 } 140 141 protected void testLanguage() { 142 String klass = langClass.getText().trim(); 143 144 String msg = null; 145 int type; 146 if (scripting.canFind(klass)) { 147 msg = I18N.get("ScriptingWin.lang_ok"); 148 type = JOptionPane.INFORMATION_MESSAGE; 149 } 150 else { 151 msg = I18N.get("ScriptingWin.lang_err"); 152 type = JOptionPane.ERROR_MESSAGE; 153 } 154 JOptionPane.showMessageDialog(null, msg, I18N.get("ScriptingWin.title"), 155 type); 156 } 157 158 public void changedUpdate(DocumentEvent e) { enableButtons(); } 159 public void insertUpdate(DocumentEvent e) { enableButtons(); } 160 public void removeUpdate(DocumentEvent e) { enableButtons(); } 161 162 protected void enableButtons() { 163 boolean enable = langName.getText().trim().length() > 0 164 && langClass.getText().trim().length() > 0; 165 addLangButton.setEnabled(enable); 166 testLangButton.setEnabled(enable); 167 } 168 169 protected void doSave() { 170 defaultLang = (String )defaultLangMenu.getSelectedItem(); 171 ScriptingCommand cmd = 172 new ScriptingCommand(scripting, defaultLang, languages); 173 cmd.perform(); 174 commands.add(cmd); 175 } 176 177 protected void doRevert() { 178 fillEditFields(); 179 } 180 181 } 182 | Popular Tags |