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