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