1 package org
.tianocore
.frameworkwizard
.platform
.ui
;
3 import java
.awt
.BorderLayout
;
5 import javax
.swing
.ButtonGroup
;
6 import javax
.swing
.JPanel
;
7 import javax
.swing
.JScrollPane
;
8 import javax
.swing
.JTable
;
9 import javax
.swing
.ListSelectionModel
;
10 import javax
.swing
.event
.ListSelectionEvent
;
11 import javax
.swing
.event
.ListSelectionListener
;
12 import javax
.swing
.table
.DefaultTableModel
;
14 import org
.tianocore
.PlatformSurfaceAreaDocument
;
15 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
16 import javax
.swing
.JCheckBox
;
17 import java
.awt
.FlowLayout
;
18 import javax
.swing
.JRadioButton
;
19 import javax
.swing
.JButton
;
20 import javax
.swing
.JLabel
;
21 import javax
.swing
.JTextField
;
23 public class FpdDynamicPcdBuildDefinitions
extends IInternalFrame
{
28 private static final long serialVersionUID
= 1L;
29 private JPanel jContentPane
= null;
30 private JPanel jPanel
= null;
31 private JPanel jPanel1
= null;
32 private JPanel jPanel2
= null;
33 private JScrollPane jScrollPane
= null;
34 private JTable jTable
= null;
35 private DynPcdTableModel model
= null;
36 private DynPcdTableModel model1
= null;
37 private FpdFileContents ffc
= null;
38 private JPanel jPanel3
= null;
39 private JCheckBox jCheckBox
= null;
40 private JPanel jPanel4
= null;
41 private JRadioButton jRadioButton
= null;
42 private JRadioButton jRadioButton1
= null;
43 private JScrollPane jScrollPane1
= null;
44 private JTable jTable1
= null;
45 private JButton jButton
= null;
46 private JLabel jLabel
= null;
47 private JTextField jTextField
= null;
48 private JLabel jLabel1
= null;
49 private JTextField jTextField1
= null;
50 private JLabel jLabel2
= null;
51 private JLabel jLabel3
= null;
52 private JTextField jTextField2
= null;
53 private JLabel jLabel4
= null;
54 private JTextField jTextField3
= null;
55 private JTextField jTextField4
= null;
56 private JLabel jLabel5
= null;
57 private JTextField jTextField5
= null;
58 private JRadioButton jRadioButton2
= null;
59 private ButtonGroup bg
= new ButtonGroup();
60 private JLabel jLabel6
= null;
62 * This is the default constructor
64 public FpdDynamicPcdBuildDefinitions() {
69 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
74 public void init(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
) {
76 ffc
= new FpdFileContents(fpd
);
78 String
[][] saa
= new String
[ffc
.getDynamicPcdBuildDataCount()][5];
79 ffc
.getDynamicPcdBuildData(saa
);
80 for (int i
= 0; i
< saa
.length
; ++i
) {
84 saa
= new String
[ffc
.getPlatformDefsSkuInfoCount()][2];
85 ffc
.getPlatformDefsSkuInfos(saa
);
86 for (int i
= 0; i
< saa
.length
; ++i
) {
87 model1
.addRow(saa
[i
]);
92 * This method initializes this
96 private void initialize() {
97 this.setSize(661, 558);
98 this.setTitle("Dynamic PCD Build Definitions");
99 this.setContentPane(getJContentPane());
100 this.setVisible(true);
104 * This method initializes jContentPane
106 * @return javax.swing.JPanel
108 private JPanel
getJContentPane() {
109 if (jContentPane
== null) {
110 jContentPane
= new JPanel();
111 jContentPane
.setLayout(new BorderLayout());
112 jContentPane
.add(getJPanel(), java
.awt
.BorderLayout
.NORTH
);
113 jContentPane
.add(getJPanel1(), java
.awt
.BorderLayout
.CENTER
);
114 jContentPane
.add(getJPanel2(), java
.awt
.BorderLayout
.SOUTH
);
120 * This method initializes jPanel
122 * @return javax.swing.JPanel
124 private JPanel
getJPanel() {
125 if (jPanel
== null) {
126 jPanel
= new JPanel();
132 * This method initializes jPanel1
134 * @return javax.swing.JPanel
136 private JPanel
getJPanel1() {
137 if (jPanel1
== null) {
138 jPanel1
= new JPanel();
139 jPanel1
.add(getJScrollPane(), null);
140 jPanel1
.add(getJPanel3(), null);
141 jPanel1
.add(getJPanel4(), null);
147 * This method initializes jPanel2
149 * @return javax.swing.JPanel
151 private JPanel
getJPanel2() {
152 if (jPanel2
== null) {
153 jPanel2
= new JPanel();
159 * This method initializes jScrollPane
161 * @return javax.swing.JScrollPane
163 private JScrollPane
getJScrollPane() {
164 if (jScrollPane
== null) {
165 jScrollPane
= new JScrollPane();
166 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(600,200));
167 jScrollPane
.setViewportView(getJTable());
173 * This method initializes jTable
175 * @return javax.swing.JTable
177 private JTable
getJTable() {
178 if (jTable
== null) {
179 model
= new DynPcdTableModel();
180 model
.addColumn("CName");
181 model
.addColumn("Token");
182 model
.addColumn("TokenSpaceGuid");
183 model
.addColumn("MaxDatumSize");
184 model
.addColumn("DatumType");
185 jTable
= new JTable(model
);
187 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
188 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
189 public void valueChanged(ListSelectionEvent e
) {
190 if (e
.getValueIsAdjusting()){
193 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
194 if (lsm
.isSelectionEmpty()) {
198 int selectedRow
= lsm
.getMinSelectionIndex();
200 displayDetails(selectedRow
);
208 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table.
210 private void displayDetails(int i
) {
211 jTable1
.changeSelection(0, 1, false, false);
212 int skuCount
= ffc
.getDynamicPcdSkuInfoCount(i
);
213 String defaultVal
= ffc
.getDynamicPcdBuildDataValue(i
);
214 if (defaultVal
!= null) {
215 jRadioButton2
.setSelected(true);
216 jTextField5
.setText(defaultVal
);
217 if ( skuCount
== 1) {
218 jCheckBox
.setSelected(false);
221 jCheckBox
.setSelected(true);
225 else if (ffc
.getDynamicPcdBuildDataVpdOffset(i
) != null) {
226 jRadioButton1
.setSelected(true);
227 jTextField4
.setText(ffc
.getDynamicPcdBuildDataVpdOffset(i
));
229 jCheckBox
.setSelected(false);
233 jCheckBox
.setSelected(true);
237 jRadioButton
.setSelected(true);
238 String
[][] saa
= new String
[ffc
.getDynamicPcdSkuInfoCount(i
)][7];
239 ffc
.getDynamicPcdSkuInfos(i
, saa
);
240 jTextField
.setText(saa
[0][1]);
241 jTextField1
.setText(saa
[0][2]);
242 jTextField2
.setText(saa
[0][3]);
243 jTextField3
.setText(saa
[0][4]);
245 jCheckBox
.setSelected(false);
248 jCheckBox
.setSelected(true);
254 private void displaySkuInfoDetails(int i
) {
255 int pcdSelected
= jTable
.getSelectedRow();
256 if (pcdSelected
< 0) {
260 String
[][] saa
= new String
[ffc
.getDynamicPcdSkuInfoCount(pcdSelected
)][7];
261 ffc
.getDynamicPcdSkuInfos(pcdSelected
, saa
);
263 if (saa
[i
][5] != null){
264 jRadioButton1
.setSelected(true);
265 jTextField4
.setText(saa
[i
][5]);
268 else if (saa
[i
][1] != null) {
269 jRadioButton
.setSelected(true);
270 jTextField
.setText(saa
[i
][1]);
271 jTextField1
.setText(saa
[i
][2]);
272 jTextField2
.setText(saa
[i
][3]);
273 jTextField3
.setText(saa
[i
][4]);
277 jRadioButton2
.setSelected(true);
278 jTextField5
.setText(saa
[i
][6]);
284 * This method initializes jPanel3
286 * @return javax.swing.JPanel
288 private JPanel
getJPanel3() {
289 if (jPanel3
== null) {
290 FlowLayout flowLayout
= new FlowLayout();
291 flowLayout
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
292 jPanel3
= new JPanel();
293 jPanel3
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
294 jPanel3
.setLayout(flowLayout
);
295 jPanel3
.setPreferredSize(new java
.awt
.Dimension(600,100));
296 jPanel3
.add(getJCheckBox(), null);
297 jPanel3
.add(getJScrollPane1(), null);
298 jPanel3
.add(getJButton(), null);
304 * This method initializes jCheckBox
306 * @return javax.swing.JCheckBox
308 private JCheckBox
getJCheckBox() {
309 if (jCheckBox
== null) {
310 jCheckBox
= new JCheckBox();
311 jCheckBox
.setText("SKU Enable");
312 jCheckBox
.addItemListener(new java
.awt
.event
.ItemListener() {
313 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
314 jTable1
.setEnabled(jCheckBox
.isSelected());
323 * This method initializes jPanel4
325 * @return javax.swing.JPanel
327 private JPanel
getJPanel4() {
328 if (jPanel4
== null) {
329 jLabel5
= new JLabel();
330 jLabel5
.setPreferredSize(new java
.awt
.Dimension(80,20));
331 jLabel5
.setText("VPD Offset");
332 jLabel4
= new JLabel();
333 jLabel4
.setPreferredSize(new java
.awt
.Dimension(100,20));
334 jLabel4
.setText("HII Default Value");
335 jLabel3
= new JLabel();
336 jLabel3
.setText("Variable Offset");
337 jLabel3
.setPreferredSize(new java
.awt
.Dimension(90,20));
338 jLabel2
= new JLabel();
339 jLabel2
.setText(" ");
340 jLabel1
= new JLabel();
341 jLabel1
.setText("Variable GUID");
342 jLabel1
.setPreferredSize(new java
.awt
.Dimension(100,20));
343 jLabel
= new JLabel();
344 jLabel
.setText("Variable Name");
345 jLabel
.setToolTipText("");
346 jLabel
.setPreferredSize(new java
.awt
.Dimension(90,20));
347 FlowLayout flowLayout1
= new FlowLayout();
348 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
349 jPanel4
= new JPanel();
350 jPanel4
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
351 jPanel4
.setLayout(flowLayout1
);
352 jPanel4
.setPreferredSize(new java
.awt
.Dimension(600,120));
353 jPanel4
.add(getJRadioButton(), null);
354 jPanel4
.add(jLabel
, null);
355 jPanel4
.add(getJTextField(), null);
356 jPanel4
.add(jLabel1
, null);
357 jPanel4
.add(getJTextField1(), null);
358 jPanel4
.add(jLabel2
, null);
359 jPanel4
.add(jLabel3
, null);
360 jPanel4
.add(getJTextField2(), null);
361 jPanel4
.add(jLabel4
, null);
362 jPanel4
.add(getJTextField3(), null);
363 jPanel4
.add(getJRadioButton1(), null);
364 jPanel4
.add(jLabel5
, null);
365 jPanel4
.add(getJTextField4(), null);
366 jLabel6
= new JLabel();
367 jLabel6
.setText(" ");
368 jPanel4
.add(jLabel6
, null);
369 jLabel
.setEnabled(false);
370 jLabel1
.setEnabled(false);
371 jLabel4
.setEnabled(false);
372 jLabel3
.setEnabled(false);
373 jLabel5
.setEnabled(false);
374 jPanel4
.add(getJRadioButton2(), null);
375 jPanel4
.add(getJTextField5(), null);
376 bg
.add(jRadioButton
);
377 bg
.add(jRadioButton1
);
384 * This method initializes jRadioButton
386 * @return javax.swing.JRadioButton
388 private JRadioButton
getJRadioButton() {
389 if (jRadioButton
== null) {
390 jRadioButton
= new JRadioButton();
391 jRadioButton
.setText("HII Enable");
392 jRadioButton
.addItemListener(new java
.awt
.event
.ItemListener() {
393 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
394 boolean selected
= jRadioButton
.isSelected();
395 jLabel
.setEnabled(selected
);
396 jLabel1
.setEnabled(selected
);
397 jLabel2
.setEnabled(selected
);
398 jLabel3
.setEnabled(selected
);
399 jLabel4
.setEnabled(selected
);
400 jTextField
.setEnabled(selected
);
401 jTextField1
.setEnabled(selected
);
402 jTextField2
.setEnabled(selected
);
403 jTextField3
.setEnabled(selected
);
411 * This method initializes jRadioButton1
413 * @return javax.swing.JRadioButton
415 private JRadioButton
getJRadioButton1() {
416 if (jRadioButton1
== null) {
417 jRadioButton1
= new JRadioButton();
418 jRadioButton1
.setText("VPD Enable");
419 jRadioButton1
.addItemListener(new java
.awt
.event
.ItemListener() {
420 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
421 boolean selected
= jRadioButton1
.isSelected();
422 jTextField4
.setEnabled(selected
);
423 jLabel5
.setEnabled(selected
);
427 return jRadioButton1
;
431 * This method initializes jScrollPane1
433 * @return javax.swing.JScrollPane
435 private JScrollPane
getJScrollPane1() {
436 if (jScrollPane1
== null) {
437 jScrollPane1
= new JScrollPane();
438 jScrollPane1
.setPreferredSize(new java
.awt
.Dimension(300,80));
439 jScrollPane1
.setViewportView(getJTable1());
445 * This method initializes jTable1
447 * @return javax.swing.JTable
449 private JTable
getJTable1() {
450 if (jTable1
== null) {
451 model1
= new DynPcdTableModel();
452 jTable1
= new JTable(model1
);
453 model1
.addColumn("SKU ID");
454 model1
.addColumn("SKU Name");
456 jTable1
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
457 jTable1
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
458 public void valueChanged(ListSelectionEvent e
) {
459 if (jTable
.getSelectedRow() < 0) {
462 if (e
.getValueIsAdjusting()){
465 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
466 if (lsm
.isSelectionEmpty()) {
470 int selected
= lsm
.getMinSelectionIndex();
471 displaySkuInfoDetails(selected
);
480 * This method initializes jButton
482 * @return javax.swing.JButton
484 private JButton
getJButton() {
485 if (jButton
== null) {
486 jButton
= new JButton();
487 jButton
.setPreferredSize(new java
.awt
.Dimension(180,20));
488 jButton
.setText(" Update SKU Information");
489 jButton
.addActionListener(new java
.awt
.event
.ActionListener() {
490 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
491 int pcdSelected
= jTable
.getSelectedRow();
492 if (pcdSelected
< 0) {
496 updateSkuInfo(pcdSelected
);
504 private void updateSkuInfo (int pcdSelected
) {
505 int skuCount
= ffc
.getDynamicPcdSkuInfoCount(pcdSelected
);
507 String varName
= null;
508 String varGuid
= null;
509 String varOffset
= null;
510 String hiiDefault
= null;
512 String vpdOffset
= null;
513 if (jRadioButton
.isSelected()) {
514 varName
= jTextField
.getText();
515 varGuid
= jTextField1
.getText();
516 varOffset
= jTextField2
.getText();
517 hiiDefault
= jTextField3
.getText();
519 if (jRadioButton1
.isSelected()) {
520 vpdOffset
= jTextField4
.getText();
522 if (jRadioButton2
.isSelected()) {
523 value
= jTextField5
.getText();
526 // SKU disabled. only modify data for default SKU.
528 if (!jCheckBox
.isSelected()) {
530 ffc
.removeDynamicPcdBuildDataSkuInfo(pcdSelected
);
531 if (jRadioButton
.isSelected()) {
532 ffc
.genDynamicPcdBuildDataSkuInfo("0", varName
, varGuid
, varOffset
, hiiDefault
, null, null, pcdSelected
);
534 else if (jRadioButton1
.isSelected()){
535 ffc
.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset
, null, pcdSelected
);
538 ffc
.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value
, pcdSelected
);
543 // SKU Enabled, need add data to all SKUs.
545 if (jCheckBox
.isSelected()) {
548 for (int i
= 1; i
< jTable1
.getRowCount(); ++i
) {
549 ffc
.genDynamicPcdBuildDataSkuInfo(jTable1
.getValueAt(i
, 0)+"", varName
, varGuid
, varOffset
, hiiDefault
, vpdOffset
, value
, pcdSelected
);
553 int row
= jTable1
.getSelectedRow();
557 ffc
.updateDynamicPcdBuildDataSkuInfo(jTable1
.getValueAt(row
, 0)+"", varName
, varGuid
, varOffset
, hiiDefault
, vpdOffset
, value
, pcdSelected
);
562 * This method initializes jTextField
564 * @return javax.swing.JTextField
566 private JTextField
getJTextField() {
567 if (jTextField
== null) {
568 jTextField
= new JTextField();
569 jTextField
.setPreferredSize(new java
.awt
.Dimension(150,20));
570 jTextField
.setEnabled(false);
576 * This method initializes jTextField1
578 * @return javax.swing.JTextField
580 private JTextField
getJTextField1() {
581 if (jTextField1
== null) {
582 jTextField1
= new JTextField();
583 jTextField1
.setPreferredSize(new java
.awt
.Dimension(150,20));
584 jTextField1
.setEnabled(false);
590 * This method initializes jTextField2
592 * @return javax.swing.JTextField
594 private JTextField
getJTextField2() {
595 if (jTextField2
== null) {
596 jTextField2
= new JTextField();
597 jTextField2
.setPreferredSize(new java
.awt
.Dimension(150,20));
598 jTextField2
.setEnabled(false);
604 * This method initializes jTextField3
606 * @return javax.swing.JTextField
608 private JTextField
getJTextField3() {
609 if (jTextField3
== null) {
610 jTextField3
= new JTextField();
611 jTextField3
.setPreferredSize(new java
.awt
.Dimension(150,20));
612 jTextField3
.setEnabled(false);
618 * This method initializes jTextField4
620 * @return javax.swing.JTextField
622 private JTextField
getJTextField4() {
623 if (jTextField4
== null) {
624 jTextField4
= new JTextField();
625 jTextField4
.setPreferredSize(new java
.awt
.Dimension(150,20));
626 jTextField4
.setEnabled(false);
632 * This method initializes jTextField5
634 * @return javax.swing.JTextField
636 private JTextField
getJTextField5() {
637 if (jTextField5
== null) {
638 jTextField5
= new JTextField();
639 jTextField5
.setPreferredSize(new java
.awt
.Dimension(150,20));
645 * This method initializes jRadioButton2
647 * @return javax.swing.JRadioButton
649 private JRadioButton
getJRadioButton2() {
650 if (jRadioButton2
== null) {
651 jRadioButton2
= new JRadioButton();
652 jRadioButton2
.setText("Default PCD Value");
653 jRadioButton2
.setSelected(true);
654 jRadioButton2
.setPreferredSize(new java
.awt
.Dimension(175,20));
655 jRadioButton2
.addItemListener(new java
.awt
.event
.ItemListener() {
656 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
657 jTextField5
.setEnabled(jRadioButton2
.isSelected());
660 bg
.add(jRadioButton2
);
662 return jRadioButton2
;
665 } // @jve:decl-index=0:visual-constraint="10,10"
667 class DynPcdTableModel
extends DefaultTableModel
{
671 private static final long serialVersionUID
= 1L;
673 public boolean isCellEditable(int row
, int col
) {