]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java
0a96224da3fcaaa1811e2486517389f593ecdf61
[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.Identifications.OpeningPlatformType;
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;
23
24 public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
25
26 /**
27 *
28 */
29 private static final long serialVersionUID = 1L;
30 private JPanel jContentPane = null;
31 private JPanel jPanel = null;
32 private JPanel jPanel1 = null;
33 private JPanel jPanel2 = null;
34 private JScrollPane jScrollPane = null;
35 private JTable jTable = null;
36 private DynPcdTableModel model = null;
37 private DynPcdTableModel model1 = null;
38 private FpdFileContents ffc = null;
39 private OpeningPlatformType docConsole = null;
40 private JPanel jPanel3 = null;
41 private JCheckBox jCheckBox = null;
42 private JPanel jPanel4 = null;
43 private JRadioButton jRadioButton = null;
44 private JRadioButton jRadioButton1 = null;
45 private JScrollPane jScrollPane1 = null;
46 private JTable jTable1 = null;
47 private JButton jButton = null;
48 private JLabel jLabel = null;
49 private JTextField jTextField = null;
50 private JLabel jLabel1 = null;
51 private JTextField jTextField1 = null;
52 private JLabel jLabel2 = null;
53 private JLabel jLabel3 = null;
54 private JTextField jTextField2 = null;
55 private JLabel jLabel4 = null;
56 private JTextField jTextField3 = null;
57 private JTextField jTextField4 = null;
58 private JLabel jLabel5 = null;
59 private JTextField jTextField5 = null;
60 private JRadioButton jRadioButton2 = null;
61 private ButtonGroup bg = new ButtonGroup();
62 private JLabel jLabel6 = null;
63 /**
64 * This is the default constructor
65 */
66 public FpdDynamicPcdBuildDefinitions() {
67 super();
68 initialize();
69 }
70
71 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){
72 this();
73 init(fpd);
74 }
75
76 public FpdDynamicPcdBuildDefinitions(OpeningPlatformType opt) {
77 this(opt.getXmlFpd());
78 docConsole = opt;
79 }
80
81 public void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {
82 if (ffc == null) {
83 ffc = new FpdFileContents(fpd);
84 }
85 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];
86 ffc.getDynamicPcdBuildData(saa);
87 for (int i = 0; i < saa.length; ++i) {
88 model.addRow(saa[i]);
89 }
90
91 saa = new String[ffc.getPlatformDefsSkuInfoCount()][2];
92 ffc.getPlatformDefsSkuInfos(saa);
93 for (int i = 0; i < saa.length; ++i) {
94 model1.addRow(saa[i]);
95 }
96
97 }
98 /**
99 * This method initializes this
100 *
101 * @return void
102 */
103 private void initialize() {
104 this.setSize(661, 558);
105 this.setTitle("Dynamic PCD Build Definitions");
106 this.setContentPane(getJContentPane());
107 this.setVisible(true);
108 }
109
110 /**
111 * This method initializes jContentPane
112 *
113 * @return javax.swing.JPanel
114 */
115 private JPanel getJContentPane() {
116 if (jContentPane == null) {
117 jContentPane = new JPanel();
118 jContentPane.setLayout(new BorderLayout());
119 jContentPane.add(getJPanel(), java.awt.BorderLayout.NORTH);
120 jContentPane.add(getJPanel1(), java.awt.BorderLayout.CENTER);
121 jContentPane.add(getJPanel2(), java.awt.BorderLayout.SOUTH);
122 }
123 return jContentPane;
124 }
125
126 /**
127 * This method initializes jPanel
128 *
129 * @return javax.swing.JPanel
130 */
131 private JPanel getJPanel() {
132 if (jPanel == null) {
133 jPanel = new JPanel();
134 }
135 return jPanel;
136 }
137
138 /**
139 * This method initializes jPanel1
140 *
141 * @return javax.swing.JPanel
142 */
143 private JPanel getJPanel1() {
144 if (jPanel1 == null) {
145 jPanel1 = new JPanel();
146 jPanel1.add(getJScrollPane(), null);
147 jPanel1.add(getJPanel3(), null);
148 jPanel1.add(getJPanel4(), null);
149 }
150 return jPanel1;
151 }
152
153 /**
154 * This method initializes jPanel2
155 *
156 * @return javax.swing.JPanel
157 */
158 private JPanel getJPanel2() {
159 if (jPanel2 == null) {
160 jPanel2 = new JPanel();
161 }
162 return jPanel2;
163 }
164
165 /**
166 * This method initializes jScrollPane
167 *
168 * @return javax.swing.JScrollPane
169 */
170 private JScrollPane getJScrollPane() {
171 if (jScrollPane == null) {
172 jScrollPane = new JScrollPane();
173 jScrollPane.setPreferredSize(new java.awt.Dimension(600,200));
174 jScrollPane.setViewportView(getJTable());
175 }
176 return jScrollPane;
177 }
178
179 /**
180 * This method initializes jTable
181 *
182 * @return javax.swing.JTable
183 */
184 private JTable getJTable() {
185 if (jTable == null) {
186 model = new DynPcdTableModel();
187 model.addColumn("CName");
188 model.addColumn("Token");
189 model.addColumn("TokenSpaceGuid");
190 model.addColumn("MaxDatumSize");
191 model.addColumn("DatumType");
192 jTable = new JTable(model);
193 jTable.setRowHeight(20);
194 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
195 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
196 public void valueChanged(ListSelectionEvent e) {
197 if (e.getValueIsAdjusting()){
198 return;
199 }
200 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
201 if (lsm.isSelectionEmpty()) {
202 return;
203 }
204 else{
205 int selectedRow = lsm.getMinSelectionIndex();
206
207 displayDetails(selectedRow);
208 }
209 }
210 });
211 }
212 return jTable;
213 }
214 //
215 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table.
216 //
217 private void displayDetails(int i) {
218 jTable1.changeSelection(0, 1, false, false);
219 int skuCount = ffc.getDynamicPcdSkuInfoCount(i);
220 String defaultVal = ffc.getDynamicPcdBuildDataValue(i);
221 if (defaultVal != null) {
222 jRadioButton2.setSelected(true);
223 jTextField5.setText(defaultVal);
224 if ( skuCount == 1) {
225 jCheckBox.setSelected(false);
226 }
227 else{
228 jCheckBox.setSelected(true);
229 }
230 }
231
232 else if (ffc.getDynamicPcdBuildDataVpdOffset(i) != null) {
233 jRadioButton1.setSelected(true);
234 jTextField4.setText(ffc.getDynamicPcdBuildDataVpdOffset(i));
235 if (skuCount ==1) {
236 jCheckBox.setSelected(false);
237
238 }
239 else{
240 jCheckBox.setSelected(true);
241 }
242 }
243 else {
244 jRadioButton.setSelected(true);
245 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(i)][7];
246 ffc.getDynamicPcdSkuInfos(i, saa);
247 jTextField.setText(saa[0][1]);
248 jTextField1.setText(saa[0][2]);
249 jTextField2.setText(saa[0][3]);
250 jTextField3.setText(saa[0][4]);
251 if (skuCount ==1) {
252 jCheckBox.setSelected(false);
253 }
254 else{
255 jCheckBox.setSelected(true);
256 }
257 }
258
259 }
260
261 private void displaySkuInfoDetails(int i) {
262 int pcdSelected = jTable.getSelectedRow();
263 if (pcdSelected < 0) {
264 return;
265 }
266
267 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(pcdSelected)][7];
268 ffc.getDynamicPcdSkuInfos(pcdSelected, saa);
269
270 if (saa[i][5] != null){
271 jRadioButton1.setSelected(true);
272 jTextField4.setText(saa[i][5]);
273 }
274
275 else if (saa[i][1] != null) {
276 jRadioButton.setSelected(true);
277 jTextField.setText(saa[i][1]);
278 jTextField1.setText(saa[i][2]);
279 jTextField2.setText(saa[i][3]);
280 jTextField3.setText(saa[i][4]);
281 }
282
283 else{
284 jRadioButton2.setSelected(true);
285 jTextField5.setText(saa[i][6]);
286 }
287
288 }
289
290 /**
291 * This method initializes jPanel3
292 *
293 * @return javax.swing.JPanel
294 */
295 private JPanel getJPanel3() {
296 if (jPanel3 == null) {
297 FlowLayout flowLayout = new FlowLayout();
298 flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
299 jPanel3 = new JPanel();
300 jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
301 jPanel3.setLayout(flowLayout);
302 jPanel3.setPreferredSize(new java.awt.Dimension(600,100));
303 jPanel3.add(getJCheckBox(), null);
304 jPanel3.add(getJScrollPane1(), null);
305 jPanel3.add(getJButton(), null);
306 }
307 return jPanel3;
308 }
309
310 /**
311 * This method initializes jCheckBox
312 *
313 * @return javax.swing.JCheckBox
314 */
315 private JCheckBox getJCheckBox() {
316 if (jCheckBox == null) {
317 jCheckBox = new JCheckBox();
318 jCheckBox.setText("SKU Enable");
319 jCheckBox.addItemListener(new java.awt.event.ItemListener() {
320 public void itemStateChanged(java.awt.event.ItemEvent e) {
321 jTable1.setEnabled(jCheckBox.isSelected());
322 }
323 });
324 }
325 return jCheckBox;
326 }
327
328
329 /**
330 * This method initializes jPanel4
331 *
332 * @return javax.swing.JPanel
333 */
334 private JPanel getJPanel4() {
335 if (jPanel4 == null) {
336 jLabel5 = new JLabel();
337 jLabel5.setPreferredSize(new java.awt.Dimension(80,20));
338 jLabel5.setText("VPD Offset");
339 jLabel4 = new JLabel();
340 jLabel4.setPreferredSize(new java.awt.Dimension(100,20));
341 jLabel4.setText("HII Default Value");
342 jLabel3 = new JLabel();
343 jLabel3.setText("Variable Offset");
344 jLabel3.setPreferredSize(new java.awt.Dimension(90,20));
345 jLabel2 = new JLabel();
346 jLabel2.setText(" ");
347 jLabel1 = new JLabel();
348 jLabel1.setText("Variable GUID");
349 jLabel1.setPreferredSize(new java.awt.Dimension(100,20));
350 jLabel = new JLabel();
351 jLabel.setText("Variable Name");
352 jLabel.setToolTipText("");
353 jLabel.setPreferredSize(new java.awt.Dimension(90,20));
354 FlowLayout flowLayout1 = new FlowLayout();
355 flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);
356 jPanel4 = new JPanel();
357 jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));
358 jPanel4.setLayout(flowLayout1);
359 jPanel4.setPreferredSize(new java.awt.Dimension(600,120));
360 jPanel4.add(getJRadioButton(), null);
361 jPanel4.add(jLabel, null);
362 jPanel4.add(getJTextField(), null);
363 jPanel4.add(jLabel1, null);
364 jPanel4.add(getJTextField1(), null);
365 jPanel4.add(jLabel2, null);
366 jPanel4.add(jLabel3, null);
367 jPanel4.add(getJTextField2(), null);
368 jPanel4.add(jLabel4, null);
369 jPanel4.add(getJTextField3(), null);
370 jPanel4.add(getJRadioButton1(), null);
371 jPanel4.add(jLabel5, null);
372 jPanel4.add(getJTextField4(), null);
373 jLabel6 = new JLabel();
374 jLabel6.setText(" ");
375 jPanel4.add(jLabel6, null);
376 jLabel.setEnabled(false);
377 jLabel1.setEnabled(false);
378 jLabel4.setEnabled(false);
379 jLabel3.setEnabled(false);
380 jLabel5.setEnabled(false);
381 jPanel4.add(getJRadioButton2(), null);
382 jPanel4.add(getJTextField5(), null);
383 bg.add(jRadioButton);
384 bg.add(jRadioButton1);
385 }
386
387 return jPanel4;
388 }
389
390 /**
391 * This method initializes jRadioButton
392 *
393 * @return javax.swing.JRadioButton
394 */
395 private JRadioButton getJRadioButton() {
396 if (jRadioButton == null) {
397 jRadioButton = new JRadioButton();
398 jRadioButton.setText("HII Enable");
399 jRadioButton.addItemListener(new java.awt.event.ItemListener() {
400 public void itemStateChanged(java.awt.event.ItemEvent e) {
401 boolean selected = jRadioButton.isSelected();
402 jLabel.setEnabled(selected);
403 jLabel1.setEnabled(selected);
404 jLabel2.setEnabled(selected);
405 jLabel3.setEnabled(selected);
406 jLabel4.setEnabled(selected);
407 jTextField.setEnabled(selected);
408 jTextField1.setEnabled(selected);
409 jTextField2.setEnabled(selected);
410 jTextField3.setEnabled(selected);
411 }
412 });
413 }
414 return jRadioButton;
415 }
416
417 /**
418 * This method initializes jRadioButton1
419 *
420 * @return javax.swing.JRadioButton
421 */
422 private JRadioButton getJRadioButton1() {
423 if (jRadioButton1 == null) {
424 jRadioButton1 = new JRadioButton();
425 jRadioButton1.setText("VPD Enable");
426 jRadioButton1.addItemListener(new java.awt.event.ItemListener() {
427 public void itemStateChanged(java.awt.event.ItemEvent e) {
428 boolean selected = jRadioButton1.isSelected();
429 jTextField4.setEnabled(selected);
430 jLabel5.setEnabled(selected);
431 }
432 });
433 }
434 return jRadioButton1;
435 }
436
437 /**
438 * This method initializes jScrollPane1
439 *
440 * @return javax.swing.JScrollPane
441 */
442 private JScrollPane getJScrollPane1() {
443 if (jScrollPane1 == null) {
444 jScrollPane1 = new JScrollPane();
445 jScrollPane1.setPreferredSize(new java.awt.Dimension(300,80));
446 jScrollPane1.setViewportView(getJTable1());
447 }
448 return jScrollPane1;
449 }
450
451 /**
452 * This method initializes jTable1
453 *
454 * @return javax.swing.JTable
455 */
456 private JTable getJTable1() {
457 if (jTable1 == null) {
458 model1 = new DynPcdTableModel();
459 jTable1 = new JTable(model1);
460 model1.addColumn("SKU ID");
461 model1.addColumn("SKU Name");
462
463 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
464 jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
465 public void valueChanged(ListSelectionEvent e) {
466 if (jTable.getSelectedRow() < 0) {
467 return;
468 }
469 if (e.getValueIsAdjusting()){
470 return;
471 }
472 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
473 if (lsm.isSelectionEmpty()) {
474 return;
475 }
476 else{
477 int selected = lsm.getMinSelectionIndex();
478 displaySkuInfoDetails(selected);
479 }
480 }
481 });
482 }
483 return jTable1;
484 }
485
486 /**
487 * This method initializes jButton
488 *
489 * @return javax.swing.JButton
490 */
491 private JButton getJButton() {
492 if (jButton == null) {
493 jButton = new JButton();
494 jButton.setPreferredSize(new java.awt.Dimension(180,20));
495 jButton.setText(" Update SKU Information");
496 jButton.addActionListener(new java.awt.event.ActionListener() {
497 public void actionPerformed(java.awt.event.ActionEvent e) {
498 int pcdSelected = jTable.getSelectedRow();
499 if (pcdSelected < 0) {
500 return;
501 }
502 docConsole.setSaved(false);
503 updateSkuInfo(pcdSelected);
504
505 }
506 });
507 }
508 return jButton;
509 }
510
511 private void updateSkuInfo (int pcdSelected) {
512 int skuCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);
513
514 String varName = null;
515 String varGuid = null;
516 String varOffset = null;
517 String hiiDefault = null;
518 String value = null;
519 String vpdOffset = null;
520 if (jRadioButton.isSelected()) {
521 varName = jTextField.getText();
522 varGuid = jTextField1.getText();
523 varOffset = jTextField2.getText();
524 hiiDefault = jTextField3.getText();
525 }
526 if (jRadioButton1.isSelected()) {
527 vpdOffset = jTextField4.getText();
528 }
529 if (jRadioButton2.isSelected()) {
530 value = jTextField5.getText();
531 }
532 //
533 // SKU disabled. only modify data for default SKU.
534 //
535 if (!jCheckBox.isSelected()) {
536 if (true) {
537 ffc.removeDynamicPcdBuildDataSkuInfo(pcdSelected);
538 if (jRadioButton.isSelected()) {
539 ffc.genDynamicPcdBuildDataSkuInfo("0", varName, varGuid, varOffset, hiiDefault, null, null, pcdSelected);
540 }
541 else if (jRadioButton1.isSelected()){
542 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset, null, pcdSelected);
543 }
544 else{
545 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value, pcdSelected);
546 }
547 }
548 }
549 //
550 // SKU Enabled, need add data to all SKUs.
551 //
552 if (jCheckBox.isSelected()) {
553 if (skuCount == 1) {
554
555 for (int i = 1; i < jTable1.getRowCount(); ++i) {
556 ffc.genDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
557 }
558 }
559 else {
560 int row = jTable1.getSelectedRow();
561 if (row < 0) {
562 return;
563 }
564 ffc.updateDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
565 }
566 }
567 }
568 /**
569 * This method initializes jTextField
570 *
571 * @return javax.swing.JTextField
572 */
573 private JTextField getJTextField() {
574 if (jTextField == null) {
575 jTextField = new JTextField();
576 jTextField.setPreferredSize(new java.awt.Dimension(150,20));
577 jTextField.setEnabled(false);
578 }
579 return jTextField;
580 }
581
582 /**
583 * This method initializes jTextField1
584 *
585 * @return javax.swing.JTextField
586 */
587 private JTextField getJTextField1() {
588 if (jTextField1 == null) {
589 jTextField1 = new JTextField();
590 jTextField1.setPreferredSize(new java.awt.Dimension(150,20));
591 jTextField1.setEnabled(false);
592 }
593 return jTextField1;
594 }
595
596 /**
597 * This method initializes jTextField2
598 *
599 * @return javax.swing.JTextField
600 */
601 private JTextField getJTextField2() {
602 if (jTextField2 == null) {
603 jTextField2 = new JTextField();
604 jTextField2.setPreferredSize(new java.awt.Dimension(150,20));
605 jTextField2.setEnabled(false);
606 }
607 return jTextField2;
608 }
609
610 /**
611 * This method initializes jTextField3
612 *
613 * @return javax.swing.JTextField
614 */
615 private JTextField getJTextField3() {
616 if (jTextField3 == null) {
617 jTextField3 = new JTextField();
618 jTextField3.setPreferredSize(new java.awt.Dimension(150,20));
619 jTextField3.setEnabled(false);
620 }
621 return jTextField3;
622 }
623
624 /**
625 * This method initializes jTextField4
626 *
627 * @return javax.swing.JTextField
628 */
629 private JTextField getJTextField4() {
630 if (jTextField4 == null) {
631 jTextField4 = new JTextField();
632 jTextField4.setPreferredSize(new java.awt.Dimension(150,20));
633 jTextField4.setEnabled(false);
634 }
635 return jTextField4;
636 }
637
638 /**
639 * This method initializes jTextField5
640 *
641 * @return javax.swing.JTextField
642 */
643 private JTextField getJTextField5() {
644 if (jTextField5 == null) {
645 jTextField5 = new JTextField();
646 jTextField5.setPreferredSize(new java.awt.Dimension(150,20));
647 }
648 return jTextField5;
649 }
650
651 /**
652 * This method initializes jRadioButton2
653 *
654 * @return javax.swing.JRadioButton
655 */
656 private JRadioButton getJRadioButton2() {
657 if (jRadioButton2 == null) {
658 jRadioButton2 = new JRadioButton();
659 jRadioButton2.setText("Default PCD Value");
660 jRadioButton2.setSelected(true);
661 jRadioButton2.setPreferredSize(new java.awt.Dimension(175,20));
662 jRadioButton2.addItemListener(new java.awt.event.ItemListener() {
663 public void itemStateChanged(java.awt.event.ItemEvent e) {
664 jTextField5.setEnabled(jRadioButton2.isSelected());
665 }
666 });
667 bg.add(jRadioButton2);
668 }
669 return jRadioButton2;
670 }
671
672 } // @jve:decl-index=0:visual-constraint="10,10"
673
674 class DynPcdTableModel extends DefaultTableModel {
675 /**
676 *
677 */
678 private static final long serialVersionUID = 1L;
679
680 public boolean isCellEditable(int row, int col) {
681
682 return false;
683 }
684 }