1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package org.ximtec.igesture.tool.view.batch;
27
28 import java.awt.Dimension;
29 import java.awt.event.ActionEvent;
30 import java.awt.event.ActionListener;
31
32 import javax.swing.Action;
33 import javax.swing.Icon;
34 import javax.swing.JButton;
35 import javax.swing.JComboBox;
36 import javax.swing.JComponent;
37 import javax.swing.JLabel;
38 import javax.swing.JPanel;
39 import javax.swing.JProgressBar;
40 import javax.swing.JTextField;
41
42 import org.ximtec.igesture.core.GestureSet;
43 import org.ximtec.igesture.core.TestSet;
44 import org.ximtec.igesture.tool.GestureConstants;
45 import org.ximtec.igesture.tool.core.Controller;
46 import org.ximtec.igesture.tool.core.TabbedView;
47 import org.ximtec.igesture.tool.util.Formatter;
48 import org.ximtec.igesture.tool.util.HtmlPanel;
49 import org.ximtec.igesture.tool.util.TitleFactory;
50 import org.ximtec.igesture.tool.view.AbstractPanel;
51 import org.ximtec.igesture.tool.view.MainModel;
52 import org.ximtec.igesture.tool.view.batch.action.CancelBatchAction;
53 import org.ximtec.igesture.tool.view.batch.action.RunBatchAction;
54 import org.ximtec.igesture.tool.view.batch.action.SelectConfigFileAction;
55 import org.ximtec.igesture.tool.view.batch.action.SelectOutputDirAction;
56
57 import com.jgoodies.forms.builder.DefaultFormBuilder;
58 import com.jgoodies.forms.layout.FormLayout;
59
60
61
62
63
64
65
66 public class BatchView extends AbstractPanel implements TabbedView, IBatchView {
67
68 private static final int NEXT_LINE = 2;
69 private GestureSet gestureSet;
70 private TestSet testSet;
71
72 private JTextField configFileTextField;
73 private JTextField outDirTextField;
74 private JProgressBar progressBar;
75 private HtmlPanel resultPanel;
76
77 private Action runBatchAction;
78 private Action cancelBatchAction;
79
80 public BatchView(Controller controller) {
81 super(controller);
82 setTitle(TitleFactory.createStaticTitle(GestureConstants.BATCH_PROCESSING_VIEW));
83 init();
84 }
85
86 private void init() {
87 setContent(createParameterPanel());
88 }
89
90 @Override
91 public Icon getIcon() {
92 return null;
93 }
94
95 @Override
96 public String getTabName() {
97 return getComponentFactory().getGuiBundle().getName(GestureConstants.BATCH_PROCESSING_VIEW);
98 }
99
100 @Override
101 public JComponent getPane() {
102 return this;
103 }
104
105 private JPanel createParameterPanel() {
106
107 FormLayout layout = new FormLayout(
108 "80dlu, 4dlu, 140dlu, 4dlu, 80dlu",
109 "pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref, 4dlu, pref");
110
111 DefaultFormBuilder builder = new DefaultFormBuilder(layout);
112 builder.setDefaultDialogBorder();
113
114
115 createConfigurationSelection(builder);
116
117
118 createGestureSetSelection(builder);
119
120
121 createTestSetSelection(builder);
122
123
124 createOutputDirSelection(builder);
125
126 createRunButton(builder);
127
128
129 createResultPanel(builder);
130
131 return builder.getPanel();
132 }
133
134 private void createGestureSetSelection(DefaultFormBuilder builder) {
135
136 builder.append(getComponentFactory().createLabel(GestureConstants.BATCH_GESTURESET));
137
138 final JComboBox combo = new JComboBox(createArray(getModel().getGestureSets().toArray(), "Select Gesture Set"));
139
140 combo.addActionListener(new ActionListener() {
141
142 @Override
143 public void actionPerformed(ActionEvent arg0) {
144 Object obj = combo.getSelectedItem();
145 if (obj instanceof GestureSet) {
146 gestureSet = (GestureSet) obj;
147 }
148 }
149 });
150 builder.append(combo);
151 builder.nextLine(NEXT_LINE);
152 }
153
154 private void createConfigurationSelection(DefaultFormBuilder builder) {
155
156 JLabel label = getComponentFactory().createLabel(GestureConstants.BATCH_CONFIG);
157 builder.append(label);
158
159 configFileTextField = new JTextField();
160 builder.append(configFileTextField);
161
162 JButton browseButton = getComponentFactory().createButton(GestureConstants.BATCH_BROWSE_CONFIG,
163 new SelectConfigFileAction(getController(), this));
164
165 Formatter.formatButton(browseButton);
166 builder.append(browseButton);
167
168 builder.nextLine(NEXT_LINE);
169 }
170
171 private void createTestSetSelection(DefaultFormBuilder builder) {
172 builder.append(getComponentFactory().createLabel(GestureConstants.BATCH_TESTSET));
173
174 final JComboBox combo = new JComboBox(createArray(getModel().getTestSets().toArray(), "Select Test Set"));
175
176 combo.addActionListener(new ActionListener() {
177
178 @Override
179 public void actionPerformed(ActionEvent arg0) {
180 Object obj = combo.getSelectedItem();
181 if (obj instanceof TestSet) {
182 testSet = (TestSet) obj;
183 }
184 }
185 });
186
187 builder.append(combo);
188 builder.nextLine(NEXT_LINE);
189 }
190
191 private void createOutputDirSelection(DefaultFormBuilder builder) {
192 builder.append(getComponentFactory().createLabel(GestureConstants.BATCH_OUTPUT_DIR));
193
194 outDirTextField = new JTextField();
195
196 builder.append(outDirTextField);
197 JButton browseButton = getComponentFactory().createButton(GestureConstants.BATCH_BROWSE_OUTPUT,
198 new SelectOutputDirAction(getController(), this));
199 Formatter.formatButton(browseButton);
200 builder.append(browseButton);
201 builder.nextLine(NEXT_LINE);
202 }
203
204 private void createRunButton(DefaultFormBuilder builder) {
205 runBatchAction = new RunBatchAction(getController());
206 cancelBatchAction = new CancelBatchAction(getController());
207 cancelBatchAction.setEnabled(false);
208
209 JButton runButton = getComponentFactory().createButton(GestureConstants.BATCH_RUN, runBatchAction);
210
211 JButton cancelButton = getComponentFactory().createButton(GestureConstants.BATCH_CANCEL, cancelBatchAction);
212
213 Formatter.formatButton(runButton);
214
215 builder.append(runButton);
216 builder.append(cancelButton);
217 builder.nextLine(NEXT_LINE);
218
219 progressBar = new JProgressBar();
220 progressBar.setIndeterminate(true);
221 progressBar.setVisible(false);
222
223 builder.append(progressBar);
224 builder.nextLine(NEXT_LINE);
225 }
226
227 private void createResultPanel(DefaultFormBuilder builder) {
228 resultPanel = new HtmlPanel(null, new Dimension(500, 400));
229 builder.append(resultPanel, 5);
230 }
231
232 public void showProgressBar() {
233 progressBar.setVisible(true);
234 }
235
236 public void setResult(String htmlCode) {
237 resultPanel.setHtmlContent(htmlCode);
238 }
239
240 public void hideProgressBar() {
241 progressBar.setVisible(false);
242 }
243
244 public void setRunActionState(boolean isEnabled) {
245 if (runBatchAction != null) {
246 runBatchAction.setEnabled(isEnabled);
247 }
248 }
249
250 public void setCancelActionState(boolean isEnabled) {
251 if (cancelBatchAction != null) {
252 cancelBatchAction.setEnabled(isEnabled);
253 }
254 }
255
256
257
258
259
260
261 private MainModel getModel() {
262 return getController().getLocator().getService(MainModel.IDENTIFIER, MainModel.class);
263 }
264
265 private Object[] createArray(Object[] originalArray, String title) {
266 Object[] result = new Object[originalArray.length + 1];
267
268 for (int i = 1; i < result.length; i++) {
269 result[i] = originalArray[i - 1];
270 }
271 result[0] = title;
272
273 return result;
274 }
275
276 @Override
277 public void refreshUILogic() {
278 super.refreshUILogic();
279
280 init();
281 }
282
283 public TestSet getTestSet() {
284 return testSet;
285 }
286
287 public GestureSet getGestureSet() {
288 return gestureSet;
289 }
290
291 public String getConfigFile() {
292 return configFileTextField.getText();
293 }
294
295 public String getOutputDir() {
296 return outDirTextField.getText();
297 }
298
299 public void setConfigFile(String configFile) {
300 configFileTextField.setText(configFile);
301 }
302
303 public void setOutputDir(String outputDir) {
304 outDirTextField.setText(outputDir);
305 }
306 }