]> git.proxmox.com Git - mirror_edk2.git/blame - 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
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
5a502bd4 37import javax.swing.table.TableColumn;\r
a13899c5 38import javax.swing.table.TableModel;\r
39\r
40import org.tianocore.PackageSurfaceAreaDocument;\r
ce73a791 41import org.tianocore.frameworkwizard.common.DataValidation;\r
a13899c5 42import org.tianocore.frameworkwizard.common.Tools;\r
d6d24759 43import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
a13899c5 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
ce73a791 47import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
fbf730ff 48import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
a13899c5 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
ce73a791 56 /**\r
57 * \r
58 */\r
59 private static final long serialVersionUID = 1L;\r
60\r
a13899c5 61 static JFrame frame;\r
62 \r
63 private SpdFileContents sfc = null;\r
d6d24759 64 \r
65 private OpeningPackageType docConsole = null;\r
a13899c5 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
5f97c029 73 private JTextField jTextFieldGuid = null;\r
a13899c5 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
5f97c029 113 private JLabel jLabelCName = null;\r
a13899c5 114\r
115 private GenGuidDialog guidDialog = null;\r
116\r
5f97c029 117 private JTextField jTextFieldCName = null;\r
a13899c5 118\r
4da2e625 119 private JLabel jLabelHelp = null;\r
a13899c5 120\r
4da2e625 121 private JTextField jTextFieldHelp = null;\r
a13899c5 122\r
4da2e625 123 private JLabel jLabelSupMod = null;\r
a13899c5 124\r
4da2e625 125 private JLabel jLabelSupArch = null;\r
a13899c5 126\r
4da2e625 127 private ICheckBoxList iCheckBoxListArch = null;\r
a13899c5 128\r
4da2e625 129 private ICheckBoxList iCheckBoxListGuid = null;\r
a13899c5 130\r
4da2e625 131 private ICheckBoxList iCheckBoxListMod = null;\r
a13899c5 132\r
4da2e625 133 private JLabel jLabelGuidType = null;\r
a13899c5 134\r
a490bca8 135 protected String[][] saa = null;\r
a13899c5 136\r
fbf730ff 137 protected StarLabel starLabel = null;\r
5a502bd4 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
fbf730ff 147\r
a13899c5 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
5f97c029 159 This method initializes jTextFieldGuid \r
a13899c5 160 \r
161 @return javax.swing.JTextField \r
162 **/\r
5f97c029 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
a13899c5 168 \r
169 }\r
5f97c029 170 return jTextFieldGuid;\r
a13899c5 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
af25df16 181 jScrollPane.setBounds(new java.awt.Rectangle(5,256,472,292));\r
a13899c5 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
816ea437 199 model.addColumn("The C Name");\r
a13899c5 200 model.addColumn("GUID Value");\r
816ea437 201 model.addColumn("Help Text");\r
202 model.addColumn("Supported Architectures");\r
203 model.addColumn("Supported Module Types");\r
a13899c5 204 model.addColumn("GuidTypes");\r
5a502bd4 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
a13899c5 221 jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
fbf730ff 222 jTable.getColumnModel().getColumn(3).setCellEditor(new LongTextEditor());\r
a13899c5 223\r
ce73a791 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
fbf730ff 257 ListEditor le = new ListEditor(vGuid);\r
258 le.setCanNotBeEmpty(true);\r
259 jTable.getColumnModel().getColumn(6).setCellEditor(le);\r
ce73a791 260 \r
a13899c5 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
a490bca8 273 \r
a13899c5 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
a490bca8 287 int column = arg0.getColumn();\r
a13899c5 288 TableModel m = (TableModel)arg0.getSource();\r
289 if (arg0.getType() == TableModelEvent.UPDATE){\r
2c85fbc8 290 \r
a490bca8 291 updateRow(row, column, m);\r
a13899c5 292 }\r
293 }\r
294 \r
a490bca8 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
fbf730ff 305 \r
a490bca8 306 if (cellData.toString().length() == 0 && sa[column] == null) {\r
307 return;\r
308 }\r
309 \r
a13899c5 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
ce73a791 326 String[] rowData = {name, cName, guid, help};\r
327 if (!dataValidation(rowData)){\r
328 return;\r
329 }\r
2c85fbc8 330 if (docConsole != null) {\r
331 docConsole.setSaved(false);\r
332 }\r
a13899c5 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
d6d24759 430 \r
431 public SpdGuidDecls(OpeningPackageType opt) {\r
432 this(opt.getXmlSpd());\r
433 docConsole = opt;\r
434 }\r
a13899c5 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
a490bca8 461 saa = new String[sfc.getSpdGuidDeclarationCount()][7];\r
a13899c5 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
fbf730ff 487 \r
4da2e625 488 jLabelGuidType = new JLabel();\r
fbf730ff 489 jLabelGuidType.setBounds(new java.awt.Rectangle(420,122,103,16));\r
4da2e625 490 jLabelGuidType.setText("GUID Type List");\r
491 jLabelGuidType.setEnabled(true);\r
fbf730ff 492 starLabel = new StarLabel();\r
493 starLabel.setLocation(new Point(jLabelGuidType.getX() - 20, jLabelGuidType.getY()));\r
494 starLabel.setVisible(true);\r
4da2e625 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
5f97c029 507 jLabelCName = new JLabel();\r
508 jLabelCName.setBounds(new java.awt.Rectangle(14,35,111,20));\r
816ea437 509 jLabelCName.setText("C Name");\r
a13899c5 510 jLabelGuid = new JLabel();\r
5f97c029 511 jLabelGuid.setBounds(new java.awt.Rectangle(15,60,112,20));\r
a13899c5 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
5f97c029 532 jContentPane.add(jLabelCName, null);\r
533 jContentPane.add(getJTextFieldCName(), null);\r
534 jContentPane.add(getJTextFieldGuid(), null);\r
a13899c5 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
4da2e625 546 jContentPane.add(jLabelHelp, null);\r
547 jContentPane.add(getJTextFieldHelp(), null);\r
548 jContentPane.add(jLabelSupMod, null);\r
549 jContentPane.add(jLabelSupArch, null);\r
a13899c5 550 jContentPane.add(getJScrollPaneArch(), null);\r
551 jContentPane.add(getJScrollPaneGuid(), null);\r
552 jContentPane.add(getJScrollPaneModule(), null);\r
4da2e625 553 jContentPane.add(jLabelGuidType, null);\r
fbf730ff 554 jContentPane.add(starLabel, null);\r
a13899c5 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
d6d24759 572 \r
a13899c5 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
ce73a791 585 String[] row = {"", "", "", "", "", "", ""};\r
4da2e625 586 row[3] = jTextFieldHelp.getText();\r
5f97c029 587 row[2] = jTextFieldGuid.getText();\r
588 row[1] = jTextFieldCName.getText();\r
a13899c5 589 row[0] = jTextFieldName.getText();\r
4da2e625 590 row[4] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
a13899c5 591 if (row[4].length() == 0) {\r
592 row[4] = null;\r
593 }\r
4da2e625 594 row[5] = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
a13899c5 595 if (row[5].length() == 0) {\r
596 row[5] = null;\r
597 }\r
4da2e625 598 row[6] = vectorToString(iCheckBoxListGuid.getAllCheckedItemsString());\r
ce73a791 599 if (row[6].length() == 0) {\r
600 row[6] = null;\r
601 }\r
602 \r
603 if (!dataValidation(row)) {\r
604 return;\r
a13899c5 605 }\r
2c85fbc8 606 \r
5f97c029 607 if (addRow(row) == -1) {\r
608 return;\r
609 }\r
a13899c5 610 model.addRow(row);\r
af25df16 611 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
5f97c029 612 \r
a13899c5 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
5f97c029 637 jTextFieldGuid.setText(Tools.generateUuidString());\r
a13899c5 638 }\r
639 \r
640 if (arg0.getActionCommand().equals("GenGuidValue")) {\r
5f97c029 641 jTextFieldGuid.setText(guidDialog.getGuid());\r
a13899c5 642 }\r
643 \r
644 }\r
645 \r
ce73a791 646 protected boolean dataValidation(String[] row){\r
647 if (!DataValidation.isUiNameType(row[0])) {\r
816ea437 648 JOptionPane.showMessageDialog(this, "Name must start with an alpha character.");\r
ce73a791 649 return false;\r
650 }\r
651 if (!DataValidation.isGuid(row[2])) {\r
816ea437 652 JOptionPane.showMessageDialog(this, "Guid Value must be in registry format, 8-4-4-4-12.");\r
ce73a791 653 return false;\r
654 }\r
655 if (!DataValidation.isC_NameType(row[1])) {\r
816ea437 656 JOptionPane.showMessageDialog(this, "C Name does not match C Name datatype.");\r
ce73a791 657 return false;\r
658 }\r
659 if (row[3].length() == 0) {\r
816ea437 660 JOptionPane.showMessageDialog(this, "Help Text must be entered!");\r
ce73a791 661 return false;\r
662 }\r
663 return true;\r
664 }\r
665 \r
5f97c029 666 protected int addRow(String[] row) {\r
4da2e625 667 Vector<String> vArch = iCheckBoxListArch.getAllCheckedItemsString();\r
2c85fbc8 668 if (vArch.size() == 0) {\r
669 vArch = null;\r
670 }\r
4da2e625 671 Vector<String> vModType = iCheckBoxListMod.getAllCheckedItemsString();\r
2c85fbc8 672 if (vModType.size() == 0) {\r
673 vModType = null;\r
674 }\r
4da2e625 675 Vector<String> vguidType = iCheckBoxListGuid.getAllCheckedItemsString();\r
2c85fbc8 676 if (vguidType.size() == 0) {\r
677 vguidType = null;\r
678 }\r
5f97c029 679 if (vguidType == null) {\r
fbf730ff 680 JOptionPane.showMessageDialog(this, "You must select at least one GUID type.");\r
5f97c029 681 return -1;\r
682 }\r
2c85fbc8 683 if (docConsole != null) {\r
684 docConsole.setSaved(false);\r
685 }\r
a13899c5 686 sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
5f97c029 687 return 0;\r
a13899c5 688 }\r
689 \r
690 protected void removeRow(int i){\r
691 sfc.removeSpdGuidDeclaration(i);\r
2c85fbc8 692 if (docConsole != null) {\r
693 docConsole.setSaved(false);\r
694 }\r
a13899c5 695 }\r
696 \r
697 protected void clearAllRow(){\r
698 sfc.removeSpdGuidDeclaration();\r
2c85fbc8 699 if (docConsole != null) {\r
700 docConsole.setSaved(false);\r
701 }\r
a13899c5 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
5f97c029 742 * This method initializes jTextFieldCName \r
a13899c5 743 * \r
744 * @return javax.swing.JTextField \r
745 */\r
5f97c029 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
a13899c5 751 }\r
5f97c029 752 return jTextFieldCName;\r
a13899c5 753 }\r
754\r
755 public void componentResized(ComponentEvent arg0) {\r
756 int intPreferredWidth = 500;\r
757 \r
8792f60f 758 Tools.resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
5f97c029 759\r
760 Tools.resizeComponentWidth(this.jTextFieldCName, this.getWidth(), intPreferredWidth);\r
8792f60f 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
a13899c5 764 \r
765 }\r
766 \r
767 /**\r
768 * This method initializes jTextField \r
769 * \r
770 * @return javax.swing.JTextField \r
771 */\r
4da2e625 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
a13899c5 777 }\r
4da2e625 778 return jTextFieldHelp;\r
a13899c5 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
4da2e625 786 jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
a13899c5 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
4da2e625 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
a13899c5 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
ce73a791 804 v.add("ARM");\r
805 v.add("PPC");\r
4da2e625 806 iCheckBoxListArch.setAllItems(v);\r
a13899c5 807 }\r
4da2e625 808 return iCheckBoxListArch;\r
a13899c5 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
4da2e625 817 jScrollPaneGuid.setViewportView(getICheckBoxListGuid());\r
a13899c5 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
4da2e625 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
a13899c5 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
4da2e625 840 iCheckBoxListGuid.setAllItems(v);\r
a13899c5 841 }\r
4da2e625 842 return iCheckBoxListGuid;\r
a13899c5 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
4da2e625 850 jScrollPaneModule.setViewportView(getICheckBoxListMod());\r
a13899c5 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
4da2e625 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
a13899c5 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
4da2e625 876 iCheckBoxListMod.setAllItems(v);\r
a13899c5 877 }\r
4da2e625 878 return iCheckBoxListMod;\r
a13899c5 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
4da2e625 914 protected JLabel getJLabelGuidType() {\r
915 return jLabelGuidType;\r
a13899c5 916 }\r
917}\r
918\r
919\r