]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleEvents.java
Fixed the width of the GuidValue field
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / ModuleEvents.java
CommitLineData
a13899c5 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;\r
16\r
06a19cee 17import java.awt.Dimension;\r
a13899c5 18import java.awt.event.ActionEvent;\r
19import java.awt.event.ComponentEvent;\r
06a19cee 20import java.awt.event.MouseEvent;\r
a13899c5 21import java.util.Vector;\r
22\r
23import javax.swing.JButton;\r
a13899c5 24import javax.swing.JPanel;\r
25import javax.swing.JScrollPane;\r
06a19cee 26import javax.swing.JTable;\r
27import javax.swing.ListSelectionModel;\r
28import javax.swing.event.ListSelectionEvent;\r
a13899c5 29\r
9a8d6d9f 30import org.tianocore.EventTypes;\r
a13899c5 31import org.tianocore.EventsDocument;\r
32import org.tianocore.ProtocolNotifyUsage;\r
33import org.tianocore.ProtocolUsage;\r
34import org.tianocore.EventsDocument.Events;\r
35import org.tianocore.EventsDocument.Events.CreateEvents;\r
36import org.tianocore.EventsDocument.Events.SignalEvents;\r
37import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
38import org.tianocore.frameworkwizard.common.DataType;\r
a13899c5 39import org.tianocore.frameworkwizard.common.EnumerationData;\r
06a19cee 40import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
a13899c5 41import org.tianocore.frameworkwizard.common.Log;\r
a13899c5 42import org.tianocore.frameworkwizard.common.Tools;\r
79cb6fdb 43import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;\r
06a19cee 44import org.tianocore.frameworkwizard.common.ui.IFrame;\r
a13899c5 45import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
79cb6fdb 46import org.tianocore.frameworkwizard.module.Identifications.Events.EventsIdentification;\r
47import org.tianocore.frameworkwizard.module.Identifications.Events.EventsVector;\r
06a19cee 48import org.tianocore.frameworkwizard.module.ui.dialog.EventsDlg;\r
a13899c5 49\r
50/**\r
51 The class is used to create, update Event of MSA/MBD file\r
52 It extends IInternalFrame\r
53 \r
54 @since ModuleEditor 1.0\r
55\r
56 **/\r
57public class ModuleEvents extends IInternalFrame {\r
58\r
59 ///\r
60 /// Define class Serial Version UID\r
61 ///\r
62 private static final long serialVersionUID = -4396143706422842331L;\r
63\r
64 //\r
65 //Define class members\r
66 //\r
67 private JPanel jContentPane = null;\r
68\r
a13899c5 69 private JButton jButtonAdd = null;\r
70\r
71 private JButton jButtonRemove = null;\r
72\r
73 private JButton jButtonUpdate = null;\r
74\r
75 private JScrollPane jScrollPane = null;\r
76\r
06a19cee 77 private JScrollPane jScrollPaneTable = null;\r
a13899c5 78\r
06a19cee 79 private JTable jTable = null;\r
a13899c5 80\r
81 //\r
82 // Not used by UI\r
83 //\r
a13899c5 84 private OpeningModuleType omt = null;\r
85\r
86 private ModuleSurfaceArea msa = null;\r
87\r
88 private EventsDocument.Events events = null;\r
89\r
90 private EventsIdentification id = null;\r
91\r
92 private EventsVector vid = new EventsVector();\r
93\r
94 private EnumerationData ed = new EnumerationData();\r
95\r
06a19cee 96 private IDefaultTableModel model = null;\r
a13899c5 97\r
06a19cee 98 private int selectedRow = -1;\r
a13899c5 99\r
100 /**\r
101 This method initializes jButtonAdd \r
102 \r
103 @return javax.swing.JButton jButtonAdd\r
104 \r
105 **/\r
106 private JButton getJButtonAdd() {\r
107 if (jButtonAdd == null) {\r
108 jButtonAdd = new JButton();\r
109 jButtonAdd.setBounds(new java.awt.Rectangle(230, 220, 80, 20));\r
110 jButtonAdd.setText("Add");\r
111 jButtonAdd.addActionListener(this);\r
112 jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));\r
113 }\r
114 return jButtonAdd;\r
115 }\r
116\r
117 /**\r
118 This method initializes jButtonRemove \r
119 \r
120 @return javax.swing.JButton jButtonRemove\r
121 \r
122 **/\r
123 private JButton getJButtonRemove() {\r
124 if (jButtonRemove == null) {\r
125 jButtonRemove = new JButton();\r
126 jButtonRemove.setBounds(new java.awt.Rectangle(400, 220, 80, 20));\r
127 jButtonRemove.setText("Remove");\r
128 jButtonRemove.addActionListener(this);\r
129 jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));\r
130 }\r
131 return jButtonRemove;\r
132 }\r
133\r
134 /**\r
135 This method initializes jButtonUpdate \r
136 \r
137 @return javax.swing.JButton jButtonUpdate\r
138 \r
139 **/\r
140 private JButton getJButtonUpdate() {\r
141 if (jButtonUpdate == null) {\r
142 jButtonUpdate = new JButton();\r
143 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 220, 80, 20));\r
144 jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));\r
06a19cee 145 jButtonUpdate.setText("Edit");\r
a13899c5 146 jButtonUpdate.addActionListener(this);\r
147 }\r
148 return jButtonUpdate;\r
149 }\r
150\r
a13899c5 151 /**\r
152 This method initializes jScrollPane \r
153 \r
154 @return javax.swing.JScrollPane \r
155 */\r
156 private JScrollPane getJScrollPane() {\r
157 if (jScrollPane == null) {\r
158 jScrollPane = new JScrollPane();\r
159 jScrollPane.setViewportView(getJContentPane());\r
160 }\r
161 return jScrollPane;\r
162 }\r
163\r
164 /**\r
06a19cee 165 This method initializes jScrollPaneTable \r
166 \r
167 @return javax.swing.JScrollPane \r
168 **/\r
169 private JScrollPane getJScrollPaneTable() {\r
170 if (jScrollPaneTable == null) {\r
171 jScrollPaneTable = new JScrollPane();\r
172 jScrollPaneTable.setBounds(new java.awt.Rectangle(15, 10, 470, 420));\r
173 jScrollPaneTable.setPreferredSize(new Dimension(470, 420));\r
174 jScrollPaneTable.setViewportView(getJTable());\r
a13899c5 175 }\r
06a19cee 176 return jScrollPaneTable;\r
a13899c5 177 }\r
178\r
179 /**\r
06a19cee 180 This method initializes jTable \r
a13899c5 181 \r
06a19cee 182 @return javax.swing.JTable \r
a13899c5 183 **/\r
06a19cee 184 private JTable getJTable() {\r
185 if (jTable == null) {\r
186 jTable = new JTable();\r
187 model = new IDefaultTableModel();\r
188 jTable = new JTable(model);\r
189 jTable.setRowHeight(20);\r
190\r
191 model.addColumn("Guid C_Name");\r
192 model.addColumn("Type");\r
193 model.addColumn("Usage");\r
194\r
195 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
196 jTable.getSelectionModel().addListSelectionListener(this);\r
197 jTable.getModel().addTableModelListener(this);\r
198 jTable.addMouseListener(this);\r
a13899c5 199 }\r
06a19cee 200 return jTable;\r
201 }\r
202\r
203 public static void main(String[] args) {\r
204\r
a13899c5 205 }\r
206\r
207 /**\r
06a19cee 208 This method initializes this\r
a13899c5 209 \r
210 **/\r
06a19cee 211 private void init() {\r
212 this.setSize(500, 515);\r
213 this.setContentPane(getJScrollPane());\r
214 this.setTitle("Events");\r
a13899c5 215 }\r
216\r
217 /**\r
06a19cee 218 This method initializes this\r
219 Fill values to all fields if these values are not empty\r
220 \r
221 @param inPackageDependencies\r
a13899c5 222\r
06a19cee 223 **/\r
224 private void init(Events inEvents) {\r
225 init();\r
226 this.events = inEvents;\r
227\r
228 if (this.events != null) {\r
229 if (this.events.getCreateEvents() != null) {\r
230 if (this.events.getCreateEvents().getEventTypesList().size() > 0) {\r
231 for (int index = 0; index < this.events.getCreateEvents().getEventTypesList().size(); index++) {\r
232 String arg0 = events.getCreateEvents().getEventTypesList().get(index).getEventGuidCName();\r
233 String arg1 = ed.getVEventType().get(0);\r
234 String arg2 = null;\r
235 if (events.getCreateEvents().getEventTypesList().get(index).getUsage() != null) {\r
236 arg2 = events.getCreateEvents().getEventTypesList().get(index).getUsage().toString();\r
237 }\r
238\r
239 String arg3 = events.getCreateEvents().getEventTypesList().get(index).getFeatureFlag();\r
240 Vector<String> arg4 = Tools.convertListToVector(events.getCreateEvents().getEventTypesList()\r
241 .get(index).getSupArchList());\r
242 String arg5 = events.getCreateEvents().getEventTypesList().get(index).getHelpText();\r
9a8d6d9f 243 String arg6 = events.getCreateEvents().getEventTypesList().get(index).getEventType().toString();\r
244 id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
06a19cee 245 vid.addEvents(id);\r
246 }\r
247 }\r
248 }\r
249 if (this.events.getSignalEvents() != null) {\r
250 if (this.events.getSignalEvents().getEventTypesList().size() > 0) {\r
251 for (int index = 0; index < this.events.getSignalEvents().getEventTypesList().size(); index++) {\r
252 String arg0 = events.getSignalEvents().getEventTypesList().get(index).getEventGuidCName();\r
253 String arg1 = ed.getVEventType().get(1);\r
254 String arg2 = null;\r
255 if (events.getSignalEvents().getEventTypesList().get(index).getUsage() != null) {\r
256 arg2 = events.getSignalEvents().getEventTypesList().get(index).getUsage().toString();\r
257 }\r
a13899c5 258\r
06a19cee 259 String arg3 = events.getSignalEvents().getEventTypesList().get(index).getFeatureFlag();\r
260 Vector<String> arg4 = Tools.convertListToVector(events.getSignalEvents().getEventTypesList()\r
261 .get(index).getSupArchList());\r
262 String arg5 = events.getSignalEvents().getEventTypesList().get(index).getHelpText();\r
9a8d6d9f 263 String arg6 = events.getSignalEvents().getEventTypesList().get(index).getEventType().toString();\r
264 id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
06a19cee 265 vid.addEvents(id);\r
266 }\r
267 }\r
268 }\r
269 }\r
270 showTable();\r
a13899c5 271 }\r
a13899c5 272\r
273 /**\r
274 This is the default constructor\r
275 \r
276 **/\r
277 public ModuleEvents() {\r
278 super();\r
279 init();\r
280 this.setVisible(true);\r
281 }\r
282\r
283 /**\r
284 This is the override edit constructor\r
285 \r
286 @param inEvents The input EventsDocument.Events\r
287 \r
288 **/\r
289 public ModuleEvents(OpeningModuleType inOmt) {\r
290 super();\r
291 this.omt = inOmt;\r
292 this.msa = omt.getXmlMsa();\r
293 init(msa.getEvents());\r
294 this.setVisible(true);\r
295 }\r
296\r
a13899c5 297 /**\r
298 This method initializes jContentPane\r
299 \r
300 @return javax.swing.JPanel jContentPane\r
301 \r
302 **/\r
303 private JPanel getJContentPane() {\r
304 if (jContentPane == null) {\r
a13899c5 305 jContentPane = new JPanel();\r
306 jContentPane.setLayout(null);\r
307 jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
308\r
a13899c5 309 jContentPane.add(getJButtonAdd(), null);\r
310 jContentPane.add(getJButtonRemove(), null);\r
311 jContentPane.add(getJButtonUpdate(), null);\r
06a19cee 312 jContentPane.add(getJScrollPaneTable(), null);\r
a13899c5 313 }\r
314 return jContentPane;\r
315 }\r
a929458e 316\r
06a19cee 317 private void showEdit(int index) {\r
e08433ef 318 EventsDlg dlg = new EventsDlg(vid.getEvents(index), new IFrame(), omt.getId());\r
06a19cee 319 int result = dlg.showDialog();\r
320 if (result == DataType.RETURN_TYPE_OK) {\r
321 if (index == -1) {\r
322 this.vid.addEvents(dlg.getId());\r
323 } else {\r
324 this.vid.setEvents(dlg.getId(), index);\r
325 }\r
326 this.showTable();\r
327 this.save();\r
328 dlg.dispose();\r
329 }\r
330 if (result == DataType.RETURN_TYPE_CANCEL) {\r
331 dlg.dispose();\r
332 }\r
333 }\r
a13899c5 334\r
335 /**\r
06a19cee 336 Clear all table rows\r
a13899c5 337 \r
338 **/\r
06a19cee 339 private void clearAll() {\r
340 if (model != null) {\r
341 for (int index = model.getRowCount() - 1; index >= 0; index--) {\r
342 model.removeRow(index);\r
343 }\r
344 }\r
345 }\r
346\r
347 /**\r
348 Read content of vector and put then into table\r
349 \r
350 **/\r
351 private void showTable() {\r
352 clearAll();\r
353\r
354 if (vid.size() > 0) {\r
355 for (int index = 0; index < vid.size(); index++) {\r
356 model.addRow(vid.toStringVector(index));\r
357 }\r
358 }\r
359 this.jTable.repaint();\r
360 this.jTable.updateUI();\r
a13899c5 361 }\r
362\r
363 /* (non-Javadoc)\r
364 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
365 *\r
366 * Override actionPerformed to listen all actions\r
367 * \r
368 */\r
369 public void actionPerformed(ActionEvent arg0) {\r
370 if (arg0.getSource() == jButtonAdd) {\r
06a19cee 371 showEdit(-1);\r
a13899c5 372 }\r
373 if (arg0.getSource() == jButtonUpdate) {\r
06a19cee 374 if (this.selectedRow < 0) {\r
ed1665f2 375 Log.wrn("Update Events", "Please select one record first.");\r
a13899c5 376 return;\r
377 }\r
06a19cee 378 showEdit(selectedRow);\r
a13899c5 379 }\r
a13899c5 380\r
06a19cee 381 if (arg0.getSource() == jButtonRemove) {\r
382 if (jTable.isEditing()) {\r
383 jTable.getCellEditor().stopCellEditing();\r
a13899c5 384 }\r
06a19cee 385 if (selectedRow > -1) {\r
386 this.model.removeRow(selectedRow);\r
387 this.vid.removeEvents(selectedRow);\r
388 selectedRow = -1;\r
389 this.save();\r
a13899c5 390 }\r
391 }\r
a13899c5 392 }\r
393\r
394 /**\r
395 Save all components of Events\r
396 if exists events, set the value directly\r
397 if not exists events, new an instance first\r
398 \r
399 **/\r
400 public void save() {\r
401 try {\r
402 int count = this.vid.size();\r
403\r
404 this.events = Events.Factory.newInstance();\r
405 CreateEvents ce = CreateEvents.Factory.newInstance();\r
406 SignalEvents se = SignalEvents.Factory.newInstance();\r
06a19cee 407\r
a13899c5 408 if (count > 0) {\r
409 for (int index = 0; index < count; index++) {\r
410 if (vid.getEvents(index).getType().equals(ed.getVEventType().get(0))) {\r
411 CreateEvents.EventTypes e = CreateEvents.EventTypes.Factory.newInstance();\r
412 if (!isEmpty(vid.getEvents(index).getName())) {\r
413 e.setEventGuidCName(vid.getEvents(index).getName());\r
414 }\r
415 if (!isEmpty(vid.getEvents(index).getUsage())) {\r
416 e.setUsage(ProtocolUsage.Enum.forString(vid.getEvents(index).getUsage()));\r
417 }\r
418 if (!isEmpty(vid.getEvents(index).getFeatureFlag())) {\r
419 e.setFeatureFlag(vid.getEvents(index).getFeatureFlag());\r
420 }\r
421 if (vid.getEvents(index).getSupArchList() != null\r
422 && vid.getEvents(index).getSupArchList().size() > 0) {\r
423 e.setSupArchList(vid.getEvents(index).getSupArchList());\r
424 }\r
425 if (!isEmpty(vid.getEvents(index).getHelp())) {\r
426 e.setHelpText(vid.getEvents(index).getHelp());\r
427 }\r
9a8d6d9f 428 if (!isEmpty(vid.getEvents(index).getGroup())) {\r
429 e.setEventType(EventTypes.Enum.forString(vid.getEvents(index).getGroup()));\r
430 }\r
a13899c5 431 ce.addNewEventTypes();\r
432 ce.setEventTypesArray(ce.getEventTypesList().size() - 1, e);\r
433 }\r
06a19cee 434 if (vid.getEvents(index).getType().equals(ed.getVEventType().get(1))) {\r
a13899c5 435 SignalEvents.EventTypes e = SignalEvents.EventTypes.Factory.newInstance();\r
436 if (!isEmpty(vid.getEvents(index).getName())) {\r
437 e.setEventGuidCName(vid.getEvents(index).getName());\r
438 }\r
439 if (!isEmpty(vid.getEvents(index).getUsage())) {\r
440 e.setUsage(ProtocolNotifyUsage.Enum.forString(vid.getEvents(index).getUsage()));\r
441 }\r
442 if (!isEmpty(vid.getEvents(index).getFeatureFlag())) {\r
443 e.setFeatureFlag(vid.getEvents(index).getFeatureFlag());\r
444 }\r
445 if (vid.getEvents(index).getSupArchList() != null\r
446 && vid.getEvents(index).getSupArchList().size() > 0) {\r
447 e.setSupArchList(vid.getEvents(index).getSupArchList());\r
448 }\r
449 if (!isEmpty(vid.getEvents(index).getHelp())) {\r
450 e.setHelpText(vid.getEvents(index).getHelp());\r
451 }\r
9a8d6d9f 452 if (!isEmpty(vid.getEvents(index).getGroup())) {\r
453 e.setEventType(EventTypes.Enum.forString(vid.getEvents(index).getGroup()));\r
454 }\r
a13899c5 455 se.addNewEventTypes();\r
456 se.setEventTypesArray(ce.getEventTypesList().size() - 1, e);\r
457 }\r
458 }\r
459 }\r
460 if (ce.getEventTypesList().size() > 0) {\r
461 events.addNewCreateEvents();\r
462 events.setCreateEvents(ce);\r
463 }\r
464 if (se.getEventTypesList().size() > 0) {\r
465 events.addNewSignalEvents();\r
466 events.setSignalEvents(se);\r
467 }\r
468 this.msa.setEvents(events);\r
469 this.omt.setSaved(false);\r
470 } catch (Exception e) {\r
ed1665f2 471 Log.wrn("Update Events", e.getMessage());\r
a13899c5 472 Log.err("Update Events", e.getMessage());\r
473 }\r
474 }\r
475\r
476 /* (non-Javadoc)\r
06a19cee 477 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)\r
478 *\r
a13899c5 479 */\r
06a19cee 480 public void valueChanged(ListSelectionEvent arg0) {\r
481 if (arg0.getValueIsAdjusting()) {\r
a13899c5 482 return;\r
483 }\r
06a19cee 484 ListSelectionModel lsm = (ListSelectionModel) arg0.getSource();\r
485 if (lsm.isSelectionEmpty()) {\r
a13899c5 486 return;\r
a13899c5 487 } else {\r
06a19cee 488 selectedRow = lsm.getMinSelectionIndex();\r
a13899c5 489 }\r
a13899c5 490 }\r
491\r
06a19cee 492 /* (non-Javadoc)\r
493 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
494 *\r
495 */\r
496 public void mouseClicked(MouseEvent arg0) {\r
497 if (arg0.getClickCount() == 2) {\r
498 if (this.selectedRow < 0) {\r
499 return;\r
500 } else {\r
501 showEdit(selectedRow);\r
502 }\r
a13899c5 503 }\r
a13899c5 504 }\r
505\r
506 /* (non-Javadoc)\r
06a19cee 507 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
a13899c5 508 * \r
06a19cee 509 * Override componentResized to resize all components when frame's size is changed\r
a13899c5 510 */\r
06a19cee 511 public void componentResized(ComponentEvent arg0) {\r
512 int intCurrentWidth = this.getJContentPane().getWidth();\r
513 int intCurrentHeight = this.getJContentPane().getHeight();\r
514 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
515 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
516\r
8792f60f 517 Tools.resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
518 intPreferredHeight);\r
519 Tools.relocateComponent(this.jButtonAdd, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
520 intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON,\r
521 DataType.SPACE_TO_BOTTOM_FOR_ADD_BUTTON);\r
522 Tools.relocateComponent(this.jButtonRemove, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
523 intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON,\r
524 DataType.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON);\r
525 Tools.relocateComponent(this.jButtonUpdate, intCurrentWidth, intCurrentHeight, intPreferredWidth,\r
526 intPreferredHeight, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON,\r
527 DataType.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON);\r
a13899c5 528 }\r
529}\r