]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java
Delete useless file SpdPackageDefinitions.java;
[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
c777d1d4 16import java.awt.FontMetrics;\r
fbf730ff 17import java.awt.Point;\r
a13899c5 18import java.awt.event.ActionEvent;\r
a13899c5 19import java.awt.event.ComponentEvent;\r
a13899c5 20import java.util.Vector;\r
21\r
a13899c5 22import javax.swing.JOptionPane;\r
23import javax.swing.JPanel;\r
a13899c5 24import javax.swing.JTable;\r
25import javax.swing.JTextField;\r
a13899c5 26import javax.swing.JLabel;\r
a13899c5 27import javax.swing.JScrollPane;\r
28import javax.swing.JButton;\r
29import javax.swing.JFrame;\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
5a502bd4 38import javax.swing.table.TableColumn;\r
a13899c5 39import javax.swing.table.TableModel;\r
40\r
41import org.tianocore.PackageSurfaceAreaDocument;\r
ce73a791 42import org.tianocore.frameworkwizard.common.DataValidation;\r
a13899c5 43import org.tianocore.frameworkwizard.common.Tools;\r
d6d24759 44import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
a13899c5 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
ce73a791 48import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
fbf730ff 49import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
a13899c5 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
ce73a791 57 /**\r
58 * \r
59 */\r
60 private static final long serialVersionUID = 1L;\r
61\r
a13899c5 62 static JFrame frame;\r
63 \r
64 private SpdFileContents sfc = null;\r
d6d24759 65 \r
66 private OpeningPackageType docConsole = null;\r
a13899c5 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
5f97c029 74 private JTextField jTextFieldGuid = null;\r
a13899c5 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
5f97c029 114 private JLabel jLabelCName = null;\r
a13899c5 115\r
116 private GenGuidDialog guidDialog = null;\r
117\r
5f97c029 118 private JTextField jTextFieldCName = null;\r
a13899c5 119\r
4da2e625 120 private JLabel jLabelHelp = null;\r
a13899c5 121\r
4da2e625 122 private JTextField jTextFieldHelp = null;\r
a13899c5 123\r
4da2e625 124 private JLabel jLabelSupMod = null;\r
a13899c5 125\r
4da2e625 126 private JLabel jLabelSupArch = null;\r
a13899c5 127\r
4da2e625 128 private ICheckBoxList iCheckBoxListArch = null;\r
a13899c5 129\r
4da2e625 130 private ICheckBoxList iCheckBoxListGuid = null;\r
a13899c5 131\r
4da2e625 132 private ICheckBoxList iCheckBoxListMod = null;\r
a13899c5 133\r
4da2e625 134 private JLabel jLabelGuidType = null;\r
a13899c5 135\r
a490bca8 136 protected String[][] saa = null;\r
a13899c5 137\r
fbf730ff 138 protected StarLabel starLabel = null;\r
5a502bd4 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
fbf730ff 148\r
a13899c5 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
5f97c029 160 This method initializes jTextFieldGuid \r
a13899c5 161 \r
162 @return javax.swing.JTextField \r
163 **/\r
5f97c029 164 protected JTextField getJTextFieldGuid() {\r
165 if (jTextFieldGuid == null) {\r
166 jTextFieldGuid = new JTextField();\r
c777d1d4 167 jTextFieldGuid.setBounds(new java.awt.Rectangle(137,60,336,20));\r
5f97c029 168 jTextFieldGuid.setPreferredSize(new java.awt.Dimension(200,20));\r
a13899c5 169 \r
170 }\r
5f97c029 171 return jTextFieldGuid;\r
a13899c5 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
af25df16 182 jScrollPane.setBounds(new java.awt.Rectangle(5,256,472,292));\r
a13899c5 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
816ea437 200 model.addColumn("The C Name");\r
a13899c5 201 model.addColumn("GUID Value");\r
816ea437 202 model.addColumn("Help Text");\r
203 model.addColumn("Supported Architectures");\r
204 model.addColumn("Supported Module Types");\r
a13899c5 205 model.addColumn("GuidTypes");\r
5a502bd4 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
a13899c5 222 jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
fbf730ff 223 jTable.getColumnModel().getColumn(3).setCellEditor(new LongTextEditor());\r
a13899c5 224\r
ce73a791 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));\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));\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
fbf730ff 258 ListEditor le = new ListEditor(vGuid);\r
259 le.setCanNotBeEmpty(true);\r
260 jTable.getColumnModel().getColumn(6).setCellEditor(le);\r
ce73a791 261 \r
a13899c5 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
a490bca8 274 \r
a13899c5 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
a490bca8 288 int column = arg0.getColumn();\r
a13899c5 289 TableModel m = (TableModel)arg0.getSource();\r
290 if (arg0.getType() == TableModelEvent.UPDATE){\r
2c85fbc8 291 \r
a490bca8 292 updateRow(row, column, m);\r
a13899c5 293 }\r
294 }\r
295 \r
a490bca8 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
fbf730ff 306 \r
a490bca8 307 if (cellData.toString().length() == 0 && sa[column] == null) {\r
308 return;\r
309 }\r
310 \r
a13899c5 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
ce73a791 327 String[] rowData = {name, cName, guid, help};\r
328 if (!dataValidation(rowData)){\r
329 return;\r
330 }\r
2c85fbc8 331 if (docConsole != null) {\r
332 docConsole.setSaved(false);\r
333 }\r
a13899c5 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
62df8efa 360 jButtonRemove.setText("Delete");\r
a13899c5 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() {\r
420 super();\r
421 initialize();\r
422 init();\r
423 \r
424 }\r
425\r
426 public SpdGuidDecls(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa){\r
427 this();\r
428 sfc = new SpdFileContents(inPsa);\r
429 init(sfc);\r
430 }\r
d6d24759 431 \r
432 public SpdGuidDecls(OpeningPackageType opt) {\r
433 this(opt.getXmlSpd());\r
434 docConsole = opt;\r
62df8efa 435 if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
436 JOptionPane.showMessageDialog(frame, "This is a read-only package. You will not be able to edit contents in table.");\r
437 }\r
438 initFrame();\r
d6d24759 439 }\r
a13899c5 440 /**\r
441 This method initializes this\r
442 \r
443 @return void\r
444 **/\r
445 protected void init() {\r
446 this.setContentPane(getJContentPane());\r
447 this.addInternalFrameListener(new InternalFrameAdapter(){\r
448 public void internalFrameDeactivated(InternalFrameEvent e){\r
449 if (jTable.isEditing()) {\r
450 jTable.getCellEditor().stopCellEditing();\r
451 }\r
452 }\r
453 });\r
454 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
455 this.setVisible(true);\r
a13899c5 456 }\r
457\r
458 protected void init(SpdFileContents sfc){\r
459 if (sfc.getSpdGuidDeclarationCount() == 0) {\r
460 return ;\r
461 }\r
462 //\r
463 // initialize table using SpdFileContents object\r
464 //\r
a490bca8 465 saa = new String[sfc.getSpdGuidDeclarationCount()][7];\r
a13899c5 466 sfc.getSpdGuidDeclarations(saa);\r
467 int i = 0;\r
468 while (i < saa.length) {\r
469 model.addRow(saa[i]);\r
470 i++;\r
471 }\r
62df8efa 472 \r
a13899c5 473 }\r
474 \r
475 protected JScrollPane getJContentPane(){\r
476 if (topScrollPane == null){\r
477 topScrollPane = new JScrollPane();\r
478 topScrollPane.setSize(new java.awt.Dimension(617,500));\r
479 topScrollPane.setPreferredSize(new java.awt.Dimension(498,500));\r
480 topScrollPane.setViewportView(getJContentPane1());\r
481 }\r
482 return topScrollPane;\r
483 }\r
484 \r
485 /**\r
486 This method initializes jContentPane\r
487 \r
488 @return javax.swing.JPanel\r
489 **/\r
490 protected JPanel getJContentPane1() {\r
491 if (jContentPane == null) {\r
fbf730ff 492 \r
4da2e625 493 jLabelGuidType = new JLabel();\r
fbf730ff 494 jLabelGuidType.setBounds(new java.awt.Rectangle(420,122,103,16));\r
4da2e625 495 jLabelGuidType.setText("GUID Type List");\r
496 jLabelGuidType.setEnabled(true);\r
fbf730ff 497 starLabel = new StarLabel();\r
c777d1d4 498 starLabel.setLocation(new Point(jLabelGuidType.getX() - 10, jLabelGuidType.getY()));\r
fbf730ff 499 starLabel.setVisible(true);\r
4da2e625 500 jLabelSupArch = new JLabel();\r
501 jLabelSupArch.setBounds(new java.awt.Rectangle(197,122,108,16));\r
c777d1d4 502 jLabelSupArch.setText("Supported Architectures");\r
4da2e625 503 jLabelSupArch.setEnabled(true);\r
c777d1d4 504 FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
505 jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
4da2e625 506 jLabelSupMod = new JLabel();\r
507 jLabelSupMod.setBounds(new java.awt.Rectangle(14,120,110,16));\r
c777d1d4 508 jLabelSupMod.setText("Supported Module Types");\r
4da2e625 509 jLabelSupMod.setEnabled(true);\r
c777d1d4 510 fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
511 jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
4da2e625 512 jLabelHelp = new JLabel();\r
513 jLabelHelp.setText("HelpText");\r
514 jLabelHelp.setSize(new java.awt.Dimension(109,20));\r
515 jLabelHelp.setLocation(new java.awt.Point(14,85));\r
5f97c029 516 jLabelCName = new JLabel();\r
517 jLabelCName.setBounds(new java.awt.Rectangle(14,35,111,20));\r
816ea437 518 jLabelCName.setText("C Name");\r
a13899c5 519 jLabelGuid = new JLabel();\r
5f97c029 520 jLabelGuid.setBounds(new java.awt.Rectangle(15,60,112,20));\r
a13899c5 521 jLabelGuid.setText("Guid Value");\r
522 jLabelName = new JLabel();\r
523 jLabelName.setBounds(new java.awt.Rectangle(15,10,113,20));\r
524 jLabelName.setText("Name");\r
525 jStarLabel1 = new StarLabel();\r
526 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
527 jStarLabel3 = new StarLabel();\r
528 jStarLabel3.setLocation(new java.awt.Point(0, 35));\r
529 jStarLabel4 = new StarLabel();\r
530 jStarLabel4.setLocation(new java.awt.Point(0, 60));\r
531 jStarLabel2 = new StarLabel();\r
532 jStarLabel2.setLocation(new java.awt.Point(0, 85));\r
533 jStarLabel2.setVisible(true);\r
534 jContentPane = new JPanel();\r
535 jContentPane.setLayout(null);\r
536 jContentPane.setPreferredSize(new Dimension(480, 375));\r
537 jContentPane.add(jStarLabel1, null);\r
538 jContentPane.add(jStarLabel2, null);\r
539 jContentPane.add(jStarLabel3, null);\r
540 jContentPane.add(jStarLabel4, null);\r
5f97c029 541 jContentPane.add(jLabelCName, null);\r
542 jContentPane.add(getJTextFieldCName(), null);\r
543 jContentPane.add(getJTextFieldGuid(), null);\r
a13899c5 544 jContentPane.add(getJScrollPane(), null);\r
545 jContentPane.add(getJButtonAdd(), null);\r
546 jContentPane.add(getJButtonRemove(), null);\r
547 jContentPane.add(getJButtonClearAll(), null);\r
548 jContentPane.add(getJButtonCancel(), null);\r
549 jContentPane.add(getJButtonOk(), null);\r
550 \r
551 jContentPane.add(getJButtonGen(), null);\r
552 jContentPane.add(jLabelName, null);\r
553 jContentPane.add(getJTextFieldName(), null);\r
554 jContentPane.add(jLabelGuid, null);\r
4da2e625 555 jContentPane.add(jLabelHelp, null);\r
556 jContentPane.add(getJTextFieldHelp(), null);\r
557 jContentPane.add(jLabelSupMod, null);\r
558 jContentPane.add(jLabelSupArch, null);\r
a13899c5 559 jContentPane.add(getJScrollPaneArch(), null);\r
560 jContentPane.add(getJScrollPaneGuid(), null);\r
561 jContentPane.add(getJScrollPaneModule(), null);\r
4da2e625 562 jContentPane.add(jLabelGuidType, null);\r
fbf730ff 563 jContentPane.add(starLabel, null);\r
a13899c5 564 }\r
565 return jContentPane;\r
566 }\r
567\r
568 /**\r
569 fill ComboBoxes with pre-defined contents\r
570 **/\r
571 protected void initFrame() {\r
572 \r
573 this.setTitle("GUID Declarations");\r
62df8efa 574 \r
575 boolean editable = true;\r
576 if (getSfc().getSpdPkgDefsRdOnly().equals("true")) {\r
577 editable = false;\r
578 }\r
579 \r
580 jButtonAdd.setEnabled(editable);\r
581 jButtonRemove.setEnabled(editable);\r
582 jButtonClearAll.setEnabled(editable);\r
583 jTable.setEnabled(editable);\r
a13899c5 584 }\r
585\r
586 /* (non-Javadoc)\r
587 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
588 */\r
589 public void actionPerformed(ActionEvent arg0) {\r
d6d24759 590 \r
a13899c5 591 if (arg0.getSource() == jButtonOk) {\r
592 this.save();\r
593 this.dispose();\r
594\r
595 }\r
596 if (arg0.getSource() == jButtonCancel) {\r
597 this.dispose();\r
598 }\r
599\r
600 if (arg0.getSource() == jButtonAdd) {\r
601 \r
602 //ToDo: check before add\r
ce73a791 603 String[] row = {"", "", "", "", "", "", ""};\r
4da2e625 604 row[3] = jTextFieldHelp.getText();\r
5f97c029 605 row[2] = jTextFieldGuid.getText();\r
606 row[1] = jTextFieldCName.getText();\r
a13899c5 607 row[0] = jTextFieldName.getText();\r
4da2e625 608 row[4] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
a13899c5 609 if (row[4].length() == 0) {\r
610 row[4] = null;\r
611 }\r
4da2e625 612 row[5] = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
a13899c5 613 if (row[5].length() == 0) {\r
614 row[5] = null;\r
615 }\r
4da2e625 616 row[6] = vectorToString(iCheckBoxListGuid.getAllCheckedItemsString());\r
ce73a791 617 if (row[6].length() == 0) {\r
618 row[6] = null;\r
619 }\r
620 \r
621 if (!dataValidation(row)) {\r
622 return;\r
a13899c5 623 }\r
2c85fbc8 624 \r
5f97c029 625 if (addRow(row) == -1) {\r
626 return;\r
627 }\r
a13899c5 628 model.addRow(row);\r
af25df16 629 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
5f97c029 630 \r
a13899c5 631 }\r
632 //\r
633 // remove selected line\r
634 //\r
635 if (arg0.getSource() == jButtonRemove) {\r
636 if (jTable.isEditing()){\r
637 jTable.getCellEditor().stopCellEditing();\r
638 }\r
639 int rowSelected = selectedRow;\r
640 if (rowSelected >= 0) {\r
641 model.removeRow(rowSelected);\r
642 removeRow(rowSelected);\r
643 }\r
644 }\r
645\r
646 if (arg0.getSource() == jButtonClearAll) {\r
647 if (model.getRowCount() == 0) {\r
648 return;\r
649 }\r
650 model.setRowCount(0);\r
651 clearAllRow();\r
652 }\r
653 \r
654 if (arg0.getSource() == jButtonGen) {\r
5f97c029 655 jTextFieldGuid.setText(Tools.generateUuidString());\r
a13899c5 656 }\r
657 \r
658 if (arg0.getActionCommand().equals("GenGuidValue")) {\r
5f97c029 659 jTextFieldGuid.setText(guidDialog.getGuid());\r
a13899c5 660 }\r
661 \r
662 }\r
663 \r
ce73a791 664 protected boolean dataValidation(String[] row){\r
665 if (!DataValidation.isUiNameType(row[0])) {\r
816ea437 666 JOptionPane.showMessageDialog(this, "Name must start with an alpha character.");\r
ce73a791 667 return false;\r
668 }\r
669 if (!DataValidation.isGuid(row[2])) {\r
816ea437 670 JOptionPane.showMessageDialog(this, "Guid Value must be in registry format, 8-4-4-4-12.");\r
ce73a791 671 return false;\r
672 }\r
673 if (!DataValidation.isC_NameType(row[1])) {\r
816ea437 674 JOptionPane.showMessageDialog(this, "C Name does not match C Name datatype.");\r
ce73a791 675 return false;\r
676 }\r
677 if (row[3].length() == 0) {\r
816ea437 678 JOptionPane.showMessageDialog(this, "Help Text must be entered!");\r
ce73a791 679 return false;\r
680 }\r
681 return true;\r
682 }\r
683 \r
5f97c029 684 protected int addRow(String[] row) {\r
4da2e625 685 Vector<String> vArch = iCheckBoxListArch.getAllCheckedItemsString();\r
2c85fbc8 686 if (vArch.size() == 0) {\r
687 vArch = null;\r
688 }\r
4da2e625 689 Vector<String> vModType = iCheckBoxListMod.getAllCheckedItemsString();\r
2c85fbc8 690 if (vModType.size() == 0) {\r
691 vModType = null;\r
692 }\r
4da2e625 693 Vector<String> vguidType = iCheckBoxListGuid.getAllCheckedItemsString();\r
2c85fbc8 694 if (vguidType.size() == 0) {\r
695 vguidType = null;\r
696 }\r
5f97c029 697 if (vguidType == null) {\r
fbf730ff 698 JOptionPane.showMessageDialog(this, "You must select at least one GUID type.");\r
5f97c029 699 return -1;\r
700 }\r
2c85fbc8 701 if (docConsole != null) {\r
702 docConsole.setSaved(false);\r
703 }\r
a13899c5 704 sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
5f97c029 705 return 0;\r
a13899c5 706 }\r
707 \r
708 protected void removeRow(int i){\r
709 sfc.removeSpdGuidDeclaration(i);\r
2c85fbc8 710 if (docConsole != null) {\r
711 docConsole.setSaved(false);\r
712 }\r
a13899c5 713 }\r
714 \r
715 protected void clearAllRow(){\r
716 sfc.removeSpdGuidDeclaration();\r
2c85fbc8 717 if (docConsole != null) {\r
718 docConsole.setSaved(false);\r
719 }\r
a13899c5 720 }\r
721\r
722 /**\r
723 Add contents in list to sfc\r
724 **/\r
725 protected void save() {\r
726 \r
727 }\r
728\r
729 /**\r
730 This method initializes jButtonBrowse \r
731 \r
732 @return javax.swing.JButton \r
733 **/\r
734 protected JButton getJButtonGen() {\r
735 if (jButtonGen == null) {\r
736 jButtonGen = new JButton();\r
c777d1d4 737 jButtonGen.setBounds(new java.awt.Rectangle(485,58,92,21));\r
62df8efa 738 jButtonGen.setText("Gen");\r
a13899c5 739 jButtonGen.setPreferredSize(new java.awt.Dimension(80,20));\r
740 jButtonGen.addActionListener(this);\r
741 }\r
742 return jButtonGen;\r
743 }\r
744 \r
745 /**\r
746 * This method initializes jTextFieldName \r
747 * \r
748 * @return javax.swing.JTextField \r
749 */\r
750 protected JTextField getJTextFieldName() {\r
751 if (jTextFieldName == null) {\r
752 jTextFieldName = new JTextField();\r
753 jTextFieldName.setBounds(new java.awt.Rectangle(138,10,337,20));\r
754 jTextFieldName.setPreferredSize(new java.awt.Dimension(335,20));\r
755 }\r
756 return jTextFieldName;\r
757 }\r
758\r
759 /**\r
5f97c029 760 * This method initializes jTextFieldCName \r
a13899c5 761 * \r
762 * @return javax.swing.JTextField \r
763 */\r
5f97c029 764 protected JTextField getJTextFieldCName() {\r
765 if (jTextFieldCName == null) {\r
766 jTextFieldCName = new JTextField();\r
767 jTextFieldCName.setBounds(new java.awt.Rectangle(137,35,337,20));\r
768 jTextFieldCName.setPreferredSize(new java.awt.Dimension(335,20));\r
a13899c5 769 }\r
5f97c029 770 return jTextFieldCName;\r
a13899c5 771 }\r
772\r
773 public void componentResized(ComponentEvent arg0) {\r
774 int intPreferredWidth = 500;\r
775 \r
8792f60f 776 Tools.resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
5f97c029 777\r
778 Tools.resizeComponentWidth(this.jTextFieldCName, this.getWidth(), intPreferredWidth);\r
8792f60f 779 Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
780 Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
781 Tools.relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 40);\r
a13899c5 782 \r
783 }\r
784 \r
785 /**\r
786 * This method initializes jTextField \r
787 * \r
788 * @return javax.swing.JTextField \r
789 */\r
4da2e625 790 private JTextField getJTextFieldHelp() {\r
791 if (jTextFieldHelp == null) {\r
792 jTextFieldHelp = new JTextField();\r
793 jTextFieldHelp.setBounds(new java.awt.Rectangle(136,85,337,20));\r
794 jTextFieldHelp.setPreferredSize(new Dimension(335, 20));\r
a13899c5 795 }\r
4da2e625 796 return jTextFieldHelp;\r
a13899c5 797 }\r
798\r
799 private JScrollPane getJScrollPaneArch() {\r
800 if (jScrollPaneArch == null) {\r
801 jScrollPaneArch = new JScrollPane();\r
802 jScrollPaneArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
803 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(188, 74));\r
4da2e625 804 jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
a13899c5 805 }\r
806 return jScrollPaneArch;\r
807 }\r
808 /**\r
809 * This method initializes iCheckBoxList \r
810 * \r
811 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
812 */\r
4da2e625 813 private ICheckBoxList getICheckBoxListArch() {\r
814 if (iCheckBoxListArch == null) {\r
815 iCheckBoxListArch = new ICheckBoxList();\r
816 iCheckBoxListArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
a13899c5 817 Vector<String> v = new Vector<String>();\r
818 v.add("IA32");\r
819 v.add("X64");\r
820 v.add("IPF");\r
821 v.add("EBC");\r
ce73a791 822 v.add("ARM");\r
823 v.add("PPC");\r
4da2e625 824 iCheckBoxListArch.setAllItems(v);\r
a13899c5 825 }\r
4da2e625 826 return iCheckBoxListArch;\r
a13899c5 827 }\r
828\r
829 protected JScrollPane getJScrollPaneGuid() {\r
830 if (jScrollPaneGuid== null) {\r
831 jScrollPaneGuid = new JScrollPane();\r
832 jScrollPaneGuid.setPreferredSize(new java.awt.Dimension(190,74));\r
833 jScrollPaneGuid.setLocation(new java.awt.Point(400,142));\r
834 jScrollPaneGuid.setSize(new java.awt.Dimension(260,74));\r
4da2e625 835 jScrollPaneGuid.setViewportView(getICheckBoxListGuid());\r
a13899c5 836 }\r
837 return jScrollPaneGuid;\r
838 }\r
839 /**\r
840 * This method initializes iCheckBoxList1 \r
841 * \r
842 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
843 */\r
4da2e625 844 private ICheckBoxList getICheckBoxListGuid() {\r
845 if (iCheckBoxListGuid == null) {\r
846 iCheckBoxListGuid = new ICheckBoxList();\r
847 iCheckBoxListGuid.setBounds(new java.awt.Rectangle(400,142,177,74));\r
a13899c5 848 Vector<String> v = new Vector<String>();\r
849 v.add("DATA_HUB_RECORD");\r
850 v.add("EFI_EVENT");\r
851 v.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
852 v.add("EFI_VARIABLE");\r
853 v.add("GUID");\r
854 v.add("HII_PACKAGE_LIST");\r
855 v.add("HOB");\r
856 v.add("TOKEN_SPACE_GUID");\r
857 \r
4da2e625 858 iCheckBoxListGuid.setAllItems(v);\r
a13899c5 859 }\r
4da2e625 860 return iCheckBoxListGuid;\r
a13899c5 861 }\r
862\r
863 private JScrollPane getJScrollPaneModule() {\r
864 if (jScrollPaneModule == null) {\r
865 jScrollPaneModule = new JScrollPane();\r
866 jScrollPaneModule.setBounds(new java.awt.Rectangle(14,142,170,74));\r
867 jScrollPaneModule.setPreferredSize(new java.awt.Dimension(170, 74));\r
4da2e625 868 jScrollPaneModule.setViewportView(getICheckBoxListMod());\r
a13899c5 869 }\r
870 return jScrollPaneModule;\r
871 }\r
872 /**\r
873 * This method initializes iCheckBoxList2 \r
874 * \r
875 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
876 */\r
4da2e625 877 private ICheckBoxList getICheckBoxListMod() {\r
878 if (iCheckBoxListMod == null) {\r
879 iCheckBoxListMod = new ICheckBoxList();\r
880 iCheckBoxListMod.setBounds(new java.awt.Rectangle(14,142,170,74));\r
a13899c5 881 Vector<String> v = new Vector<String>();\r
882 v.add("BASE");\r
883 v.add("SEC");\r
884 v.add("PEI_CORE");\r
885 v.add("PEIM");\r
886 v.add("DXE_CORE");\r
887 v.add("DXE_DRIVER");\r
888 v.add("DXE_RUNTIME_DRIVER");\r
889 v.add("DXE_SAL_DRIVER");\r
890 v.add("DXE_SMM_DRIVER");\r
891 v.add("UEFI_DRIVER");\r
892 v.add("UEFI_APPLICATION");\r
893 v.add("USER_DEFINED");\r
4da2e625 894 iCheckBoxListMod.setAllItems(v);\r
a13899c5 895 }\r
4da2e625 896 return iCheckBoxListMod;\r
a13899c5 897 }\r
898\r
899 public static void main(String[] args){\r
900 new SpdGuidDecls().setVisible(true);\r
901 }\r
902\r
903 protected DefaultTableModel getModel() {\r
904 return model;\r
905 }\r
906\r
907 protected void setModel(DefaultTableModel model) {\r
908 this.model = model;\r
909 }\r
910 \r
911 protected String vectorToString(Vector<String> v) {\r
912 String s = " ";\r
913 for (int i = 0; i < v.size(); ++i) {\r
914 s += v.get(i);\r
915 s += " ";\r
916 }\r
917 return s.trim();\r
918 }\r
919 \r
920 protected Vector<String> stringToVector(String s){\r
921 if (s == null) {\r
922 return null;\r
923 }\r
924 String[] sArray = s.split(" ");\r
925 Vector<String> v = new Vector<String>();\r
926 for (int i = 0; i < sArray.length; ++i) {\r
927 v.add(sArray[i]);\r
928 }\r
929 return v;\r
930 }\r
931\r
4da2e625 932 protected JLabel getJLabelGuidType() {\r
933 return jLabelGuidType;\r
a13899c5 934 }\r
62df8efa 935\r
936 /**\r
937 * @return Returns the sfc.\r
938 */\r
939 protected SpdFileContents getSfc() {\r
940 return sfc;\r
941 }\r
a13899c5 942}\r
943\r
944\r