]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java
155f4f48d4e05d3dce13d817a9ef2b1001c6d6ed
[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.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;
14
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;
23
24 public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
25
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;
58 /**
59 * This is the default constructor
60 */
61 public FpdDynamicPcdBuildDefinitions() {
62 super();
63 initialize();
64 }
65
66 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){
67 this();
68 init(fpd);
69 }
70
71 public void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {
72 if (ffc == null) {
73 ffc = new FpdFileContents(fpd);
74 }
75 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];
76 ffc.getDynamicPcdBuildData(saa);
77 for (int i = 0; i < saa.length; ++i) {
78 model.addRow(saa[i]);
79 }
80
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]);
85 }
86
87 }
88 /**
89 * This method initializes this
90 *
91 * @return void
92 */
93 private void initialize() {
94 this.setSize(661, 558);
95 this.setTitle("Dynamic PCD Build Definitions");
96 this.setContentPane(getJContentPane());
97 this.setVisible(true);
98 }
99
100 /**
101 * This method initializes jContentPane
102 *
103 * @return javax.swing.JPanel
104 */
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);
112 }
113 return jContentPane;
114 }
115
116 /**
117 * This method initializes jPanel
118 *
119 * @return javax.swing.JPanel
120 */
121 private JPanel getJPanel() {
122 if (jPanel == null) {
123 jPanel = new JPanel();
124 }
125 return jPanel;
126 }
127
128 /**
129 * This method initializes jPanel1
130 *
131 * @return javax.swing.JPanel
132 */
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);
139 }
140 return jPanel1;
141 }
142
143 /**
144 * This method initializes jPanel2
145 *
146 * @return javax.swing.JPanel
147 */
148 private JPanel getJPanel2() {
149 if (jPanel2 == null) {
150 jPanel2 = new JPanel();
151 }
152 return jPanel2;
153 }
154
155 /**
156 * This method initializes jScrollPane
157 *
158 * @return javax.swing.JScrollPane
159 */
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());
165 }
166 return jScrollPane;
167 }
168
169 /**
170 * This method initializes jTable
171 *
172 * @return javax.swing.JTable
173 */
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);
183
184 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
185 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
186 public void valueChanged(ListSelectionEvent e) {
187 if (e.getValueIsAdjusting()){
188 return;
189 }
190 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
191 if (lsm.isSelectionEmpty()) {
192 return;
193 }
194 else{
195 int selectedRow = lsm.getMinSelectionIndex();
196
197 displayDetails(selectedRow);
198 }
199 }
200 });
201 }
202 return jTable;
203 }
204 //
205 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table.
206 //
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);
216 }
217 else{
218 jCheckBox.setSelected(true);
219 }
220 }
221
222 else if (ffc.getDynamicPcdBuildDataVpdOffset(i) != null) {
223 jRadioButton1.setSelected(true);
224 jTextField4.setText(ffc.getDynamicPcdBuildDataVpdOffset(i));
225 if (skuCount ==1) {
226 jCheckBox.setSelected(false);
227
228 }
229 else{
230 jCheckBox.setSelected(true);
231 }
232 }
233 else {
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]);
241 if (skuCount ==1) {
242 jCheckBox.setSelected(false);
243 }
244 else{
245 jCheckBox.setSelected(true);
246 }
247 }
248
249 }
250
251 private void displaySkuInfoDetails(int i) {
252 int pcdSelected = jTable.getSelectedRow();
253 if (pcdSelected < 0) {
254 return;
255 }
256
257 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(pcdSelected)][7];
258 ffc.getDynamicPcdSkuInfos(pcdSelected, saa);
259
260 if (saa[i][5] != null){
261 jRadioButton1.setSelected(true);
262 jTextField4.setText(saa[i][5]);
263 }
264
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]);
271 }
272
273 else{
274 jRadioButton2.setSelected(true);
275 jTextField5.setText(saa[i][6]);
276 }
277
278 }
279
280 /**
281 * This method initializes jPanel3
282 *
283 * @return javax.swing.JPanel
284 */
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);
296 }
297 return jPanel3;
298 }
299
300 /**
301 * This method initializes jCheckBox
302 *
303 * @return javax.swing.JCheckBox
304 */
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());
312 }
313 });
314 }
315 return jCheckBox;
316 }
317
318
319 /**
320 * This method initializes jPanel4
321 *
322 * @return javax.swing.JPanel
323 */
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);
375 }
376
377 return jPanel4;
378 }
379
380 /**
381 * This method initializes jRadioButton
382 *
383 * @return javax.swing.JRadioButton
384 */
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);
401 }
402 });
403 }
404 return jRadioButton;
405 }
406
407 /**
408 * This method initializes jRadioButton1
409 *
410 * @return javax.swing.JRadioButton
411 */
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);
421 }
422 });
423 }
424 return jRadioButton1;
425 }
426
427 /**
428 * This method initializes jScrollPane1
429 *
430 * @return javax.swing.JScrollPane
431 */
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());
437 }
438 return jScrollPane1;
439 }
440
441 /**
442 * This method initializes jTable1
443 *
444 * @return javax.swing.JTable
445 */
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");
452
453 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
454 jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
455 public void valueChanged(ListSelectionEvent e) {
456 if (jTable.getSelectedRow() < 0) {
457 return;
458 }
459 if (e.getValueIsAdjusting()){
460 return;
461 }
462 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
463 if (lsm.isSelectionEmpty()) {
464 return;
465 }
466 else{
467 int selected = lsm.getMinSelectionIndex();
468
469 }
470 }
471 });
472 }
473 return jTable1;
474 }
475
476 /**
477 * This method initializes jButton
478 *
479 * @return javax.swing.JButton
480 */
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) {
490 return;
491 }
492
493 updateSkuInfo(pcdSelected);
494
495 }
496 });
497 }
498 return jButton;
499 }
500
501 private void updateSkuInfo (int pcdSelected) {
502 int skuCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);
503
504 String varName = null;
505 String varGuid = null;
506 String varOffset = null;
507 String hiiDefault = null;
508 String value = 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();
515 }
516 if (jRadioButton1.isSelected()) {
517 vpdOffset = jTextField4.getText();
518 }
519 if (jRadioButton2.isSelected()) {
520 value = jTextField5.getText();
521 }
522 //
523 // SKU disabled. only modify data for default SKU.
524 //
525 if (!jCheckBox.isSelected()) {
526 if (true) {
527 ffc.removeDynamicPcdBuildDataSkuInfo(pcdSelected);
528 if (jRadioButton.isSelected()) {
529 ffc.genDynamicPcdBuildDataSkuInfo("0", varName, varGuid, varOffset, hiiDefault, null, null, pcdSelected);
530 }
531 else if (jRadioButton1.isSelected()){
532 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset, null, pcdSelected);
533 }
534 else{
535 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value, pcdSelected);
536 }
537 }
538 }
539 //
540 // SKU Enabled, need add data to all SKUs.
541 //
542 if (jCheckBox.isSelected()) {
543 if (skuCount == 1) {
544
545 for (int i = 1; i < jTable1.getRowCount(); ++i) {
546 ffc.genDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
547 }
548 }
549 else {
550 int row = jTable1.getSelectedRow();
551 if (row < 0) {
552 return;
553 }
554 ffc.updateDynamicPcdBuildDataSkuInfo(jTable1.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);
555 }
556 }
557 }
558 /**
559 * This method initializes jTextField
560 *
561 * @return javax.swing.JTextField
562 */
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);
568 }
569 return jTextField;
570 }
571
572 /**
573 * This method initializes jTextField1
574 *
575 * @return javax.swing.JTextField
576 */
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);
582 }
583 return jTextField1;
584 }
585
586 /**
587 * This method initializes jTextField2
588 *
589 * @return javax.swing.JTextField
590 */
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);
596 }
597 return jTextField2;
598 }
599
600 /**
601 * This method initializes jTextField3
602 *
603 * @return javax.swing.JTextField
604 */
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);
610 }
611 return jTextField3;
612 }
613
614 /**
615 * This method initializes jTextField4
616 *
617 * @return javax.swing.JTextField
618 */
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);
624 }
625 return jTextField4;
626 }
627
628 /**
629 * This method initializes jTextField5
630 *
631 * @return javax.swing.JTextField
632 */
633 private JTextField getJTextField5() {
634 if (jTextField5 == null) {
635 jTextField5 = new JTextField();
636 jTextField5.setPreferredSize(new java.awt.Dimension(150,20));
637 }
638 return jTextField5;
639 }
640
641 /**
642 * This method initializes jRadioButton2
643 *
644 * @return javax.swing.JRadioButton
645 */
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());
655 }
656 });
657 bg.add(jRadioButton2);
658 }
659 return jRadioButton2;
660 }
661
662 } // @jve:decl-index=0:visual-constraint="10,10"
663
664 class DynPcdTableModel extends DefaultTableModel {
665 public boolean isCellEditable(int row, int col) {
666
667 return false;
668 }
669 }