3 The file is used to create, update Event of MSA/MBD file
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
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.
15 package org
.tianocore
.frameworkwizard
.module
.ui
;
17 import java
.awt
.Dimension
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ComponentEvent
;
20 import java
.awt
.event
.MouseEvent
;
21 import java
.util
.Vector
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JPanel
;
25 import javax
.swing
.JScrollPane
;
26 import javax
.swing
.JTable
;
27 import javax
.swing
.ListSelectionModel
;
28 import javax
.swing
.event
.ListSelectionEvent
;
30 import org
.tianocore
.EventTypes
;
31 import org
.tianocore
.EventsDocument
;
32 import org
.tianocore
.ProtocolNotifyUsage
;
33 import org
.tianocore
.ProtocolUsage
;
34 import org
.tianocore
.EventsDocument
.Events
;
35 import org
.tianocore
.EventsDocument
.Events
.CreateEvents
;
36 import org
.tianocore
.EventsDocument
.Events
.SignalEvents
;
37 import org
.tianocore
.ModuleSurfaceAreaDocument
.ModuleSurfaceArea
;
38 import org
.tianocore
.frameworkwizard
.common
.DataType
;
39 import org
.tianocore
.frameworkwizard
.common
.EnumerationData
;
40 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
41 import org
.tianocore
.frameworkwizard
.common
.Log
;
42 import org
.tianocore
.frameworkwizard
.common
.Tools
;
43 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningModuleType
;
44 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
45 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
46 import org
.tianocore
.frameworkwizard
.module
.Identifications
.Events
.EventsIdentification
;
47 import org
.tianocore
.frameworkwizard
.module
.Identifications
.Events
.EventsVector
;
48 import org
.tianocore
.frameworkwizard
.module
.ui
.dialog
.EventsDlg
;
51 The class is used to create, update Event of MSA/MBD file
52 It extends IInternalFrame
54 @since ModuleEditor 1.0
57 public class ModuleEvents
extends IInternalFrame
{
60 /// Define class Serial Version UID
62 private static final long serialVersionUID
= -4396143706422842331L;
65 //Define class members
67 private JPanel jContentPane
= null;
69 private JButton jButtonAdd
= null;
71 private JButton jButtonRemove
= null;
73 private JButton jButtonUpdate
= null;
75 private JScrollPane jScrollPane
= null;
77 private JScrollPane jScrollPaneTable
= null;
79 private JTable jTable
= null;
84 private OpeningModuleType omt
= null;
86 private ModuleSurfaceArea msa
= null;
88 private EventsDocument
.Events events
= null;
90 private EventsIdentification id
= null;
92 private EventsVector vid
= new EventsVector();
94 private EnumerationData ed
= new EnumerationData();
96 private IDefaultTableModel model
= null;
98 private int selectedRow
= -1;
100 private IFrame parentFrame
= null;
103 This method initializes jButtonAdd
105 @return javax.swing.JButton jButtonAdd
108 private JButton
getJButtonAdd() {
109 if (jButtonAdd
== null) {
110 jButtonAdd
= new JButton();
111 jButtonAdd
.setBounds(new java
.awt
.Rectangle(230, 220, 90, 20));
112 jButtonAdd
.setText("Add");
113 jButtonAdd
.addActionListener(this);
114 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(90, 20));
120 This method initializes jButtonRemove
122 @return javax.swing.JButton jButtonRemove
125 private JButton
getJButtonRemove() {
126 if (jButtonRemove
== null) {
127 jButtonRemove
= new JButton();
128 jButtonRemove
.setBounds(new java
.awt
.Rectangle(400, 220, 90, 20));
129 jButtonRemove
.setText("Remove");
130 jButtonRemove
.addActionListener(this);
131 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(90, 20));
133 return jButtonRemove
;
137 This method initializes jButtonUpdate
139 @return javax.swing.JButton jButtonUpdate
142 private JButton
getJButtonUpdate() {
143 if (jButtonUpdate
== null) {
144 jButtonUpdate
= new JButton();
145 jButtonUpdate
.setBounds(new java
.awt
.Rectangle(315, 220, 90, 20));
146 jButtonUpdate
.setPreferredSize(new java
.awt
.Dimension(90, 20));
147 jButtonUpdate
.setText("Edit");
148 jButtonUpdate
.addActionListener(this);
150 return jButtonUpdate
;
154 This method initializes jScrollPane
156 @return javax.swing.JScrollPane
158 private JScrollPane
getJScrollPane() {
159 if (jScrollPane
== null) {
160 jScrollPane
= new JScrollPane();
161 jScrollPane
.setViewportView(getJContentPane());
167 This method initializes jScrollPaneTable
169 @return javax.swing.JScrollPane
171 private JScrollPane
getJScrollPaneTable() {
172 if (jScrollPaneTable
== null) {
173 jScrollPaneTable
= new JScrollPane();
174 jScrollPaneTable
.setBounds(new java
.awt
.Rectangle(15, 10, 470, 420));
175 jScrollPaneTable
.setPreferredSize(new Dimension(470, 420));
176 jScrollPaneTable
.setViewportView(getJTable());
178 return jScrollPaneTable
;
182 This method initializes jTable
184 @return javax.swing.JTable
186 private JTable
getJTable() {
187 if (jTable
== null) {
188 jTable
= new JTable();
189 model
= new IDefaultTableModel();
190 jTable
= new JTable(model
);
191 jTable
.setRowHeight(20);
193 model
.addColumn("Guid C_Name");
194 model
.addColumn("Type");
195 model
.addColumn("Usage");
197 jTable
.setSelectionMode(ListSelectionModel
.MULTIPLE_INTERVAL_SELECTION
);
198 jTable
.getSelectionModel().addListSelectionListener(this);
199 jTable
.getModel().addTableModelListener(this);
200 jTable
.addMouseListener(this);
205 public static void main(String
[] args
) {
210 This method initializes this
213 private void init() {
214 this.setSize(500, 515);
215 this.setContentPane(getJScrollPane());
216 this.setTitle("Events");
220 This method initializes this
221 Fill values to all fields if these values are not empty
223 @param inPackageDependencies
226 private void init(Events inEvents
) {
228 this.events
= inEvents
;
230 if (this.events
!= null) {
231 if (this.events
.getCreateEvents() != null) {
232 if (this.events
.getCreateEvents().getEventTypesList().size() > 0) {
233 for (int index
= 0; index
< this.events
.getCreateEvents().getEventTypesList().size(); index
++) {
234 String arg0
= events
.getCreateEvents().getEventTypesList().get(index
).getEventGuidCName();
235 String arg1
= ed
.getVEventType().get(0);
237 if (events
.getCreateEvents().getEventTypesList().get(index
).getUsage() != null) {
238 arg2
= events
.getCreateEvents().getEventTypesList().get(index
).getUsage().toString();
241 String arg3
= events
.getCreateEvents().getEventTypesList().get(index
).getFeatureFlag();
242 Vector
<String
> arg4
= Tools
.convertListToVector(events
.getCreateEvents().getEventTypesList()
243 .get(index
).getSupArchList());
244 String arg5
= events
.getCreateEvents().getEventTypesList().get(index
).getHelpText();
245 String arg6
= events
.getCreateEvents().getEventTypesList().get(index
).getEventType().toString();
246 id
= new EventsIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
251 if (this.events
.getSignalEvents() != null) {
252 if (this.events
.getSignalEvents().getEventTypesList().size() > 0) {
253 for (int index
= 0; index
< this.events
.getSignalEvents().getEventTypesList().size(); index
++) {
254 String arg0
= events
.getSignalEvents().getEventTypesList().get(index
).getEventGuidCName();
255 String arg1
= ed
.getVEventType().get(1);
257 if (events
.getSignalEvents().getEventTypesList().get(index
).getUsage() != null) {
258 arg2
= events
.getSignalEvents().getEventTypesList().get(index
).getUsage().toString();
261 String arg3
= events
.getSignalEvents().getEventTypesList().get(index
).getFeatureFlag();
262 Vector
<String
> arg4
= Tools
.convertListToVector(events
.getSignalEvents().getEventTypesList()
263 .get(index
).getSupArchList());
264 String arg5
= events
.getSignalEvents().getEventTypesList().get(index
).getHelpText();
265 String arg6
= events
.getSignalEvents().getEventTypesList().get(index
).getEventType().toString();
266 id
= new EventsIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
276 This is the default constructor
279 public ModuleEvents() {
282 this.setVisible(true);
286 This is the override edit constructor
288 @param inEvents The input EventsDocument.Events
291 public ModuleEvents(OpeningModuleType inOmt
, IFrame iFrame
) {
294 this.msa
= omt
.getXmlMsa();
295 this.parentFrame
= iFrame
;
296 init(msa
.getEvents());
297 this.setVisible(true);
301 This method initializes jContentPane
303 @return javax.swing.JPanel jContentPane
306 private JPanel
getJContentPane() {
307 if (jContentPane
== null) {
308 jContentPane
= new JPanel();
309 jContentPane
.setLayout(null);
310 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 490));
312 jContentPane
.add(getJButtonAdd(), null);
313 jContentPane
.add(getJButtonRemove(), null);
314 jContentPane
.add(getJButtonUpdate(), null);
315 jContentPane
.add(getJScrollPaneTable(), null);
320 private void showEdit(int index
) {
321 EventsDlg dlg
= new EventsDlg(vid
.getEvents(index
), this.parentFrame
, omt
.getId());
322 int result
= dlg
.showDialog();
323 if (result
== DataType
.RETURN_TYPE_OK
) {
325 this.vid
.addEvents(dlg
.getId());
327 this.vid
.setEvents(dlg
.getId(), index
);
333 if (result
== DataType
.RETURN_TYPE_CANCEL
) {
342 private void clearAll() {
344 for (int index
= model
.getRowCount() - 1; index
>= 0; index
--) {
345 model
.removeRow(index
);
351 Read content of vector and put then into table
354 private void showTable() {
357 if (vid
.size() > 0) {
358 for (int index
= 0; index
< vid
.size(); index
++) {
359 model
.addRow(vid
.toStringVector(index
));
362 this.jTable
.repaint();
363 this.jTable
.updateUI();
367 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
369 * Override actionPerformed to listen all actions
372 public void actionPerformed(ActionEvent arg0
) {
373 if (arg0
.getSource() == jButtonAdd
) {
376 if (arg0
.getSource() == jButtonUpdate
) {
377 if (this.selectedRow
< 0) {
378 Log
.wrn("Update Events", "Please select one record first.");
381 showEdit(selectedRow
);
384 if (arg0
.getSource() == jButtonRemove
) {
385 if (jTable
.isEditing()) {
386 jTable
.getCellEditor().stopCellEditing();
389 int selectedRows
[] = this.jTable
.getSelectedRows();
391 if (selectedRows
!= null) {
392 for (int index
= selectedRows
.length
- 1; index
> -1; index
--) {
393 this.model
.removeRow(selectedRows
[index
]);
394 this.vid
.removeEvents(selectedRows
[index
]);
403 Save all components of Events
404 if exists events, set the value directly
405 if not exists events, new an instance first
410 int count
= this.vid
.size();
412 this.events
= Events
.Factory
.newInstance();
413 CreateEvents ce
= CreateEvents
.Factory
.newInstance();
414 SignalEvents se
= SignalEvents
.Factory
.newInstance();
417 for (int index
= 0; index
< count
; index
++) {
418 if (vid
.getEvents(index
).getType().equals(ed
.getVEventType().get(0))) {
419 CreateEvents
.EventTypes e
= CreateEvents
.EventTypes
.Factory
.newInstance();
420 if (!isEmpty(vid
.getEvents(index
).getName())) {
421 e
.setEventGuidCName(vid
.getEvents(index
).getName());
423 if (!isEmpty(vid
.getEvents(index
).getUsage())) {
424 e
.setUsage(ProtocolUsage
.Enum
.forString(vid
.getEvents(index
).getUsage()));
426 if (!isEmpty(vid
.getEvents(index
).getFeatureFlag())) {
427 e
.setFeatureFlag(vid
.getEvents(index
).getFeatureFlag());
429 if (vid
.getEvents(index
).getSupArchList() != null
430 && vid
.getEvents(index
).getSupArchList().size() > 0) {
431 e
.setSupArchList(vid
.getEvents(index
).getSupArchList());
433 if (!isEmpty(vid
.getEvents(index
).getHelp())) {
434 e
.setHelpText(vid
.getEvents(index
).getHelp());
436 if (!isEmpty(vid
.getEvents(index
).getGroup())) {
437 e
.setEventType(EventTypes
.Enum
.forString(vid
.getEvents(index
).getGroup()));
439 ce
.addNewEventTypes();
440 ce
.setEventTypesArray(ce
.getEventTypesList().size() - 1, e
);
442 if (vid
.getEvents(index
).getType().equals(ed
.getVEventType().get(1))) {
443 SignalEvents
.EventTypes e
= SignalEvents
.EventTypes
.Factory
.newInstance();
444 if (!isEmpty(vid
.getEvents(index
).getName())) {
445 e
.setEventGuidCName(vid
.getEvents(index
).getName());
447 if (!isEmpty(vid
.getEvents(index
).getUsage())) {
448 e
.setUsage(ProtocolNotifyUsage
.Enum
.forString(vid
.getEvents(index
).getUsage()));
450 if (!isEmpty(vid
.getEvents(index
).getFeatureFlag())) {
451 e
.setFeatureFlag(vid
.getEvents(index
).getFeatureFlag());
453 if (vid
.getEvents(index
).getSupArchList() != null
454 && vid
.getEvents(index
).getSupArchList().size() > 0) {
455 e
.setSupArchList(vid
.getEvents(index
).getSupArchList());
457 if (!isEmpty(vid
.getEvents(index
).getHelp())) {
458 e
.setHelpText(vid
.getEvents(index
).getHelp());
460 if (!isEmpty(vid
.getEvents(index
).getGroup())) {
461 e
.setEventType(EventTypes
.Enum
.forString(vid
.getEvents(index
).getGroup()));
463 se
.addNewEventTypes();
464 se
.setEventTypesArray(ce
.getEventTypesList().size() - 1, e
);
468 if (ce
.getEventTypesList().size() > 0) {
469 events
.addNewCreateEvents();
470 events
.setCreateEvents(ce
);
472 if (se
.getEventTypesList().size() > 0) {
473 events
.addNewSignalEvents();
474 events
.setSignalEvents(se
);
476 this.msa
.setEvents(events
);
477 this.omt
.setSaved(false);
478 } catch (Exception e
) {
479 Log
.wrn("Update Events", e
.getMessage());
480 Log
.err("Update Events", e
.getMessage());
485 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
488 public void valueChanged(ListSelectionEvent arg0
) {
489 if (arg0
.getValueIsAdjusting()) {
492 ListSelectionModel lsm
= (ListSelectionModel
) arg0
.getSource();
493 if (lsm
.isSelectionEmpty()) {
496 selectedRow
= lsm
.getMinSelectionIndex();
501 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
504 public void mouseClicked(MouseEvent arg0
) {
505 if (arg0
.getClickCount() == 2) {
506 if (this.selectedRow
< 0) {
509 showEdit(selectedRow
);
515 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
517 * Override componentResized to resize all components when frame's size is changed
519 public void componentResized(ComponentEvent arg0
) {
520 int intCurrentWidth
= this.getJContentPane().getWidth();
521 int intCurrentHeight
= this.getJContentPane().getHeight();
522 int intPreferredWidth
= this.getJContentPane().getPreferredSize().width
;
523 int intPreferredHeight
= this.getJContentPane().getPreferredSize().height
;
525 Tools
.resizeComponent(this.jScrollPaneTable
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
527 Tools
.relocateComponent(this.jButtonAdd
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
528 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_ADD_BUTTON
,
529 DataType
.SPACE_TO_BOTTOM_FOR_ADD_BUTTON
);
530 Tools
.relocateComponent(this.jButtonRemove
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
531 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON
,
532 DataType
.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON
);
533 Tools
.relocateComponent(this.jButtonUpdate
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
534 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON
,
535 DataType
.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON
);