]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java
Make opening dialogs re-gain focus when user switch back to main UI from other window...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdGuidDecls.java
... / ...
CommitLineData
1/** @file\r
2 Java class SpdGuidDecls is GUI for create library definition elements of spd file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.packaging.ui;\r
14\r
15import java.awt.Dimension;\r
16import java.awt.FontMetrics;\r
17import java.awt.Point;\r
18import java.awt.event.ActionEvent;\r
19import java.awt.event.ComponentEvent;\r
20import java.util.Vector;\r
21\r
22import javax.swing.JFrame;\r
23import javax.swing.JOptionPane;\r
24import javax.swing.JPanel;\r
25import javax.swing.JTable;\r
26import javax.swing.JTextField;\r
27import javax.swing.JLabel;\r
28import javax.swing.JScrollPane;\r
29import javax.swing.JButton;\r
30import javax.swing.ListSelectionModel;\r
31import javax.swing.event.InternalFrameAdapter;\r
32import javax.swing.event.InternalFrameEvent;\r
33import javax.swing.event.ListSelectionEvent;\r
34import javax.swing.event.ListSelectionListener;\r
35import javax.swing.event.TableModelEvent;\r
36import javax.swing.event.TableModelListener;\r
37import javax.swing.table.DefaultTableModel;\r
38import javax.swing.table.TableColumn;\r
39import javax.swing.table.TableModel;\r
40\r
41import org.tianocore.PackageSurfaceAreaDocument;\r
42import org.tianocore.frameworkwizard.common.DataValidation;\r
43import org.tianocore.frameworkwizard.common.Tools;\r
44import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
45import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
46import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
47import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
48import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
49import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
50\r
51/**\r
52 GUI for create library definition elements of spd file.\r
53 \r
54 @since PackageEditor 1.0\r
55**/\r
56public class SpdGuidDecls extends IInternalFrame implements TableModelListener{\r
57 /**\r
58 * \r
59 */\r
60 private static final long serialVersionUID = 1L;\r
61 \r
62 private JFrame topFrame = null;\r
63 \r
64 private SpdFileContents sfc = null;\r
65 \r
66 private OpeningPackageType docConsole = null;\r
67\r
68 private JTable jTable = null;\r
69\r
70 private DefaultTableModel model = null;\r
71\r
72 private JPanel jContentPane = null;\r
73\r
74 private JTextField jTextFieldGuid = null;\r
75\r
76 private JScrollPane jScrollPane = null;\r
77\r
78 private JButton jButtonAdd = null;\r
79\r
80 private JButton jButtonRemove = null;\r
81\r
82 private JButton jButtonClearAll = null;\r
83\r
84 private JButton jButtonCancel = null;\r
85\r
86 private JButton jButtonOk = null;\r
87\r
88 private JButton jButtonGen = null;\r
89 \r
90 private StarLabel jStarLabel1 = null;\r
91 \r
92 private StarLabel jStarLabel2 = null;\r
93 \r
94 private StarLabel jStarLabel3 = null;\r
95 \r
96 private StarLabel jStarLabel4 = null;\r
97\r
98 protected int selectedRow = -1;\r
99\r
100 private JLabel jLabelName = null;\r
101\r
102 private JScrollPane jScrollPaneModule = null;\r
103\r
104 private JTextField jTextFieldName = null;\r
105\r
106 private JScrollPane jScrollPaneArch = null;\r
107 \r
108 private JScrollPane jScrollPaneGuid = null;\r
109\r
110 private JLabel jLabelGuid = null;\r
111\r
112 private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="10,213"\r
113\r
114 private JLabel jLabelCName = null;\r
115\r
116 private GenGuidDialog guidDialog = null;\r
117\r
118 private JTextField jTextFieldCName = null;\r
119\r
120 private JLabel jLabelHelp = null;\r
121\r
122 private JTextField jTextFieldHelp = null;\r
123\r
124 private JLabel jLabelSupMod = null;\r
125\r
126 private JLabel jLabelSupArch = null;\r
127\r
128 private ICheckBoxList iCheckBoxListArch = null;\r
129\r
130 private ICheckBoxList iCheckBoxListGuid = null;\r
131\r
132 private ICheckBoxList iCheckBoxListMod = null;\r
133\r
134 private JLabel jLabelGuidType = null;\r
135\r
136 protected String[][] saa = null;\r
137\r
138 protected StarLabel starLabel = null;\r
139 \r
140 private final int guidNameMinWidth = 200;\r
141 private final int guidCNameMinWidth = 200;\r
142 private final int guidValueMinWidth = 300;\r
143 private final int helpTextMinWidth = 300;\r
144 private final int supArchMinWidth = 200;\r
145 private final int supModMinWidth = 200;\r
146 private final int guidTypeMinWidth = 200;\r
147 \r
148\r
149 /**\r
150 This method initializes this\r
151 \r
152 **/\r
153 protected void initialize() {\r
154 \r
155 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
156\r
157 }\r
158\r
159 /**\r
160 This method initializes jTextFieldGuid \r
161 \r
162 @return javax.swing.JTextField \r
163 **/\r
164 protected JTextField getJTextFieldGuid() {\r
165 if (jTextFieldGuid == null) {\r
166 jTextFieldGuid = new JTextField();\r
167 jTextFieldGuid.setBounds(new java.awt.Rectangle(137,60,336,20));\r
168 jTextFieldGuid.setPreferredSize(new java.awt.Dimension(200,20));\r
169 \r
170 }\r
171 return jTextFieldGuid;\r
172 }\r
173\r
174 /**\r
175 This method initializes jScrollPane \r
176 \r
177 @return javax.swing.JScrollPane \r
178 **/\r
179 protected JScrollPane getJScrollPane() {\r
180 if (jScrollPane == null) {\r
181 jScrollPane = new JScrollPane();\r
182 jScrollPane.setBounds(new java.awt.Rectangle(5,256,472,292));\r
183 jScrollPane.setViewportView(getJTable());\r
184 }\r
185 return jScrollPane;\r
186 }\r
187\r
188 /**\r
189 This method initializes jTable \r
190 \r
191 @return javax.swing.JTable \r
192 **/\r
193 protected JTable getJTable() {\r
194 if (jTable == null) {\r
195 model = new DefaultTableModel();\r
196 jTable = new JTable(model);\r
197 jTable.setRowHeight(20);\r
198 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
199 model.addColumn("Name");\r
200 model.addColumn("The C Name");\r
201 model.addColumn("GUID Value");\r
202 model.addColumn("Help Text");\r
203 model.addColumn("Supported Architectures");\r
204 model.addColumn("Supported Module Types");\r
205 model.addColumn("GuidTypes");\r
206 \r
207 TableColumn column = jTable.getColumnModel().getColumn(0);\r
208 column.setMinWidth(this.guidNameMinWidth);\r
209 column = jTable.getColumnModel().getColumn(1);\r
210 column.setMinWidth(this.guidCNameMinWidth);\r
211 column = jTable.getColumnModel().getColumn(2);\r
212 column.setMinWidth(this.guidValueMinWidth);\r
213 column = jTable.getColumnModel().getColumn(3);\r
214 column.setMinWidth(this.helpTextMinWidth);\r
215 column = jTable.getColumnModel().getColumn(4);\r
216 column.setMinWidth(this.supArchMinWidth);\r
217 column = jTable.getColumnModel().getColumn(5);\r
218 column.setMinWidth(this.supModMinWidth);\r
219 column = jTable.getColumnModel().getColumn(6);\r
220 column.setMinWidth(this.guidTypeMinWidth);\r
221 \r
222 jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor(topFrame));\r
223 jTable.getColumnModel().getColumn(3).setCellEditor(new LongTextEditor(topFrame));\r
224\r
225 Vector<String> vArch = new Vector<String>();\r
226 vArch.add("IA32");\r
227 vArch.add("X64");\r
228 vArch.add("IPF");\r
229 vArch.add("EBC");\r
230 vArch.add("ARM");\r
231 vArch.add("PPC");\r
232 jTable.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch, topFrame));\r
233 \r
234 Vector<String> vModule = new Vector<String>();\r
235 vModule.add("BASE");\r
236 vModule.add("SEC");\r
237 vModule.add("PEI_CORE");\r
238 vModule.add("PEIM");\r
239 vModule.add("DXE_CORE");\r
240 vModule.add("DXE_DRIVER");\r
241 vModule.add("DXE_RUNTIME_DRIVER");\r
242 vModule.add("DXE_SAL_DRIVER");\r
243 vModule.add("DXE_SMM_DRIVER");\r
244 vModule.add("UEFI_DRIVER");\r
245 vModule.add("UEFI_APPLICATION");\r
246 vModule.add("USER_DEFINED");\r
247 jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vModule, topFrame));\r
248 \r
249 Vector<String> vGuid = new Vector<String>();\r
250 vGuid.add("DATA_HUB_RECORD");\r
251 vGuid.add("EFI_EVENT");\r
252 vGuid.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
253 vGuid.add("EFI_VARIABLE");\r
254 vGuid.add("GUID");\r
255 vGuid.add("HII_PACKAGE_LIST");\r
256 vGuid.add("HOB");\r
257 vGuid.add("TOKEN_SPACE_GUID");\r
258 ListEditor le = new ListEditor(vGuid, topFrame);\r
259 le.setCanNotBeEmpty(true);\r
260 jTable.getColumnModel().getColumn(6).setCellEditor(le);\r
261 \r
262 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
263 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
264 public void valueChanged(ListSelectionEvent e) {\r
265 if (e.getValueIsAdjusting()){\r
266 return;\r
267 }\r
268 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
269 if (lsm.isSelectionEmpty()) {\r
270 return;\r
271 }\r
272 else{\r
273 selectedRow = lsm.getMinSelectionIndex();\r
274 \r
275 }\r
276 }\r
277 });\r
278 \r
279 jTable.getModel().addTableModelListener(this);\r
280 }\r
281 return jTable;\r
282 }\r
283 \r
284\r
285 public void tableChanged(TableModelEvent arg0) {\r
286 // TODO Auto-generated method stub\r
287 int row = arg0.getFirstRow();\r
288 int column = arg0.getColumn();\r
289 TableModel m = (TableModel)arg0.getSource();\r
290 if (arg0.getType() == TableModelEvent.UPDATE){\r
291 \r
292 updateRow(row, column, m);\r
293 }\r
294 }\r
295 \r
296 protected void updateRow(int row, int column, TableModel m){\r
297 String[] sa = new String[7];\r
298 sfc.getSpdGuidDeclaration(sa, row);\r
299 Object cellData = m.getValueAt(row, column);\r
300 if (cellData == null) {\r
301 cellData = "";\r
302 }\r
303 if (cellData.equals(sa[column])) {\r
304 return;\r
305 }\r
306 \r
307 if (cellData.toString().length() == 0 && sa[column] == null) {\r
308 return;\r
309 }\r
310 \r
311 String name = m.getValueAt(row, 0) + "";\r
312 String cName = m.getValueAt(row, 1) + "";\r
313 String guid = m.getValueAt(row, 2) + "";\r
314 String help = m.getValueAt(row, 3) + "";\r
315 String archList = null;\r
316 if (m.getValueAt(row, 4) != null){\r
317 archList = m.getValueAt(row, 4).toString();\r
318 }\r
319 String modTypeList = null;\r
320 if (m.getValueAt(row, 5) != null) {\r
321 modTypeList = m.getValueAt(row, 5).toString(); \r
322 }\r
323 String guidTypeList = null;\r
324 if (m.getValueAt(row, 6) != null){\r
325 guidTypeList = m.getValueAt(row, 6).toString();\r
326 }\r
327 String[] rowData = {name, cName, guid, help};\r
328 if (!dataValidation(rowData)){\r
329 return;\r
330 }\r
331 if (docConsole != null) {\r
332 docConsole.setSaved(false);\r
333 }\r
334 sfc.updateSpdGuidDecl(row, name, cName, guid, help, archList, modTypeList, guidTypeList);\r
335 }\r
336 /**\r
337 This method initializes jButtonAdd \r
338 \r
339 @return javax.swing.JButton \r
340 **/\r
341 protected JButton getJButtonAdd() {\r
342 if (jButtonAdd == null) {\r
343 jButtonAdd = new JButton();\r
344 jButtonAdd.setBounds(new java.awt.Rectangle(167,227,90,20));\r
345 jButtonAdd.setText("Add");\r
346 jButtonAdd.addActionListener(this);\r
347 }\r
348 return jButtonAdd;\r
349 }\r
350\r
351 /**\r
352 This method initializes jButtonRemove \r
353 \r
354 @return javax.swing.JButton \r
355 **/\r
356 protected JButton getJButtonRemove() {\r
357 if (jButtonRemove == null) {\r
358 jButtonRemove = new JButton();\r
359 jButtonRemove.setBounds(new java.awt.Rectangle(270,227,90,20));\r
360 jButtonRemove.setText("Delete");\r
361 jButtonRemove.addActionListener(this);\r
362 }\r
363 return jButtonRemove;\r
364 }\r
365\r
366 /**\r
367 This method initializes jButtonRemoveAll \r
368 \r
369 @return javax.swing.JButton \r
370 **/\r
371 protected JButton getJButtonClearAll() {\r
372 if (jButtonClearAll == null) {\r
373 jButtonClearAll = new JButton();\r
374 jButtonClearAll.setBounds(new java.awt.Rectangle(380,227,90,20));\r
375 jButtonClearAll.setText("Clear All");\r
376 jButtonClearAll.addActionListener(this);\r
377 }\r
378 return jButtonClearAll;\r
379 }\r
380\r
381 /**\r
382 This method initializes jButtonCancel \r
383 \r
384 @return javax.swing.JButton \r
385 **/\r
386 protected JButton getJButtonCancel() {\r
387 if (jButtonCancel == null) {\r
388 jButtonCancel = new JButton();\r
389 jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
390 jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
391 jButtonCancel.setText("Cancel");\r
392 jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
393 jButtonCancel.setVisible(false);\r
394 jButtonCancel.addActionListener(this);\r
395 }\r
396 return jButtonCancel;\r
397 }\r
398\r
399 /**\r
400 This method initializes jButton \r
401 \r
402 @return javax.swing.JButton \r
403 **/\r
404 protected JButton getJButtonOk() {\r
405 if (jButtonOk == null) {\r
406 jButtonOk = new JButton();\r
407 jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
408 jButtonOk.setText("OK");\r
409 jButtonOk.setLocation(new java.awt.Point(290, 305));\r
410 jButtonOk.setVisible(false);\r
411 jButtonOk.addActionListener(this);\r
412 }\r
413 return jButtonOk;\r
414 }\r
415\r
416 /**\r
417 This is the default constructor\r
418 **/\r
419 public SpdGuidDecls(JFrame frame) {\r
420 super();\r
421 topFrame = frame;\r
422 initialize();\r
423 init();\r
424 \r
425 }\r
426\r
427 public SpdGuidDecls(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa, JFrame frame){\r
428 this(frame);\r
429 sfc = new SpdFileContents(inPsa);\r
430 init(sfc);\r
431 }\r
432 \r
433 public SpdGuidDecls(OpeningPackageType opt, JFrame frame) {\r
434 this(opt.getXmlSpd(), frame);\r
435 docConsole = opt;\r
436 if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
437 JOptionPane.showMessageDialog(this, "This is a read-only package. You will not be able to edit contents in table.");\r
438 }\r
439 initFrame();\r
440 }\r
441 /**\r
442 This method initializes this\r
443 \r
444 @return void\r
445 **/\r
446 protected void init() {\r
447 this.setContentPane(getJContentPane());\r
448 this.addInternalFrameListener(new InternalFrameAdapter(){\r
449 public void internalFrameDeactivated(InternalFrameEvent e){\r
450 if (jTable.isEditing()) {\r
451 jTable.getCellEditor().stopCellEditing();\r
452 }\r
453 }\r
454 });\r
455 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
456 this.setVisible(true);\r
457 }\r
458\r
459 protected void init(SpdFileContents sfc){\r
460 if (sfc.getSpdGuidDeclarationCount() == 0) {\r
461 return ;\r
462 }\r
463 //\r
464 // initialize table using SpdFileContents object\r
465 //\r
466 saa = new String[sfc.getSpdGuidDeclarationCount()][7];\r
467 sfc.getSpdGuidDeclarations(saa);\r
468 int i = 0;\r
469 while (i < saa.length) {\r
470 model.addRow(saa[i]);\r
471 i++;\r
472 }\r
473 \r
474 }\r
475 \r
476 protected JScrollPane getJContentPane(){\r
477 if (topScrollPane == null){\r
478 topScrollPane = new JScrollPane();\r
479 topScrollPane.setSize(new java.awt.Dimension(617,500));\r
480 topScrollPane.setPreferredSize(new java.awt.Dimension(498,500));\r
481 topScrollPane.setViewportView(getJContentPane1());\r
482 }\r
483 return topScrollPane;\r
484 }\r
485 \r
486 /**\r
487 This method initializes jContentPane\r
488 \r
489 @return javax.swing.JPanel\r
490 **/\r
491 protected JPanel getJContentPane1() {\r
492 if (jContentPane == null) {\r
493 \r
494 jLabelGuidType = new JLabel();\r
495 jLabelGuidType.setBounds(new java.awt.Rectangle(420,122,103,16));\r
496 jLabelGuidType.setText("GUID Type List");\r
497 jLabelGuidType.setEnabled(true);\r
498 starLabel = new StarLabel();\r
499 starLabel.setLocation(new Point(jLabelGuidType.getX() - 10, jLabelGuidType.getY()));\r
500 starLabel.setVisible(true);\r
501 jLabelSupArch = new JLabel();\r
502 jLabelSupArch.setBounds(new java.awt.Rectangle(197,122,108,16));\r
503 jLabelSupArch.setText("Supported Architectures");\r
504 jLabelSupArch.setEnabled(true);\r
505 FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
506 jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
507 jLabelSupMod = new JLabel();\r
508 jLabelSupMod.setBounds(new java.awt.Rectangle(14,120,110,16));\r
509 jLabelSupMod.setText("Supported Module Types");\r
510 jLabelSupMod.setEnabled(true);\r
511 fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
512 jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
513 jLabelHelp = new JLabel();\r
514 jLabelHelp.setText("HelpText");\r
515 jLabelHelp.setSize(new java.awt.Dimension(109,20));\r
516 jLabelHelp.setLocation(new java.awt.Point(14,85));\r
517 jLabelCName = new JLabel();\r
518 jLabelCName.setBounds(new java.awt.Rectangle(14,35,111,20));\r
519 jLabelCName.setText("C Name");\r
520 jLabelGuid = new JLabel();\r
521 jLabelGuid.setBounds(new java.awt.Rectangle(15,60,112,20));\r
522 jLabelGuid.setText("Guid Value");\r
523 jLabelName = new JLabel();\r
524 jLabelName.setBounds(new java.awt.Rectangle(15,10,113,20));\r
525 jLabelName.setText("Name");\r
526 jStarLabel1 = new StarLabel();\r
527 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
528 jStarLabel3 = new StarLabel();\r
529 jStarLabel3.setLocation(new java.awt.Point(0, 35));\r
530 jStarLabel4 = new StarLabel();\r
531 jStarLabel4.setLocation(new java.awt.Point(0, 60));\r
532 jStarLabel2 = new StarLabel();\r
533 jStarLabel2.setLocation(new java.awt.Point(0, 85));\r
534 jStarLabel2.setVisible(true);\r
535 jContentPane = new JPanel();\r
536 jContentPane.setLayout(null);\r
537 jContentPane.setPreferredSize(new Dimension(480, 375));\r
538 jContentPane.add(jStarLabel1, null);\r
539 jContentPane.add(jStarLabel2, null);\r
540 jContentPane.add(jStarLabel3, null);\r
541 jContentPane.add(jStarLabel4, null);\r
542 jContentPane.add(jLabelCName, null);\r
543 jContentPane.add(getJTextFieldCName(), null);\r
544 jContentPane.add(getJTextFieldGuid(), null);\r
545 jContentPane.add(getJScrollPane(), null);\r
546 jContentPane.add(getJButtonAdd(), null);\r
547 jContentPane.add(getJButtonRemove(), null);\r
548 jContentPane.add(getJButtonClearAll(), null);\r
549 jContentPane.add(getJButtonCancel(), null);\r
550 jContentPane.add(getJButtonOk(), null);\r
551 \r
552 jContentPane.add(getJButtonGen(), null);\r
553 jContentPane.add(jLabelName, null);\r
554 jContentPane.add(getJTextFieldName(), null);\r
555 jContentPane.add(jLabelGuid, null);\r
556 jContentPane.add(jLabelHelp, null);\r
557 jContentPane.add(getJTextFieldHelp(), null);\r
558 jContentPane.add(jLabelSupMod, null);\r
559 jContentPane.add(jLabelSupArch, null);\r
560 jContentPane.add(getJScrollPaneArch(), null);\r
561 jContentPane.add(getJScrollPaneGuid(), null);\r
562 jContentPane.add(getJScrollPaneModule(), null);\r
563 jContentPane.add(jLabelGuidType, null);\r
564 jContentPane.add(starLabel, null);\r
565 }\r
566 return jContentPane;\r
567 }\r
568\r
569 /**\r
570 fill ComboBoxes with pre-defined contents\r
571 **/\r
572 protected void initFrame() {\r
573 \r
574 this.setTitle("GUID Declarations");\r
575 \r
576 boolean editable = true;\r
577 if (getSfc().getSpdPkgDefsRdOnly().equals("true")) {\r
578 editable = false;\r
579 }\r
580 \r
581 jButtonAdd.setEnabled(editable);\r
582 jButtonRemove.setEnabled(editable);\r
583 jButtonClearAll.setEnabled(editable);\r
584 jTable.setEnabled(editable);\r
585 }\r
586\r
587 /* (non-Javadoc)\r
588 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
589 */\r
590 public void actionPerformed(ActionEvent arg0) {\r
591 \r
592 if (arg0.getSource() == jButtonOk) {\r
593 this.save();\r
594 this.dispose();\r
595\r
596 }\r
597 if (arg0.getSource() == jButtonCancel) {\r
598 this.dispose();\r
599 }\r
600\r
601 if (arg0.getSource() == jButtonAdd) {\r
602 \r
603 //ToDo: check before add\r
604 String[] row = {"", "", "", "", "", "", ""};\r
605 row[3] = jTextFieldHelp.getText();\r
606 row[2] = jTextFieldGuid.getText();\r
607 row[1] = jTextFieldCName.getText();\r
608 row[0] = jTextFieldName.getText();\r
609 row[4] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
610 if (row[4].length() == 0) {\r
611 row[4] = null;\r
612 }\r
613 row[5] = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
614 if (row[5].length() == 0) {\r
615 row[5] = null;\r
616 }\r
617 row[6] = vectorToString(iCheckBoxListGuid.getAllCheckedItemsString());\r
618 if (row[6].length() == 0) {\r
619 row[6] = null;\r
620 }\r
621 \r
622 if (!dataValidation(row)) {\r
623 return;\r
624 }\r
625 \r
626 if (addRow(row) == -1) {\r
627 return;\r
628 }\r
629 model.addRow(row);\r
630 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
631 \r
632 }\r
633 //\r
634 // remove selected line\r
635 //\r
636 if (arg0.getSource() == jButtonRemove) {\r
637 if (jTable.isEditing()){\r
638 jTable.getCellEditor().stopCellEditing();\r
639 }\r
640 int rowSelected = selectedRow;\r
641 if (rowSelected >= 0) {\r
642 model.removeRow(rowSelected);\r
643 removeRow(rowSelected);\r
644 }\r
645 }\r
646\r
647 if (arg0.getSource() == jButtonClearAll) {\r
648 if (model.getRowCount() == 0) {\r
649 return;\r
650 }\r
651 model.setRowCount(0);\r
652 clearAllRow();\r
653 }\r
654 \r
655 if (arg0.getSource() == jButtonGen) {\r
656 jTextFieldGuid.setText(Tools.generateUuidString());\r
657 }\r
658 \r
659 if (arg0.getActionCommand().equals("GenGuidValue")) {\r
660 jTextFieldGuid.setText(guidDialog.getGuid());\r
661 }\r
662 \r
663 }\r
664 \r
665 protected boolean dataValidation(String[] row){\r
666 if (!DataValidation.isUiNameType(row[0])) {\r
667 JOptionPane.showMessageDialog(this, "Name must start with an alpha character.");\r
668 return false;\r
669 }\r
670 if (!DataValidation.isGuid(row[2])) {\r
671 JOptionPane.showMessageDialog(this, "Guid Value must be in registry format, 8-4-4-4-12.");\r
672 return false;\r
673 }\r
674 if (!DataValidation.isC_NameType(row[1])) {\r
675 JOptionPane.showMessageDialog(this, "C Name does not match C Name datatype.");\r
676 return false;\r
677 }\r
678 if (row[3].length() == 0) {\r
679 JOptionPane.showMessageDialog(this, "Help Text must be entered!");\r
680 return false;\r
681 }\r
682 return true;\r
683 }\r
684 \r
685 protected int addRow(String[] row) {\r
686 Vector<String> vArch = iCheckBoxListArch.getAllCheckedItemsString();\r
687 if (vArch.size() == 0) {\r
688 vArch = null;\r
689 }\r
690 Vector<String> vModType = iCheckBoxListMod.getAllCheckedItemsString();\r
691 if (vModType.size() == 0) {\r
692 vModType = null;\r
693 }\r
694 Vector<String> vguidType = iCheckBoxListGuid.getAllCheckedItemsString();\r
695 if (vguidType.size() == 0) {\r
696 vguidType = null;\r
697 }\r
698 if (vguidType == null) {\r
699 JOptionPane.showMessageDialog(this, "You must select at least one GUID type.");\r
700 return -1;\r
701 }\r
702 if (docConsole != null) {\r
703 docConsole.setSaved(false);\r
704 }\r
705 sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
706 return 0;\r
707 }\r
708 \r
709 protected void removeRow(int i){\r
710 sfc.removeSpdGuidDeclaration(i);\r
711 if (docConsole != null) {\r
712 docConsole.setSaved(false);\r
713 }\r
714 }\r
715 \r
716 protected void clearAllRow(){\r
717 sfc.removeSpdGuidDeclaration();\r
718 if (docConsole != null) {\r
719 docConsole.setSaved(false);\r
720 }\r
721 }\r
722\r
723 /**\r
724 Add contents in list to sfc\r
725 **/\r
726 protected void save() {\r
727 \r
728 }\r
729\r
730 /**\r
731 This method initializes jButtonBrowse \r
732 \r
733 @return javax.swing.JButton \r
734 **/\r
735 protected JButton getJButtonGen() {\r
736 if (jButtonGen == null) {\r
737 jButtonGen = new JButton();\r
738 jButtonGen.setBounds(new java.awt.Rectangle(485,58,92,21));\r
739 jButtonGen.setText("Gen");\r
740 jButtonGen.setPreferredSize(new java.awt.Dimension(80,20));\r
741 jButtonGen.addActionListener(this);\r
742 }\r
743 return jButtonGen;\r
744 }\r
745 \r
746 /**\r
747 * This method initializes jTextFieldName \r
748 * \r
749 * @return javax.swing.JTextField \r
750 */\r
751 protected JTextField getJTextFieldName() {\r
752 if (jTextFieldName == null) {\r
753 jTextFieldName = new JTextField();\r
754 jTextFieldName.setBounds(new java.awt.Rectangle(138,10,337,20));\r
755 jTextFieldName.setPreferredSize(new java.awt.Dimension(335,20));\r
756 }\r
757 return jTextFieldName;\r
758 }\r
759\r
760 /**\r
761 * This method initializes jTextFieldCName \r
762 * \r
763 * @return javax.swing.JTextField \r
764 */\r
765 protected JTextField getJTextFieldCName() {\r
766 if (jTextFieldCName == null) {\r
767 jTextFieldCName = new JTextField();\r
768 jTextFieldCName.setBounds(new java.awt.Rectangle(137,35,337,20));\r
769 jTextFieldCName.setPreferredSize(new java.awt.Dimension(335,20));\r
770 }\r
771 return jTextFieldCName;\r
772 }\r
773\r
774 public void componentResized(ComponentEvent arg0) {\r
775 int intPreferredWidth = 500;\r
776 \r
777 Tools.resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
778\r
779 Tools.resizeComponentWidth(this.jTextFieldCName, this.getWidth(), intPreferredWidth);\r
780 Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
781 Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
782 Tools.relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 40);\r
783 \r
784 }\r
785 \r
786 /**\r
787 * This method initializes jTextField \r
788 * \r
789 * @return javax.swing.JTextField \r
790 */\r
791 private JTextField getJTextFieldHelp() {\r
792 if (jTextFieldHelp == null) {\r
793 jTextFieldHelp = new JTextField();\r
794 jTextFieldHelp.setBounds(new java.awt.Rectangle(136,85,337,20));\r
795 jTextFieldHelp.setPreferredSize(new Dimension(335, 20));\r
796 }\r
797 return jTextFieldHelp;\r
798 }\r
799\r
800 private JScrollPane getJScrollPaneArch() {\r
801 if (jScrollPaneArch == null) {\r
802 jScrollPaneArch = new JScrollPane();\r
803 jScrollPaneArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
804 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(188, 74));\r
805 jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
806 }\r
807 return jScrollPaneArch;\r
808 }\r
809 /**\r
810 * This method initializes iCheckBoxList \r
811 * \r
812 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
813 */\r
814 private ICheckBoxList getICheckBoxListArch() {\r
815 if (iCheckBoxListArch == null) {\r
816 iCheckBoxListArch = new ICheckBoxList();\r
817 iCheckBoxListArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
818 Vector<String> v = new Vector<String>();\r
819 v.add("IA32");\r
820 v.add("X64");\r
821 v.add("IPF");\r
822 v.add("EBC");\r
823 v.add("ARM");\r
824 v.add("PPC");\r
825 iCheckBoxListArch.setAllItems(v);\r
826 }\r
827 return iCheckBoxListArch;\r
828 }\r
829\r
830 protected JScrollPane getJScrollPaneGuid() {\r
831 if (jScrollPaneGuid== null) {\r
832 jScrollPaneGuid = new JScrollPane();\r
833 jScrollPaneGuid.setPreferredSize(new java.awt.Dimension(190,74));\r
834 jScrollPaneGuid.setLocation(new java.awt.Point(400,142));\r
835 jScrollPaneGuid.setSize(new java.awt.Dimension(260,74));\r
836 jScrollPaneGuid.setViewportView(getICheckBoxListGuid());\r
837 }\r
838 return jScrollPaneGuid;\r
839 }\r
840 /**\r
841 * This method initializes iCheckBoxList1 \r
842 * \r
843 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
844 */\r
845 private ICheckBoxList getICheckBoxListGuid() {\r
846 if (iCheckBoxListGuid == null) {\r
847 iCheckBoxListGuid = new ICheckBoxList();\r
848 iCheckBoxListGuid.setBounds(new java.awt.Rectangle(400,142,177,74));\r
849 Vector<String> v = new Vector<String>();\r
850 v.add("DATA_HUB_RECORD");\r
851 v.add("EFI_EVENT");\r
852 v.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
853 v.add("EFI_VARIABLE");\r
854 v.add("GUID");\r
855 v.add("HII_PACKAGE_LIST");\r
856 v.add("HOB");\r
857 v.add("TOKEN_SPACE_GUID");\r
858 \r
859 iCheckBoxListGuid.setAllItems(v);\r
860 }\r
861 return iCheckBoxListGuid;\r
862 }\r
863\r
864 private JScrollPane getJScrollPaneModule() {\r
865 if (jScrollPaneModule == null) {\r
866 jScrollPaneModule = new JScrollPane();\r
867 jScrollPaneModule.setBounds(new java.awt.Rectangle(14,142,170,74));\r
868 jScrollPaneModule.setPreferredSize(new java.awt.Dimension(170, 74));\r
869 jScrollPaneModule.setViewportView(getICheckBoxListMod());\r
870 }\r
871 return jScrollPaneModule;\r
872 }\r
873 /**\r
874 * This method initializes iCheckBoxList2 \r
875 * \r
876 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
877 */\r
878 private ICheckBoxList getICheckBoxListMod() {\r
879 if (iCheckBoxListMod == null) {\r
880 iCheckBoxListMod = new ICheckBoxList();\r
881 iCheckBoxListMod.setBounds(new java.awt.Rectangle(14,142,170,74));\r
882 Vector<String> v = new Vector<String>();\r
883 v.add("BASE");\r
884 v.add("SEC");\r
885 v.add("PEI_CORE");\r
886 v.add("PEIM");\r
887 v.add("DXE_CORE");\r
888 v.add("DXE_DRIVER");\r
889 v.add("DXE_RUNTIME_DRIVER");\r
890 v.add("DXE_SAL_DRIVER");\r
891 v.add("DXE_SMM_DRIVER");\r
892 v.add("UEFI_DRIVER");\r
893 v.add("UEFI_APPLICATION");\r
894 v.add("USER_DEFINED");\r
895 iCheckBoxListMod.setAllItems(v);\r
896 }\r
897 return iCheckBoxListMod;\r
898 }\r
899\r
900 protected DefaultTableModel getModel() {\r
901 return model;\r
902 }\r
903\r
904 protected void setModel(DefaultTableModel model) {\r
905 this.model = model;\r
906 }\r
907 \r
908 protected String vectorToString(Vector<String> v) {\r
909 String s = " ";\r
910 for (int i = 0; i < v.size(); ++i) {\r
911 s += v.get(i);\r
912 s += " ";\r
913 }\r
914 return s.trim();\r
915 }\r
916 \r
917 protected Vector<String> stringToVector(String s){\r
918 if (s == null) {\r
919 return null;\r
920 }\r
921 String[] sArray = s.split(" ");\r
922 Vector<String> v = new Vector<String>();\r
923 for (int i = 0; i < sArray.length; ++i) {\r
924 v.add(sArray[i]);\r
925 }\r
926 return v;\r
927 }\r
928\r
929 protected JLabel getJLabelGuidType() {\r
930 return jLabelGuidType;\r
931 }\r
932\r
933 /**\r
934 * @return Returns the sfc.\r
935 */\r
936 protected SpdFileContents getSfc() {\r
937 return sfc;\r
938 }\r
939}\r
940\r
941\r