]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/ModuleEditor/src/org/tianocore/packaging/module/ui/ModuleEvents.java
1. Modify start script to
[mirror_edk2.git] / Tools / Source / ModuleEditor / src / org / tianocore / packaging / module / ui / ModuleEvents.java
1 /** @file
2
3 The file is used to create, update Event of MSA/MBD file
4
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15 package org.tianocore.packaging.module.ui;
16
17 import java.awt.Dimension;
18 import java.awt.event.ActionEvent;
19
20 import javax.swing.JButton;
21 import javax.swing.JComboBox;
22 import javax.swing.JLabel;
23 import javax.swing.JPanel;
24 import javax.swing.JRadioButton;
25 import javax.swing.JTextField;
26
27 import org.tianocore.EventTypes;
28 import org.tianocore.EventUsage;
29 import org.tianocore.EventsDocument;
30 import org.tianocore.GuidDocument;
31 import org.tianocore.common.DataValidation;
32 import org.tianocore.common.Log;
33 import org.tianocore.common.Tools;
34 import org.tianocore.packaging.common.ui.IDefaultMutableTreeNode;
35 import org.tianocore.packaging.common.ui.IInternalFrame;
36 import org.tianocore.packaging.common.ui.StarLabel;
37
38 /**
39 The class is used to create, update Event of MSA/MBD file
40 It extends IInternalFrame
41
42 @since ModuleEditor 1.0
43
44 **/
45 public class ModuleEvents extends IInternalFrame {
46
47 ///
48 /// Define class Serial Version UID
49 ///
50 private static final long serialVersionUID = -4396143706422842331L;
51
52 //
53 //Define class members
54 //
55 private EventsDocument.Events events = null;
56
57 private EventsDocument.Events.CreateEvents createEvent = null;
58
59 private EventsDocument.Events.SignalEvents signalEvent = null;
60
61 private int location = -1;
62
63 private JPanel jContentPane = null;
64
65 private JLabel jLabelEventType = null;
66
67 private JRadioButton jRadioButtonEventCreate = null;
68
69 private JRadioButton jRadioButtonEventSignal = null;
70
71 private JLabel jLabelC_Name = null;
72
73 private JTextField jTextFieldC_Name = null;
74
75 private JLabel jLabelGuid = null;
76
77 private JTextField jTextFieldGuid = null;
78
79 private JLabel jLabelEventGroup = null;
80
81 private JComboBox jComboBoxEventGroup = null;
82
83 private JLabel jLabelUsage = null;
84
85 private JComboBox jComboBoxUsage = null;
86
87 private JButton jButtonOk = null;
88
89 private JButton jButtonCancel = null;
90
91 private JButton jButtonGenerateGuid = null;
92
93 private JLabel jLabelOverrideID = null;
94
95 private JTextField jTextFieldOverrideID = null;
96
97 private StarLabel jStarLabel1 = null;
98
99 private StarLabel jStarLabel2 = null;
100
101 /**
102 This method initializes jRadioButtonEnentType
103
104 @return javax.swing.JRadioButton jRadioButtonEventCreate
105
106 **/
107 private JRadioButton getJRadioButtonEventCreate() {
108 if (jRadioButtonEventCreate == null) {
109 jRadioButtonEventCreate = new JRadioButton();
110 jRadioButtonEventCreate.setText("Create");
111 jRadioButtonEventCreate.setBounds(new java.awt.Rectangle(160, 10, 90, 20));
112 jRadioButtonEventCreate.addActionListener(this);
113 jRadioButtonEventCreate.setSelected(true);
114 }
115 return jRadioButtonEventCreate;
116 }
117
118 /**
119 This method initializes jRadioButtonEventSignal
120
121 @return javax.swing.JRadioButton jRadioButtonEventSignal
122
123 **/
124 private JRadioButton getJRadioButtonEventSignal() {
125 if (jRadioButtonEventSignal == null) {
126 jRadioButtonEventSignal = new JRadioButton();
127 jRadioButtonEventSignal.setText("Signal");
128 jRadioButtonEventSignal.setBounds(new java.awt.Rectangle(320, 10, 90, 20));
129 jRadioButtonEventSignal.addActionListener(this);
130 }
131 return jRadioButtonEventSignal;
132 }
133
134 /**
135 This method initializes jTextFieldC_Name
136
137 @return javax.swing.JTextField jTextFieldC_Name
138
139 **/
140 private JTextField getJTextFieldC_Name() {
141 if (jTextFieldC_Name == null) {
142 jTextFieldC_Name = new JTextField();
143 jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));
144 }
145 return jTextFieldC_Name;
146 }
147
148 /**
149 This method initializes jTextFieldGuid
150
151 @return javax.swing.JTextField jTextFieldGuid
152
153 **/
154 private JTextField getJTextFieldGuid() {
155 if (jTextFieldGuid == null) {
156 jTextFieldGuid = new JTextField();
157 jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 60, 250, 20));
158 }
159 return jTextFieldGuid;
160 }
161
162 /**
163 This method initializes jComboBoxEventGroup
164
165 @return javax.swing.JComboBox jComboBoxEventGroup
166
167 **/
168 private JComboBox getJComboBoxEventGroup() {
169 if (jComboBoxEventGroup == null) {
170 jComboBoxEventGroup = new JComboBox();
171 jComboBoxEventGroup.setBounds(new java.awt.Rectangle(160, 85, 320, 20));
172 }
173 return jComboBoxEventGroup;
174 }
175
176 /**
177 This method initializes jComboBoxUsage
178
179 @return javax.swing.JComboBox jComboBoxUsage
180
181 **/
182 private JComboBox getJComboBoxUsage() {
183 if (jComboBoxUsage == null) {
184 jComboBoxUsage = new JComboBox();
185 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 110, 320, 20));
186 }
187 return jComboBoxUsage;
188 }
189
190 /**
191 This method initializes jButtonOk
192
193 @return javax.swing.JButton jButtonOk
194
195 **/
196 private JButton getJButton() {
197 if (jButtonOk == null) {
198 jButtonOk = new JButton();
199 jButtonOk.setText("OK");
200 jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));
201 jButtonOk.addActionListener(this);
202 }
203 return jButtonOk;
204 }
205
206 /**
207 This method initializes jButtonCancel
208
209 @return javax.swing.JButton jButtonCancel
210
211 **/
212 private JButton getJButtonCancel() {
213 if (jButtonCancel == null) {
214 jButtonCancel = new JButton();
215 jButtonCancel.setText("Cancel");
216 jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));
217 jButtonCancel.setPreferredSize(new Dimension(90, 20));
218 jButtonCancel.addActionListener(this);
219 }
220 return jButtonCancel;
221 }
222
223 /**
224 This method initializes jButtonGenerateGuid
225
226 @return javax.swing.JButton jButtonGenerateGuid
227
228 **/
229 private JButton getJButtonGenerateGuid() {
230 if (jButtonGenerateGuid == null) {
231 jButtonGenerateGuid = new JButton();
232 jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 60, 65, 20));
233 jButtonGenerateGuid.setText("GEN");
234 jButtonGenerateGuid.addActionListener(this);
235 }
236 return jButtonGenerateGuid;
237 }
238
239 /**
240 This method initializes jTextFieldOverrideID
241
242 @return javax.swing.JTextField jTextFieldOverrideID
243
244 **/
245 private JTextField getJTextFieldOverrideID() {
246 if (jTextFieldOverrideID == null) {
247 jTextFieldOverrideID = new JTextField();
248 jTextFieldOverrideID.setBounds(new java.awt.Rectangle(160, 135, 50, 20));
249 }
250 return jTextFieldOverrideID;
251 }
252
253 public static void main(String[] args) {
254
255 }
256
257 /**
258 This is the default constructor
259
260 **/
261 public ModuleEvents() {
262 super();
263 init();
264 this.setVisible(true);
265 }
266
267 /**
268 This is the override edit constructor
269
270 @param inEvents The input EventsDocument.Events
271
272 **/
273 public ModuleEvents(EventsDocument.Events inEvents) {
274 super();
275 init(inEvents);
276 this.setVisible(true);
277 }
278
279 /**
280 This is the override edit constructor
281
282 @param inEvents The input EventsDocument.Events
283 @param type The input data of node type
284 @param index The input data of node index
285
286 **/
287 public ModuleEvents(EventsDocument.Events inEvents, int type, int index) {
288 super();
289 init(inEvents, type, index);
290 this.setVisible(true);
291 }
292
293 /**
294 This method initializes this
295
296 @param inEvents The input EventsDocument.Events
297
298 **/
299 private void init(EventsDocument.Events inEvents) {
300 init();
301 this.setEvents(inEvents);
302 }
303
304 /**
305 This method initializes this
306 Fill values to all fields if these values are not empty
307
308 @param inEvents EventsDocument.Events
309 @param type The input data of node type
310 @param index The input data of node index
311
312 **/
313 private void init(EventsDocument.Events inEvents, int type, int index) {
314 init(inEvents);
315 this.location = index;
316 if (type == IDefaultMutableTreeNode.EVENTS_CREATEEVENTS_ITEM) {
317 this.jRadioButtonEventCreate.setSelected(true);
318 this.jRadioButtonEventSignal.setSelected(false);
319 if (this.events.getCreateEvents().getEventArray(index).getCName() != null) {
320 this.jTextFieldC_Name.setText(this.events.getCreateEvents().getEventArray(index).getCName());
321 }
322 if (this.events.getCreateEvents().getEventArray(index).getGuid() != null) {
323 this.jTextFieldGuid.setText(this.events.getCreateEvents().getEventArray(index).getGuid()
324 .getStringValue());
325 }
326 if (this.events.getCreateEvents().getEventArray(index).getEventGroup() != null) {
327 this.jComboBoxEventGroup.setSelectedItem(this.events.getCreateEvents().getEventArray(index)
328 .getEventGroup().toString());
329 }
330 if (this.events.getCreateEvents().getEventArray(index).getUsage() != null) {
331 this.jComboBoxUsage.setSelectedItem(this.events.getCreateEvents().getEventArray(index).getUsage()
332 .toString());
333 }
334 this.jTextFieldOverrideID.setText(String.valueOf(this.events.getCreateEvents().getEventArray(index)
335 .getOverrideID()));
336 } else if (type == IDefaultMutableTreeNode.EVENTS_SIGNALEVENTS_ITEM) {
337 this.jRadioButtonEventCreate.setSelected(false);
338 this.jRadioButtonEventSignal.setSelected(true);
339 this.jComboBoxUsage.setEnabled(false);
340 if (this.events.getSignalEvents().getEventArray(index).getCName() != null) {
341 this.jTextFieldC_Name.setText(this.events.getSignalEvents().getEventArray(index).getCName());
342 }
343 if (this.events.getSignalEvents().getEventArray(index).getGuid() != null) {
344 this.jTextFieldGuid.setText(this.events.getSignalEvents().getEventArray(index).getGuid().toString());
345 }
346 if (this.events.getSignalEvents().getEventArray(index).getEventGroup() != null) {
347 this.jComboBoxEventGroup.setSelectedItem(this.events.getSignalEvents().getEventArray(index)
348 .getEventGroup().toString());
349 }
350 if (this.events.getSignalEvents().getEventArray(index).getUsage() != null) {
351 this.jComboBoxUsage.setSelectedItem(this.events.getSignalEvents().getEventArray(index).getUsage()
352 .toString());
353 }
354 this.jTextFieldOverrideID.setText(String.valueOf(this.events.getSignalEvents().getEventArray(index)
355 .getOverrideID()));
356 }
357 this.jRadioButtonEventCreate.setEnabled(false);
358 this.jRadioButtonEventSignal.setEnabled(false);
359 }
360
361 /**
362 This method initializes this
363
364 **/
365 private void init() {
366 this.setSize(500, 515);
367 this.setContentPane(getJContentPane());
368 this.setTitle("Events");
369 initFrame();
370 this.setViewMode(false);
371 }
372
373 /**
374 Disable all components when the mode is view
375
376 @param isView true - The view mode; false - The non-view mode
377
378 **/
379 public void setViewMode(boolean isView) {
380 this.jButtonOk.setVisible(false);
381 this.jButtonCancel.setVisible(false);
382 if (isView) {
383 this.jRadioButtonEventCreate.setEnabled(!isView);
384 this.jRadioButtonEventSignal.setEnabled(!isView);
385 this.jTextFieldC_Name.setEnabled(!isView);
386 this.jTextFieldGuid.setEnabled(!isView);
387 this.jComboBoxEventGroup.setEnabled(!isView);
388 this.jComboBoxUsage.setEnabled(!isView);
389 this.jTextFieldOverrideID.setEnabled(!isView);
390 this.jButtonCancel.setEnabled(!isView);
391 this.jButtonGenerateGuid.setEnabled(!isView);
392 this.jButtonOk.setEnabled(!isView);
393 }
394 }
395
396 /**
397 This method initializes jContentPane
398
399 @return javax.swing.JPanel jContentPane
400
401 **/
402 private JPanel getJContentPane() {
403 if (jContentPane == null) {
404 jLabelOverrideID = new JLabel();
405 jLabelOverrideID.setBounds(new java.awt.Rectangle(15, 135, 140, 20));
406 jLabelOverrideID.setText("Override ID");
407 jLabelUsage = new JLabel();
408 jLabelUsage.setText("Usage");
409 jLabelUsage.setBounds(new java.awt.Rectangle(15, 110, 140, 20));
410 jLabelEventGroup = new JLabel();
411 jLabelEventGroup.setText("Event Group");
412 jLabelEventGroup.setBounds(new java.awt.Rectangle(15, 85, 140, 20));
413 jLabelGuid = new JLabel();
414 jLabelGuid.setText("Guid");
415 jLabelGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));
416 jLabelC_Name = new JLabel();
417 jLabelC_Name.setText("C_Name");
418 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));
419 jLabelEventType = new JLabel();
420 jLabelEventType.setText("Event Type");
421 jLabelEventType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));
422 jContentPane = new JPanel();
423 jContentPane.setLayout(null);
424 jContentPane.add(jLabelEventType, null);
425 jContentPane.add(getJRadioButtonEventCreate(), null);
426 jContentPane.add(getJRadioButtonEventSignal(), null);
427 jContentPane.add(jLabelC_Name, null);
428 jContentPane.add(getJTextFieldC_Name(), null);
429 jContentPane.add(jLabelGuid, null);
430 jContentPane.add(getJTextFieldGuid(), null);
431 jContentPane.add(jLabelEventGroup, null);
432 jContentPane.add(getJComboBoxEventGroup(), null);
433 jContentPane.add(jLabelUsage, null);
434 jContentPane.add(getJComboBoxUsage(), null);
435 jContentPane.add(getJButton(), null);
436 jContentPane.add(getJButtonCancel(), null);
437 jContentPane.add(getJButtonGenerateGuid(), null);
438 jContentPane.add(jLabelOverrideID, null);
439 jContentPane.add(getJTextFieldOverrideID(), null);
440
441 jStarLabel1 = new StarLabel();
442 jStarLabel1.setBounds(new java.awt.Rectangle(0, 10, 10, 20));
443 jStarLabel2 = new StarLabel();
444 jStarLabel2.setBounds(new java.awt.Rectangle(0, 35, 10, 20));
445
446 jContentPane.add(jStarLabel1, null);
447 jContentPane.add(jStarLabel2, null);
448 }
449 return jContentPane;
450 }
451
452 /**
453 This method initializes events groups and usage type
454
455 **/
456 private void initFrame() {
457 jComboBoxEventGroup.addItem("EVENT_GROUP_EXIT_BOOT_SERVICES");
458 jComboBoxEventGroup.addItem("EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE");
459 jComboBoxEventGroup.addItem("EVENT_GROUP_MEMORY_MAP_CHANGE");
460 jComboBoxEventGroup.addItem("EVENT_GROUP_READY_TO_BOOT");
461 jComboBoxEventGroup.addItem("EVENT_GROUP_LEGACY_BOOT");
462
463 jComboBoxUsage.addItem("ALWAYS_CONSUMED");
464 jComboBoxUsage.addItem("SOMETIMES_CONSUMED");
465 jComboBoxUsage.addItem("ALWAYS_PRODUCED");
466 jComboBoxUsage.addItem("SOMETIMES_PRODUCED");
467 jComboBoxUsage.addItem("PRIVATE");
468 }
469
470 /* (non-Javadoc)
471 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
472 *
473 * Override actionPerformed to listen all actions
474 *
475 */
476 public void actionPerformed(ActionEvent arg0) {
477 if (arg0.getSource() == jButtonOk) {
478 this.setEdited(true);
479 this.save();
480 this.dispose();
481 }
482 if (arg0.getSource() == jButtonCancel) {
483 this.dispose();
484 }
485
486 if (arg0.getSource() == jRadioButtonEventCreate) {
487 if (jRadioButtonEventCreate.isSelected()) {
488 jRadioButtonEventSignal.setSelected(false);
489 }
490 if (!jRadioButtonEventSignal.isSelected() && !jRadioButtonEventCreate.isSelected()) {
491 jRadioButtonEventCreate.setSelected(true);
492 }
493 }
494
495 if (arg0.getSource() == jRadioButtonEventSignal) {
496 if (jRadioButtonEventSignal.isSelected()) {
497 jRadioButtonEventCreate.setSelected(false);
498 }
499 if (!jRadioButtonEventSignal.isSelected() && !jRadioButtonEventCreate.isSelected()) {
500 jRadioButtonEventSignal.setSelected(true);
501 }
502 }
503
504 if (arg0.getSource() == jButtonGenerateGuid) {
505 jTextFieldGuid.setText(Tools.generateUuidString());
506 }
507 }
508
509 public EventsDocument.Events getEvents() {
510 return events;
511 }
512
513 public void setEvents(EventsDocument.Events events) {
514 this.events = events;
515 }
516
517 /**
518 Data validation for all fields
519
520 @retval true - All datas are valid
521 @retval false - At least one data is invalid
522
523 **/
524 public boolean check() {
525 //
526 // Check if all required fields are not empty
527 //
528 if (isEmpty(this.jTextFieldC_Name.getText())) {
529 Log.err("C_Name couldn't be empty");
530 return false;
531 }
532
533 //
534 // Check if all fields have correct data types
535 //
536 if (!DataValidation.isCName(this.jTextFieldC_Name.getText())) {
537 Log.err("Incorrect data type for C_Name");
538 return false;
539 }
540 if (!isEmpty(this.jTextFieldGuid.getText()) && !DataValidation.isGuid(this.jTextFieldGuid.getText())) {
541 Log.err("Incorrect data type for Guid");
542 return false;
543 }
544 if (!isEmpty(this.jTextFieldOverrideID.getText())
545 && !DataValidation.isOverrideID(this.jTextFieldOverrideID.getText())) {
546 Log.err("Incorrect data type for Override ID");
547 return false;
548 }
549
550 return true;
551 }
552
553 /**
554 Save all components of Events
555 if exists events, set the value directly
556 if not exists events, new an instance first
557
558 **/
559 public void save() {
560 try {
561 if (this.events == null) {
562 events = EventsDocument.Events.Factory.newInstance();
563 createEvent = EventsDocument.Events.CreateEvents.Factory.newInstance();
564 signalEvent = EventsDocument.Events.SignalEvents.Factory.newInstance();
565 } else {
566 if (events.getCreateEvents() != null) {
567 createEvent = events.getCreateEvents();
568 } else {
569 createEvent = EventsDocument.Events.CreateEvents.Factory.newInstance();
570 }
571 if (events.getSignalEvents() != null) {
572 signalEvent = events.getSignalEvents();
573 } else {
574 signalEvent = EventsDocument.Events.SignalEvents.Factory.newInstance();
575 }
576
577 }
578 if (this.jRadioButtonEventCreate.isSelected()) {
579 EventsDocument.Events.CreateEvents.Event event = EventsDocument.Events.CreateEvents.Event.Factory
580 .newInstance();
581 event.setCName(this.jTextFieldC_Name.getText());
582 if (!isEmpty(this.jTextFieldGuid.getText())) {
583 GuidDocument.Guid guid = GuidDocument.Guid.Factory.newInstance();
584 guid.setStringValue(this.jTextFieldGuid.getText());
585 event.setGuid(guid);
586 }
587 event.setEventGroup(EventTypes.Enum.forString(jComboBoxEventGroup.getSelectedItem().toString()));
588 event.setUsage(EventUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));
589 if (!isEmpty(this.jTextFieldOverrideID.getText())) {
590 event.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));
591 }
592 if (location > -1) {
593 createEvent.setEventArray(location, event);
594 } else {
595 createEvent.addNewEvent();
596 createEvent.setEventArray(createEvent.getEventList().size() - 1, event);
597 }
598 events.setCreateEvents(createEvent);
599 }
600 if (this.jRadioButtonEventSignal.isSelected()) {
601 EventsDocument.Events.SignalEvents.Event event = EventsDocument.Events.SignalEvents.Event.Factory
602 .newInstance();
603 event.setCName(this.jTextFieldC_Name.getText());
604 if (!isEmpty(this.jTextFieldGuid.getText())) {
605 GuidDocument.Guid guid = GuidDocument.Guid.Factory.newInstance();
606 guid.setStringValue(this.jTextFieldGuid.getText());
607 event.setGuid(guid);
608 }
609 event.setEventGroup(EventTypes.Enum.forString(jComboBoxEventGroup.getSelectedItem().toString()));
610 event.setUsage(EventUsage.Enum.forString(jComboBoxUsage.getSelectedItem().toString()));
611 if (!isEmpty(this.jTextFieldOverrideID.getText())) {
612 event.setOverrideID(Integer.parseInt(this.jTextFieldOverrideID.getText()));
613 }
614 if (location > -1) {
615 signalEvent.setEventArray(location, event);
616 } else {
617 signalEvent.addNewEvent();
618 signalEvent.setEventArray(signalEvent.getEventList().size() - 1, event);
619 }
620 events.setSignalEvents(signalEvent);
621 }
622 } catch (Exception e) {
623 Log.err("Update Events", e.getMessage());
624 }
625 }
626 }