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
.JDialog
;
8 import javax
.swing
.JScrollPane
;
9 import javax
.swing
.JTable
;
10 import javax
.swing
.ListSelectionModel
;
11 import javax
.swing
.event
.ListSelectionEvent
;
12 import javax
.swing
.event
.ListSelectionListener
;
13 import javax
.swing
.table
.DefaultTableModel
;
15 import org
.tianocore
.PlatformSurfaceAreaDocument
;
16 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
17 import javax
.swing
.JCheckBox
;
18 import java
.awt
.FlowLayout
;
19 import javax
.swing
.JRadioButton
;
20 import javax
.swing
.JButton
;
21 import javax
.swing
.JLabel
;
22 import javax
.swing
.JTextField
;
24 public class FpdDynamicPcdBuildDefinitions
extends IInternalFrame
{
26 private JPanel jContentPane
= null;
27 private JPanel jPanel
= null;
28 private JPanel jPanel1
= null;
29 private JPanel jPanel2
= null;
30 private JScrollPane jScrollPane
= null;
31 private JTable jTable
= null;
32 private DynPcdTableModel model
= null;
33 private DynPcdTableModel model1
= null;
34 private FpdFileContents ffc
= null;
35 private JPanel jPanel3
= null;
36 private JCheckBox jCheckBox
= null;
37 private JPanel jPanel4
= null;
38 private JRadioButton jRadioButton
= null;
39 private JRadioButton jRadioButton1
= null;
40 private JScrollPane jScrollPane1
= null;
41 private JTable jTable1
= null;
42 private JButton jButton
= null;
43 private JLabel jLabel
= null;
44 private JTextField jTextField
= null;
45 private JLabel jLabel1
= null;
46 private JTextField jTextField1
= null;
47 private JLabel jLabel2
= null;
48 private JLabel jLabel3
= null;
49 private JTextField jTextField2
= null;
50 private JLabel jLabel4
= null;
51 private JTextField jTextField3
= null;
52 private JTextField jTextField4
= null;
53 private JLabel jLabel5
= null;
54 private JTextField jTextField5
= null;
55 private JRadioButton jRadioButton2
= null;
56 private ButtonGroup bg
= new ButtonGroup();
57 private JLabel jLabel6
= null;
59 * This is the default constructor
61 public FpdDynamicPcdBuildDefinitions() {
66 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
71 public void init(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
) {
73 ffc
= new FpdFileContents(fpd
);
75 String
[][] saa
= new String
[ffc
.getDynamicPcdBuildDataCount()][5];
76 ffc
.getDynamicPcdBuildData(saa
);
77 for (int i
= 0; i
< saa
.length
; ++i
) {
81 saa
= new String
[ffc
.getPlatformDefsSkuInfoCount()][2];
82 ffc
.getPlatformDefsSkuInfos(saa
);
83 for (int i
= 0; i
< saa
.length
; ++i
) {
84 model1
.addRow(saa
[i
]);
89 * This method initializes this
93 private void initialize() {
94 this.setSize(661, 558);
95 this.setTitle("Dynamic PCD Build Definitions");
96 this.setContentPane(getJContentPane());
97 this.setVisible(true);
101 * This method initializes jContentPane
103 * @return javax.swing.JPanel
105 private JPanel
getJContentPane() {
106 if (jContentPane
== null) {
107 jContentPane
= new JPanel();
108 jContentPane
.setLayout(new BorderLayout());
109 jContentPane
.add(getJPanel(), java
.awt
.BorderLayout
.NORTH
);
110 jContentPane
.add(getJPanel1(), java
.awt
.BorderLayout
.CENTER
);
111 jContentPane
.add(getJPanel2(), java
.awt
.BorderLayout
.SOUTH
);
117 * This method initializes jPanel
119 * @return javax.swing.JPanel
121 private JPanel
getJPanel() {
122 if (jPanel
== null) {
123 jPanel
= new JPanel();
129 * This method initializes jPanel1
131 * @return javax.swing.JPanel
133 private JPanel
getJPanel1() {
134 if (jPanel1
== null) {
135 jPanel1
= new JPanel();
136 jPanel1
.add(getJScrollPane(), null);
137 jPanel1
.add(getJPanel3(), null);
138 jPanel1
.add(getJPanel4(), null);
144 * This method initializes jPanel2
146 * @return javax.swing.JPanel
148 private JPanel
getJPanel2() {
149 if (jPanel2
== null) {
150 jPanel2
= new JPanel();
156 * This method initializes jScrollPane
158 * @return javax.swing.JScrollPane
160 private JScrollPane
getJScrollPane() {
161 if (jScrollPane
== null) {
162 jScrollPane
= new JScrollPane();
163 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(600,200));
164 jScrollPane
.setViewportView(getJTable());
170 * This method initializes jTable
172 * @return javax.swing.JTable
174 private JTable
getJTable() {
175 if (jTable
== null) {
176 model
= new DynPcdTableModel();
177 model
.addColumn("CName");
178 model
.addColumn("Token");
179 model
.addColumn("TokenSpaceGuid");
180 model
.addColumn("MaxDatumSize");
181 model
.addColumn("DatumType");
182 jTable
= new JTable(model
);
184 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
185 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
186 public void valueChanged(ListSelectionEvent e
) {
187 if (e
.getValueIsAdjusting()){
190 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
191 if (lsm
.isSelectionEmpty()) {
195 int selectedRow
= lsm
.getMinSelectionIndex();
197 displayDetails(selectedRow
);
205 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table.
207 private void displayDetails(int i
) {
208 jTable1
.changeSelection(0, 1, false, false);
209 int skuCount
= ffc
.getDynamicPcdSkuInfoCount(i
);
210 String defaultVal
= ffc
.getDynamicPcdBuildDataValue(i
);
211 if (defaultVal
!= null) {
212 jRadioButton2
.setSelected(true);
213 jTextField5
.setText(defaultVal
);
214 if ( skuCount
== 1) {
215 jCheckBox
.setSelected(false);
218 jCheckBox
.setSelected(true);
222 else if (ffc
.getDynamicPcdBuildDataVpdOffset(i
) != null) {
223 jRadioButton1
.setSelected(true);
224 jTextField4
.setText(ffc
.getDynamicPcdBuildDataVpdOffset(i
));
226 jCheckBox
.setSelected(false);
230 jCheckBox
.setSelected(true);
234 jRadioButton
.setSelected(true);
235 String
[][] saa
= new String
[ffc
.getDynamicPcdSkuInfoCount(i
)][7];
236 ffc
.getDynamicPcdSkuInfos(i
, saa
);
237 jTextField
.setText(saa
[0][1]);
238 jTextField1
.setText(saa
[0][2]);
239 jTextField2
.setText(saa
[0][3]);
240 jTextField3
.setText(saa
[0][4]);
242 jCheckBox
.setSelected(false);
245 jCheckBox
.setSelected(true);
251 private void displaySkuInfoDetails(int i
) {
252 int pcdSelected
= jTable
.getSelectedRow();
253 if (pcdSelected
< 0) {
257 String
[][] saa
= new String
[ffc
.getDynamicPcdSkuInfoCount(pcdSelected
)][7];
258 ffc
.getDynamicPcdSkuInfos(pcdSelected
, saa
);
260 if (saa
[i
][5] != null){
261 jRadioButton1
.setSelected(true);
262 jTextField4
.setText(saa
[i
][5]);
265 else if (saa
[i
][1] != null) {
266 jRadioButton
.setSelected(true);
267 jTextField
.setText(saa
[i
][1]);
268 jTextField1
.setText(saa
[i
][2]);
269 jTextField2
.setText(saa
[i
][3]);
270 jTextField3
.setText(saa
[i
][4]);
274 jRadioButton2
.setSelected(true);
275 jTextField5
.setText(saa
[i
][6]);
281 * This method initializes jPanel3
283 * @return javax.swing.JPanel
285 private JPanel
getJPanel3() {
286 if (jPanel3
== null) {
287 FlowLayout flowLayout
= new FlowLayout();
288 flowLayout
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
289 jPanel3
= new JPanel();
290 jPanel3
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
291 jPanel3
.setLayout(flowLayout
);
292 jPanel3
.setPreferredSize(new java
.awt
.Dimension(600,100));
293 jPanel3
.add(getJCheckBox(), null);
294 jPanel3
.add(getJScrollPane1(), null);
295 jPanel3
.add(getJButton(), null);
301 * This method initializes jCheckBox
303 * @return javax.swing.JCheckBox
305 private JCheckBox
getJCheckBox() {
306 if (jCheckBox
== null) {
307 jCheckBox
= new JCheckBox();
308 jCheckBox
.setText("SKU Enable");
309 jCheckBox
.addItemListener(new java
.awt
.event
.ItemListener() {
310 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
311 jTable1
.setEnabled(jCheckBox
.isSelected());
320 * This method initializes jPanel4
322 * @return javax.swing.JPanel
324 private JPanel
getJPanel4() {
325 if (jPanel4
== null) {
326 jLabel5
= new JLabel();
327 jLabel5
.setPreferredSize(new java
.awt
.Dimension(80,20));
328 jLabel5
.setText("VPD Offset");
329 jLabel4
= new JLabel();
330 jLabel4
.setPreferredSize(new java
.awt
.Dimension(100,20));
331 jLabel4
.setText("HII Default Value");
332 jLabel3
= new JLabel();
333 jLabel3
.setText("Variable Offset");
334 jLabel3
.setPreferredSize(new java
.awt
.Dimension(90,20));
335 jLabel2
= new JLabel();
336 jLabel2
.setText(" ");
337 jLabel1
= new JLabel();
338 jLabel1
.setText("Variable GUID");
339 jLabel1
.setPreferredSize(new java
.awt
.Dimension(100,20));
340 jLabel
= new JLabel();
341 jLabel
.setText("Variable Name");
342 jLabel
.setToolTipText("");
343 jLabel
.setPreferredSize(new java
.awt
.Dimension(90,20));
344 FlowLayout flowLayout1
= new FlowLayout();
345 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
346 jPanel4
= new JPanel();
347 jPanel4
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
348 jPanel4
.setLayout(flowLayout1
);
349 jPanel4
.setPreferredSize(new java
.awt
.Dimension(600,120));
350 jPanel4
.add(getJRadioButton(), null);
351 jPanel4
.add(jLabel
, null);
352 jPanel4
.add(getJTextField(), null);
353 jPanel4
.add(jLabel1
, null);
354 jPanel4
.add(getJTextField1(), null);
355 jPanel4
.add(jLabel2
, null);
356 jPanel4
.add(jLabel3
, null);
357 jPanel4
.add(getJTextField2(), null);
358 jPanel4
.add(jLabel4
, null);
359 jPanel4
.add(getJTextField3(), null);
360 jPanel4
.add(getJRadioButton1(), null);
361 jPanel4
.add(jLabel5
, null);
362 jPanel4
.add(getJTextField4(), null);
363 jLabel6
= new JLabel();
364 jLabel6
.setText(" ");
365 jPanel4
.add(jLabel6
, null);
366 jLabel
.setEnabled(false);
367 jLabel1
.setEnabled(false);
368 jLabel4
.setEnabled(false);
369 jLabel3
.setEnabled(false);
370 jLabel5
.setEnabled(false);
371 jPanel4
.add(getJRadioButton2(), null);
372 jPanel4
.add(getJTextField5(), null);
373 bg
.add(jRadioButton
);
374 bg
.add(jRadioButton1
);
381 * This method initializes jRadioButton
383 * @return javax.swing.JRadioButton
385 private JRadioButton
getJRadioButton() {
386 if (jRadioButton
== null) {
387 jRadioButton
= new JRadioButton();
388 jRadioButton
.setText("HII Enable");
389 jRadioButton
.addItemListener(new java
.awt
.event
.ItemListener() {
390 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
391 boolean selected
= jRadioButton
.isSelected();
392 jLabel
.setEnabled(selected
);
393 jLabel1
.setEnabled(selected
);
394 jLabel2
.setEnabled(selected
);
395 jLabel3
.setEnabled(selected
);
396 jLabel4
.setEnabled(selected
);
397 jTextField
.setEnabled(selected
);
398 jTextField1
.setEnabled(selected
);
399 jTextField2
.setEnabled(selected
);
400 jTextField3
.setEnabled(selected
);
408 * This method initializes jRadioButton1
410 * @return javax.swing.JRadioButton
412 private JRadioButton
getJRadioButton1() {
413 if (jRadioButton1
== null) {
414 jRadioButton1
= new JRadioButton();
415 jRadioButton1
.setText("VPD Enable");
416 jRadioButton1
.addItemListener(new java
.awt
.event
.ItemListener() {
417 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
418 boolean selected
= jRadioButton1
.isSelected();
419 jTextField4
.setEnabled(selected
);
420 jLabel5
.setEnabled(selected
);
424 return jRadioButton1
;
428 * This method initializes jScrollPane1
430 * @return javax.swing.JScrollPane
432 private JScrollPane
getJScrollPane1() {
433 if (jScrollPane1
== null) {
434 jScrollPane1
= new JScrollPane();
435 jScrollPane1
.setPreferredSize(new java
.awt
.Dimension(300,80));
436 jScrollPane1
.setViewportView(getJTable1());
442 * This method initializes jTable1
444 * @return javax.swing.JTable
446 private JTable
getJTable1() {
447 if (jTable1
== null) {
448 model1
= new DynPcdTableModel();
449 jTable1
= new JTable(model1
);
450 model1
.addColumn("SKU ID");
451 model1
.addColumn("SKU Name");
453 jTable1
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
454 jTable1
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
455 public void valueChanged(ListSelectionEvent e
) {
456 if (jTable
.getSelectedRow() < 0) {
459 if (e
.getValueIsAdjusting()){
462 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
463 if (lsm
.isSelectionEmpty()) {
467 int selected
= lsm
.getMinSelectionIndex();
477 * This method initializes jButton
479 * @return javax.swing.JButton
481 private JButton
getJButton() {
482 if (jButton
== null) {
483 jButton
= new JButton();
484 jButton
.setPreferredSize(new java
.awt
.Dimension(180,20));
485 jButton
.setText(" Update SKU Information");
486 jButton
.addActionListener(new java
.awt
.event
.ActionListener() {
487 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
488 int pcdSelected
= jTable
.getSelectedRow();
489 if (pcdSelected
< 0) {
493 updateSkuInfo(pcdSelected
);
501 private void updateSkuInfo (int pcdSelected
) {
502 int skuCount
= ffc
.getDynamicPcdSkuInfoCount(pcdSelected
);
504 String varName
= null;
505 String varGuid
= null;
506 String varOffset
= null;
507 String hiiDefault
= null;
509 String vpdOffset
= null;
510 if (jRadioButton
.isSelected()) {
511 varName
= jTextField
.getText();
512 varGuid
= jTextField1
.getText();
513 varOffset
= jTextField2
.getText();
514 hiiDefault
= jTextField3
.getText();
516 if (jRadioButton1
.isSelected()) {
517 vpdOffset
= jTextField4
.getText();
519 if (jRadioButton2
.isSelected()) {
520 value
= jTextField5
.getText();
523 // SKU disabled. only modify data for default SKU.
525 if (!jCheckBox
.isSelected()) {
527 ffc
.removeDynamicPcdBuildDataSkuInfo(pcdSelected
);
528 if (jRadioButton
.isSelected()) {
529 ffc
.genDynamicPcdBuildDataSkuInfo("0", varName
, varGuid
, varOffset
, hiiDefault
, null, null, pcdSelected
);
531 else if (jRadioButton1
.isSelected()){
532 ffc
.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset
, null, pcdSelected
);
535 ffc
.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value
, pcdSelected
);
540 // SKU Enabled, need add data to all SKUs.
542 if (jCheckBox
.isSelected()) {
545 for (int i
= 1; i
< jTable1
.getRowCount(); ++i
) {
546 ffc
.genDynamicPcdBuildDataSkuInfo(jTable1
.getValueAt(i
, 0)+"", varName
, varGuid
, varOffset
, hiiDefault
, vpdOffset
, value
, pcdSelected
);
550 int row
= jTable1
.getSelectedRow();
554 ffc
.updateDynamicPcdBuildDataSkuInfo(jTable1
.getValueAt(row
, 0)+"", varName
, varGuid
, varOffset
, hiiDefault
, vpdOffset
, value
, pcdSelected
);
559 * This method initializes jTextField
561 * @return javax.swing.JTextField
563 private JTextField
getJTextField() {
564 if (jTextField
== null) {
565 jTextField
= new JTextField();
566 jTextField
.setPreferredSize(new java
.awt
.Dimension(150,20));
567 jTextField
.setEnabled(false);
573 * This method initializes jTextField1
575 * @return javax.swing.JTextField
577 private JTextField
getJTextField1() {
578 if (jTextField1
== null) {
579 jTextField1
= new JTextField();
580 jTextField1
.setPreferredSize(new java
.awt
.Dimension(150,20));
581 jTextField1
.setEnabled(false);
587 * This method initializes jTextField2
589 * @return javax.swing.JTextField
591 private JTextField
getJTextField2() {
592 if (jTextField2
== null) {
593 jTextField2
= new JTextField();
594 jTextField2
.setPreferredSize(new java
.awt
.Dimension(150,20));
595 jTextField2
.setEnabled(false);
601 * This method initializes jTextField3
603 * @return javax.swing.JTextField
605 private JTextField
getJTextField3() {
606 if (jTextField3
== null) {
607 jTextField3
= new JTextField();
608 jTextField3
.setPreferredSize(new java
.awt
.Dimension(150,20));
609 jTextField3
.setEnabled(false);
615 * This method initializes jTextField4
617 * @return javax.swing.JTextField
619 private JTextField
getJTextField4() {
620 if (jTextField4
== null) {
621 jTextField4
= new JTextField();
622 jTextField4
.setPreferredSize(new java
.awt
.Dimension(150,20));
623 jTextField4
.setEnabled(false);
629 * This method initializes jTextField5
631 * @return javax.swing.JTextField
633 private JTextField
getJTextField5() {
634 if (jTextField5
== null) {
635 jTextField5
= new JTextField();
636 jTextField5
.setPreferredSize(new java
.awt
.Dimension(150,20));
642 * This method initializes jRadioButton2
644 * @return javax.swing.JRadioButton
646 private JRadioButton
getJRadioButton2() {
647 if (jRadioButton2
== null) {
648 jRadioButton2
= new JRadioButton();
649 jRadioButton2
.setText("Default PCD Value");
650 jRadioButton2
.setSelected(true);
651 jRadioButton2
.setPreferredSize(new java
.awt
.Dimension(175,20));
652 jRadioButton2
.addItemListener(new java
.awt
.event
.ItemListener() {
653 public void itemStateChanged(java
.awt
.event
.ItemEvent e
) {
654 jTextField5
.setEnabled(jRadioButton2
.isSelected());
657 bg
.add(jRadioButton2
);
659 return jRadioButton2
;
662 } // @jve:decl-index=0:visual-constraint="10,10"
664 class DynPcdTableModel
extends DefaultTableModel
{
665 public boolean isCellEditable(int row
, int col
) {