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