]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/EventsDlg.java
1. Fix the bug missing TokenSpaceGuidCName when editing a pcd entry in Msa
[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
26\r
27import org.tianocore.frameworkwizard.common.DataType;\r
28import org.tianocore.frameworkwizard.common.DataValidation;\r
29import org.tianocore.frameworkwizard.common.EnumerationData;\r
30import org.tianocore.frameworkwizard.common.Log;\r
31import org.tianocore.frameworkwizard.common.Tools;\r
32import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
33import org.tianocore.frameworkwizard.common.ui.IDialog;\r
34import org.tianocore.frameworkwizard.common.ui.IFrame;\r
35import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
36import org.tianocore.frameworkwizard.module.Identifications.Events.EventsIdentification;\r
37import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
38\r
39/**\r
40 The class is used to create, update Event of MSA/MBD file\r
41 It extends IInternalFrame\r
42 \r
43 @since ModuleEditor 1.0\r
44\r
45 **/\r
46public class EventsDlg extends IDialog {\r
47\r
48 ///\r
49 /// Define class Serial Version UID\r
50 ///\r
51 private static final long serialVersionUID = -4396143706422842331L;\r
52\r
53 //\r
54 //Define class members\r
55 //\r
56 private JPanel jContentPane = null;\r
57\r
58 private JLabel jLabelEventType = null;\r
59\r
60 private JLabel jLabelC_Name = null;\r
61\r
62 private JComboBox jComboBoxGuidC_Name = null;\r
63\r
64 private JLabel jLabelUsage = null;\r
9a8d6d9f 65 \r
66 private JLabel jLabelGroup = null;\r
06a19cee 67\r
68 private JComboBox jComboBoxUsage = null;\r
9a8d6d9f 69 \r
70 private JComboBox jComboBoxEventGroup = null;\r
06a19cee 71\r
72 private StarLabel jStarLabel1 = null;\r
73\r
74 private StarLabel jStarLabel2 = null;\r
9a8d6d9f 75 \r
76 private StarLabel jStarLabel3 = null;\r
06a19cee 77\r
78 private JComboBox jComboBoxEventsType = null;\r
79\r
80 private JScrollPane jScrollPane = null;\r
81\r
82 private JLabel jLabelArch = null;\r
83\r
84 private JLabel jLabelHelpText = null;\r
85\r
86 private JTextField jTextFieldHelpText = null;\r
87\r
88 private JLabel jLabelFeatureFlag = null;\r
89\r
90 private JTextField jTextFieldFeatureFlag = null;\r
91\r
92 private ArchCheckBox jArchCheckBox = null;\r
93\r
94 private JButton jButtonOk = null;\r
95\r
96 private JButton jButtonCancel = null;\r
97\r
98 //\r
99 // Not used by UI\r
100 //\r
101 private EventsIdentification id = null;\r
102\r
103 private EnumerationData ed = new EnumerationData();\r
104\r
105 private WorkspaceTools wt = new WorkspaceTools();\r
106\r
107 /**\r
108 This method initializes jTextFieldC_Name \r
109 \r
110 @return javax.swing.JTextField jTextFieldC_Name\r
111 \r
112 **/\r
113 private JComboBox getJComboBoxGuidC_Name() {\r
114 if (jComboBoxGuidC_Name == null) {\r
115 jComboBoxGuidC_Name = new JComboBox();\r
116 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
117 jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
118 jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Event");\r
119 }\r
120 return jComboBoxGuidC_Name;\r
121 }\r
122\r
123 /**\r
124 This method initializes jComboBoxUsage \r
125 \r
126 @return javax.swing.JComboBox jComboBoxUsage\r
127 \r
128 **/\r
129 private JComboBox getJComboBoxUsage() {\r
130 if (jComboBoxUsage == null) {\r
131 jComboBoxUsage = new JComboBox();\r
9a8d6d9f 132 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
06a19cee 133 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
134 }\r
135 return jComboBoxUsage;\r
136 }\r
9a8d6d9f 137 \r
138 /**\r
139 This method initializes jComboBoxType \r
140 \r
141 @return javax.swing.JComboBox jComboBoxType\r
142 \r
143 **/\r
144 private JComboBox getJComboBoxEventsType() {\r
145 if (jComboBoxEventsType == null) {\r
146 jComboBoxEventsType = new JComboBox();\r
147 jComboBoxEventsType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
148 jComboBoxEventsType.setPreferredSize(new java.awt.Dimension(320, 20));\r
149 jComboBoxEventsType\r
150 .setToolTipText("<html>Select Create event if the Module has an event that<br> is waiting to be signaled. Select Signal if the Module will signal all events in an event group. Signal Event The events are named by GUID.</html>");\r
151 }\r
152 return jComboBoxEventsType;\r
153 }\r
06a19cee 154\r
155 /**\r
156 * This method initializes jComboBoxEventsType \r
157 * \r
158 * @return javax.swing.JComboBox \r
159 */\r
9a8d6d9f 160 private JComboBox getJComboBoxEventGroup() {\r
161 if (jComboBoxEventGroup == null) {\r
162 jComboBoxEventGroup = new JComboBox();\r
163 jComboBoxEventGroup.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
164 jComboBoxEventGroup.setPreferredSize(new java.awt.Dimension(320, 20));\r
165 \r
06a19cee 166 }\r
9a8d6d9f 167 return jComboBoxEventGroup;\r
06a19cee 168 }\r
169\r
170 /**\r
171 This method initializes jScrollPane \r
172 \r
173 @return javax.swing.JScrollPane \r
174 */\r
175 private JScrollPane getJScrollPane() {\r
176 if (jScrollPane == null) {\r
177 jScrollPane = new JScrollPane();\r
178 jScrollPane.setViewportView(getJContentPane());\r
179 }\r
180 return jScrollPane;\r
181 }\r
182\r
183 /**\r
184 * This method initializes jTextFieldFeatureFlag \r
185 * \r
186 * @return javax.swing.JTextField \r
187 */\r
188 private JTextField getJTextFieldFeatureFlag() {\r
189 if (jTextFieldFeatureFlag == null) {\r
190 jTextFieldFeatureFlag = new JTextField();\r
9a8d6d9f 191 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
06a19cee 192 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
193 }\r
194 return jTextFieldFeatureFlag;\r
195 }\r
196\r
197 /**\r
198 This method initializes jTextFieldHelpText \r
199 \r
200 @return javax.swing.JTextField \r
201 \r
202 **/\r
203 private JTextField getJTextFieldHelpText() {\r
204 if (jTextFieldHelpText == null) {\r
205 jTextFieldHelpText = new JTextField();\r
9a8d6d9f 206 jTextFieldHelpText.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
06a19cee 207 jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
208 }\r
209 return jTextFieldHelpText;\r
210 }\r
211\r
212 /**\r
213 This method initializes jButtonOk \r
214 \r
215 @return javax.swing.JButton \r
216 \r
217 **/\r
218 private JButton getJButtonOk() {\r
219 if (jButtonOk == null) {\r
220 jButtonOk = new JButton();\r
9a8d6d9f 221 jButtonOk.setBounds(new java.awt.Rectangle(290, 190, 90, 20));\r
06a19cee 222 jButtonOk.setText("Ok");\r
223 jButtonOk.addActionListener(this);\r
224 }\r
225 return jButtonOk;\r
226 }\r
227\r
228 /**\r
229 This method initializes jButtonCancel \r
230 \r
231 @return javax.swing.JButton \r
232 \r
233 **/\r
234 private JButton getJButtonCancel() {\r
235 if (jButtonCancel == null) {\r
236 jButtonCancel = new JButton();\r
9a8d6d9f 237 jButtonCancel.setBounds(new java.awt.Rectangle(390, 190, 90, 20));\r
06a19cee 238 jButtonCancel.setText("Cancel");\r
239 jButtonCancel.addActionListener(this);\r
240 }\r
241 return jButtonCancel;\r
242 }\r
243\r
244 public static void main(String[] args) {\r
245\r
246 }\r
247\r
248 /**\r
249 This method initializes this\r
250 \r
251 **/\r
252 private void init() {\r
9a8d6d9f 253 this.setSize(500, 255);\r
06a19cee 254 this.setContentPane(getJScrollPane());\r
255 this.setTitle("Events");\r
256 initFrame();\r
257 this.setViewMode(false);\r
258 this.centerWindow();\r
259 }\r
260\r
261 /**\r
262 This method initializes this\r
263 Fill values to all fields if these values are not empty\r
264 \r
265 @param inEventsId\r
266\r
267 **/\r
268 private void init(EventsIdentification inEventsId) {\r
269 init();\r
270 this.id = inEventsId;\r
271\r
272 if (this.id != null) {\r
273 this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
274 this.jComboBoxEventsType.setSelectedItem(id.getType());\r
275 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
276 this.jTextFieldHelpText.setText(id.getHelp());\r
277\r
278 jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
279 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
9a8d6d9f 280 this.jComboBoxEventGroup.setSelectedItem(id.getGroup());\r
06a19cee 281 }\r
282 }\r
283\r
284 /**\r
285 This is the override edit constructor\r
286 \r
287 @param inEventsIdentification\r
288 @param iFrame\r
289 \r
290 **/\r
291 public EventsDlg(EventsIdentification inEventsIdentification, IFrame iFrame) {\r
292 super(iFrame, true);\r
293 init(inEventsIdentification);\r
294 }\r
295\r
296 /**\r
297 Disable all components when the mode is view\r
298 \r
299 @param isView true - The view mode; false - The non-view mode\r
300 \r
301 **/\r
302 public void setViewMode(boolean isView) {\r
303 if (isView) {\r
304 this.jComboBoxGuidC_Name.setEnabled(!isView);\r
305 this.jComboBoxUsage.setEnabled(!isView);\r
306 }\r
307 }\r
308\r
309 /**\r
310 This method initializes jContentPane\r
311 \r
312 @return javax.swing.JPanel jContentPane\r
313 \r
314 **/\r
315 private JPanel getJContentPane() {\r
316 if (jContentPane == null) {\r
317 jArchCheckBox = new ArchCheckBox();\r
318 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
319 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
320 jLabelFeatureFlag = new JLabel();\r
9a8d6d9f 321 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
06a19cee 322 jLabelFeatureFlag.setText("Feature Flag");\r
323 jLabelArch = new JLabel();\r
9a8d6d9f 324 jLabelArch.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
06a19cee 325 jLabelArch.setText("Arch");\r
326 jLabelUsage = new JLabel();\r
327 jLabelUsage.setText("Usage");\r
9a8d6d9f 328 jLabelUsage.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
06a19cee 329 jLabelC_Name = new JLabel();\r
330 jLabelC_Name.setText("Guid C_Name");\r
331 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
9a8d6d9f 332 jLabelGroup = new JLabel();\r
333 jLabelGroup.setText("Even Type");\r
334 jLabelGroup.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
06a19cee 335 jLabelEventType = new JLabel();\r
9a8d6d9f 336 jLabelEventType.setText("Type");\r
06a19cee 337 jLabelEventType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
338 jLabelHelpText = new JLabel();\r
9a8d6d9f 339 jLabelHelpText.setBounds(new java.awt.Rectangle(14, 110, 140, 20));\r
06a19cee 340 jLabelHelpText.setText("Help Text");\r
341\r
342 jContentPane = new JPanel();\r
343 jContentPane.setLayout(null);\r
9a8d6d9f 344 jContentPane.setPreferredSize(new java.awt.Dimension(490, 220));\r
06a19cee 345\r
346 jContentPane.add(jLabelEventType, null);\r
9a8d6d9f 347 jContentPane.add(jLabelGroup, null);\r
06a19cee 348 jContentPane.add(jLabelC_Name, null);\r
349 jContentPane.add(getJComboBoxGuidC_Name(), null);\r
350 jContentPane.add(jLabelUsage, null);\r
351 jContentPane.add(getJComboBoxUsage(), null);\r
352 jStarLabel1 = new StarLabel();\r
353 jStarLabel1.setBounds(new java.awt.Rectangle(0, 10, 10, 20));\r
354 jStarLabel2 = new StarLabel();\r
355 jStarLabel2.setBounds(new java.awt.Rectangle(0, 35, 10, 20));\r
9a8d6d9f 356 jStarLabel3 = new StarLabel();\r
357 jStarLabel3.setBounds(new java.awt.Rectangle(0, 60, 10, 20));\r
358 \r
06a19cee 359 jContentPane.add(jStarLabel1, null);\r
360 jContentPane.add(jStarLabel2, null);\r
9a8d6d9f 361 jContentPane.add(jStarLabel3, null);\r
06a19cee 362 jContentPane.add(getJComboBoxEventsType(), null);\r
363\r
364 jContentPane.add(jLabelArch, null);\r
365 jContentPane.add(jLabelFeatureFlag, null);\r
366 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
367 jContentPane.add(jLabelHelpText, null);\r
368 jContentPane.add(getJTextFieldHelpText(), null);\r
369 jContentPane.add(jArchCheckBox, null);\r
370 jContentPane.add(getJButtonOk(), null);\r
371 jContentPane.add(getJButtonCancel(), null);\r
9a8d6d9f 372 jContentPane.add(getJComboBoxEventGroup(), null);\r
06a19cee 373 }\r
374 return jContentPane;\r
375 }\r
376\r
377 /**\r
378 This method initializes events groups and usage type\r
379 \r
380 **/\r
381 private void initFrame() {\r
382 Tools.generateComboBoxByVector(jComboBoxEventsType, ed.getVEventType());\r
9a8d6d9f 383 Tools.generateComboBoxByVector(jComboBoxEventGroup, ed.getVEventGroup());\r
06a19cee 384 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVEventUsage());\r
385 Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\r
386 }\r
387\r
388 /* (non-Javadoc)\r
389 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
390 *\r
391 * Override actionPerformed to listen all actions\r
392 * \r
393 */\r
394 public void actionPerformed(ActionEvent arg0) {\r
395 if (arg0.getSource() == jButtonOk) {\r
396 if (checkAdd()) {\r
397 getCurrentEvents();\r
398 this.returnType = DataType.RETURN_TYPE_OK;\r
399 this.setVisible(false);\r
400 }\r
401 }\r
402\r
403 if (arg0.getSource() == jButtonCancel) {\r
404 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
405 this.setVisible(false);\r
406 }\r
407 }\r
408\r
409 /**\r
410 Data validation for all fields\r
411 \r
412 @retval true - All datas are valid\r
413 @retval false - At least one data is invalid\r
414 \r
415 **/\r
416 public boolean checkAdd() {\r
417 //\r
418 // Check if all fields have correct data types \r
419 //\r
420\r
421 //\r
422 // Check Name \r
423 //\r
424 if (isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
425 Log.err("Event Name couldn't be empty");\r
426 return false;\r
427 }\r
428\r
429 if (!isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
430 if (!DataValidation.isC_NameType(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
431 Log.err("Incorrect data type for Event Name");\r
432 return false;\r
433 }\r
434 }\r
435\r
436 //\r
437 // Check FeatureFlag\r
438 //\r
439 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
440 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
441 Log.err("Incorrect data type for Feature Flag");\r
442 return false;\r
443 }\r
444 }\r
445\r
446 return true;\r
447 }\r
448\r
449 private EventsIdentification getCurrentEvents() {\r
450 String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
451 String arg1 = this.jComboBoxEventsType.getSelectedItem().toString();\r
452 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
453\r
454 String arg3 = this.jTextFieldFeatureFlag.getText();\r
455 Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
456 String arg5 = this.jTextFieldHelpText.getText();\r
9a8d6d9f 457 String arg6 = this.jComboBoxEventGroup.getSelectedItem().toString();\r
458 id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
06a19cee 459 return id;\r
460 }\r
461\r
462 public EventsIdentification getId() {\r
463 return id;\r
464 }\r
465\r
466 public void setId(EventsIdentification id) {\r
467 this.id = id;\r
468 }\r
469}\r