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;
101 This method initializes jButtonAdd
103 @return javax.swing.JButton jButtonAdd
106 private JButton
getJButtonAdd() {
107 if (jButtonAdd
== null) {
108 jButtonAdd
= new JButton();
109 jButtonAdd
.setBounds(new java
.awt
.Rectangle(230, 220, 80, 20));
110 jButtonAdd
.setText("Add");
111 jButtonAdd
.addActionListener(this);
112 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(80, 20));
118 This method initializes jButtonRemove
120 @return javax.swing.JButton jButtonRemove
123 private JButton
getJButtonRemove() {
124 if (jButtonRemove
== null) {
125 jButtonRemove
= new JButton();
126 jButtonRemove
.setBounds(new java
.awt
.Rectangle(400, 220, 80, 20));
127 jButtonRemove
.setText("Remove");
128 jButtonRemove
.addActionListener(this);
129 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(80, 20));
131 return jButtonRemove
;
135 This method initializes jButtonUpdate
137 @return javax.swing.JButton jButtonUpdate
140 private JButton
getJButtonUpdate() {
141 if (jButtonUpdate
== null) {
142 jButtonUpdate
= new JButton();
143 jButtonUpdate
.setBounds(new java
.awt
.Rectangle(315, 220, 80, 20));
144 jButtonUpdate
.setPreferredSize(new java
.awt
.Dimension(80, 20));
145 jButtonUpdate
.setText("Edit");
146 jButtonUpdate
.addActionListener(this);
148 return jButtonUpdate
;
152 This method initializes jScrollPane
154 @return javax.swing.JScrollPane
156 private JScrollPane
getJScrollPane() {
157 if (jScrollPane
== null) {
158 jScrollPane
= new JScrollPane();
159 jScrollPane
.setViewportView(getJContentPane());
165 This method initializes jScrollPaneTable
167 @return javax.swing.JScrollPane
169 private JScrollPane
getJScrollPaneTable() {
170 if (jScrollPaneTable
== null) {
171 jScrollPaneTable
= new JScrollPane();
172 jScrollPaneTable
.setBounds(new java
.awt
.Rectangle(15, 10, 470, 420));
173 jScrollPaneTable
.setPreferredSize(new Dimension(470, 420));
174 jScrollPaneTable
.setViewportView(getJTable());
176 return jScrollPaneTable
;
180 This method initializes jTable
182 @return javax.swing.JTable
184 private JTable
getJTable() {
185 if (jTable
== null) {
186 jTable
= new JTable();
187 model
= new IDefaultTableModel();
188 jTable
= new JTable(model
);
189 jTable
.setRowHeight(20);
191 model
.addColumn("Guid C_Name");
192 model
.addColumn("Type");
193 model
.addColumn("Usage");
195 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
196 jTable
.getSelectionModel().addListSelectionListener(this);
197 jTable
.getModel().addTableModelListener(this);
198 jTable
.addMouseListener(this);
203 public static void main(String
[] args
) {
208 This method initializes this
211 private void init() {
212 this.setSize(500, 515);
213 this.setContentPane(getJScrollPane());
214 this.setTitle("Events");
218 This method initializes this
219 Fill values to all fields if these values are not empty
221 @param inPackageDependencies
224 private void init(Events inEvents
) {
226 this.events
= inEvents
;
228 if (this.events
!= null) {
229 if (this.events
.getCreateEvents() != null) {
230 if (this.events
.getCreateEvents().getEventTypesList().size() > 0) {
231 for (int index
= 0; index
< this.events
.getCreateEvents().getEventTypesList().size(); index
++) {
232 String arg0
= events
.getCreateEvents().getEventTypesList().get(index
).getEventGuidCName();
233 String arg1
= ed
.getVEventType().get(0);
235 if (events
.getCreateEvents().getEventTypesList().get(index
).getUsage() != null) {
236 arg2
= events
.getCreateEvents().getEventTypesList().get(index
).getUsage().toString();
239 String arg3
= events
.getCreateEvents().getEventTypesList().get(index
).getFeatureFlag();
240 Vector
<String
> arg4
= Tools
.convertListToVector(events
.getCreateEvents().getEventTypesList()
241 .get(index
).getSupArchList());
242 String arg5
= events
.getCreateEvents().getEventTypesList().get(index
).getHelpText();
243 String arg6
= events
.getCreateEvents().getEventTypesList().get(index
).getEventType().toString();
244 id
= new EventsIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
249 if (this.events
.getSignalEvents() != null) {
250 if (this.events
.getSignalEvents().getEventTypesList().size() > 0) {
251 for (int index
= 0; index
< this.events
.getSignalEvents().getEventTypesList().size(); index
++) {
252 String arg0
= events
.getSignalEvents().getEventTypesList().get(index
).getEventGuidCName();
253 String arg1
= ed
.getVEventType().get(1);
255 if (events
.getSignalEvents().getEventTypesList().get(index
).getUsage() != null) {
256 arg2
= events
.getSignalEvents().getEventTypesList().get(index
).getUsage().toString();
259 String arg3
= events
.getSignalEvents().getEventTypesList().get(index
).getFeatureFlag();
260 Vector
<String
> arg4
= Tools
.convertListToVector(events
.getSignalEvents().getEventTypesList()
261 .get(index
).getSupArchList());
262 String arg5
= events
.getSignalEvents().getEventTypesList().get(index
).getHelpText();
263 String arg6
= events
.getSignalEvents().getEventTypesList().get(index
).getEventType().toString();
264 id
= new EventsIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
274 This is the default constructor
277 public ModuleEvents() {
280 this.setVisible(true);
284 This is the override edit constructor
286 @param inEvents The input EventsDocument.Events
289 public ModuleEvents(OpeningModuleType inOmt
) {
292 this.msa
= omt
.getXmlMsa();
293 init(msa
.getEvents());
294 this.setVisible(true);
298 This method initializes jContentPane
300 @return javax.swing.JPanel jContentPane
303 private JPanel
getJContentPane() {
304 if (jContentPane
== null) {
305 jContentPane
= new JPanel();
306 jContentPane
.setLayout(null);
307 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 490));
309 jContentPane
.add(getJButtonAdd(), null);
310 jContentPane
.add(getJButtonRemove(), null);
311 jContentPane
.add(getJButtonUpdate(), null);
312 jContentPane
.add(getJScrollPaneTable(), null);
317 private void showEdit(int index
) {
318 EventsDlg dlg
= new EventsDlg(vid
.getEvents(index
), new IFrame());
319 int result
= dlg
.showDialog();
320 if (result
== DataType
.RETURN_TYPE_OK
) {
322 this.vid
.addEvents(dlg
.getId());
324 this.vid
.setEvents(dlg
.getId(), index
);
330 if (result
== DataType
.RETURN_TYPE_CANCEL
) {
339 private void clearAll() {
341 for (int index
= model
.getRowCount() - 1; index
>= 0; index
--) {
342 model
.removeRow(index
);
348 Read content of vector and put then into table
351 private void showTable() {
354 if (vid
.size() > 0) {
355 for (int index
= 0; index
< vid
.size(); index
++) {
356 model
.addRow(vid
.toStringVector(index
));
359 this.jTable
.repaint();
360 this.jTable
.updateUI();
364 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
366 * Override actionPerformed to listen all actions
369 public void actionPerformed(ActionEvent arg0
) {
370 if (arg0
.getSource() == jButtonAdd
) {
373 if (arg0
.getSource() == jButtonUpdate
) {
374 if (this.selectedRow
< 0) {
375 Log
.wrn("Update Events", "Please select one record first.");
378 showEdit(selectedRow
);
381 if (arg0
.getSource() == jButtonRemove
) {
382 if (jTable
.isEditing()) {
383 jTable
.getCellEditor().stopCellEditing();
385 if (selectedRow
> -1) {
386 this.model
.removeRow(selectedRow
);
387 this.vid
.removeEvents(selectedRow
);
395 Save all components of Events
396 if exists events, set the value directly
397 if not exists events, new an instance first
402 int count
= this.vid
.size();
404 this.events
= Events
.Factory
.newInstance();
405 CreateEvents ce
= CreateEvents
.Factory
.newInstance();
406 SignalEvents se
= SignalEvents
.Factory
.newInstance();
409 for (int index
= 0; index
< count
; index
++) {
410 if (vid
.getEvents(index
).getType().equals(ed
.getVEventType().get(0))) {
411 CreateEvents
.EventTypes e
= CreateEvents
.EventTypes
.Factory
.newInstance();
412 if (!isEmpty(vid
.getEvents(index
).getName())) {
413 e
.setEventGuidCName(vid
.getEvents(index
).getName());
415 if (!isEmpty(vid
.getEvents(index
).getUsage())) {
416 e
.setUsage(ProtocolUsage
.Enum
.forString(vid
.getEvents(index
).getUsage()));
418 if (!isEmpty(vid
.getEvents(index
).getFeatureFlag())) {
419 e
.setFeatureFlag(vid
.getEvents(index
).getFeatureFlag());
421 if (vid
.getEvents(index
).getSupArchList() != null
422 && vid
.getEvents(index
).getSupArchList().size() > 0) {
423 e
.setSupArchList(vid
.getEvents(index
).getSupArchList());
425 if (!isEmpty(vid
.getEvents(index
).getHelp())) {
426 e
.setHelpText(vid
.getEvents(index
).getHelp());
428 if (!isEmpty(vid
.getEvents(index
).getGroup())) {
429 e
.setEventType(EventTypes
.Enum
.forString(vid
.getEvents(index
).getGroup()));
431 ce
.addNewEventTypes();
432 ce
.setEventTypesArray(ce
.getEventTypesList().size() - 1, e
);
434 if (vid
.getEvents(index
).getType().equals(ed
.getVEventType().get(1))) {
435 SignalEvents
.EventTypes e
= SignalEvents
.EventTypes
.Factory
.newInstance();
436 if (!isEmpty(vid
.getEvents(index
).getName())) {
437 e
.setEventGuidCName(vid
.getEvents(index
).getName());
439 if (!isEmpty(vid
.getEvents(index
).getUsage())) {
440 e
.setUsage(ProtocolNotifyUsage
.Enum
.forString(vid
.getEvents(index
).getUsage()));
442 if (!isEmpty(vid
.getEvents(index
).getFeatureFlag())) {
443 e
.setFeatureFlag(vid
.getEvents(index
).getFeatureFlag());
445 if (vid
.getEvents(index
).getSupArchList() != null
446 && vid
.getEvents(index
).getSupArchList().size() > 0) {
447 e
.setSupArchList(vid
.getEvents(index
).getSupArchList());
449 if (!isEmpty(vid
.getEvents(index
).getHelp())) {
450 e
.setHelpText(vid
.getEvents(index
).getHelp());
452 if (!isEmpty(vid
.getEvents(index
).getGroup())) {
453 e
.setEventType(EventTypes
.Enum
.forString(vid
.getEvents(index
).getGroup()));
455 se
.addNewEventTypes();
456 se
.setEventTypesArray(ce
.getEventTypesList().size() - 1, e
);
460 if (ce
.getEventTypesList().size() > 0) {
461 events
.addNewCreateEvents();
462 events
.setCreateEvents(ce
);
464 if (se
.getEventTypesList().size() > 0) {
465 events
.addNewSignalEvents();
466 events
.setSignalEvents(se
);
468 this.msa
.setEvents(events
);
469 this.omt
.setSaved(false);
470 } catch (Exception e
) {
471 Log
.wrn("Update Events", e
.getMessage());
472 Log
.err("Update Events", e
.getMessage());
477 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
480 public void valueChanged(ListSelectionEvent arg0
) {
481 if (arg0
.getValueIsAdjusting()) {
484 ListSelectionModel lsm
= (ListSelectionModel
) arg0
.getSource();
485 if (lsm
.isSelectionEmpty()) {
488 selectedRow
= lsm
.getMinSelectionIndex();
493 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
496 public void mouseClicked(MouseEvent arg0
) {
497 if (arg0
.getClickCount() == 2) {
498 if (this.selectedRow
< 0) {
501 showEdit(selectedRow
);
507 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
509 * Override componentResized to resize all components when frame's size is changed
511 public void componentResized(ComponentEvent arg0
) {
512 int intCurrentWidth
= this.getJContentPane().getWidth();
513 int intCurrentHeight
= this.getJContentPane().getHeight();
514 int intPreferredWidth
= this.getJContentPane().getPreferredSize().width
;
515 int intPreferredHeight
= this.getJContentPane().getPreferredSize().height
;
517 Tools
.resizeComponent(this.jScrollPaneTable
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
519 Tools
.relocateComponent(this.jButtonAdd
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
520 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_ADD_BUTTON
,
521 DataType
.SPACE_TO_BOTTOM_FOR_ADD_BUTTON
);
522 Tools
.relocateComponent(this.jButtonRemove
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
523 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON
,
524 DataType
.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON
);
525 Tools
.relocateComponent(this.jButtonUpdate
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
526 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON
,
527 DataType
.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON
);