]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@710 6f19259b...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdDynamicPcdBuildDefinitions.java
1 package org.tianocore.frameworkwizard.platform.ui;
2
3 import java.awt.BorderLayout;
4
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;
13
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;
22
23 public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
24
25 /**
26 *
27 */
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;
61 /**
62 * This is the default constructor
63 */
64 public FpdDynamicPcdBuildDefinitions() {
65 super();
66 initialize();
67 }
68
69 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){
70 this();
71 init(fpd);
72 }
73
74 public void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {
75 if (ffc == null) {
76 ffc = new FpdFileContents(fpd);
77 }
78 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];
79 ffc.getDynamicPcdBuildData(saa);
80 for (int i = 0; i < saa.length; ++i) {
81 model.addRow(saa[i]);
82 }
83
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]);
88 }
89
90 }
91 /**
92 * This method initializes this
93 *
94 * @return void
95 */
96 private void initialize() {
97 this.setSize(661, 558);
98 this.setTitle("Dynamic PCD Build Definitions");
99 this.setContentPane(getJContentPane());
100 this.setVisible(true);
101 }
102
103 /**
104 * This method initializes jContentPane
105 *
106 * @return javax.swing.JPanel
107 */
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);
115 }
116 return jContentPane;
117 }
118
119 /**
120 * This method initializes jPanel
121 *
122 * @return javax.swing.JPanel
123 */
124 private JPanel getJPanel() {
125 if (jPanel == null) {
126 jPanel = new JPanel();
127 }
128 return jPanel;
129 }
130
131 /**
132 * This method initializes jPanel1
133 *
134 * @return javax.swing.JPanel
135 */
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);
142 }
143 return jPanel1;
144 }
145
146 /**
147 * This method initializes jPanel2
148 *
149 * @return javax.swing.JPanel
150 */
151 private JPanel getJPanel2() {
152 if (jPanel2 == null) {
153 jPanel2 = new JPanel();
154 }
155 return jPanel2;
156 }
157
158 /**
159 * This method initializes jScrollPane
160 *
161 * @return javax.swing.JScrollPane
162 */
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());
168 }
169 return jScrollPane;
170 }
171
172 /**
173 * This method initializes jTable
174 *
175 * @return javax.swing.JTable
176 */
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);
186
187 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
188 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
189 public void valueChanged(ListSelectionEvent e) {
190 if (e.getValueIsAdjusting()){
191 return;
192 }
193 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
194 if (lsm.isSelectionEmpty()) {
195 return;
196 }
197 else{
198 int selectedRow = lsm.getMinSelectionIndex();
199
200 displayDetails(selectedRow);
201 }
202 }
203 });
204 }
205 return jTable;
206 }
207 //
208 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table.
209 //
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);
219 }
220 else{
221 jCheckBox.setSelected(true);
222 }
223 }
224
225 else if (ffc.getDynamicPcdBuildDataVpdOffset(i) != null) {
226 jRadioButton1.setSelected(true);
227 jTextField4.setText(ffc.getDynamicPcdBuildDataVpdOffset(i));
228 if (skuCount ==1) {
229 jCheckBox.setSelected(false);
230
231 }
232 else{
233 jCheckBox.setSelected(true);
234 }
235 }
236 else {
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]);
244 if (skuCount ==1) {
245 jCheckBox.setSelected(false);
246 }
247 else{
248 jCheckBox.setSelected(true);
249 }
250 }
251
252 }
253
254 private void displaySkuInfoDetails(int i) {
255 int pcdSelected = jTable.getSelectedRow();
256 if (pcdSelected < 0) {
257 return;
258 }
259
260 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(pcdSelected)][7];
261 ffc.getDynamicPcdSkuInfos(pcdSelected, saa);
262
263 if (saa[i][5] != null){
264 jRadioButton1.setSelected(true);
265 jTextField4.setText(saa[i][5]);
266 }
267
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]);
274 }
275
276 else{
277 jRadioButton2.setSelected(true);
278 jTextField5.setText(saa[i][6]);
279 }
280
281 }
282
283 /**
284 * This method initializes jPanel3
285 *
286 * @return javax.swing.JPanel
287 */
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);
299 }
300 return jPanel3;
301 }
302
303 /**
304 * This method initializes jCheckBox
305 *
306 * @return javax.swing.JCheckBox
307 */
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());
315 }
316 });
317 }
318 return jCheckBox;
319 }
320
321
322 /**
323 * This method initializes jPanel4
324 *
325 * @return javax.swing.JPanel
326 */
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);
378 }
379
380 return jPanel4;
381 }
382
383 /**
384 * This method initializes jRadioButton
385 *
386 * @return javax.swing.JRadioButton
387 */
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);
404 }
405 });
406 }
407 return jRadioButton;
408 }
409
410 /**
411 * This method initializes jRadioButton1
412 *
413 * @return javax.swing.JRadioButton
414 */
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);
424 }
425 });
426 }
427 return jRadioButton1;
428 }
429
430 /**
431 * This method initializes jScrollPane1
432 *
433 * @return javax.swing.JScrollPane
434 */
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());
440 }
441 return jScrollPane1;
442 }
443
444 /**
445 * This method initializes jTable1
446 *
447 * @return javax.swing.JTable
448 */
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");
455
456 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
457 jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
458 public void valueChanged(ListSelectionEvent e) {
459 if (jTable.getSelectedRow() < 0) {
460 return;
461 }
462 if (e.getValueIsAdjusting()){
463 return;
464 }
465 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
466 if (lsm.isSelectionEmpty()) {
467 return;
468 }
469 else{
470 int selected = lsm.getMinSelectionIndex();
471 displaySkuInfoDetails(selected);
472 }
473 }
474 });
475 }
476 return jTable1;
477 }
478
479 /**
480 * This method initializes jButton
481 *
482 * @return javax.swing.JButton
483 */
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) {
493 return;
494 }
495
496 updateSkuInfo(pcdSelected);
497
498 }
499 });
500 }
501 return jButton;
502 }
503
504 private void updateSkuInfo (int pcdSelected) {
505 int skuCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);
506
507 String varName = null;
508 String varGuid = null;
509 String varOffset = null;
510 String hiiDefault = null;
511 String value = 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();
518 }
519 if (jRadioButton1.isSelected()) {
520 vpdOffset = jTextField4.getText();
521 }
522 if (jRadioButton2.isSelected()) {
523 value = jTextField5.getText();
524 }
525 //
526 // SKU disabled. only modify data for default SKU.
527 //
528 if (!jCheckBox.isSelected()) {
529 if (true) {
530 ffc.removeDynamicPcdBuildDataSkuInfo(pcdSelected);
531 if (jRadioButton.isSelected()) {
532 ffc.genDynamicPcdBuildDataSkuInfo("0", varName, varGuid, varOffset, hiiDefault, null, null, pcdSelected);
533 }
534 else if (jRadioButton1.isSelected()){
535 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset, null, pcdSelected);
536 }
537 else{
538 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value, pcdSelected);
539 }
540 }
541 }
542 //
543 // SKU Enabled, need add data to all SKUs.
544 //
545 if (jCheckBox.isSelected()) {
546 if (skuCount == 1) {
547
548 for (int i = 1; i < jTable1.getRowCount(); ++i) {
549 ffc.genDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
550 }
551 }
552 else {
553 int row = jTable1.getSelectedRow();
554 if (row < 0) {
555 return;
556 }
557 ffc.updateDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
558 }
559 }
560 }
561 /**
562 * This method initializes jTextField
563 *
564 * @return javax.swing.JTextField
565 */
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);
571 }
572 return jTextField;
573 }
574
575 /**
576 * This method initializes jTextField1
577 *
578 * @return javax.swing.JTextField
579 */
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);
585 }
586 return jTextField1;
587 }
588
589 /**
590 * This method initializes jTextField2
591 *
592 * @return javax.swing.JTextField
593 */
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);
599 }
600 return jTextField2;
601 }
602
603 /**
604 * This method initializes jTextField3
605 *
606 * @return javax.swing.JTextField
607 */
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);
613 }
614 return jTextField3;
615 }
616
617 /**
618 * This method initializes jTextField4
619 *
620 * @return javax.swing.JTextField
621 */
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);
627 }
628 return jTextField4;
629 }
630
631 /**
632 * This method initializes jTextField5
633 *
634 * @return javax.swing.JTextField
635 */
636 private JTextField getJTextField5() {
637 if (jTextField5 == null) {
638 jTextField5 = new JTextField();
639 jTextField5.setPreferredSize(new java.awt.Dimension(150,20));
640 }
641 return jTextField5;
642 }
643
644 /**
645 * This method initializes jRadioButton2
646 *
647 * @return javax.swing.JRadioButton
648 */
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());
658 }
659 });
660 bg.add(jRadioButton2);
661 }
662 return jRadioButton2;
663 }
664
665 } // @jve:decl-index=0:visual-constraint="10,10"
666
667 class DynPcdTableModel extends DefaultTableModel {
668 /**
669 *
670 */
671 private static final long serialVersionUID = 1L;
672
673 public boolean isCellEditable(int row, int col) {
674
675 return false;
676 }
677 }