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