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