]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.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 / SpdPcdDefs.java
CommitLineData
a13899c5 1/** @file\r
2 Java class SpdPcdDefs is GUI for create PCD 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
15import java.awt.Dimension;\r
c777d1d4 16import java.awt.FontMetrics;\r
a13899c5 17import java.awt.event.ActionEvent;\r
a13899c5 18import java.awt.event.ComponentEvent;\r
19\r
a13899c5 20import javax.swing.DefaultCellEditor;\r
21import javax.swing.JFrame;\r
22import javax.swing.JOptionPane;\r
23import javax.swing.JPanel;\r
a13899c5 24import javax.swing.JLabel;\r
25import javax.swing.JTextField;\r
26import javax.swing.JComboBox;\r
27import javax.swing.JButton;\r
28import javax.swing.ListSelectionModel;\r
29\r
30import javax.swing.event.InternalFrameAdapter;\r
31import javax.swing.event.InternalFrameEvent;\r
32import javax.swing.event.ListSelectionEvent;\r
33import javax.swing.event.ListSelectionListener;\r
34import javax.swing.event.TableModelEvent;\r
35import javax.swing.event.TableModelListener;\r
36import javax.swing.table.DefaultTableModel;\r
37import javax.swing.table.TableColumn;\r
38import javax.swing.table.TableModel;\r
39\r
40import org.tianocore.PackageSurfaceAreaDocument;\r
a13899c5 41\r
ce73a791 42import org.tianocore.frameworkwizard.common.DataValidation;\r
8792f60f 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 javax.swing.JScrollPane;\r
48import javax.swing.JTable;\r
49import javax.swing.JCheckBox;\r
50import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
ce73a791 51import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
fbf730ff 52import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
ce73a791 53\r
a13899c5 54import java.awt.Rectangle;\r
55import java.util.Vector;\r
56\r
57/**\r
58 GUI for create PCD definition elements of spd file\r
59 \r
60 @since PackageEditor 1.0\r
61**/\r
62public class SpdPcdDefs extends IInternalFrame implements TableModelListener{\r
63\r
0b5e1cc3 64 /**\r
65 * \r
66 */\r
67 private static final long serialVersionUID = 1L;\r
68\r
82484861 69 private JFrame topFrame;\r
a13899c5 70 \r
71 private JPanel jContentPane = null; \r
72\r
73 private JLabel jLabelItemType = null;\r
74\r
75 private JLabel jLabelC_Name = null;\r
76\r
77 private JTextField jTextFieldC_Name = null;\r
78\r
79 private JLabel jLabelToken = null;\r
80\r
81 private JTextField jTextFieldToken = null;\r
82\r
83 private JLabel jLabelDataType = null;\r
84\r
85 private JButton jButtonOk = null;\r
86\r
87 private JButton jButtonCancel = null;\r
88\r
89 private JComboBox jComboBoxDataType = null;\r
90\r
91 private SpdFileContents sfc = null;\r
d6d24759 92 \r
93 private OpeningPackageType docConsole = null;\r
a13899c5 94\r
95 private StarLabel jStarLabel2 = null;\r
96\r
97 private StarLabel jStarLabel3 = null;\r
98\r
99 private StarLabel jStarLabel4 = null;\r
100\r
101 private StarLabel jStarLabel = null;\r
102\r
103 private StarLabel jStarLabel1 = null;\r
104\r
105 private JLabel jLabelTokenSpace = null;\r
106\r
5f97c029 107 private JComboBox jComboBoxTsGuid = null;\r
a13899c5 108\r
109 private JLabel jLabelVarVal = null;\r
110\r
4da2e625 111 private JTextField jTextFieldHelp = null;\r
a13899c5 112\r
113 private JLabel jLabelDefVal = null;\r
114\r
115 private JTextField jTextFieldDefaultValue = null;\r
116\r
117 private JButton jButtonAdd = null;\r
118 \r
119 private CheckboxTableModel model = null;\r
120\r
121 private JButton jButtonRemove = null;\r
122\r
123 private JButton jButtonClearAll = null;\r
124\r
a13899c5 125 private JScrollPane jScrollPane = null;\r
126\r
127 private JTable jTable = null;\r
128 \r
129 private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="390,10"\r
130 \r
131 private int selectedRow = -1;\r
132\r
133 private StarLabel starLabel = null;\r
134\r
4da2e625 135 private JCheckBox jCheckBoxFeatureFlag = null;\r
a13899c5 136\r
4da2e625 137 private JCheckBox jCheckBoxFixedAtBuild = null;\r
a13899c5 138\r
4da2e625 139 private JCheckBox jCheckBoxPatchInMod = null;\r
a13899c5 140\r
4da2e625 141 private JCheckBox jCheckBoxDyn = null;\r
a13899c5 142\r
4da2e625 143 private JCheckBox jCheckBoxDynEx = null;\r
a13899c5 144\r
4da2e625 145 private JScrollPane jScrollPaneArch = null;\r
a13899c5 146\r
4da2e625 147 private ICheckBoxList iCheckBoxListArch = null;\r
a13899c5 148\r
4da2e625 149 private JScrollPane jScrollPaneMod = null;\r
a13899c5 150\r
4da2e625 151 private ICheckBoxList iCheckBoxListMod = null;\r
a13899c5 152\r
4da2e625 153 private JLabel jLabelSupMod = null;\r
a13899c5 154\r
4da2e625 155 private JLabel jLabelSupArch = null;\r
5a502bd4 156 \r
157 private final int pcdCNameMinWidth = 200;\r
158 private final int pcdTokenMinWidth = 100;\r
159 private final int pcdTokenSpaceMinWidth = 200;\r
160 private final int datumTypeMinWidth = 80;\r
161 private final int defaultValueMinWidth = 100;\r
162 private final int helpTextMinWidth = 200;\r
163 private final int usageMinWidth = 60;\r
164 private final int supArchMinWidth = 200;\r
165 private final int supModMinWidth = 200;\r
82484861 166 \r
2109b16e 167// private Object boolModifyLock = new Object();\r
168// private boolean exclusiveUsage = false;\r
169\r
a13899c5 170 /**\r
171 This method initializes this\r
172 \r
173 **/\r
174 private void initialize() {\r
209abc92 175 this.setTitle("PCD Declarations");\r
a13899c5 176 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
177\r
c777d1d4 178 int xPos = jCheckBoxPatchInMod.getX() + jCheckBoxPatchInMod.getWidth();\r
179 jCheckBoxFixedAtBuild.setLocation(xPos,133);\r
180 \r
181 xPos = jCheckBoxFeatureFlag.getX() + jCheckBoxFeatureFlag.getWidth();\r
182 jCheckBoxDyn.setLocation(xPos,161);\r
183 \r
184 xPos = jCheckBoxDyn.getX() + jCheckBoxDyn.getWidth();\r
185 jCheckBoxDynEx.setLocation(xPos,161);\r
186 \r
a13899c5 187 }\r
188\r
189 /**\r
190 This method initializes jTextFieldC_Name \r
191 \r
192 @return javax.swing.JTextField \r
193 **/\r
194 private JTextField getJTextFieldC_Name() {\r
195 if (jTextFieldC_Name == null) {\r
196 jTextFieldC_Name = new JTextField();\r
197 jTextFieldC_Name.setBounds(new java.awt.Rectangle(156,9,317,20));\r
198 jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(315,20));\r
199 }\r
200 return jTextFieldC_Name;\r
201 }\r
202\r
203 /**\r
204 This method initializes jTextFieldToken \r
205 \r
206 @return javax.swing.JTextField \r
207 **/\r
208 private JTextField getJTextFieldToken() {\r
209 if (jTextFieldToken == null) {\r
210 jTextFieldToken = new JTextField();\r
211 jTextFieldToken.setBounds(new java.awt.Rectangle(156,33,317,20));\r
212 jTextFieldToken.setPreferredSize(new java.awt.Dimension(315,20));\r
213 }\r
214 return jTextFieldToken;\r
215 }\r
216\r
217 /**\r
218 This method initializes jButtonOk \r
219 \r
220 @return javax.swing.JButton \r
221 **/\r
222 private JButton getJButtonOk() {\r
223 if (jButtonOk == null) {\r
224 jButtonOk = new JButton();\r
225 jButtonOk.setText("OK");\r
226 jButtonOk.setBounds(new java.awt.Rectangle(279,276,90,20));\r
227 jButtonOk.setVisible(false);\r
228 jButtonOk.addActionListener(this);\r
229 }\r
230 return jButtonOk;\r
231 }\r
232\r
233 /**\r
234 This method initializes jButtonCancel \r
235 \r
236 @return javax.swing.JButton \r
237 **/\r
238 private JButton getJButtonCancel() {\r
239 if (jButtonCancel == null) {\r
240 jButtonCancel = new JButton();\r
241 jButtonCancel.setText("Cancel");\r
242 jButtonCancel.setBounds(new java.awt.Rectangle(389,276,82,20));\r
243 jButtonCancel.setVisible(false);\r
244 jButtonCancel.addActionListener(this);\r
245 }\r
246 return jButtonCancel;\r
247 }\r
248\r
249 /**\r
250 This method initializes jComboBoxDataType \r
251 \r
252 @return javax.swing.JComboBox \r
253 **/\r
254 private JComboBox getJComboBoxDataType() {\r
255 if (jComboBoxDataType == null) {\r
256 jComboBoxDataType = new JComboBox();\r
257 jComboBoxDataType.setBounds(new java.awt.Rectangle(156,84,110,20));\r
258 }\r
259 return jComboBoxDataType;\r
260 }\r
261\r
262 /**\r
263 This is the default constructor\r
264 **/\r
82484861 265 public SpdPcdDefs(JFrame frame) {\r
a13899c5 266 super();\r
267 init();\r
268 initialize();\r
82484861 269 topFrame = frame;\r
a13899c5 270 }\r
271\r
82484861 272 public SpdPcdDefs(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa, JFrame frame) {\r
273 this(frame);\r
a13899c5 274 sfc = new SpdFileContents(inPsa);\r
275 init(sfc);\r
276 }\r
d6d24759 277 \r
82484861 278 public SpdPcdDefs(OpeningPackageType opt, JFrame frame) {\r
279 this(opt.getXmlSpd(), frame);\r
d6d24759 280 docConsole = opt;\r
281 }\r
a13899c5 282 /**\r
283 This method initializes this\r
284 \r
285 @return void\r
286 **/\r
287 private void init() {\r
288 this.setSize(500, 650);\r
289 this.setContentPane(getJContentPane());\r
290 this.addInternalFrameListener(new InternalFrameAdapter(){\r
291 public void internalFrameDeactivated(InternalFrameEvent e){\r
292 if (jTable.isEditing()) {\r
293 jTable.getCellEditor().stopCellEditing();\r
294 }\r
295 }\r
296 });\r
5f97c029 297 \r
a13899c5 298 this.setVisible(true);\r
299 }\r
300\r
301 private void init(SpdFileContents sfc){\r
62df8efa 302 \r
303 if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
82484861 304 JOptionPane.showMessageDialog(topFrame, "This is a read-only package. You will not be able to edit contents in table.");\r
62df8efa 305 }\r
306 initFrame();\r
307 \r
a13899c5 308 if (sfc.getSpdPcdDefinitionCount() == 0) {\r
309 return ;\r
310 }\r
311 String[][] saa = new String[sfc.getSpdPcdDefinitionCount()][8];\r
312 String[][] usage = new String[sfc.getSpdPcdDefinitionCount()][5];\r
313 Object[] rowData = new Object[13];\r
314 sfc.getSpdPcdDefinitions(saa, usage);\r
315 int i = 0;\r
316 while (i < saa.length) {\r
317 \r
318 for (int k = 0; k < 6; ++k) {\r
319 rowData[k] = saa[i][k];\r
320 }\r
af25df16 321 for (int m = 6; m < 11; ++m) {\r
a13899c5 322 rowData[m] = new Boolean("false");\r
323 }\r
324 int j = 0;\r
325 while (j < 5) {\r
326 if (usage[i][j] == null || usage[i][j].length()==0){\r
327 ++j;\r
328 continue;\r
329 }\r
330 if (usage[i][j].equals("FEATURE_FLAG")){\r
331 rowData[6] = new Boolean("true");\r
332 }\r
333 if (usage[i][j].equals("FIXED_AT_BUILD")){\r
334 rowData[7] = new Boolean("true");\r
335 }\r
336 if (usage[i][j].equals("PATCHABLE_IN_MODULE")){\r
337 rowData[8] = new Boolean("true");\r
338 }\r
339 if (usage[i][j].equals("DYNAMIC")){\r
340 rowData[9] = new Boolean("true");\r
341 }\r
342 if (usage[i][j].equals("DYNAMIC_EX")){\r
343 rowData[10] = new Boolean("true");\r
344 }\r
345 \r
346 ++j;\r
347 }\r
348 \r
349 rowData[11] = saa[i][6];\r
350 rowData[12] = saa[i][7];\r
351 \r
352 model.addRow(rowData);\r
353 \r
354 i++;\r
355 }\r
356 \r
a13899c5 357 }\r
358 \r
359 private JScrollPane getJContentPane(){\r
360 if (topScrollPane == null){\r
361 topScrollPane = new JScrollPane();\r
362 topScrollPane.setSize(new java.awt.Dimension(482,451));\r
363 topScrollPane.setViewportView(getJContentPane1());\r
364 }\r
365 return topScrollPane;\r
366 }\r
367 private JPanel getJContentPane1() {\r
368 if (jContentPane == null) { \r
369 \r
4da2e625 370 jLabelSupArch = new JLabel();\r
371 jLabelSupArch.setBounds(new java.awt.Rectangle(241,192,89,16));\r
816ea437 372 jLabelSupArch.setText("Supported Architectures");\r
4da2e625 373 jLabelSupArch.setEnabled(true);\r
c777d1d4 374 FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
375 jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
4da2e625 376 jLabelSupMod = new JLabel();\r
377 jLabelSupMod.setBounds(new java.awt.Rectangle(15,193,103,16));\r
c777d1d4 378 jLabelSupMod.setText("Supported Module types");\r
4da2e625 379 jLabelSupMod.setEnabled(true);\r
c777d1d4 380 fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
381 jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
a13899c5 382 starLabel = new StarLabel();\r
383 starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
384 jLabelDefVal = new JLabel();\r
385 jLabelDefVal.setBounds(new java.awt.Rectangle(277,84,80,20));\r
386 jLabelDefVal.setText("Default Value");\r
c777d1d4 387 fm = jLabelDefVal.getFontMetrics(jLabelDefVal.getFont());\r
388 jLabelDefVal.setSize(fm.stringWidth(jLabelDefVal.getText()) + 10, 20);\r
a13899c5 389 jLabelVarVal = new JLabel();\r
c777d1d4 390 jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,100,20));\r
a13899c5 391 jLabelVarVal.setText("Valid Usage");\r
392 jLabelC_Name = new JLabel();\r
816ea437 393 jLabelC_Name.setText("C Name");\r
a13899c5 394 jLabelC_Name.setBounds(new java.awt.Rectangle(11,9,140,20));\r
395 jLabelTokenSpace = new JLabel();\r
396 jLabelTokenSpace.setBounds(new java.awt.Rectangle(11,58,140,20));\r
397 jLabelTokenSpace.setText("Token Space");\r
398 jLabelDataType = new JLabel();\r
399 jLabelDataType.setText("Data Type");\r
400 jLabelDataType.setBounds(new java.awt.Rectangle(11,83,140,20));\r
401 jLabelToken = new JLabel();\r
c1dbe93d 402 jLabelToken.setText("Token Number");\r
a13899c5 403 jLabelToken.setBounds(new java.awt.Rectangle(11,33,140,20));\r
404 jLabelItemType = new JLabel();\r
405 jLabelItemType.setText("Help Text");\r
406 jLabelItemType.setBounds(new java.awt.Rectangle(11,108,140,20));\r
407 \r
408 \r
409 jContentPane = new JPanel();\r
410 jContentPane.setLayout(null);\r
411 jContentPane.setPreferredSize(new java.awt.Dimension(479,375));\r
412 \r
413 jContentPane.add(jLabelItemType, null);\r
414 jContentPane.add(jLabelC_Name, null);\r
415 jContentPane.add(jLabelTokenSpace, null);\r
5f97c029 416 jContentPane.add(getJComboBoxTsGuid(), null);\r
a13899c5 417 jContentPane.add(jLabelVarVal, null);\r
418 jContentPane.add(getJTextFieldC_Name(), null);\r
419 jContentPane.add(jLabelToken, null);\r
420 jContentPane.add(getJTextFieldToken(), null);\r
421 jContentPane.add(jLabelDataType, null);\r
422 jContentPane.add(getJButtonOk(), null);\r
423 jContentPane.add(getJButtonCancel(), null);\r
424 jContentPane.add(getJComboBoxDataType(), null);\r
425 \r
426 jStarLabel = new StarLabel();\r
427 jStarLabel1 = new StarLabel();\r
428 jStarLabel1.setBounds(new java.awt.Rectangle(2,8,10,20));\r
429 jStarLabel2 = new StarLabel();\r
430 jStarLabel3 = new StarLabel();\r
431 jStarLabel4 = new StarLabel();\r
432 jStarLabel.setLocation(new java.awt.Point(2,84));\r
433 jStarLabel4.setLocation(new java.awt.Point(2, 109));\r
434 jStarLabel2.setLocation(new java.awt.Point(2,33));\r
435 jStarLabel3.setLocation(new java.awt.Point(2, 58));\r
436 jStarLabel3.setSize(new java.awt.Dimension(8,20));\r
437 jContentPane.add(jStarLabel2, null);\r
438 jContentPane.add(jStarLabel3, null);\r
439 jContentPane.add(jStarLabel, null);\r
440 jContentPane.add(jStarLabel1, null);\r
441 jContentPane.add(jStarLabel4, null);\r
4da2e625 442 jContentPane.add(getJTextFieldHelp(), null);\r
a13899c5 443 jContentPane.add(jLabelDefVal, null);\r
444 jContentPane.add(getJTextFieldDefaultValue(), null);\r
445 jContentPane.add(getJButtonAdd(), null);\r
446 jContentPane.add(getJButtonRemove(), null);\r
447 jContentPane.add(getJButtonClearAll(), null);\r
a13899c5 448 jContentPane.add(getJScrollPane(), null);\r
449 jContentPane.add(starLabel, null);\r
4da2e625 450 jContentPane.add(getJCheckBoxFeatureFlag(), null);\r
451 jContentPane.add(getJCheckBoxFixedAtBuild(), null);\r
452 jContentPane.add(getJCheckBoxPatchInMod(), null);\r
453 jContentPane.add(getJCheckBoxDyn(), null);\r
454 jContentPane.add(getJCheckBoxDynEx(), null);\r
455 jContentPane.add(getJScrollPaneArch(), null);\r
456 jContentPane.add(getJScrollPaneMod(), null);\r
457 jContentPane.add(jLabelSupMod, null);\r
458 jContentPane.add(jLabelSupArch, null);\r
a13899c5 459 }\r
460 return jContentPane;\r
461 }\r
462\r
463 /**\r
464 This method initializes comboboxes \r
465 jContentPane.add(jLabelTokenSpace, null);\r
466 \r
467 **/\r
62df8efa 468 private void initFrame() {\r
a13899c5 469\r
470 jComboBoxDataType.addItem("UINT8");\r
471 jComboBoxDataType.addItem("UINT16");\r
472 jComboBoxDataType.addItem("UINT32");\r
473 jComboBoxDataType.addItem("UINT64");\r
474 jComboBoxDataType.addItem("VOID*");\r
475 jComboBoxDataType.addItem("BOOLEAN");\r
476 jComboBoxDataType.setSelectedIndex(0);\r
5f97c029 477 \r
478 Vector<String> vGuidCName = new Vector<String>();\r
479 sfc.getSpdGuidDeclWithType(vGuidCName, "TOKEN_SPACE_GUID");\r
480 for (int i = 0; i < vGuidCName.size(); ++i) {\r
481 jComboBoxTsGuid.addItem(vGuidCName.get(i));\r
482 }\r
62df8efa 483 \r
484 boolean editable = true;\r
485 if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
486 editable = false;\r
487 }\r
488 \r
489 jButtonAdd.setEnabled(editable);\r
490 jButtonRemove.setEnabled(editable);\r
491 jButtonClearAll.setEnabled(editable);\r
492 jTable.setEnabled(editable);\r
a13899c5 493 }\r
494\r
495 public void actionPerformed(ActionEvent arg0) {\r
496 \r
5f97c029 497 \r
a13899c5 498 if (arg0.getSource() == jButtonOk) {\r
499 this.save();\r
500 this.dispose();\r
a13899c5 501 }\r
502 if (arg0.getSource() == jButtonCancel) {\r
503 this.dispose();\r
504 }\r
505\r
506 if (arg0.getSource() == jButtonAdd) {\r
507 //ToDo: check before add\r
5f97c029 508 \r
4da2e625 509 boolean[] b = {jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected()};\r
ce73a791 510 if (!checkValidUsage(b)) {\r
a13899c5 511 return;\r
512 }\r
4da2e625 513 String archList = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
a13899c5 514 if (archList.length() == 0) {\r
515 archList = null;\r
516 }\r
4da2e625 517 String modTypeList = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
a13899c5 518 if (modTypeList.length() == 0) {\r
519 modTypeList = null;\r
520 }\r
521 Object[] row = {jTextFieldC_Name.getText(), jTextFieldToken.getText(),\r
5f97c029 522 jComboBoxTsGuid.getSelectedItem(), jComboBoxDataType.getSelectedItem(), \r
4da2e625 523 jTextFieldDefaultValue.getText(), jTextFieldHelp.getText(),\r
524 jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(),\r
525 jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected(),\r
a13899c5 526 archList, modTypeList};\r
fa67a8b2 527 try {\r
82484861 528 if (!dataValidation(row)) {\r
529 return;\r
530 }\r
531 \r
532 if (tokenCNameExisted(jTextFieldToken.getText(), jTextFieldC_Name.getText())) {\r
533 return;\r
534 }\r
fa67a8b2 535 } catch (Exception e) {\r
82484861 536 JOptionPane.showMessageDialog(this, "Illegal Token:"+ e.getCause());\r
fa67a8b2 537 return;\r
538 }\r
5f97c029 539 \r
a13899c5 540 model.addRow(row);\r
af25df16 541 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
4da2e625 542 String usage = getValidUsage(jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected());\r
a13899c5 543 if (usage.length() == 0) {\r
544 usage = null;\r
545 }\r
546 sfc.genSpdPcdDefinitions(row[0]+"", row[1]+"", row[3]+"", usage, row[2]+"", row[4]+"", row[5]+"", archList, modTypeList);\r
5f97c029 547 docConsole.setSaved(false);\r
a13899c5 548 }\r
549 //\r
550 // remove selected line\r
551 //\r
552 if (arg0.getSource() == jButtonRemove) {\r
553 if (jTable.isEditing()){\r
554 jTable.getCellEditor().stopCellEditing();\r
555 }\r
556 int rowSelected = selectedRow;\r
557 if (rowSelected >= 0) {\r
558 model.removeRow(rowSelected);\r
559 sfc.removeSpdPcdDefinition(rowSelected);\r
5f97c029 560 docConsole.setSaved(false);\r
a13899c5 561 }\r
562 }\r
563\r
564 if (arg0.getSource() == jButtonClearAll) {\r
565 if (model.getRowCount() == 0) {\r
566 return;\r
567 }\r
568 model.setRowCount(0);\r
569 sfc.removeSpdPcdDefinition();\r
5f97c029 570 docConsole.setSaved(false);\r
a13899c5 571 }\r
572 \r
a13899c5 573 }\r
574\r
575 protected void save() {\r
576 \r
577 }\r
578\r
579 /**\r
5f97c029 580 * This method initializes jComboBoxTsGuid \r
a13899c5 581 * \r
5f97c029 582 * @return javax.swing.JComboBox \r
a13899c5 583 */\r
5f97c029 584 private JComboBox getJComboBoxTsGuid() {\r
585 if (jComboBoxTsGuid == null) {\r
586 jComboBoxTsGuid = new JComboBox();\r
587 jComboBoxTsGuid.setBounds(new java.awt.Rectangle(156,58,315,20));\r
588 \r
a13899c5 589 }\r
5f97c029 590 return jComboBoxTsGuid;\r
a13899c5 591 }\r
592\r
593 /**\r
594 * This method initializes jTextField \r
595 * \r
596 * @return javax.swing.JTextField \r
597 */\r
4da2e625 598 private JTextField getJTextFieldHelp() {\r
599 if (jTextFieldHelp == null) {\r
600 jTextFieldHelp = new JTextField();\r
601 jTextFieldHelp.setBounds(new java.awt.Rectangle(156,108,317,20));\r
602 jTextFieldHelp.setPreferredSize(new java.awt.Dimension(315,20));\r
a13899c5 603 }\r
4da2e625 604 return jTextFieldHelp;\r
a13899c5 605 }\r
606\r
607 /**\r
608 * This method initializes jTextFieldDefaultValue \r
609 * \r
610 * @return javax.swing.JTextField \r
611 */\r
612 private JTextField getJTextFieldDefaultValue() {\r
613 if (jTextFieldDefaultValue == null) {\r
614 jTextFieldDefaultValue = new JTextField();\r
c777d1d4 615 int xPos = jLabelDefVal.getX() + jLabelDefVal.getWidth();\r
616 jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(xPos,84,105,20));\r
a13899c5 617 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(104,20));\r
618 }\r
619 return jTextFieldDefaultValue;\r
620 }\r
621\r
622 /**\r
623 * This method initializes jButtonAdd \r
624 * \r
625 * @return javax.swing.JButton \r
626 */\r
627 private JButton getJButtonAdd() {\r
628 if (jButtonAdd == null) {\r
629 jButtonAdd = new JButton();\r
630 jButtonAdd.setBounds(new java.awt.Rectangle(195,277,71,20));\r
631 jButtonAdd.setPreferredSize(new java.awt.Dimension(70,20));\r
632 jButtonAdd.setText("Add");\r
633 jButtonAdd.addActionListener(this);\r
634 }\r
635 return jButtonAdd; \r
636 \r
637 } \r
638 \r
639 /**\r
640 * This method initializes jButtonRemove \r
641 * \r
642 * @return javax.swing.JButton \r
643 */\r
644 private JButton getJButtonRemove() {\r
645 if (jButtonRemove == null) {\r
646 jButtonRemove = new JButton();\r
647 jButtonRemove.setBounds(new java.awt.Rectangle(278,277,81,20));\r
648 jButtonRemove.setPreferredSize(new java.awt.Dimension(70,20));\r
649 jButtonRemove.setText("Delete");\r
650 jButtonRemove.addActionListener(this);\r
651 }\r
652 return jButtonRemove;\r
653 }\r
654\r
655 /**\r
656 * This method initializes jButtonClearAll \r
657 * \r
658 * @return javax.swing.JButton \r
659 */\r
660 private JButton getJButtonClearAll() {\r
661 if (jButtonClearAll == null) {\r
662 jButtonClearAll = new JButton();\r
663 jButtonClearAll.setBounds(new java.awt.Rectangle(382,277,90,20));\r
664 jButtonClearAll.setPreferredSize(new java.awt.Dimension(81,20));\r
665 jButtonClearAll.setText("Clear All");\r
666 jButtonClearAll.addActionListener(this);\r
667 }\r
668 return jButtonClearAll;\r
669 }\r
670\r
a13899c5 671 public void componentResized(ComponentEvent arg0) {\r
672 int intPreferredWidth = 500;\r
673 \r
8792f60f 674 Tools.resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
675 Tools.resizeComponentWidth(this.jTextFieldToken, this.getWidth(), intPreferredWidth);\r
5f97c029 676 Tools.resizeComponentWidth(this.jComboBoxTsGuid, this.getWidth(), intPreferredWidth);\r
8792f60f 677 Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
678 Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
679 Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
a13899c5 680 \r
8792f60f 681 Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
a13899c5 682// relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
683// relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
684// relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
a13899c5 685 }\r
686\r
687 /**\r
688 * This method initializes jScrollPane \r
689 * \r
690 * @return javax.swing.JScrollPane \r
691 */\r
692 private JScrollPane getJScrollPane() {\r
693 if (jScrollPane == null) {\r
694 jScrollPane = new JScrollPane();\r
af25df16 695 jScrollPane.setBounds(new java.awt.Rectangle(5,301,1473,259));\r
a13899c5 696 jScrollPane.setViewportView(getJTable());\r
697 }\r
698 return jScrollPane;\r
699 }\r
700\r
701 /**\r
702 * This method initializes jTable \r
703 * \r
704 * @return javax.swing.JTable \r
705 */\r
706 private JTable getJTable() {\r
707 if (jTable == null) {\r
708 model = new CheckboxTableModel();\r
709 jTable = new JTable(model);\r
ce73a791 710 jTable.setRowHeight(20);\r
a13899c5 711 jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
712 jTable.setSize(new Dimension(1000, 300));\r
713 \r
714 model.addColumn("C_Name");\r
715 model.addColumn("Token");\r
716 model.addColumn("TokenSpace");\r
717 model.addColumn("DatumType");\r
718 model.addColumn("DefaultValue");\r
719 model.addColumn("HelpText");\r
720 \r
721 model.addColumn("FeatureFlag");\r
722 model.addColumn("FixedAtBuild");\r
723 model.addColumn("PatchableInModule");\r
724 model.addColumn("Dynamic");\r
725 model.addColumn("DynamicEx");\r
726 model.addColumn("SupportedArch");\r
727 model.addColumn("SupportedModule");\r
a13899c5 728 \r
5a502bd4 729 TableColumn column = jTable.getColumnModel().getColumn(0);\r
730 column.setMinWidth(this.pcdCNameMinWidth);\r
731 column = jTable.getColumnModel().getColumn(1);\r
732 column.setMinWidth(this.pcdTokenMinWidth);\r
733 column = jTable.getColumnModel().getColumn(2);\r
734 column.setMinWidth(this.pcdTokenSpaceMinWidth);\r
735 column = jTable.getColumnModel().getColumn(3);\r
736 column.setMinWidth(this.datumTypeMinWidth);\r
737 column = jTable.getColumnModel().getColumn(4);\r
738 column.setMinWidth(this.defaultValueMinWidth);\r
739 column = jTable.getColumnModel().getColumn(5);\r
740 column.setMinWidth(this.helpTextMinWidth);\r
741 column = jTable.getColumnModel().getColumn(6);\r
742 column.setMinWidth(this.usageMinWidth);\r
743 column = jTable.getColumnModel().getColumn(7);\r
744 column.setMinWidth(this.usageMinWidth);\r
745 column = jTable.getColumnModel().getColumn(8);\r
746 column.setMinWidth(this.usageMinWidth);\r
747 column = jTable.getColumnModel().getColumn(9);\r
748 column.setMinWidth(this.usageMinWidth);\r
749 column = jTable.getColumnModel().getColumn(10);\r
750 column.setMinWidth(this.usageMinWidth);\r
751 column = jTable.getColumnModel().getColumn(11);\r
752 column.setMinWidth(this.supArchMinWidth);\r
753 column = jTable.getColumnModel().getColumn(12);\r
754 column.setMinWidth(this.supModMinWidth);\r
755 \r
a13899c5 756 //ToDo: add a valid usage editor\r
757 \r
758 JComboBox jComboBoxDataType = new JComboBox();\r
759 jComboBoxDataType.addItem("UINT8");\r
760 jComboBoxDataType.addItem("UINT16");\r
761 jComboBoxDataType.addItem("UINT32");\r
762 jComboBoxDataType.addItem("UINT64");\r
763 jComboBoxDataType.addItem("VOID*");\r
764 jComboBoxDataType.addItem("BOOLEAN");\r
765 TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
766 dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
fbf730ff 767 \r
82484861 768 jTable.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor(topFrame));\r
a13899c5 769\r
ce73a791 770 Vector<String> vArch = new Vector<String>();\r
771 vArch.add("IA32");\r
772 vArch.add("X64");\r
773 vArch.add("IPF");\r
774 vArch.add("EBC");\r
775 vArch.add("ARM");\r
776 vArch.add("PPC");\r
82484861 777 jTable.getColumnModel().getColumn(11).setCellEditor(new ListEditor(vArch, topFrame));\r
ce73a791 778 \r
779 Vector<String> vModule = new Vector<String>();\r
780 vModule.add("BASE");\r
781 vModule.add("SEC");\r
782 vModule.add("PEI_CORE");\r
783 vModule.add("PEIM");\r
784 vModule.add("DXE_CORE");\r
785 vModule.add("DXE_DRIVER");\r
786 vModule.add("DXE_RUNTIME_DRIVER");\r
787 vModule.add("DXE_SAL_DRIVER");\r
788 vModule.add("DXE_SMM_DRIVER");\r
789 vModule.add("UEFI_DRIVER");\r
790 vModule.add("UEFI_APPLICATION");\r
791 vModule.add("USER_DEFINED");\r
82484861 792 jTable.getColumnModel().getColumn(12).setCellEditor(new ListEditor(vModule, topFrame));\r
ce73a791 793 \r
a13899c5 794 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
795 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
796 public void valueChanged(ListSelectionEvent e) {\r
797 if (e.getValueIsAdjusting()){\r
798 return;\r
799 }\r
800 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
801 if (lsm.isSelectionEmpty()) {\r
802 return;\r
803 }\r
804 else{\r
805 selectedRow = lsm.getMinSelectionIndex();\r
806 }\r
807 }\r
808 });\r
809 \r
810 jTable.getModel().addTableModelListener(this);\r
811 }\r
812 return jTable;\r
813 }\r
814 \r
815 public void tableChanged(TableModelEvent arg0) {\r
816 // TODO Auto-generated method stub\r
817 int row = arg0.getFirstRow();\r
a490bca8 818 int column = arg0.getColumn();\r
a13899c5 819 TableModel m = (TableModel)arg0.getSource();\r
820 if (arg0.getType() == TableModelEvent.UPDATE){\r
a490bca8 821 String[] sa = new String[9];\r
822 sfc.getSpdPcdDeclaration(sa, row);\r
823 Object cellData = m.getValueAt(row, column);\r
824 if (column < 6) {\r
825 \r
826 if (cellData == null) {\r
827 cellData = "";\r
828 }\r
829 if (cellData.equals(sa[column])) {\r
830 return;\r
831 }\r
832 if (cellData.toString().length() == 0 && sa[column] == null) {\r
833 return;\r
834 }\r
835 }\r
836 \r
837 String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+""));\r
838 if (usage.length() == 0) {\r
82484861 839 JOptionPane.showMessageDialog(this, "You must choose at least one usage for PCD entry.");\r
a490bca8 840 return;\r
841 }\r
2109b16e 842\r
a490bca8 843 if (column <= 10 && column >= 6) {\r
fbf730ff 844 Vector<String> v = stringToVector(usage);\r
845 if (compareTwoVectors(v, stringToVector(sa[6]))) {\r
846 return;\r
847 }\r
2109b16e 848 if (v.contains("FEATURE_FLAG")/* && v.size() > 1 && !exclusiveUsage*/) {\r
849 if (v.size() > 1) {\r
82484861 850 JOptionPane.showMessageDialog(this, "Usage Feature Flag can NOT co-exist with others.");\r
851 return;\r
852 }\r
2109b16e 853// synchronized (boolModifyLock){\r
854// exclusiveUsage = true;\r
855// }\r
856// m.setValueAt(false, row, 7);\r
857// m.setValueAt(false, row, 8);\r
858// m.setValueAt(false, row, 9);\r
859// m.setValueAt(false, row, 10);\r
860 else {\r
861 m.setValueAt("BOOLEAN", row, 3);\r
862 }\r
863 \r
864 }\r
a490bca8 865 }\r
866 \r
867 if (column == 11) {\r
868 if (cellData == null) {\r
869 cellData = "";\r
870 }\r
871 if (cellData.equals(sa[7])) {\r
872 return;\r
873 }\r
874 if (cellData.toString().length() == 0 && sa[7] == null) {\r
875 return;\r
876 }\r
877 }\r
a13899c5 878 \r
a490bca8 879 if (column == 12) {\r
880 if (cellData == null) {\r
881 cellData = "";\r
882 }\r
883 if (cellData.equals(sa[8])) {\r
884 return;\r
885 }\r
886 if (cellData.toString().length() == 0 && sa[8] == null) {\r
887 return;\r
888 }\r
889 }\r
a13899c5 890 String cName = m.getValueAt(row, 0) + "";\r
891 String token = m.getValueAt(row, 1) + "";\r
892 String ts = m.getValueAt(row, 2) + "";\r
893 String dataType = m.getValueAt(row, 3) + "";\r
894 String defaultVal = m.getValueAt(row, 4) + "";\r
895 String help = m.getValueAt(row, 5) + "";\r
a490bca8 896 \r
209abc92 897 \r
898 String archList = null;\r
899 if (m.getValueAt(row, 11) != null){\r
900 archList = m.getValueAt(row, 11).toString();\r
901 }\r
902 String modTypeList = null;\r
903 if (m.getValueAt(row, 12) != null) {\r
904 modTypeList = m.getValueAt(row, 12).toString(); \r
905 }\r
a490bca8 906 \r
ce73a791 907 Object[] o = {cName, token, ts, dataType, defaultVal, help};\r
fa67a8b2 908 try {\r
82484861 909 if (!dataValidation(o)){\r
910 return;\r
911 }\r
fa67a8b2 912 }\r
913 catch (Exception e) {\r
82484861 914 JOptionPane.showMessageDialog(this, "Illegal Token:" + e.getCause());\r
fa67a8b2 915 return;\r
ce73a791 916 }\r
d6d24759 917 docConsole.setSaved(false);\r
a13899c5 918 sfc.updateSpdPcdDefinition(row, cName, token, dataType, usage, ts, defaultVal, help, archList, modTypeList);\r
919 }\r
920 }\r
921\r
922 /**\r
923 * This method initializes jCheckBox \r
924 * \r
925 * @return javax.swing.JCheckBox \r
926 */\r
4da2e625 927 private JCheckBox getJCheckBoxFeatureFlag() {\r
928 if (jCheckBoxFeatureFlag == null) {\r
929 jCheckBoxFeatureFlag = new JCheckBox();\r
930 jCheckBoxFeatureFlag.setBounds(new java.awt.Rectangle(156,161,100,21));\r
931 jCheckBoxFeatureFlag.setText("Feature Flag");\r
c777d1d4 932 FontMetrics fm = jCheckBoxFeatureFlag.getFontMetrics(jCheckBoxFeatureFlag.getFont());\r
933 jCheckBoxFeatureFlag.setSize(fm.stringWidth(jCheckBoxFeatureFlag.getText()) + 30, 20);\r
5f97c029 934 jCheckBoxFeatureFlag.addItemListener(new java.awt.event.ItemListener() {\r
935 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
936 if (jCheckBoxFeatureFlag.isSelected()) {\r
937 jCheckBoxPatchInMod.setSelected(false);\r
938 jCheckBoxFixedAtBuild.setSelected(false);\r
939 jCheckBoxDyn.setSelected(false);\r
940 jCheckBoxDynEx.setSelected(false);\r
2109b16e 941 jComboBoxDataType.setSelectedItem("BOOLEAN");\r
5f97c029 942 }\r
943 }\r
944 });\r
a13899c5 945 }\r
4da2e625 946 return jCheckBoxFeatureFlag;\r
a13899c5 947 }\r
948\r
949 /**\r
950 * This method initializes jCheckBox1 \r
951 * \r
952 * @return javax.swing.JCheckBox \r
953 */\r
4da2e625 954 private JCheckBox getJCheckBoxFixedAtBuild() {\r
955 if (jCheckBoxFixedAtBuild == null) {\r
956 jCheckBoxFixedAtBuild = new JCheckBox();\r
c777d1d4 957 \r
4da2e625 958 jCheckBoxFixedAtBuild.setText("Fixed at Build");\r
c777d1d4 959 FontMetrics fm = jCheckBoxFixedAtBuild.getFontMetrics(jCheckBoxFixedAtBuild.getFont());\r
960 jCheckBoxFixedAtBuild.setSize(fm.stringWidth(jCheckBoxFixedAtBuild.getText()) + 30, 20);\r
5f97c029 961 jCheckBoxFixedAtBuild.addItemListener(new java.awt.event.ItemListener() {\r
962 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
963 if (jCheckBoxFixedAtBuild.isSelected()) {\r
964 jCheckBoxFeatureFlag.setSelected(false);\r
965 }\r
966 }\r
967 });\r
a13899c5 968 }\r
4da2e625 969 return jCheckBoxFixedAtBuild;\r
a13899c5 970 }\r
971\r
972 /**\r
973 * This method initializes jCheckBox2 \r
974 * \r
975 * @return javax.swing.JCheckBox \r
976 */\r
4da2e625 977 private JCheckBox getJCheckBoxPatchInMod() {\r
978 if (jCheckBoxPatchInMod == null) {\r
979 jCheckBoxPatchInMod = new JCheckBox();\r
c777d1d4 980 \r
4da2e625 981 jCheckBoxPatchInMod.setBounds(new java.awt.Rectangle(156,133,154,20));\r
982 jCheckBoxPatchInMod.setText("Patchable in Module");\r
c777d1d4 983 FontMetrics fm = jCheckBoxPatchInMod.getFontMetrics(jCheckBoxPatchInMod.getFont());\r
984 jCheckBoxPatchInMod.setSize(fm.stringWidth(jCheckBoxPatchInMod.getText()) + 30, 20);\r
5f97c029 985 jCheckBoxPatchInMod.addItemListener(new java.awt.event.ItemListener() {\r
986 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
987 if (jCheckBoxPatchInMod.isSelected()) {\r
988 jCheckBoxFeatureFlag.setSelected(false);\r
989 }\r
990 }\r
991 });\r
a13899c5 992 }\r
4da2e625 993 return jCheckBoxPatchInMod;\r
a13899c5 994 }\r
995\r
996 /**\r
997 * This method initializes jCheckBox3 \r
998 * \r
999 * @return javax.swing.JCheckBox \r
1000 */\r
4da2e625 1001 private JCheckBox getJCheckBoxDyn() {\r
1002 if (jCheckBoxDyn == null) {\r
1003 jCheckBoxDyn = new JCheckBox();\r
c777d1d4 1004 \r
4da2e625 1005 jCheckBoxDyn.setText("Dynamic");\r
c777d1d4 1006 FontMetrics fm = jCheckBoxDyn.getFontMetrics(jCheckBoxDyn.getFont());\r
1007 jCheckBoxDyn.setSize(fm.stringWidth(jCheckBoxDyn.getText()) + 30, 20);\r
5f97c029 1008 jCheckBoxDyn.addItemListener(new java.awt.event.ItemListener() {\r
1009 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
1010 if (jCheckBoxDyn.isSelected()) {\r
1011 jCheckBoxFeatureFlag.setSelected(false);\r
1012 }\r
1013 }\r
1014 });\r
a13899c5 1015 }\r
4da2e625 1016 return jCheckBoxDyn;\r
a13899c5 1017 }\r
1018\r
1019 /**\r
1020 * This method initializes jCheckBox4 \r
1021 * \r
1022 * @return javax.swing.JCheckBox \r
1023 */\r
4da2e625 1024 private JCheckBox getJCheckBoxDynEx() {\r
1025 if (jCheckBoxDynEx == null) {\r
1026 jCheckBoxDynEx = new JCheckBox();\r
c777d1d4 1027 \r
4da2e625 1028 jCheckBoxDynEx.setText("DynamicEx");\r
c777d1d4 1029 FontMetrics fm = jCheckBoxDynEx.getFontMetrics(jCheckBoxDynEx.getFont());\r
1030 jCheckBoxDynEx.setSize(fm.stringWidth(jCheckBoxDynEx.getText()) + 30, 20);\r
5f97c029 1031 jCheckBoxDynEx.addItemListener(new java.awt.event.ItemListener() {\r
1032 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
1033 if (jCheckBoxDynEx.isSelected()) {\r
1034 jCheckBoxFeatureFlag.setSelected(false);\r
1035 }\r
1036 }\r
1037 });\r
a13899c5 1038 }\r
4da2e625 1039 return jCheckBoxDynEx;\r
a13899c5 1040 }\r
1041 \r
1042 private String getValidUsage(boolean ff, boolean fab, boolean pim, boolean d, boolean de) {\r
1043 String usage = "";\r
1044 if (ff){\r
1045 usage += "FEATURE_FLAG ";\r
1046 }\r
1047 if (fab){\r
1048 usage += "FIXED_AT_BUILD ";\r
1049 }\r
1050 if (pim){\r
1051 usage += "PATCHABLE_IN_MODULE ";\r
1052 }\r
1053 if (d){\r
1054 usage += "DYNAMIC ";\r
1055 }\r
1056 if (de){\r
1057 usage += "DYNAMIC_EX ";\r
1058 }\r
1059 \r
1060 return usage.trim();\r
1061 }\r
1062 \r
fa67a8b2 1063 private boolean tokenCNameExisted(String token, String cName) throws Exception{\r
1064 Long inputToken = Long.decode(token);\r
5f97c029 1065 \r
fa67a8b2 1066 for (int i = 0; i < model.getRowCount(); ++i) {\r
1067 if (model.getValueAt(i, 0).equals(cName)) {\r
82484861 1068 JOptionPane.showMessageDialog(this, "C_Name already existed in table.");\r
5f97c029 1069 return true;\r
1070 }\r
fa67a8b2 1071 if (model.getValueAt(i, 1).equals(token)) {\r
82484861 1072 JOptionPane.showMessageDialog(this, "Token already existed in table.");\r
5f97c029 1073 return true;\r
1074 }\r
fa67a8b2 1075 Long tokenValue = Long.decode(model.getValueAt(i, 1)+"");\r
5f97c029 1076 if (tokenValue.equals(inputToken)) {\r
82484861 1077 JOptionPane.showMessageDialog(this, "Same token value already existed in table.");\r
5f97c029 1078 return true;\r
1079 }\r
1080 \r
1081 }\r
1082 return false;\r
1083 }\r
1084 \r
ce73a791 1085 private boolean checkValidUsage(boolean[] b) {\r
1086 if (!(b[0] || b[1] || b[2] || b[3] || b[4])){\r
82484861 1087 JOptionPane.showMessageDialog(this, "You must specify at least one usage.");\r
a13899c5 1088 return false;\r
1089 }\r
1090 return true;\r
1091 }\r
fa67a8b2 1092 private boolean dataValidation(Object[] row) throws Exception{\r
ce73a791 1093 \r
1094 if (!DataValidation.isC_NameType(row[0].toString())) {\r
82484861 1095 JOptionPane.showMessageDialog(this, "C_Name is NOT C_NameType.");\r
ce73a791 1096 return false;\r
1097 }\r
b876680a 1098 if (!DataValidation.isHexDoubleWordDataType(row[1].toString()) && \r
fa67a8b2 1099 !DataValidation.isLongInt(row[1].toString(), 1, Long.MAX_VALUE)) {\r
82484861 1100 JOptionPane.showMessageDialog(this, "Token is NOT correct.");\r
ce73a791 1101 return false;\r
1102 }\r
1103 if (!DataValidation.isC_NameType(row[2].toString())) {\r
82484861 1104 JOptionPane.showMessageDialog(this, "Token Space is NOT C_NameType");\r
ce73a791 1105 return false;\r
1106 }\r
1107 if (row[5].toString().length() == 0) {\r
82484861 1108 JOptionPane.showMessageDialog(this, "HelpText could NOT be empty.");\r
ce73a791 1109 return false;\r
1110 }\r
1111 return true;\r
1112 }\r
a13899c5 1113\r
1114 /**\r
1115 * This method initializes jScrollPane1 \r
1116 * \r
1117 * @return javax.swing.JScrollPane \r
1118 */\r
4da2e625 1119 private JScrollPane getJScrollPaneArch() {\r
1120 if (jScrollPaneArch == null) {\r
1121 jScrollPaneArch = new JScrollPane();\r
1122 jScrollPaneArch.setBounds(new java.awt.Rectangle(242,213,188,54));\r
1123 jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
1124 jScrollPaneArch.setPreferredSize(new Dimension(188, 74));\r
a13899c5 1125 }\r
4da2e625 1126 return jScrollPaneArch;\r
a13899c5 1127 }\r
1128\r
1129 /**\r
1130 * This method initializes iCheckBoxList \r
1131 * \r
1132 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
1133 */\r
4da2e625 1134 private ICheckBoxList getICheckBoxListArch() {\r
1135 if (iCheckBoxListArch == null) {\r
1136 iCheckBoxListArch = new ICheckBoxList();\r
1137 iCheckBoxListArch.setBounds(new Rectangle(197, 142, 188, 74));\r
a13899c5 1138 Vector<String> v = new Vector<String>();\r
1139 v.add("IA32");\r
1140 v.add("X64");\r
1141 v.add("IPF");\r
1142 v.add("EBC");\r
ce73a791 1143 v.add("ARM");\r
1144 v.add("PPC");\r
4da2e625 1145 iCheckBoxListArch.setAllItems(v);\r
a13899c5 1146 }\r
4da2e625 1147 return iCheckBoxListArch;\r
a13899c5 1148 }\r
1149\r
1150 /**\r
1151 * This method initializes jScrollPane2 \r
1152 * \r
1153 * @return javax.swing.JScrollPane \r
1154 */\r
4da2e625 1155 private JScrollPane getJScrollPaneMod() {\r
1156 if (jScrollPaneMod == null) {\r
1157 jScrollPaneMod = new JScrollPane();\r
1158 jScrollPaneMod.setBounds(new java.awt.Rectangle(15,213,199,55));\r
1159 jScrollPaneMod.setViewportView(getICheckBoxListMod());\r
1160 jScrollPaneMod.setPreferredSize(new Dimension(170, 74));\r
a13899c5 1161 }\r
4da2e625 1162 return jScrollPaneMod;\r
a13899c5 1163 }\r
1164\r
1165 /**\r
1166 * This method initializes iCheckBoxList1 \r
1167 * \r
1168 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
1169 */\r
4da2e625 1170 private ICheckBoxList getICheckBoxListMod() {\r
1171 if (iCheckBoxListMod == null) {\r
1172 iCheckBoxListMod = new ICheckBoxList();\r
1173 iCheckBoxListMod.setBounds(new Rectangle(14, 142, 170, 74));\r
a13899c5 1174 Vector<String> v = new Vector<String>();\r
1175 v.add("BASE");\r
1176 v.add("SEC");\r
1177 v.add("PEI_CORE");\r
1178 v.add("PEIM");\r
1179 v.add("DXE_CORE");\r
1180 v.add("DXE_DRIVER");\r
1181 v.add("DXE_RUNTIME_DRIVER");\r
1182 v.add("DXE_SAL_DRIVER");\r
1183 v.add("DXE_SMM_DRIVER");\r
1184 v.add("UEFI_DRIVER");\r
1185 v.add("UEFI_APPLICATION");\r
1186 v.add("USER_DEFINED");\r
4da2e625 1187 iCheckBoxListMod.setAllItems(v);\r
a13899c5 1188 }\r
4da2e625 1189 return iCheckBoxListMod;\r
a13899c5 1190 }\r
1191 \r
1192 protected String vectorToString(Vector<String> v) {\r
1193 if (v == null) {\r
1194 return null;\r
1195 }\r
1196 String s = " ";\r
1197 for (int i = 0; i < v.size(); ++i) {\r
1198 s += v.get(i);\r
1199 s += " ";\r
1200 }\r
1201 return s.trim();\r
1202 }\r
a490bca8 1203 \r
1204 protected Vector<String> stringToVector(String s){\r
fbf730ff 1205 Vector<String> v = new Vector<String>();\r
a490bca8 1206 if (s == null) {\r
fbf730ff 1207 return v;\r
a490bca8 1208 }\r
1209 String[] sArray = s.split(" ");\r
fbf730ff 1210 \r
a490bca8 1211 for (int i = 0; i < sArray.length; ++i) {\r
1212 v.add(sArray[i]);\r
1213 }\r
1214 return v;\r
1215 }\r
1216 \r
1217 private boolean compareTwoVectors(Vector v1, Vector v2) {\r
1218 if (v1.size() != v2.size()) {\r
1219 return false;\r
1220 }\r
1221 for (int i = 0; i < v1.size(); ++i) {\r
1222 if (!v2.contains(v1.get(i))) {\r
1223 return false;\r
1224 }\r
1225 }\r
1226 return true;\r
1227 }\r
a13899c5 1228} // @jve:decl-index=0:visual-constraint="22,11"\r
1229\r
1230class CheckboxTableModel extends DefaultTableModel {\r
0b5e1cc3 1231 /**\r
1232 * \r
1233 */\r
1234 private static final long serialVersionUID = 1L;\r
1235\r
1236 public Class<?> getColumnClass (int c) {\r
a13899c5 1237 if (getValueAt(0, c) != null){\r
1238 return getValueAt(0, c).getClass();\r
1239 }\r
1240 return String.class;\r
1241 }\r
1242}\r