2 Java class SpdPcdDefs is GUI for create PCD definition elements of spd file.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 package org
.tianocore
.frameworkwizard
.packaging
.ui
;
15 import java
.awt
.Dimension
;
16 import java
.awt
.event
.ActionEvent
;
17 import java
.awt
.event
.ComponentEvent
;
19 import javax
.swing
.DefaultCellEditor
;
20 import javax
.swing
.JFrame
;
21 import javax
.swing
.JOptionPane
;
22 import javax
.swing
.JPanel
;
23 import javax
.swing
.JLabel
;
24 import javax
.swing
.JTextField
;
25 import javax
.swing
.JComboBox
;
26 import javax
.swing
.JButton
;
27 import javax
.swing
.ListSelectionModel
;
29 import javax
.swing
.event
.InternalFrameAdapter
;
30 import javax
.swing
.event
.InternalFrameEvent
;
31 import javax
.swing
.event
.ListSelectionEvent
;
32 import javax
.swing
.event
.ListSelectionListener
;
33 import javax
.swing
.event
.TableModelEvent
;
34 import javax
.swing
.event
.TableModelListener
;
35 import javax
.swing
.table
.DefaultTableModel
;
36 import javax
.swing
.table
.TableColumn
;
37 import javax
.swing
.table
.TableModel
;
39 import org
.tianocore
.PackageSurfaceAreaDocument
;
41 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
42 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
43 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
44 import javax
.swing
.JScrollPane
;
45 import javax
.swing
.JTable
;
46 import javax
.swing
.JCheckBox
;
47 import org
.tianocore
.frameworkwizard
.common
.ui
.iCheckBoxList
.ICheckBoxList
;
48 import org
.tianocore
.frameworkwizard
.platform
.ui
.ListEditor
;
50 import java
.awt
.Rectangle
;
51 import java
.util
.Vector
;
54 GUI for create PCD definition elements of spd file
56 @since PackageEditor 1.0
58 public class SpdPcdDefs
extends IInternalFrame
implements TableModelListener
{
63 private static final long serialVersionUID
= 1L;
67 private JPanel jContentPane
= null;
69 private JLabel jLabelItemType
= null;
71 private JLabel jLabelC_Name
= null;
73 private JTextField jTextFieldC_Name
= null;
75 private JLabel jLabelToken
= null;
77 private JTextField jTextFieldToken
= null;
79 private JLabel jLabelDataType
= null;
81 private JButton jButtonOk
= null;
83 private JButton jButtonCancel
= null;
85 private JComboBox jComboBoxDataType
= null;
87 private SpdFileContents sfc
= null;
89 private StarLabel jStarLabel2
= null;
91 private StarLabel jStarLabel3
= null;
93 private StarLabel jStarLabel4
= null;
95 private StarLabel jStarLabel
= null;
97 private StarLabel jStarLabel1
= null;
99 private JLabel jLabelTokenSpace
= null;
101 private JTextField jTextFieldTsGuid
= null;
103 private JLabel jLabelVarVal
= null;
105 private JTextField jTextField
= null;
107 private JLabel jLabelDefVal
= null;
109 private JTextField jTextFieldDefaultValue
= null;
111 private JButton jButtonAdd
= null;
113 private CheckboxTableModel model
= null;
115 private JButton jButtonRemove
= null;
117 private JButton jButtonClearAll
= null;
119 private JScrollPane jScrollPane
= null;
121 private JTable jTable
= null;
123 private JScrollPane topScrollPane
= null; // @jve:decl-index=0:visual-constraint="390,10"
125 private int selectedRow
= -1;
127 private StarLabel starLabel
= null;
129 private JCheckBox jCheckBox
= null;
131 private JCheckBox jCheckBox1
= null;
133 private JCheckBox jCheckBox2
= null;
135 private JCheckBox jCheckBox3
= null;
137 private JCheckBox jCheckBox4
= null;
139 private JScrollPane jScrollPane1
= null;
141 private ICheckBoxList iCheckBoxList
= null;
143 private JScrollPane jScrollPane2
= null;
145 private ICheckBoxList iCheckBoxList1
= null;
147 private JLabel jLabel
= null;
149 private JLabel jLabel1
= null;
152 This method initializes this
155 private void initialize() {
156 this.setTitle("PCD Definition");
157 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
162 This method initializes jTextFieldC_Name
164 @return javax.swing.JTextField
166 private JTextField
getJTextFieldC_Name() {
167 if (jTextFieldC_Name
== null) {
168 jTextFieldC_Name
= new JTextField();
169 jTextFieldC_Name
.setBounds(new java
.awt
.Rectangle(156,9,317,20));
170 jTextFieldC_Name
.setPreferredSize(new java
.awt
.Dimension(315,20));
172 return jTextFieldC_Name
;
176 This method initializes jTextFieldToken
178 @return javax.swing.JTextField
180 private JTextField
getJTextFieldToken() {
181 if (jTextFieldToken
== null) {
182 jTextFieldToken
= new JTextField();
183 jTextFieldToken
.setBounds(new java
.awt
.Rectangle(156,33,317,20));
184 jTextFieldToken
.setPreferredSize(new java
.awt
.Dimension(315,20));
186 return jTextFieldToken
;
190 This method initializes jButtonOk
192 @return javax.swing.JButton
194 private JButton
getJButtonOk() {
195 if (jButtonOk
== null) {
196 jButtonOk
= new JButton();
197 jButtonOk
.setText("OK");
198 jButtonOk
.setBounds(new java
.awt
.Rectangle(279,276,90,20));
199 jButtonOk
.setVisible(false);
200 jButtonOk
.addActionListener(this);
206 This method initializes jButtonCancel
208 @return javax.swing.JButton
210 private JButton
getJButtonCancel() {
211 if (jButtonCancel
== null) {
212 jButtonCancel
= new JButton();
213 jButtonCancel
.setText("Cancel");
214 jButtonCancel
.setBounds(new java
.awt
.Rectangle(389,276,82,20));
215 jButtonCancel
.setVisible(false);
216 jButtonCancel
.addActionListener(this);
218 return jButtonCancel
;
222 This method initializes jComboBoxDataType
224 @return javax.swing.JComboBox
226 private JComboBox
getJComboBoxDataType() {
227 if (jComboBoxDataType
== null) {
228 jComboBoxDataType
= new JComboBox();
229 jComboBoxDataType
.setBounds(new java
.awt
.Rectangle(156,84,110,20));
231 return jComboBoxDataType
;
235 This is the default constructor
237 public SpdPcdDefs() {
244 public SpdPcdDefs(PackageSurfaceAreaDocument
.PackageSurfaceArea inPsa
) {
246 sfc
= new SpdFileContents(inPsa
);
250 This method initializes this
254 private void init() {
255 this.setSize(500, 650);
256 this.setContentPane(getJContentPane());
257 this.addInternalFrameListener(new InternalFrameAdapter(){
258 public void internalFrameDeactivated(InternalFrameEvent e
){
259 if (jTable
.isEditing()) {
260 jTable
.getCellEditor().stopCellEditing();
265 this.setVisible(true);
268 private void init(SpdFileContents sfc
){
269 if (sfc
.getSpdPcdDefinitionCount() == 0) {
272 String
[][] saa
= new String
[sfc
.getSpdPcdDefinitionCount()][8];
273 String
[][] usage
= new String
[sfc
.getSpdPcdDefinitionCount()][5];
274 Object
[] rowData
= new Object
[13];
275 sfc
.getSpdPcdDefinitions(saa
, usage
);
277 while (i
< saa
.length
) {
279 for (int k
= 0; k
< 6; ++k
) {
280 rowData
[k
] = saa
[i
][k
];
282 for (int m
= 7; m
< 11; ++m
) {
283 rowData
[m
] = new Boolean("false");
287 if (usage
[i
][j
] == null || usage
[i
][j
].length()==0){
291 if (usage
[i
][j
].equals("FEATURE_FLAG")){
292 rowData
[6] = new Boolean("true");
294 if (usage
[i
][j
].equals("FIXED_AT_BUILD")){
295 rowData
[7] = new Boolean("true");
297 if (usage
[i
][j
].equals("PATCHABLE_IN_MODULE")){
298 rowData
[8] = new Boolean("true");
300 if (usage
[i
][j
].equals("DYNAMIC")){
301 rowData
[9] = new Boolean("true");
303 if (usage
[i
][j
].equals("DYNAMIC_EX")){
304 rowData
[10] = new Boolean("true");
310 rowData
[11] = saa
[i
][6];
311 rowData
[12] = saa
[i
][7];
313 model
.addRow(rowData
);
322 private JScrollPane
getJContentPane(){
323 if (topScrollPane
== null){
324 topScrollPane
= new JScrollPane();
325 topScrollPane
.setSize(new java
.awt
.Dimension(482,451));
326 topScrollPane
.setViewportView(getJContentPane1());
328 return topScrollPane
;
330 private JPanel
getJContentPane1() {
331 if (jContentPane
== null) {
333 jLabel1
= new JLabel();
334 jLabel1
.setBounds(new java
.awt
.Rectangle(241,192,89,16));
335 jLabel1
.setText("Supported Arch");
336 jLabel1
.setEnabled(true);
337 jLabel
= new JLabel();
338 jLabel
.setBounds(new java
.awt
.Rectangle(15,193,103,16));
339 jLabel
.setText("Supported Module");
340 jLabel
.setEnabled(true);
341 starLabel
= new StarLabel();
342 starLabel
.setBounds(new java
.awt
.Rectangle(2,134,10,20));
343 jLabelDefVal
= new JLabel();
344 jLabelDefVal
.setBounds(new java
.awt
.Rectangle(277,84,80,20));
345 jLabelDefVal
.setText("Default Value");
346 jLabelVarVal
= new JLabel();
347 jLabelVarVal
.setBounds(new java
.awt
.Rectangle(11,133,84,20));
348 jLabelVarVal
.setText("Valid Usage");
349 jLabelC_Name
= new JLabel();
350 jLabelC_Name
.setText("C_Name");
351 jLabelC_Name
.setBounds(new java
.awt
.Rectangle(11,9,140,20));
352 jLabelTokenSpace
= new JLabel();
353 jLabelTokenSpace
.setBounds(new java
.awt
.Rectangle(11,58,140,20));
354 jLabelTokenSpace
.setText("Token Space");
355 jLabelDataType
= new JLabel();
356 jLabelDataType
.setText("Data Type");
357 jLabelDataType
.setBounds(new java
.awt
.Rectangle(11,83,140,20));
358 jLabelToken
= new JLabel();
359 jLabelToken
.setText("Token");
360 jLabelToken
.setBounds(new java
.awt
.Rectangle(11,33,140,20));
361 jLabelItemType
= new JLabel();
362 jLabelItemType
.setText("Help Text");
363 jLabelItemType
.setBounds(new java
.awt
.Rectangle(11,108,140,20));
366 jContentPane
= new JPanel();
367 jContentPane
.setLayout(null);
368 jContentPane
.setPreferredSize(new java
.awt
.Dimension(479,375));
370 jContentPane
.add(jLabelItemType
, null);
371 jContentPane
.add(jLabelC_Name
, null);
372 jContentPane
.add(jLabelTokenSpace
, null);
373 jContentPane
.add(getJTextFieldTsGuid(), null);
374 jContentPane
.add(jLabelVarVal
, null);
375 jContentPane
.add(getJTextFieldC_Name(), null);
376 jContentPane
.add(jLabelToken
, null);
377 jContentPane
.add(getJTextFieldToken(), null);
378 jContentPane
.add(jLabelDataType
, null);
379 jContentPane
.add(getJButtonOk(), null);
380 jContentPane
.add(getJButtonCancel(), null);
381 jContentPane
.add(getJComboBoxDataType(), null);
383 jStarLabel
= new StarLabel();
384 jStarLabel1
= new StarLabel();
385 jStarLabel1
.setBounds(new java
.awt
.Rectangle(2,8,10,20));
386 jStarLabel2
= new StarLabel();
387 jStarLabel3
= new StarLabel();
388 jStarLabel4
= new StarLabel();
389 jStarLabel
.setLocation(new java
.awt
.Point(2,84));
390 jStarLabel4
.setLocation(new java
.awt
.Point(2, 109));
391 jStarLabel2
.setLocation(new java
.awt
.Point(2,33));
392 jStarLabel3
.setLocation(new java
.awt
.Point(2, 58));
393 jStarLabel3
.setSize(new java
.awt
.Dimension(8,20));
394 jContentPane
.add(jStarLabel2
, null);
395 jContentPane
.add(jStarLabel3
, null);
396 jContentPane
.add(jStarLabel
, null);
397 jContentPane
.add(jStarLabel1
, null);
398 jContentPane
.add(jStarLabel4
, null);
399 jContentPane
.add(getJTextField(), null);
400 jContentPane
.add(jLabelDefVal
, null);
401 jContentPane
.add(getJTextFieldDefaultValue(), null);
402 jContentPane
.add(getJButtonAdd(), null);
403 jContentPane
.add(getJButtonRemove(), null);
404 jContentPane
.add(getJButtonClearAll(), null);
405 jContentPane
.add(getJScrollPane(), null);
406 jContentPane
.add(starLabel
, null);
407 jContentPane
.add(getJCheckBox(), null);
408 jContentPane
.add(getJCheckBox1(), null);
409 jContentPane
.add(getJCheckBox2(), null);
410 jContentPane
.add(getJCheckBox3(), null);
411 jContentPane
.add(getJCheckBox4(), null);
412 jContentPane
.add(getJScrollPane1(), null);
413 jContentPane
.add(getJScrollPane2(), null);
414 jContentPane
.add(jLabel
, null);
415 jContentPane
.add(jLabel1
, null);
421 This method initializes comboboxes
422 jContentPane.add(jLabelTokenSpace, null);
425 private void initFrame() {
427 jComboBoxDataType
.addItem("UINT8");
428 jComboBoxDataType
.addItem("UINT16");
429 jComboBoxDataType
.addItem("UINT32");
430 jComboBoxDataType
.addItem("UINT64");
431 jComboBoxDataType
.addItem("VOID*");
432 jComboBoxDataType
.addItem("BOOLEAN");
433 jComboBoxDataType
.setSelectedIndex(0);
436 public void actionPerformed(ActionEvent arg0
) {
438 if (arg0
.getSource() == jButtonOk
) {
442 if (arg0
.getSource() == jButtonCancel
) {
446 if (arg0
.getSource() == jButtonAdd
) {
447 //ToDo: check before add
448 boolean[] b
= {jCheckBox
.isSelected(), jCheckBox1
.isSelected(), jCheckBox2
.isSelected(), jCheckBox3
.isSelected(), jCheckBox4
.isSelected()};
449 if (!checkValidUsage(b
)) {
452 String archList
= vectorToString(iCheckBoxList
.getAllCheckedItemsString());
453 if (archList
.length() == 0) {
456 String modTypeList
= vectorToString(iCheckBoxList1
.getAllCheckedItemsString());
457 if (modTypeList
.length() == 0) {
460 Object
[] row
= {jTextFieldC_Name
.getText(), jTextFieldToken
.getText(),
461 jTextFieldTsGuid
.getText(), jComboBoxDataType
.getSelectedItem(),
462 jTextFieldDefaultValue
.getText(), jTextField
.getText(),
463 jCheckBox
.isSelected(), jCheckBox1
.isSelected(),
464 jCheckBox2
.isSelected(), jCheckBox3
.isSelected(), jCheckBox4
.isSelected(),
465 archList
, modTypeList
};
466 if (!dataValidation(row
)) {
471 String usage
= getValidUsage(jCheckBox
.isSelected(), jCheckBox1
.isSelected(), jCheckBox2
.isSelected(), jCheckBox3
.isSelected(), jCheckBox4
.isSelected());
472 if (usage
.length() == 0) {
475 sfc
.genSpdPcdDefinitions(row
[0]+"", row
[1]+"", row
[3]+"", usage
, row
[2]+"", row
[4]+"", row
[5]+"", archList
, modTypeList
);
478 // remove selected line
480 if (arg0
.getSource() == jButtonRemove
) {
481 if (jTable
.isEditing()){
482 jTable
.getCellEditor().stopCellEditing();
484 int rowSelected
= selectedRow
;
485 if (rowSelected
>= 0) {
486 model
.removeRow(rowSelected
);
487 sfc
.removeSpdPcdDefinition(rowSelected
);
491 if (arg0
.getSource() == jButtonClearAll
) {
492 if (model
.getRowCount() == 0) {
495 model
.setRowCount(0);
496 sfc
.removeSpdPcdDefinition();
501 protected void save() {
506 * This method initializes jTextFieldTsGuid
508 * @return javax.swing.JTextField
510 private JTextField
getJTextFieldTsGuid() {
511 if (jTextFieldTsGuid
== null) {
512 jTextFieldTsGuid
= new JTextField();
513 jTextFieldTsGuid
.setPreferredSize(new java
.awt
.Dimension(315,20));
514 jTextFieldTsGuid
.setSize(new java
.awt
.Dimension(317,20));
515 jTextFieldTsGuid
.setLocation(new java
.awt
.Point(156,58));
517 return jTextFieldTsGuid
;
521 * This method initializes jTextField
523 * @return javax.swing.JTextField
525 private JTextField
getJTextField() {
526 if (jTextField
== null) {
527 jTextField
= new JTextField();
528 jTextField
.setBounds(new java
.awt
.Rectangle(156,108,317,20));
529 jTextField
.setPreferredSize(new java
.awt
.Dimension(315,20));
535 * This method initializes jTextFieldDefaultValue
537 * @return javax.swing.JTextField
539 private JTextField
getJTextFieldDefaultValue() {
540 if (jTextFieldDefaultValue
== null) {
541 jTextFieldDefaultValue
= new JTextField();
542 jTextFieldDefaultValue
.setBounds(new java
.awt
.Rectangle(368,84,105,20));
543 jTextFieldDefaultValue
.setPreferredSize(new java
.awt
.Dimension(104,20));
545 return jTextFieldDefaultValue
;
549 * This method initializes jButtonAdd
551 * @return javax.swing.JButton
553 private JButton
getJButtonAdd() {
554 if (jButtonAdd
== null) {
555 jButtonAdd
= new JButton();
556 jButtonAdd
.setBounds(new java
.awt
.Rectangle(195,277,71,20));
557 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(70,20));
558 jButtonAdd
.setText("Add");
559 jButtonAdd
.addActionListener(this);
566 * This method initializes jButtonRemove
568 * @return javax.swing.JButton
570 private JButton
getJButtonRemove() {
571 if (jButtonRemove
== null) {
572 jButtonRemove
= new JButton();
573 jButtonRemove
.setBounds(new java
.awt
.Rectangle(278,277,81,20));
574 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(70,20));
575 jButtonRemove
.setText("Delete");
576 jButtonRemove
.addActionListener(this);
578 return jButtonRemove
;
582 * This method initializes jButtonClearAll
584 * @return javax.swing.JButton
586 private JButton
getJButtonClearAll() {
587 if (jButtonClearAll
== null) {
588 jButtonClearAll
= new JButton();
589 jButtonClearAll
.setBounds(new java
.awt
.Rectangle(382,277,90,20));
590 jButtonClearAll
.setPreferredSize(new java
.awt
.Dimension(81,20));
591 jButtonClearAll
.setText("Clear All");
592 jButtonClearAll
.addActionListener(this);
594 return jButtonClearAll
;
597 public void componentResized(ComponentEvent arg0
) {
598 int intPreferredWidth
= 500;
600 resizeComponentWidth(this.jTextFieldC_Name
, this.getWidth(), intPreferredWidth
);
601 resizeComponentWidth(this.jTextFieldToken
, this.getWidth(), intPreferredWidth
);
602 resizeComponentWidth(this.jTextFieldTsGuid
, this.getWidth(), intPreferredWidth
);
603 resizeComponentWidth(this.jTextFieldDefaultValue
, this.getWidth(), intPreferredWidth
);
604 resizeComponentWidth(this.jTextField
, this.getWidth(), intPreferredWidth
);
605 resizeComponentWidth(this.jScrollPane
, this.getWidth(), intPreferredWidth
);
607 resizeComponentWidth(this.jTextFieldDefaultValue
, this.getWidth(), intPreferredWidth
);
608 // relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
609 // relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
610 // relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
614 * This method initializes jScrollPane
616 * @return javax.swing.JScrollPane
618 private JScrollPane
getJScrollPane() {
619 if (jScrollPane
== null) {
620 jScrollPane
= new JScrollPane();
621 jScrollPane
.setBounds(new java
.awt
.Rectangle(5,301,1473,137));
622 jScrollPane
.setViewportView(getJTable());
628 * This method initializes jTable
630 * @return javax.swing.JTable
632 private JTable
getJTable() {
633 if (jTable
== null) {
634 model
= new CheckboxTableModel();
635 jTable
= new JTable(model
);
636 jTable
.setRowHeight(20);
637 jTable
.setAutoResizeMode(JTable
.AUTO_RESIZE_OFF
);
638 jTable
.setSize(new Dimension(1000, 300));
640 model
.addColumn("C_Name");
641 model
.addColumn("Token");
642 model
.addColumn("TokenSpace");
643 model
.addColumn("DatumType");
644 model
.addColumn("DefaultValue");
645 model
.addColumn("HelpText");
647 model
.addColumn("FeatureFlag");
648 model
.addColumn("FixedAtBuild");
649 model
.addColumn("PatchableInModule");
650 model
.addColumn("Dynamic");
651 model
.addColumn("DynamicEx");
652 model
.addColumn("SupportedArch");
653 model
.addColumn("SupportedModule");
655 //ToDo: add a valid usage editor
657 JComboBox jComboBoxDataType
= new JComboBox();
658 jComboBoxDataType
.addItem("UINT8");
659 jComboBoxDataType
.addItem("UINT16");
660 jComboBoxDataType
.addItem("UINT32");
661 jComboBoxDataType
.addItem("UINT64");
662 jComboBoxDataType
.addItem("VOID*");
663 jComboBoxDataType
.addItem("BOOLEAN");
664 TableColumn dataTypeColumn
= jTable
.getColumnModel().getColumn(3);
665 dataTypeColumn
.setCellEditor(new DefaultCellEditor(jComboBoxDataType
));
667 Vector
<String
> vArch
= new Vector
<String
>();
674 jTable
.getColumnModel().getColumn(11).setCellEditor(new ListEditor(vArch
));
676 Vector
<String
> vModule
= new Vector
<String
>();
679 vModule
.add("PEI_CORE");
681 vModule
.add("DXE_CORE");
682 vModule
.add("DXE_DRIVER");
683 vModule
.add("DXE_RUNTIME_DRIVER");
684 vModule
.add("DXE_SAL_DRIVER");
685 vModule
.add("DXE_SMM_DRIVER");
686 vModule
.add("UEFI_DRIVER");
687 vModule
.add("UEFI_APPLICATION");
688 vModule
.add("USER_DEFINED");
689 jTable
.getColumnModel().getColumn(12).setCellEditor(new ListEditor(vModule
));
691 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
692 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
693 public void valueChanged(ListSelectionEvent e
) {
694 if (e
.getValueIsAdjusting()){
697 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
698 if (lsm
.isSelectionEmpty()) {
702 selectedRow
= lsm
.getMinSelectionIndex();
707 jTable
.getModel().addTableModelListener(this);
712 public void tableChanged(TableModelEvent arg0
) {
713 // TODO Auto-generated method stub
714 int row
= arg0
.getFirstRow();
715 TableModel m
= (TableModel
)arg0
.getSource();
716 if (arg0
.getType() == TableModelEvent
.UPDATE
){
718 String cName
= m
.getValueAt(row
, 0) + "";
719 String token
= m
.getValueAt(row
, 1) + "";
720 String ts
= m
.getValueAt(row
, 2) + "";
721 String dataType
= m
.getValueAt(row
, 3) + "";
722 String defaultVal
= m
.getValueAt(row
, 4) + "";
723 String help
= m
.getValueAt(row
, 5) + "";
724 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)+""));
725 String archList
= vectorToString(iCheckBoxList
.getAllCheckedItemsString());
726 String modTypeList
= vectorToString(iCheckBoxList1
.getAllCheckedItemsString());
727 if (usage
.length() == 0) {
728 JOptionPane
.showMessageDialog(frame
, "You must choose at least one usage for PCD entry.");
731 Object
[] o
= {cName
, token
, ts
, dataType
, defaultVal
, help
};
732 if (!dataValidation(o
)){
735 sfc
.updateSpdPcdDefinition(row
, cName
, token
, dataType
, usage
, ts
, defaultVal
, help
, archList
, modTypeList
);
740 * This method initializes jCheckBox
742 * @return javax.swing.JCheckBox
744 private JCheckBox
getJCheckBox() {
745 if (jCheckBox
== null) {
746 jCheckBox
= new JCheckBox();
747 jCheckBox
.setBounds(new java
.awt
.Rectangle(156,161,100,21));
748 jCheckBox
.setText("Feature Flag");
749 jCheckBox
.setPreferredSize(new java
.awt
.Dimension(21,20));
755 * This method initializes jCheckBox1
757 * @return javax.swing.JCheckBox
759 private JCheckBox
getJCheckBox1() {
760 if (jCheckBox1
== null) {
761 jCheckBox1
= new JCheckBox();
762 jCheckBox1
.setBounds(new java
.awt
.Rectangle(302,133,108,20));
763 jCheckBox1
.setText("Fixed at Build");
764 jCheckBox1
.setPreferredSize(new java
.awt
.Dimension(21,20));
770 * This method initializes jCheckBox2
772 * @return javax.swing.JCheckBox
774 private JCheckBox
getJCheckBox2() {
775 if (jCheckBox2
== null) {
776 jCheckBox2
= new JCheckBox();
777 jCheckBox2
.setBounds(new java
.awt
.Rectangle(156,133,154,20));
778 jCheckBox2
.setText("Patchable in Module");
779 jCheckBox2
.setPreferredSize(new java
.awt
.Dimension(21,20));
785 * This method initializes jCheckBox3
787 * @return javax.swing.JCheckBox
789 private JCheckBox
getJCheckBox3() {
790 if (jCheckBox3
== null) {
791 jCheckBox3
= new JCheckBox();
792 jCheckBox3
.setBounds(new java
.awt
.Rectangle(278,161,80,20));
793 jCheckBox3
.setText("Dynamic");
794 jCheckBox3
.setPreferredSize(new java
.awt
.Dimension(21,20));
800 * This method initializes jCheckBox4
802 * @return javax.swing.JCheckBox
804 private JCheckBox
getJCheckBox4() {
805 if (jCheckBox4
== null) {
806 jCheckBox4
= new JCheckBox();
807 jCheckBox4
.setBounds(new java
.awt
.Rectangle(371,161,99,20));
808 jCheckBox4
.setText("DynamicEx");
809 jCheckBox4
.setPreferredSize(new java
.awt
.Dimension(21,20));
814 private String
getValidUsage(boolean ff
, boolean fab
, boolean pim
, boolean d
, boolean de
) {
817 usage
+= "FEATURE_FLAG ";
820 usage
+= "FIXED_AT_BUILD ";
823 usage
+= "PATCHABLE_IN_MODULE ";
829 usage
+= "DYNAMIC_EX ";
835 private boolean checkValidUsage(boolean[] b
) {
836 if (!(b
[0] || b
[1] || b
[2] || b
[3] || b
[4])){
837 JOptionPane
.showMessageDialog(frame
, "You must specify at least one usage.");
842 private boolean dataValidation(Object
[] row
) {
844 if (!DataValidation
.isC_NameType(row
[0].toString())) {
845 JOptionPane
.showMessageDialog(frame
, "C_Name is NOT C_NameType.");
848 if (!(DataValidation
.isHexDoubleWordDataType(row
[1].toString()) ||
849 DataValidation
.isInt(row
[1].toString(), 0, 0xffffffff))) {
850 JOptionPane
.showMessageDialog(frame
, "Token is NOT correct.");
853 if (!DataValidation
.isC_NameType(row
[2].toString())) {
854 JOptionPane
.showMessageDialog(frame
, "Token Space is NOT C_NameType");
857 if (row
[5].toString().length() == 0) {
858 JOptionPane
.showMessageDialog(frame
, "HelpText could NOT be empty.");
865 * This method initializes jScrollPane1
867 * @return javax.swing.JScrollPane
869 private JScrollPane
getJScrollPane1() {
870 if (jScrollPane1
== null) {
871 jScrollPane1
= new JScrollPane();
872 jScrollPane1
.setBounds(new java
.awt
.Rectangle(242,213,188,54));
873 jScrollPane1
.setViewportView(getICheckBoxList());
874 jScrollPane1
.setPreferredSize(new Dimension(188, 74));
880 * This method initializes iCheckBoxList
882 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList
884 private ICheckBoxList
getICheckBoxList() {
885 if (iCheckBoxList
== null) {
886 iCheckBoxList
= new ICheckBoxList();
887 iCheckBoxList
.setBounds(new Rectangle(197, 142, 188, 74));
888 Vector
<String
> v
= new Vector
<String
>();
895 iCheckBoxList
.setAllItems(v
);
897 return iCheckBoxList
;
901 * This method initializes jScrollPane2
903 * @return javax.swing.JScrollPane
905 private JScrollPane
getJScrollPane2() {
906 if (jScrollPane2
== null) {
907 jScrollPane2
= new JScrollPane();
908 jScrollPane2
.setBounds(new java
.awt
.Rectangle(15,213,199,55));
909 jScrollPane2
.setViewportView(getICheckBoxList1());
910 jScrollPane2
.setPreferredSize(new Dimension(170, 74));
916 * This method initializes iCheckBoxList1
918 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList
920 private ICheckBoxList
getICheckBoxList1() {
921 if (iCheckBoxList1
== null) {
922 iCheckBoxList1
= new ICheckBoxList();
923 iCheckBoxList1
.setBounds(new Rectangle(14, 142, 170, 74));
924 Vector
<String
> v
= new Vector
<String
>();
931 v
.add("DXE_RUNTIME_DRIVER");
932 v
.add("DXE_SAL_DRIVER");
933 v
.add("DXE_SMM_DRIVER");
934 v
.add("UEFI_DRIVER");
935 v
.add("UEFI_APPLICATION");
936 v
.add("USER_DEFINED");
937 iCheckBoxList1
.setAllItems(v
);
939 return iCheckBoxList1
;
942 protected String
vectorToString(Vector
<String
> v
) {
947 for (int i
= 0; i
< v
.size(); ++i
) {
953 } // @jve:decl-index=0:visual-constraint="22,11"
955 class CheckboxTableModel
extends DefaultTableModel
{
959 private static final long serialVersionUID
= 1L;
961 public Class
<?
> getColumnClass (int c
) {
962 if (getValueAt(0, c
) != null){
963 return getValueAt(0, c
).getClass();