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