]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/EventsDlg.java
Fixed Absolute position of fields, Added ToolTipText and made HelpText a Scrolling...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / EventsDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3 The file is used to create, update Event of MSA/MBD file\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.frameworkwizard.module.ui.dialog;\r
16\r
17import java.awt.event.ActionEvent;\r
18import java.util.Vector;\r
19\r
20import javax.swing.JButton;\r
21import javax.swing.JComboBox;\r
22import javax.swing.JLabel;\r
23import javax.swing.JPanel;\r
24import javax.swing.JScrollPane;\r
25import javax.swing.JTextField;\r
7ab6baa9 26import javax.swing.JTextArea;\r
06a19cee 27\r
28import org.tianocore.frameworkwizard.common.DataType;\r
29import org.tianocore.frameworkwizard.common.DataValidation;\r
30import org.tianocore.frameworkwizard.common.EnumerationData;\r
31import org.tianocore.frameworkwizard.common.Log;\r
32import org.tianocore.frameworkwizard.common.Tools;\r
33import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
34import org.tianocore.frameworkwizard.common.ui.IDialog;\r
35import org.tianocore.frameworkwizard.common.ui.IFrame;\r
36import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
37import org.tianocore.frameworkwizard.module.Identifications.Events.EventsIdentification;\r
38import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
39\r
40/**\r
7ab6baa9 41 * The class is used to create, update Event of MSA/MBD file It extends\r
42 * IInternalFrame\r
43 * \r
44 * @since ModuleEditor 1.0\r
45 * \r
46 */\r
06a19cee 47public class EventsDlg extends IDialog {\r
48\r
7ab6baa9 49 // /\r
50 // / Define class Serial Version UID\r
51 // /\r
52 private static final long serialVersionUID = -4396143706422842331L;\r
06a19cee 53\r
7ab6baa9 54 //\r
55 // Define class members\r
56 //\r
57 private JPanel jContentPane = null;\r
06a19cee 58\r
7ab6baa9 59 private JLabel jLabelEventType = null;\r
06a19cee 60\r
7ab6baa9 61 private JLabel jLabelC_Name = null;\r
06a19cee 62\r
7ab6baa9 63 private JComboBox jComboBoxGuidC_Name = null;\r
06a19cee 64\r
7ab6baa9 65 private JLabel jLabelUsage = null;\r
06a19cee 66\r
7ab6baa9 67 private JLabel jLabelGroup = null;\r
06a19cee 68\r
7ab6baa9 69 private JComboBox jComboBoxUsage = null;\r
06a19cee 70\r
7ab6baa9 71 private JComboBox jComboBoxEventGroup = null;\r
06a19cee 72\r
7ab6baa9 73 private StarLabel jStarLabel1 = null;\r
06a19cee 74\r
7ab6baa9 75 private StarLabel jStarLabel2 = null;\r
06a19cee 76\r
7ab6baa9 77 private StarLabel jStarLabel3 = null;\r
06a19cee 78\r
7ab6baa9 79 private StarLabel jStarLabel4 = null;\r
06a19cee 80\r
7ab6baa9 81 private JComboBox jComboBoxEventsType = null;\r
06a19cee 82\r
7ab6baa9 83 private JScrollPane jScrollPane = null;\r
06a19cee 84\r
7ab6baa9 85 private JLabel jLabelArch = null;\r
06a19cee 86\r
7ab6baa9 87 private JLabel jLabelHelpText = null;\r
06a19cee 88\r
7ab6baa9 89 private JTextArea jTextAreaHelpText = null;\r
06a19cee 90\r
7ab6baa9 91 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 92\r
7ab6baa9 93 private JLabel jLabelFeatureFlag = null;\r
06a19cee 94\r
7ab6baa9 95 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 96\r
7ab6baa9 97 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 98\r
7ab6baa9 99 private JButton jButtonOk = null;\r
06a19cee 100\r
7ab6baa9 101 private JButton jButtonCancel = null;\r
06a19cee 102\r
7ab6baa9 103 //\r
104 // Not used by UI\r
105 //\r
106 private EventsIdentification id = null;\r
06a19cee 107\r
7ab6baa9 108 private EnumerationData ed = new EnumerationData();\r
06a19cee 109\r
7ab6baa9 110 private WorkspaceTools wt = new WorkspaceTools();\r
06a19cee 111\r
7ab6baa9 112 /**\r
113 * This method initializes jComboBoxType\r
114 * \r
115 * @return javax.swing.JComboBox jComboBoxType\r
116 * \r
117 */\r
118 private JComboBox getJComboBoxEventsType() {\r
119 if (jComboBoxEventsType == null) {\r
120 jComboBoxEventsType = new JComboBox();\r
121 jComboBoxEventsType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
122 jComboBoxEventsType.setPreferredSize(new java.awt.Dimension(320, 20));\r
123 jComboBoxEventsType\r
124 .setToolTipText("<html>Select CreateEvents if the Module has an event that is waiting to be signaled.<br>Select SignalEvents if the Module will signal all events in an event group.<br>NOTE: Signal events are named by GUID.</html>");\r
06a19cee 125 }\r
7ab6baa9 126 return jComboBoxEventsType;\r
127 }\r
128\r
129 /**\r
130 * This method initializes jTextFieldC_Name\r
131 * \r
132 * @return javax.swing.JTextField jTextFieldC_Name\r
133 * \r
134 */\r
135 private JComboBox getJComboBoxGuidC_Name() {\r
136 if (jComboBoxGuidC_Name == null) {\r
137 jComboBoxGuidC_Name = new JComboBox();\r
138 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
139 jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
140 jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Event");\r
06a19cee 141 }\r
7ab6baa9 142 return jComboBoxGuidC_Name;\r
143 }\r
144\r
145 /**\r
146 * This method initializes jComboBoxEventsType\r
147 * \r
148 * @return javax.swing.JComboBox\r
149 */\r
150 private JComboBox getJComboBoxEventGroup() {\r
151 if (jComboBoxEventGroup == null) {\r
152 jComboBoxEventGroup = new JComboBox();\r
153 jComboBoxEventGroup.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
154 jComboBoxEventGroup.setPreferredSize(new java.awt.Dimension(320, 20));\r
155 jComboBoxEventGroup\r
156 .setToolTipText("Select Type of Event: Guid or Timer.");\r
06a19cee 157\r
06a19cee 158 }\r
7ab6baa9 159 return jComboBoxEventGroup;\r
160 }\r
161\r
162 /**\r
163 * This method initializes jComboBoxUsage\r
164 * \r
165 * @return javax.swing.JComboBox jComboBoxUsage\r
166 * \r
167 */\r
168 private JComboBox getJComboBoxUsage() {\r
169 if (jComboBoxUsage == null) {\r
170 jComboBoxUsage = new JComboBox();\r
171 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
172 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
173 jComboBoxUsage\r
174 .setToolTipText("<html><table><tr><td colspan=2 align=center><b>Create Events</b></td></tr><tr><td>ALWAYS_CONSUMED</td><td>Module registers a notification function and REQUIRES that it be<br>executed for the module to fully function.</td></tr><tr><td>SOMETIMES_CONSUMED</td><td>Module registers a notification function and calls the function<br>when it is signaled</td></tr><tr><td colspan=2 align=center><b>Signal Events</b></td></tr><tr><td>ALWAYS_PRODUCED</td><td>Module will Always signal the event</td></tr><tr><td>SOMETIMES_PRODUCED</td><td>Module will sometimes signal the event</td></tr></table></html>");\r
06a19cee 175 }\r
7ab6baa9 176 return jComboBoxUsage;\r
177 }\r
178\r
179 /**\r
180 * This method initializes jScrollPane\r
181 * \r
182 * @return javax.swing.JScrollPane\r
183 */\r
184 private JScrollPane getJScrollPane() {\r
185 if (jScrollPane == null) {\r
186 jScrollPane = new JScrollPane();\r
187 jScrollPane.setViewportView(getJContentPane());\r
06a19cee 188 }\r
7ab6baa9 189 return jScrollPane;\r
190 }\r
191\r
192 /**\r
193 * This method initializes jTextFieldFeatureFlag\r
194 * \r
195 * @return javax.swing.JTextField\r
196 */\r
197 private JTextField getJTextFieldFeatureFlag() {\r
198 if (jTextFieldFeatureFlag == null) {\r
199 jTextFieldFeatureFlag = new JTextField();\r
200 jTextFieldFeatureFlag\r
201 .setBounds(new java.awt.Rectangle(160, 155, 320, 20));\r
202 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
203 jTextFieldFeatureFlag\r
204 .setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
06a19cee 205 }\r
7ab6baa9 206 return jTextFieldFeatureFlag;\r
207 }\r
208\r
209 /**\r
210 * This method initializes jTextAreaHelpText\r
211 * \r
212 * @return javax.swing.JTextArea\r
213 * \r
214 */\r
215 private JTextArea getJTextAreaHelpText() {\r
216 if (jTextAreaHelpText == null) {\r
217 jTextAreaHelpText = new JTextArea();\r
218 jTextAreaHelpText.setLineWrap(true);\r
219 jTextAreaHelpText.setWrapStyleWord(true);\r
220 }\r
221 return jTextAreaHelpText;\r
222 }\r
223\r
224 /**\r
225 * This method initializes jScrollPaneHelpText\r
226 * \r
227 * @return javax.swing.JScrollPane\r
228 * \r
229 */\r
230 private JScrollPane getJScrollPaneHelpText() {\r
231 if (jScrollPaneHelpText == null) {\r
232 jScrollPaneHelpText = new JScrollPane();\r
233 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
234 jScrollPaneHelpText.setSize(new java.awt.Dimension(320,40));\r
235 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320,40));\r
236 jScrollPaneHelpText.setLocation(new java.awt.Point(160,110));\r
237 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
238 }\r
239 return jScrollPaneHelpText;\r
240 }\r
241 \r
242 /**\r
243 * This method initializes jButtonOk\r
244 * \r
245 * @return javax.swing.JButton\r
246 * \r
247 */\r
248 private JButton getJButtonOk() {\r
249 if (jButtonOk == null) {\r
250 jButtonOk = new JButton();\r
251 jButtonOk.setBounds(new java.awt.Rectangle(290, 202, 90, 20));\r
252 jButtonOk.setText("Ok");\r
253 jButtonOk.addActionListener(this);\r
254 }\r
255 return jButtonOk;\r
256 }\r
257\r
258 /**\r
259 * This method initializes jButtonCancel\r
260 * \r
261 * @return javax.swing.JButton\r
262 * \r
263 */\r
264 private JButton getJButtonCancel() {\r
265 if (jButtonCancel == null) {\r
266 jButtonCancel = new JButton();\r
267 jButtonCancel.setBounds(new java.awt.Rectangle(390, 202, 90, 20));\r
268 jButtonCancel.setText("Cancel");\r
269 jButtonCancel.addActionListener(this);\r
270 }\r
271 return jButtonCancel;\r
272 }\r
273\r
274 public static void main(String[] args) {\r
275\r
276 }\r
277\r
278 /**\r
279 * This method initializes this\r
280 * \r
281 */\r
282 private void init() {\r
283 this.setSize(500, 275);\r
284 this.setContentPane(getJScrollPane());\r
285 this.setTitle("Events");\r
286 initFrame();\r
287 this.setViewMode(false);\r
288 this.centerWindow();\r
289 }\r
290\r
291 /**\r
292 * This method initializes this Fill values to all fields if these values are\r
293 * not empty\r
294 * \r
295 * @param inEventsId\r
296 * \r
297 */\r
298 private void init(EventsIdentification inEventsId) {\r
299 init();\r
300 this.id = inEventsId;\r
301\r
302 if (this.id != null) {\r
303 this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
304 this.jComboBoxEventsType.setSelectedItem(id.getType());\r
305 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
306 this.jTextAreaHelpText.setText(id.getHelp());\r
307\r
308 jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
309 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
310 this.jComboBoxEventGroup.setSelectedItem(id.getGroup());\r
311 }\r
312 }\r
313\r
314 /**\r
315 * This is the override edit constructor\r
316 * \r
317 * @param inEventsIdentification\r
318 * @param iFrame\r
319 * \r
320 */\r
321 public EventsDlg(EventsIdentification inEventsIdentification, IFrame iFrame) {\r
322 super(iFrame, true);\r
323 init(inEventsIdentification);\r
324 }\r
325\r
326 /**\r
327 * Disable all components when the mode is view\r
328 * \r
329 * @param isView\r
330 * true - The view mode; false - The non-view mode\r
331 * \r
332 */\r
333 public void setViewMode(boolean isView) {\r
334 if (isView) {\r
335 this.jComboBoxGuidC_Name.setEnabled(!isView);\r
336 this.jComboBoxUsage.setEnabled(!isView);\r
06a19cee 337 }\r
7ab6baa9 338 }\r
339\r
340 /**\r
341 * This method initializes jContentPane\r
342 * \r
343 * @return javax.swing.JPanel jContentPane\r
344 * \r
345 */\r
346 private JPanel getJContentPane() {\r
347 if (jContentPane == null) {\r
348 jStarLabel1 = new StarLabel();\r
349 jStarLabel1.setLocation(new java.awt.Point(2, 10));\r
350 jLabelEventType = new JLabel();\r
ccb063b1 351 jLabelEventType.setText("Select Event Type");\r
7ab6baa9 352 jLabelEventType.setBounds(new java.awt.Rectangle(15, 10, 145, 20));\r
353\r
354 jStarLabel2 = new StarLabel();\r
355 jStarLabel2.setLocation(new java.awt.Point(2, 35));\r
356 jLabelC_Name = new JLabel();\r
357 jLabelC_Name.setText("Guid C Name");\r
358 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 145, 20));\r
359\r
360 jStarLabel3 = new StarLabel();\r
361 jStarLabel3.setLocation(new java.awt.Point(2, 60));\r
362 jLabelGroup = new JLabel();\r
ccb063b1 363 jLabelGroup.setText("Event Group Type");\r
7ab6baa9 364 jLabelGroup.setBounds(new java.awt.Rectangle(15, 60, 145, 20));\r
365\r
366 jStarLabel4 = new StarLabel();\r
367 jStarLabel4.setLocation(new java.awt.Point(2, 85));\r
368 jLabelUsage = new JLabel();\r
369 jLabelUsage.setText("Usage");\r
370 jLabelUsage.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
371\r
372 jLabelHelpText = new JLabel();\r
373 jLabelHelpText.setBounds(new java.awt.Rectangle(15, 110, 145, 20));\r
374 jLabelHelpText.setText("Help Text");\r
375\r
376 jLabelFeatureFlag = new JLabel();\r
377 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 155, 145, 20));\r
ccb063b1 378 jLabelFeatureFlag.setText("Feature Flag Expression");\r
7ab6baa9 379\r
380 jLabelArch = new JLabel();\r
381 jLabelArch.setBounds(new java.awt.Rectangle(15, 180, 145, 20));\r
ccb063b1 382 jLabelArch.setText("Supported Architectures");\r
7ab6baa9 383 jArchCheckBox = new ArchCheckBox();\r
384 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 180, 320, 20));\r
385 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
386\r
387 jContentPane = new JPanel();\r
388 jContentPane.setLayout(null);\r
389 jContentPane.setPreferredSize(new java.awt.Dimension(485, 230));\r
390\r
391 jContentPane.add(jStarLabel1, null);\r
392 jContentPane.add(jLabelEventType, null);\r
393 jContentPane.add(getJComboBoxEventsType(), null);\r
394 jContentPane.add(jStarLabel2, null);\r
395 jContentPane.add(jLabelC_Name, null);\r
396 jContentPane.add(getJComboBoxGuidC_Name(), null);\r
397 jContentPane.add(jStarLabel3, null);\r
398 jContentPane.add(jLabelGroup, null);\r
399 jContentPane.add(getJComboBoxEventGroup(), null);\r
400 jContentPane.add(jStarLabel4, null);\r
401 jContentPane.add(jLabelUsage, null);\r
402 jContentPane.add(getJComboBoxUsage(), null);\r
403 jContentPane.add(jLabelHelpText, null);\r
404 jContentPane.add(getJScrollPaneHelpText(), null);\r
405 jContentPane.add(jLabelFeatureFlag, null);\r
406 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
407 jContentPane.add(jLabelArch, null);\r
408 jContentPane.add(jArchCheckBox, null);\r
409 jContentPane.add(getJButtonOk(), null);\r
410 jContentPane.add(getJButtonCancel(), null);\r
06a19cee 411\r
7ab6baa9 412 }\r
413 return jContentPane;\r
414 }\r
415\r
416 /**\r
417 * This method initializes events groups and usage type\r
418 * \r
419 */\r
420 private void initFrame() {\r
421 Tools.generateComboBoxByVector(jComboBoxEventsType, ed.getVEventType());\r
422 Tools.generateComboBoxByVector(jComboBoxEventGroup, ed.getVEventGroup());\r
423 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVEventUsage());\r
424 Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt\r
425 .getAllGuidDeclarationsFromWorkspace());\r
426 }\r
427\r
428 /*\r
429 * (non-Javadoc)\r
430 * \r
431 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
432 * \r
433 * Override actionPerformed to listen all actions\r
434 * \r
435 */\r
436 public void actionPerformed(ActionEvent arg0) {\r
437 if (arg0.getSource() == jButtonOk) {\r
438 if (checkAdd()) {\r
439 getCurrentEvents();\r
440 this.returnType = DataType.RETURN_TYPE_OK;\r
441 this.setVisible(false);\r
442 }\r
06a19cee 443 }\r
444\r
7ab6baa9 445 if (arg0.getSource() == jButtonCancel) {\r
446 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
447 this.setVisible(false);\r
06a19cee 448 }\r
7ab6baa9 449 }\r
450\r
451 /**\r
452 * Data validation for all fields\r
453 * \r
454 * @retval true - All datas are valid\r
455 * @retval false - At least one data is invalid\r
456 * \r
457 */\r
458 public boolean checkAdd() {\r
459 //\r
460 // Check if all fields have correct data types\r
461 //\r
06a19cee 462\r
7ab6baa9 463 //\r
464 // Check Name\r
465 //\r
466 if (isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
467 Log.wrn("Update Events", "Event Name couldn't be empty");\r
468 return false;\r
06a19cee 469 }\r
470\r
7ab6baa9 471 if (!isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
472 if (!DataValidation.isC_NameType(this.jComboBoxGuidC_Name\r
473 .getSelectedItem().toString())) {\r
474 Log.wrn("Update Events", "Incorrect data type for Event Name");\r
475 return false;\r
476 }\r
06a19cee 477 }\r
478\r
7ab6baa9 479 //\r
480 // Check FeatureFlag\r
481 //\r
482 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
483 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
484 Log.wrn("Update Events", "Incorrect data type for Feature Flag");\r
485 return false;\r
486 }\r
06a19cee 487 }\r
7ab6baa9 488\r
489 return true;\r
490 }\r
491\r
492 private EventsIdentification getCurrentEvents() {\r
493 String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
494 String arg1 = this.jComboBoxEventsType.getSelectedItem().toString();\r
495 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
496\r
497 String arg3 = this.jTextFieldFeatureFlag.getText();\r
498 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
499 String arg5 = this.jTextAreaHelpText.getText();\r
500 String arg6 = this.jComboBoxEventGroup.getSelectedItem().toString();\r
501 id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
502 return id;\r
503 }\r
504 \r
505 public EventsIdentification getId() {\r
506 return id;\r
507 }\r
508\r
509 public void setId(EventsIdentification id) {\r
510 this.id = id;\r
511 }\r
06a19cee 512}\r