KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > gui > ScriptingWin


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 JavaDoc;
7 import java.awt.event.*;
8 import javax.swing.*;
9 import javax.swing.event.DocumentListener JavaDoc;
10 import javax.swing.event.DocumentEvent JavaDoc;
11
12 /**
13  * Editor dialog for a report's scripting language list and default language.
14  *
15  * @author Jim Menard, <a HREF="mailto:jimm@io.com">jimm@io.com</a>
16  */

17 public class ScriptingWin
18     extends EditWin
19     implements ItemListener, ActionListener, DocumentListener JavaDoc
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 JavaDoc defaultLang;
32 protected Map languages;
33
34 /**
35  * Constructor.
36  *
37  * @param designer the window to which this dialog belongs
38  * @param scripting the scripting language information container
39  */

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()); // Make a copy
46

47     buildWindow();
48     pack();
49     setVisible(true);
50 }
51
52 /**
53  * Builds the window contents.
54  */

55 protected void buildWindow() {
56     // All edit fields
57
JPanel editorPanel = buildEditor();
58
59     // OK, Apply, Revert, and Cancel Buttons
60
JPanel buttonPanel = closeButtonPanel();
61
62     // Add values and buttons to window
63
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 JavaDoc[] langChoices() {
100     return languages.keySet().toArray();
101 }
102
103 /** Fill with initial values. */
104 protected void fillEditFields() {
105     fillEditFields(defaultLang);
106 }
107
108 /** Fill drop-down menu and text fields based on <var>lang</var>. */
109 protected void fillEditFields(String JavaDoc lang) {
110     defaultLangMenu.setSelectedItem(lang);
111     langName.setText(lang);
112     langClass.setText((String JavaDoc)languages.get(lang));
113     enableButtons();
114 }
115
116 /** When language selected from popup, populate name and class fields. */
117 public void itemStateChanged(ItemEvent e) {
118     fillEditFields(e.getItem().toString());
119 }
120
121 public void actionPerformed(ActionEvent e) {
122     String JavaDoc 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 JavaDoc name = langName.getText().trim();
133     String JavaDoc klass = langClass.getText().trim();
134
135     if (languages.get(name) == null) // Only add to menu if new
136
defaultLangMenu.addItem(name);
137     languages.put(name, klass); // Add or replace
138
fillEditFields();
139 }
140
141 protected void testLanguage() {
142     String JavaDoc klass = langClass.getText().trim();
143
144     String JavaDoc 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 JavaDoc e) { enableButtons(); }
159 public void insertUpdate(DocumentEvent JavaDoc e) { enableButtons(); }
160 public void removeUpdate(DocumentEvent JavaDoc 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 JavaDoc)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