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