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
.ui
.IInternalFrame
;
42 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
43 import javax
.swing
.JScrollPane
;
44 import javax
.swing
.JTable
;
45 import javax
.swing
.JCheckBox
;
46 import org
.tianocore
.frameworkwizard
.common
.ui
.iCheckBoxList
.ICheckBoxList
;
47 import java
.awt
.Rectangle
;
48 import java
.util
.Vector
;
51 GUI for create PCD definition elements of spd file
53 @since PackageEditor 1.0
55 public class SpdPcdDefs
extends IInternalFrame
implements TableModelListener
{
60 private static final long serialVersionUID
= 1L;
64 private JPanel jContentPane
= null;
66 private JLabel jLabelItemType
= null;
68 private JLabel jLabelC_Name
= null;
70 private JTextField jTextFieldC_Name
= null;
72 private JLabel jLabelToken
= null;
74 private JTextField jTextFieldToken
= null;
76 private JLabel jLabelDataType
= null;
78 private JButton jButtonOk
= null;
80 private JButton jButtonCancel
= null;
82 private JComboBox jComboBoxDataType
= null;
84 private SpdFileContents sfc
= null;
86 private StarLabel jStarLabel2
= null;
88 private StarLabel jStarLabel3
= null;
90 private StarLabel jStarLabel4
= null;
92 private StarLabel jStarLabel
= null;
94 private StarLabel jStarLabel1
= null;
96 private JLabel jLabelTokenSpace
= null;
98 private JTextField jTextFieldTsGuid
= null;
100 private JLabel jLabelVarVal
= null;
102 private JTextField jTextField
= null;
104 private JLabel jLabelDefVal
= null;
106 private JTextField jTextFieldDefaultValue
= null;
108 private JButton jButtonAdd
= null;
110 private CheckboxTableModel model
= null;
112 private JButton jButtonRemove
= null;
114 private JButton jButtonClearAll
= null;
116 private JButton jButtonGen
= null;
118 private GenGuidDialog guidDialog
= null;
120 private JScrollPane jScrollPane
= null;
122 private JTable jTable
= null;
124 private JScrollPane topScrollPane
= null; // @jve:decl-index=0:visual-constraint="390,10"
126 private int selectedRow
= -1;
128 private StarLabel starLabel
= null;
130 private JCheckBox jCheckBox
= null;
132 private JCheckBox jCheckBox1
= null;
134 private JCheckBox jCheckBox2
= null;
136 private JCheckBox jCheckBox3
= null;
138 private JCheckBox jCheckBox4
= null;
140 private JScrollPane jScrollPane1
= null;
142 private ICheckBoxList iCheckBoxList
= null;
144 private JScrollPane jScrollPane2
= null;
146 private ICheckBoxList iCheckBoxList1
= null;
148 private JLabel jLabel
= null;
150 private JLabel jLabel1
= null;
153 This method initializes this
156 private void initialize() {
157 this.setTitle("PCD Definition");
158 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
163 This method initializes jTextFieldC_Name
165 @return javax.swing.JTextField
167 private JTextField
getJTextFieldC_Name() {
168 if (jTextFieldC_Name
== null) {
169 jTextFieldC_Name
= new JTextField();
170 jTextFieldC_Name
.setBounds(new java
.awt
.Rectangle(156,9,317,20));
171 jTextFieldC_Name
.setPreferredSize(new java
.awt
.Dimension(315,20));
173 return jTextFieldC_Name
;
177 This method initializes jTextFieldToken
179 @return javax.swing.JTextField
181 private JTextField
getJTextFieldToken() {
182 if (jTextFieldToken
== null) {
183 jTextFieldToken
= new JTextField();
184 jTextFieldToken
.setBounds(new java
.awt
.Rectangle(156,33,317,20));
185 jTextFieldToken
.setPreferredSize(new java
.awt
.Dimension(315,20));
187 return jTextFieldToken
;
191 This method initializes jButtonOk
193 @return javax.swing.JButton
195 private JButton
getJButtonOk() {
196 if (jButtonOk
== null) {
197 jButtonOk
= new JButton();
198 jButtonOk
.setText("OK");
199 jButtonOk
.setBounds(new java
.awt
.Rectangle(279,276,90,20));
200 jButtonOk
.setVisible(false);
201 jButtonOk
.addActionListener(this);
207 This method initializes jButtonCancel
209 @return javax.swing.JButton
211 private JButton
getJButtonCancel() {
212 if (jButtonCancel
== null) {
213 jButtonCancel
= new JButton();
214 jButtonCancel
.setText("Cancel");
215 jButtonCancel
.setBounds(new java
.awt
.Rectangle(389,276,82,20));
216 jButtonCancel
.setVisible(false);
217 jButtonCancel
.addActionListener(this);
219 return jButtonCancel
;
223 This method initializes jComboBoxDataType
225 @return javax.swing.JComboBox
227 private JComboBox
getJComboBoxDataType() {
228 if (jComboBoxDataType
== null) {
229 jComboBoxDataType
= new JComboBox();
230 jComboBoxDataType
.setBounds(new java
.awt
.Rectangle(156,84,110,20));
232 return jComboBoxDataType
;
236 This is the default constructor
238 public SpdPcdDefs() {
245 public SpdPcdDefs(PackageSurfaceAreaDocument
.PackageSurfaceArea inPsa
) {
247 sfc
= new SpdFileContents(inPsa
);
251 This method initializes this
255 private void init() {
256 this.setSize(500, 650);
257 this.setContentPane(getJContentPane());
258 this.addInternalFrameListener(new InternalFrameAdapter(){
259 public void internalFrameDeactivated(InternalFrameEvent e
){
260 if (jTable
.isEditing()) {
261 jTable
.getCellEditor().stopCellEditing();
266 this.setVisible(true);
269 private void init(SpdFileContents sfc
){
270 if (sfc
.getSpdPcdDefinitionCount() == 0) {
273 String
[][] saa
= new String
[sfc
.getSpdPcdDefinitionCount()][8];
274 String
[][] usage
= new String
[sfc
.getSpdPcdDefinitionCount()][5];
275 Object
[] rowData
= new Object
[13];
276 sfc
.getSpdPcdDefinitions(saa
, usage
);
278 while (i
< saa
.length
) {
280 for (int k
= 0; k
< 6; ++k
) {
281 rowData
[k
] = saa
[i
][k
];
283 for (int m
= 7; m
< 11; ++m
) {
284 rowData
[m
] = new Boolean("false");
288 if (usage
[i
][j
] == null || usage
[i
][j
].length()==0){
292 if (usage
[i
][j
].equals("FEATURE_FLAG")){
293 rowData
[6] = new Boolean("true");
295 if (usage
[i
][j
].equals("FIXED_AT_BUILD")){
296 rowData
[7] = new Boolean("true");
298 if (usage
[i
][j
].equals("PATCHABLE_IN_MODULE")){
299 rowData
[8] = new Boolean("true");
301 if (usage
[i
][j
].equals("DYNAMIC")){
302 rowData
[9] = new Boolean("true");
304 if (usage
[i
][j
].equals("DYNAMIC_EX")){
305 rowData
[10] = new Boolean("true");
311 rowData
[11] = saa
[i
][6];
312 rowData
[12] = saa
[i
][7];
314 model
.addRow(rowData
);
323 private JScrollPane
getJContentPane(){
324 if (topScrollPane
== null){
325 topScrollPane
= new JScrollPane();
326 topScrollPane
.setSize(new java
.awt
.Dimension(482,451));
327 topScrollPane
.setViewportView(getJContentPane1());
329 return topScrollPane
;
331 private JPanel
getJContentPane1() {
332 if (jContentPane
== null) {
334 jLabel1
= new JLabel();
335 jLabel1
.setBounds(new java
.awt
.Rectangle(241,192,89,16));
336 jLabel1
.setText("Supported Arch");
337 jLabel1
.setEnabled(true);
338 jLabel
= new JLabel();
339 jLabel
.setBounds(new java
.awt
.Rectangle(15,193,103,16));
340 jLabel
.setText("Supported Module");
341 jLabel
.setEnabled(true);
342 starLabel
= new StarLabel();
343 starLabel
.setBounds(new java
.awt
.Rectangle(2,134,10,20));
344 jLabelDefVal
= new JLabel();
345 jLabelDefVal
.setBounds(new java
.awt
.Rectangle(277,84,80,20));
346 jLabelDefVal
.setText("Default Value");
347 jLabelVarVal
= new JLabel();
348 jLabelVarVal
.setBounds(new java
.awt
.Rectangle(11,133,84,20));
349 jLabelVarVal
.setText("Valid Usage");
350 jLabelC_Name
= new JLabel();
351 jLabelC_Name
.setText("C_Name");
352 jLabelC_Name
.setBounds(new java
.awt
.Rectangle(11,9,140,20));
353 jLabelTokenSpace
= new JLabel();
354 jLabelTokenSpace
.setBounds(new java
.awt
.Rectangle(11,58,140,20));
355 jLabelTokenSpace
.setText("Token Space");
356 jLabelDataType
= new JLabel();
357 jLabelDataType
.setText("Data Type");
358 jLabelDataType
.setBounds(new java
.awt
.Rectangle(11,83,140,20));
359 jLabelToken
= new JLabel();
360 jLabelToken
.setText("Token");
361 jLabelToken
.setBounds(new java
.awt
.Rectangle(11,33,140,20));
362 jLabelItemType
= new JLabel();
363 jLabelItemType
.setText("Help Text");
364 jLabelItemType
.setBounds(new java
.awt
.Rectangle(11,108,140,20));
367 jContentPane
= new JPanel();
368 jContentPane
.setLayout(null);
369 jContentPane
.setPreferredSize(new java
.awt
.Dimension(479,375));
371 jContentPane
.add(jLabelItemType
, null);
372 jContentPane
.add(jLabelC_Name
, null);
373 jContentPane
.add(jLabelTokenSpace
, null);
374 jContentPane
.add(getJTextFieldTsGuid(), null);
375 jContentPane
.add(jLabelVarVal
, null);
376 jContentPane
.add(getJTextFieldC_Name(), null);
377 jContentPane
.add(jLabelToken
, null);
378 jContentPane
.add(getJTextFieldToken(), null);
379 jContentPane
.add(jLabelDataType
, null);
380 jContentPane
.add(getJButtonOk(), null);
381 jContentPane
.add(getJButtonCancel(), null);
382 jContentPane
.add(getJComboBoxDataType(), null);
384 jStarLabel
= new StarLabel();
385 jStarLabel1
= new StarLabel();
386 jStarLabel1
.setBounds(new java
.awt
.Rectangle(2,8,10,20));
387 jStarLabel2
= new StarLabel();
388 jStarLabel3
= new StarLabel();
389 jStarLabel4
= new StarLabel();
390 jStarLabel
.setLocation(new java
.awt
.Point(2,84));
391 jStarLabel4
.setLocation(new java
.awt
.Point(2, 109));
392 jStarLabel2
.setLocation(new java
.awt
.Point(2,33));
393 jStarLabel3
.setLocation(new java
.awt
.Point(2, 58));
394 jStarLabel3
.setSize(new java
.awt
.Dimension(8,20));
395 jContentPane
.add(jStarLabel2
, null);
396 jContentPane
.add(jStarLabel3
, null);
397 jContentPane
.add(jStarLabel
, null);
398 jContentPane
.add(jStarLabel1
, null);
399 jContentPane
.add(jStarLabel4
, null);
400 jContentPane
.add(getJTextField(), null);
401 jContentPane
.add(jLabelDefVal
, null);
402 jContentPane
.add(getJTextFieldDefaultValue(), null);
403 jContentPane
.add(getJButtonAdd(), null);
404 jContentPane
.add(getJButtonRemove(), null);
405 jContentPane
.add(getJButtonClearAll(), null);
406 jContentPane
.add(getJButtonGen(), null);
407 jContentPane
.add(getJScrollPane(), null);
408 jContentPane
.add(starLabel
, null);
409 jContentPane
.add(getJCheckBox(), null);
410 jContentPane
.add(getJCheckBox1(), null);
411 jContentPane
.add(getJCheckBox2(), null);
412 jContentPane
.add(getJCheckBox3(), null);
413 jContentPane
.add(getJCheckBox4(), null);
414 jContentPane
.add(getJScrollPane1(), null);
415 jContentPane
.add(getJScrollPane2(), null);
416 jContentPane
.add(jLabel
, null);
417 jContentPane
.add(jLabel1
, null);
423 This method initializes comboboxes
424 jContentPane.add(jLabelTokenSpace, null);
427 private void initFrame() {
429 jComboBoxDataType
.addItem("UINT8");
430 jComboBoxDataType
.addItem("UINT16");
431 jComboBoxDataType
.addItem("UINT32");
432 jComboBoxDataType
.addItem("UINT64");
433 jComboBoxDataType
.addItem("VOID*");
434 jComboBoxDataType
.addItem("BOOLEAN");
435 jComboBoxDataType
.setSelectedIndex(0);
438 public void actionPerformed(ActionEvent arg0
) {
440 if (arg0
.getSource() == jButtonOk
) {
445 if (arg0
.getSource() == jButtonCancel
) {
449 if (arg0
.getSource() == jButtonAdd
) {
450 //ToDo: check before add
455 String archList
= vectorToString(iCheckBoxList
.getAllCheckedItemsString());
456 if (archList
.length() == 0) {
459 String modTypeList
= vectorToString(iCheckBoxList1
.getAllCheckedItemsString());
460 if (modTypeList
.length() == 0) {
463 Object
[] row
= {jTextFieldC_Name
.getText(), jTextFieldToken
.getText(),
464 jTextFieldTsGuid
.getText(), jComboBoxDataType
.getSelectedItem(),
465 jTextFieldDefaultValue
.getText(), jTextField
.getText(),
466 jCheckBox
.isSelected(), jCheckBox1
.isSelected(),
467 jCheckBox2
.isSelected(), jCheckBox3
.isSelected(), jCheckBox4
.isSelected(),
468 archList
, modTypeList
};
472 String usage
= getValidUsage(jCheckBox
.isSelected(), jCheckBox1
.isSelected(), jCheckBox2
.isSelected(), jCheckBox3
.isSelected(), jCheckBox4
.isSelected());
473 if (usage
.length() == 0) {
476 sfc
.genSpdPcdDefinitions(row
[0]+"", row
[1]+"", row
[3]+"", usage
, row
[2]+"", row
[4]+"", row
[5]+"", archList
, modTypeList
);
479 // remove selected line
481 if (arg0
.getSource() == jButtonRemove
) {
482 if (jTable
.isEditing()){
483 jTable
.getCellEditor().stopCellEditing();
485 int rowSelected
= selectedRow
;
486 if (rowSelected
>= 0) {
487 model
.removeRow(rowSelected
);
488 sfc
.removeSpdPcdDefinition(rowSelected
);
492 if (arg0
.getSource() == jButtonClearAll
) {
493 if (model
.getRowCount() == 0) {
496 model
.setRowCount(0);
497 sfc
.removeSpdPcdDefinition();
500 if (arg0
.getSource() == jButtonGen
) {
501 guidDialog
= new GenGuidDialog(this);
502 guidDialog
.setGuid(jTextFieldTsGuid
.getText());
503 guidDialog
.setVisible(true);
506 if (arg0
.getActionCommand().equals("GenGuidValue")) {
507 jTextFieldTsGuid
.setText(guidDialog
.getGuid());
512 protected void save() {
517 * This method initializes jTextFieldTsGuid
519 * @return javax.swing.JTextField
521 private JTextField
getJTextFieldTsGuid() {
522 if (jTextFieldTsGuid
== null) {
523 jTextFieldTsGuid
= new JTextField();
524 jTextFieldTsGuid
.setBounds(new java
.awt
.Rectangle(156,58,249,20));
525 jTextFieldTsGuid
.setPreferredSize(new java
.awt
.Dimension(250,20));
527 return jTextFieldTsGuid
;
531 * This method initializes jTextField
533 * @return javax.swing.JTextField
535 private JTextField
getJTextField() {
536 if (jTextField
== null) {
537 jTextField
= new JTextField();
538 jTextField
.setBounds(new java
.awt
.Rectangle(156,108,317,20));
539 jTextField
.setPreferredSize(new java
.awt
.Dimension(315,20));
545 * This method initializes jTextFieldDefaultValue
547 * @return javax.swing.JTextField
549 private JTextField
getJTextFieldDefaultValue() {
550 if (jTextFieldDefaultValue
== null) {
551 jTextFieldDefaultValue
= new JTextField();
552 jTextFieldDefaultValue
.setBounds(new java
.awt
.Rectangle(368,84,105,20));
553 jTextFieldDefaultValue
.setPreferredSize(new java
.awt
.Dimension(104,20));
555 return jTextFieldDefaultValue
;
559 * This method initializes jButtonAdd
561 * @return javax.swing.JButton
563 private JButton
getJButtonAdd() {
564 if (jButtonAdd
== null) {
565 jButtonAdd
= new JButton();
566 jButtonAdd
.setBounds(new java
.awt
.Rectangle(195,277,71,20));
567 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(70,20));
568 jButtonAdd
.setText("Add");
569 jButtonAdd
.addActionListener(this);
576 * This method initializes jButtonRemove
578 * @return javax.swing.JButton
580 private JButton
getJButtonRemove() {
581 if (jButtonRemove
== null) {
582 jButtonRemove
= new JButton();
583 jButtonRemove
.setBounds(new java
.awt
.Rectangle(278,277,81,20));
584 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(70,20));
585 jButtonRemove
.setText("Delete");
586 jButtonRemove
.addActionListener(this);
588 return jButtonRemove
;
592 * This method initializes jButtonClearAll
594 * @return javax.swing.JButton
596 private JButton
getJButtonClearAll() {
597 if (jButtonClearAll
== null) {
598 jButtonClearAll
= new JButton();
599 jButtonClearAll
.setBounds(new java
.awt
.Rectangle(382,277,90,20));
600 jButtonClearAll
.setPreferredSize(new java
.awt
.Dimension(81,20));
601 jButtonClearAll
.setText("Clear All");
602 jButtonClearAll
.addActionListener(this);
604 return jButtonClearAll
;
608 * This method initializes jButtonGen
610 * @return javax.swing.JButton
612 private JButton
getJButtonGen() {
613 if (jButtonGen
== null) {
614 jButtonGen
= new JButton();
615 jButtonGen
.setBounds(new java
.awt
.Rectangle(414,57,58,20));
616 jButtonGen
.setPreferredSize(new java
.awt
.Dimension(56,20));
617 jButtonGen
.setText("Gen");
618 jButtonGen
.addActionListener(this);
623 public void componentResized(ComponentEvent arg0
) {
624 int intPreferredWidth
= 500;
626 resizeComponentWidth(this.jTextFieldC_Name
, this.getWidth(), intPreferredWidth
);
627 resizeComponentWidth(this.jTextFieldToken
, this.getWidth(), intPreferredWidth
);
628 resizeComponentWidth(this.jTextFieldTsGuid
, this.getWidth(), intPreferredWidth
);
629 resizeComponentWidth(this.jTextFieldDefaultValue
, this.getWidth(), intPreferredWidth
);
630 resizeComponentWidth(this.jTextField
, this.getWidth(), intPreferredWidth
);
631 resizeComponentWidth(this.jScrollPane
, this.getWidth(), intPreferredWidth
);
633 resizeComponentWidth(this.jTextField
, this.getWidth(), intPreferredWidth
);
634 resizeComponentWidth(this.jTextFieldDefaultValue
, this.getWidth(), intPreferredWidth
);
635 // relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
636 // relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
637 // relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);
638 relocateComponentX(this.jButtonGen
, this.getWidth(), this.getPreferredSize().width
, 30);
642 * This method initializes jScrollPane
644 * @return javax.swing.JScrollPane
646 private JScrollPane
getJScrollPane() {
647 if (jScrollPane
== null) {
648 jScrollPane
= new JScrollPane();
649 jScrollPane
.setBounds(new java
.awt
.Rectangle(5,301,1473,137));
650 jScrollPane
.setViewportView(getJTable());
656 * This method initializes jTable
658 * @return javax.swing.JTable
660 private JTable
getJTable() {
661 if (jTable
== null) {
662 model
= new CheckboxTableModel();
663 jTable
= new JTable(model
);
664 jTable
.setAutoResizeMode(JTable
.AUTO_RESIZE_OFF
);
665 jTable
.setSize(new Dimension(1000, 300));
667 model
.addColumn("C_Name");
668 model
.addColumn("Token");
669 model
.addColumn("TokenSpace");
670 model
.addColumn("DatumType");
671 model
.addColumn("DefaultValue");
672 model
.addColumn("HelpText");
674 model
.addColumn("FeatureFlag");
675 model
.addColumn("FixedAtBuild");
676 model
.addColumn("PatchableInModule");
677 model
.addColumn("Dynamic");
678 model
.addColumn("DynamicEx");
679 model
.addColumn("SupportedArch");
680 model
.addColumn("SupportedModule");
681 jTable
.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());
683 //ToDo: add a valid usage editor
685 JComboBox jComboBoxDataType
= new JComboBox();
686 jComboBoxDataType
.addItem("UINT8");
687 jComboBoxDataType
.addItem("UINT16");
688 jComboBoxDataType
.addItem("UINT32");
689 jComboBoxDataType
.addItem("UINT64");
690 jComboBoxDataType
.addItem("VOID*");
691 jComboBoxDataType
.addItem("BOOLEAN");
692 TableColumn dataTypeColumn
= jTable
.getColumnModel().getColumn(3);
693 dataTypeColumn
.setCellEditor(new DefaultCellEditor(jComboBoxDataType
));
695 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
696 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
697 public void valueChanged(ListSelectionEvent e
) {
698 if (e
.getValueIsAdjusting()){
701 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
702 if (lsm
.isSelectionEmpty()) {
706 selectedRow
= lsm
.getMinSelectionIndex();
711 jTable
.getModel().addTableModelListener(this);
716 public void tableChanged(TableModelEvent arg0
) {
717 // TODO Auto-generated method stub
718 int row
= arg0
.getFirstRow();
719 TableModel m
= (TableModel
)arg0
.getSource();
720 if (arg0
.getType() == TableModelEvent
.UPDATE
){
722 String cName
= m
.getValueAt(row
, 0) + "";
723 String token
= m
.getValueAt(row
, 1) + "";
724 String ts
= m
.getValueAt(row
, 2) + "";
725 String dataType
= m
.getValueAt(row
, 3) + "";
726 String defaultVal
= m
.getValueAt(row
, 4) + "";
727 String help
= m
.getValueAt(row
, 5) + "";
728 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)+""));
729 String archList
= vectorToString(iCheckBoxList
.getAllCheckedItemsString());
730 String modTypeList
= vectorToString(iCheckBoxList1
.getAllCheckedItemsString());
731 sfc
.updateSpdPcdDefinition(row
, cName
, token
, dataType
, usage
, ts
, defaultVal
, help
, archList
, modTypeList
);
736 * This method initializes jCheckBox
738 * @return javax.swing.JCheckBox
740 private JCheckBox
getJCheckBox() {
741 if (jCheckBox
== null) {
742 jCheckBox
= new JCheckBox();
743 jCheckBox
.setBounds(new java
.awt
.Rectangle(156,161,100,21));
744 jCheckBox
.setText("Feature Flag");
745 jCheckBox
.setPreferredSize(new java
.awt
.Dimension(21,20));
751 * This method initializes jCheckBox1
753 * @return javax.swing.JCheckBox
755 private JCheckBox
getJCheckBox1() {
756 if (jCheckBox1
== null) {
757 jCheckBox1
= new JCheckBox();
758 jCheckBox1
.setBounds(new java
.awt
.Rectangle(302,133,108,20));
759 jCheckBox1
.setText("Fixed at Build");
760 jCheckBox1
.setPreferredSize(new java
.awt
.Dimension(21,20));
766 * This method initializes jCheckBox2
768 * @return javax.swing.JCheckBox
770 private JCheckBox
getJCheckBox2() {
771 if (jCheckBox2
== null) {
772 jCheckBox2
= new JCheckBox();
773 jCheckBox2
.setBounds(new java
.awt
.Rectangle(156,133,154,20));
774 jCheckBox2
.setText("Patchable in Module");
775 jCheckBox2
.setPreferredSize(new java
.awt
.Dimension(21,20));
781 * This method initializes jCheckBox3
783 * @return javax.swing.JCheckBox
785 private JCheckBox
getJCheckBox3() {
786 if (jCheckBox3
== null) {
787 jCheckBox3
= new JCheckBox();
788 jCheckBox3
.setBounds(new java
.awt
.Rectangle(278,161,80,20));
789 jCheckBox3
.setText("Dynamic");
790 jCheckBox3
.setPreferredSize(new java
.awt
.Dimension(21,20));
796 * This method initializes jCheckBox4
798 * @return javax.swing.JCheckBox
800 private JCheckBox
getJCheckBox4() {
801 if (jCheckBox4
== null) {
802 jCheckBox4
= new JCheckBox();
803 jCheckBox4
.setBounds(new java
.awt
.Rectangle(371,161,99,20));
804 jCheckBox4
.setText("DynamicEx");
805 jCheckBox4
.setPreferredSize(new java
.awt
.Dimension(21,20));
810 private String
getValidUsage(boolean ff
, boolean fab
, boolean pim
, boolean d
, boolean de
) {
813 usage
+= "FEATURE_FLAG ";
816 usage
+= "FIXED_AT_BUILD ";
819 usage
+= "PATCHABLE_IN_MODULE ";
825 usage
+= "DYNAMIC_EX ";
831 private boolean checkValid() {
832 if (!(jCheckBox
.isSelected() || jCheckBox1
.isSelected() || jCheckBox2
.isSelected() || jCheckBox3
.isSelected() || jCheckBox4
.isSelected())){
833 JOptionPane
.showMessageDialog(frame
, "You must specify at least one usage.");
840 * This method initializes jScrollPane1
842 * @return javax.swing.JScrollPane
844 private JScrollPane
getJScrollPane1() {
845 if (jScrollPane1
== null) {
846 jScrollPane1
= new JScrollPane();
847 jScrollPane1
.setBounds(new java
.awt
.Rectangle(242,213,188,54));
848 jScrollPane1
.setViewportView(getICheckBoxList());
849 jScrollPane1
.setPreferredSize(new Dimension(188, 74));
855 * This method initializes iCheckBoxList
857 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList
859 private ICheckBoxList
getICheckBoxList() {
860 if (iCheckBoxList
== null) {
861 iCheckBoxList
= new ICheckBoxList();
862 iCheckBoxList
.setBounds(new Rectangle(197, 142, 188, 74));
863 Vector
<String
> v
= new Vector
<String
>();
868 iCheckBoxList
.setAllItems(v
);
870 return iCheckBoxList
;
874 * This method initializes jScrollPane2
876 * @return javax.swing.JScrollPane
878 private JScrollPane
getJScrollPane2() {
879 if (jScrollPane2
== null) {
880 jScrollPane2
= new JScrollPane();
881 jScrollPane2
.setBounds(new java
.awt
.Rectangle(15,213,199,55));
882 jScrollPane2
.setViewportView(getICheckBoxList1());
883 jScrollPane2
.setPreferredSize(new Dimension(170, 74));
889 * This method initializes iCheckBoxList1
891 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList
893 private ICheckBoxList
getICheckBoxList1() {
894 if (iCheckBoxList1
== null) {
895 iCheckBoxList1
= new ICheckBoxList();
896 iCheckBoxList1
.setBounds(new Rectangle(14, 142, 170, 74));
897 Vector
<String
> v
= new Vector
<String
>();
904 v
.add("DXE_RUNTIME_DRIVER");
905 v
.add("DXE_SAL_DRIVER");
906 v
.add("DXE_SMM_DRIVER");
907 v
.add("UEFI_DRIVER");
908 v
.add("UEFI_APPLICATION");
909 v
.add("USER_DEFINED");
910 iCheckBoxList1
.setAllItems(v
);
912 return iCheckBoxList1
;
915 protected String
vectorToString(Vector
<String
> v
) {
920 for (int i
= 0; i
< v
.size(); ++i
) {
926 } // @jve:decl-index=0:visual-constraint="22,11"
928 class CheckboxTableModel
extends DefaultTableModel
{
932 private static final long serialVersionUID
= 1L;
934 public Class
<?
> getColumnClass (int c
) {
935 if (getValueAt(0, c
) != null){
936 return getValueAt(0, c
).getClass();