]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java
Provide UI for generating Apriori file of PEI or DXE phase. The module order informat...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdDynamicPcdBuildDefinitions.java
CommitLineData
a13899c5 1package org.tianocore.frameworkwizard.platform.ui;\r
2\r
3import java.awt.BorderLayout;\r
c777d1d4 4import java.awt.Dimension;\r
5import java.awt.FontMetrics;\r
a13899c5 6\r
7import javax.swing.ButtonGroup;\r
2a23019d 8import javax.swing.JOptionPane;\r
a13899c5 9import javax.swing.JPanel;\r
a13899c5 10import javax.swing.JScrollPane;\r
11import javax.swing.JTable;\r
12import javax.swing.ListSelectionModel;\r
13import javax.swing.event.ListSelectionEvent;\r
14import javax.swing.event.ListSelectionListener;\r
15import javax.swing.table.DefaultTableModel;\r
2cd33eaf 16import javax.swing.table.TableColumn;\r
a13899c5 17\r
18import org.tianocore.PlatformSurfaceAreaDocument;\r
2a23019d 19import org.tianocore.frameworkwizard.common.DataValidation;\r
20import org.tianocore.frameworkwizard.common.Tools;\r
d6d24759 21import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
a13899c5 22import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
23import javax.swing.JCheckBox;\r
a13899c5 24import javax.swing.JRadioButton;\r
25import javax.swing.JButton;\r
26import javax.swing.JLabel;\r
27import javax.swing.JTextField;\r
a0783edc 28import java.awt.GridLayout;\r
50d4c727 29import java.util.ArrayList;\r
a13899c5 30\r
31public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {\r
32\r
44053733 33 /**\r
34 * \r
35 */\r
36 private static final long serialVersionUID = 1L;\r
a13899c5 37 private JPanel jContentPane = null;\r
4da2e625 38 private JScrollPane jScrollPaneDynPcd = null;\r
39 private JTable jTableDynPcd = null;\r
40 private DynPcdTableModel modelPcd = null; \r
41 private DynPcdTableModel modelSku = null;\r
a13899c5 42 private FpdFileContents ffc = null;\r
d6d24759 43 private OpeningPlatformType docConsole = null;\r
4da2e625 44 private JPanel jPanelSkuInfo = null;\r
45 private JCheckBox jCheckBoxSkuEnable = null;\r
46 private JPanel jPanelDynPcdValue = null;\r
47 private JRadioButton jRadioButtonHii = null;\r
48 private JRadioButton jRadioButtonVpd = null;\r
49 private JScrollPane jScrollPaneSkuInfo = null;\r
50 private JTable jTableSkuInfo = null;\r
51 private JButton jButtonSkuInfoUpdate = null;\r
52 private JLabel jLabelVarName = null;\r
53 private JTextField jTextFieldVarName = null;\r
54 private JLabel jLabelVarGuid = null;\r
55 private JTextField jTextFieldVarGuid = null;\r
56 private JLabel jLabelPad = null;\r
57 private JLabel jLabelVarOffset = null;\r
58 private JTextField jTextFieldVarOffset = null;\r
59 private JLabel jLabelHiiDefaultValue = null;\r
60 private JTextField jTextFieldHiiDefaultValue = null;\r
61 private JTextField jTextFieldVpdOffset = null;\r
62 private JLabel jLabelVpdOffset = null;\r
63 private JTextField jTextFieldDefaultValue = null;\r
64 private JRadioButton jRadioButtonDefaultValue = null;\r
a13899c5 65 private ButtonGroup bg = new ButtonGroup();\r
4da2e625 66 private JLabel jLabelPadd = null;\r
a0783edc 67 private JLabel jLabelPad1 = null;\r
50d4c727 68 private JScrollPane jScrollPane = null;\r
a13899c5 69 /**\r
70 * This is the default constructor\r
71 */\r
72 public FpdDynamicPcdBuildDefinitions() {\r
73 super();\r
74 initialize();\r
75 }\r
76\r
77 public FpdDynamicPcdBuildDefinitions(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
78 this();\r
79 init(fpd);\r
80 }\r
81 \r
d6d24759 82 public FpdDynamicPcdBuildDefinitions(OpeningPlatformType opt) {\r
83 this(opt.getXmlFpd());\r
84 docConsole = opt;\r
85 }\r
86 \r
a13899c5 87 public void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
88 if (ffc == null) {\r
89 ffc = new FpdFileContents(fpd);\r
2cd33eaf 90 ffc.initDynPcdMap();\r
a13899c5 91 }\r
92 String[][] saa = new String[ffc.getDynamicPcdBuildDataCount()][5];\r
93 ffc.getDynamicPcdBuildData(saa);\r
94 for (int i = 0; i < saa.length; ++i) {\r
4da2e625 95 modelPcd.addRow(saa[i]);\r
a13899c5 96 }\r
97 \r
98 saa = new String[ffc.getPlatformDefsSkuInfoCount()][2];\r
99 ffc.getPlatformDefsSkuInfos(saa);\r
100 for (int i = 0; i < saa.length; ++i) {\r
4da2e625 101 modelSku.addRow(saa[i]);\r
a13899c5 102 }\r
103 \r
104 }\r
105 /**\r
106 * This method initializes this\r
107 * \r
108 * @return void\r
109 */\r
110 private void initialize() {\r
111 this.setSize(661, 558);\r
112 this.setTitle("Dynamic PCD Build Definitions");\r
113 this.setContentPane(getJContentPane());\r
114 this.setVisible(true);\r
115 }\r
116\r
117 /**\r
118 * This method initializes jContentPane\r
119 * \r
120 * @return javax.swing.JPanel\r
121 */\r
122 private JPanel getJContentPane() {\r
123 if (jContentPane == null) {\r
124 jContentPane = new JPanel();\r
125 jContentPane.setLayout(new BorderLayout());\r
a0783edc 126 jContentPane.add(getJScrollPaneDynPcd(), java.awt.BorderLayout.NORTH);\r
127 jContentPane.add(getJPanelSkuInfo(), java.awt.BorderLayout.CENTER);\r
a13899c5 128 }\r
129 return jContentPane;\r
130 }\r
131\r
a13899c5 132 /**\r
133 * This method initializes jScrollPane \r
134 * \r
135 * @return javax.swing.JScrollPane \r
136 */\r
4da2e625 137 private JScrollPane getJScrollPaneDynPcd() {\r
138 if (jScrollPaneDynPcd == null) {\r
139 jScrollPaneDynPcd = new JScrollPane();\r
50d4c727 140 jScrollPaneDynPcd.setPreferredSize(new java.awt.Dimension(100,250));\r
4da2e625 141 jScrollPaneDynPcd.setViewportView(getJTableDynPcd());\r
a13899c5 142 }\r
4da2e625 143 return jScrollPaneDynPcd;\r
a13899c5 144 }\r
145\r
146 /**\r
147 * This method initializes jTable \r
148 * \r
149 * @return javax.swing.JTable \r
150 */\r
4da2e625 151 private JTable getJTableDynPcd() {\r
152 if (jTableDynPcd == null) {\r
153 modelPcd = new DynPcdTableModel();\r
154 modelPcd.addColumn("CName");\r
155 modelPcd.addColumn("Token");\r
156 modelPcd.addColumn("TokenSpaceGuid");\r
157 modelPcd.addColumn("MaxDatumSize");\r
158 modelPcd.addColumn("DatumType");\r
159 jTableDynPcd = new JTable(modelPcd);\r
160 jTableDynPcd.setRowHeight(20);\r
2cd33eaf 161 TableColumn tokenColumn = jTableDynPcd.getColumnModel().getColumn(1);\r
162 jTableDynPcd.removeColumn(tokenColumn);\r
5a502bd4 163 jTableDynPcd.getColumnModel().getColumn(0).setMinWidth(250);\r
164 \r
4da2e625 165 jTableDynPcd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
166 jTableDynPcd.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 167 public void valueChanged(ListSelectionEvent e) {\r
168 if (e.getValueIsAdjusting()){\r
169 return;\r
170 }\r
171 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
172 if (lsm.isSelectionEmpty()) {\r
173 return;\r
174 }\r
175 else{\r
176 int selectedRow = lsm.getMinSelectionIndex();\r
fb464577 177 jTextFieldDefaultValue.setText("");\r
178 jTextFieldVpdOffset.setText("");\r
179 jTextFieldVarName.setText("");\r
180 jTextFieldVarGuid.setText("");\r
181 jTextFieldVarOffset.setText("");\r
182 jTextFieldHiiDefaultValue.setText("");\r
a13899c5 183 displayDetails(selectedRow);\r
184 }\r
185 }\r
186 });\r
187 }\r
4da2e625 188 return jTableDynPcd;\r
a13899c5 189 }\r
190 //\r
191 // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table. \r
192 //\r
193 private void displayDetails(int i) {\r
4da2e625 194 jTableSkuInfo.changeSelection(0, 1, false, false);\r
a13899c5 195 int skuCount = ffc.getDynamicPcdSkuInfoCount(i);\r
196 String defaultVal = ffc.getDynamicPcdBuildDataValue(i);\r
197 if (defaultVal != null) {\r
4da2e625 198 jRadioButtonDefaultValue.setSelected(true);\r
199 jTextFieldDefaultValue.setText(defaultVal);\r
a13899c5 200 if ( skuCount == 1) {\r
4da2e625 201 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 202 }\r
203 else{\r
4da2e625 204 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 205 }\r
206 }\r
207 \r
208 else if (ffc.getDynamicPcdBuildDataVpdOffset(i) != null) {\r
4da2e625 209 jRadioButtonVpd.setSelected(true);\r
210 jTextFieldVpdOffset.setText(ffc.getDynamicPcdBuildDataVpdOffset(i));\r
a13899c5 211 if (skuCount ==1) {\r
4da2e625 212 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 213 \r
214 }\r
215 else{\r
4da2e625 216 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 217 }\r
218 }\r
219 else {\r
4da2e625 220 jRadioButtonHii.setSelected(true);\r
a13899c5 221 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(i)][7];\r
222 ffc.getDynamicPcdSkuInfos(i, saa);\r
2a23019d 223 \r
224 String varDisplayName = Tools.convertUnicodeHexStringToString(saa[0][1]);\r
225 jTextFieldVarName.setText(varDisplayName);\r
226 \r
4da2e625 227 jTextFieldVarGuid.setText(saa[0][2]);\r
228 jTextFieldVarOffset.setText(saa[0][3]);\r
229 jTextFieldHiiDefaultValue.setText(saa[0][4]);\r
a13899c5 230 if (skuCount ==1) {\r
4da2e625 231 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 232 }\r
233 else{\r
4da2e625 234 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 235 }\r
236 }\r
237 \r
238 }\r
239 \r
240 private void displaySkuInfoDetails(int i) {\r
4da2e625 241 int pcdSelected = jTableDynPcd.getSelectedRow();\r
a13899c5 242 if (pcdSelected < 0) {\r
243 return;\r
244 }\r
245 \r
246 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(pcdSelected)][7];\r
247 ffc.getDynamicPcdSkuInfos(pcdSelected, saa);\r
248 \r
249 if (saa[i][5] != null){\r
4da2e625 250 jRadioButtonVpd.setSelected(true);\r
251 jTextFieldVpdOffset.setText(saa[i][5]);\r
a13899c5 252 } \r
253 \r
254 else if (saa[i][1] != null) {\r
4da2e625 255 jRadioButtonHii.setSelected(true);\r
2a23019d 256 String varDisplayName = Tools.convertUnicodeHexStringToString(saa[i][1]);\r
257 jTextFieldVarName.setText(varDisplayName);\r
4da2e625 258 jTextFieldVarGuid.setText(saa[i][2]);\r
259 jTextFieldVarOffset.setText(saa[i][3]);\r
260 jTextFieldHiiDefaultValue.setText(saa[i][4]);\r
a13899c5 261 }\r
262 \r
263 else{\r
4da2e625 264 jRadioButtonDefaultValue.setSelected(true);\r
265 jTextFieldDefaultValue.setText(saa[i][6]);\r
a13899c5 266 }\r
267 \r
268 }\r
269\r
270 /**\r
271 * This method initializes jPanel3 \r
272 * \r
273 * @return javax.swing.JPanel \r
274 */\r
4da2e625 275 private JPanel getJPanelSkuInfo() {\r
276 if (jPanelSkuInfo == null) {\r
4da2e625 277 jPanelSkuInfo = new JPanel();\r
50d4c727 278 jPanelSkuInfo.setLayout(new BorderLayout());\r
4da2e625 279 jPanelSkuInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
50d4c727 280 jPanelSkuInfo.setPreferredSize(new java.awt.Dimension(600,120));\r
281\r
282// jPanelSkuInfo.add(getJPanelSkuInfoN(), java.awt.BorderLayout.NORTH);\r
283 jPanelSkuInfo.add(getJScrollPane(), java.awt.BorderLayout.NORTH);\r
284 jPanelSkuInfo.add(getJScrollPaneSkuInfo(), java.awt.BorderLayout.CENTER);\r
285 \r
286 \r
287// jPanelSkuInfo.add(getJPanelDynPcdValue(), java.awt.BorderLayout.SOUTH);\r
4da2e625 288 }\r
289 return jPanelSkuInfo;\r
a13899c5 290 }\r
291\r
292 /**\r
293 * This method initializes jCheckBox \r
294 * \r
295 * @return javax.swing.JCheckBox \r
296 */\r
4da2e625 297 private JCheckBox getJCheckBoxSkuEnable() {\r
298 if (jCheckBoxSkuEnable == null) {\r
299 jCheckBoxSkuEnable = new JCheckBox();\r
300 jCheckBoxSkuEnable.setText("SKU Enable");\r
301 jCheckBoxSkuEnable.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 302 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 303 jTableSkuInfo.setEnabled(jCheckBoxSkuEnable.isSelected());\r
a13899c5 304 }\r
305 });\r
306 }\r
4da2e625 307 return jCheckBoxSkuEnable;\r
a13899c5 308 }\r
309\r
310 \r
311 /**\r
312 * This method initializes jPanel4 \r
313 * \r
314 * @return javax.swing.JPanel \r
315 */\r
4da2e625 316 private JPanel getJPanelDynPcdValue() {\r
317 if (jPanelDynPcdValue == null) {\r
a0783edc 318 jLabelPad1 = new JLabel();\r
319 jLabelPad1.setText(" ");\r
320 GridLayout gridLayout = new GridLayout();\r
321 gridLayout.setColumns(5);\r
322 gridLayout.setRows(4);\r
50d4c727 323 gridLayout.setHgap(20);\r
324 gridLayout.setVgap(20);\r
a0783edc 325 \r
4da2e625 326 jLabelVpdOffset = new JLabel();\r
327 jLabelVpdOffset.setPreferredSize(new java.awt.Dimension(80,20));\r
328 jLabelVpdOffset.setText("VPD Offset");\r
329 jLabelHiiDefaultValue = new JLabel();\r
330 jLabelHiiDefaultValue.setPreferredSize(new java.awt.Dimension(100,20));\r
331 jLabelHiiDefaultValue.setText("HII Default Value");\r
332 jLabelVarOffset = new JLabel();\r
333 jLabelVarOffset.setText("Variable Offset");\r
334 jLabelVarOffset.setPreferredSize(new java.awt.Dimension(90,20));\r
335 jLabelPad = new JLabel();\r
336 jLabelPad.setText(" ");\r
337 jLabelVarGuid = new JLabel();\r
338 jLabelVarGuid.setText("Variable GUID");\r
339 jLabelVarGuid.setPreferredSize(new java.awt.Dimension(100,20));\r
340 jLabelVarName = new JLabel();\r
341 jLabelVarName.setText("Variable Name");\r
342 jLabelVarName.setToolTipText("");\r
343 jLabelVarName.setPreferredSize(new java.awt.Dimension(90,20));\r
4da2e625 344 jPanelDynPcdValue = new JPanel();\r
345 jPanelDynPcdValue.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
50d4c727 346 jPanelDynPcdValue.setPreferredSize(new java.awt.Dimension(1000,150));\r
a0783edc 347 jPanelDynPcdValue.setLayout(gridLayout);\r
4da2e625 348 jPanelDynPcdValue.add(getJRadioButtonHii(), null);\r
349 jPanelDynPcdValue.add(jLabelVarName, null);\r
350 jPanelDynPcdValue.add(getJTextFieldVarName(), null);\r
351 jPanelDynPcdValue.add(jLabelVarGuid, null);\r
352 jPanelDynPcdValue.add(getJTextFieldVarGuid(), null);\r
353 jPanelDynPcdValue.add(jLabelPad, null);\r
354 jPanelDynPcdValue.add(jLabelVarOffset, null);\r
355 jPanelDynPcdValue.add(getJTextFieldVarOffset(), null);\r
356 jPanelDynPcdValue.add(jLabelHiiDefaultValue, null);\r
357 jPanelDynPcdValue.add(getJTextFieldHiiDefaultValue(), null);\r
358 jPanelDynPcdValue.add(getJRadioButtonVpd(), null);\r
359 jPanelDynPcdValue.add(jLabelVpdOffset, null);\r
4da2e625 360 jLabelPadd = new JLabel();\r
361 jLabelPadd.setText(" ");\r
a0783edc 362 jPanelDynPcdValue.add(getJTextFieldVpdOffset(), null);\r
4da2e625 363 jLabelVarName.setEnabled(false);\r
364 jLabelVarGuid.setEnabled(false);\r
365 jLabelHiiDefaultValue.setEnabled(false);\r
366 jLabelVarOffset.setEnabled(false);\r
367 jLabelVpdOffset.setEnabled(false);\r
a0783edc 368 jPanelDynPcdValue.add(jLabelPadd, null);\r
369 jPanelDynPcdValue.add(jLabelPad1, null);\r
4da2e625 370 jPanelDynPcdValue.add(getJRadioButtonDefaultValue(), null);\r
371 jPanelDynPcdValue.add(getJTextFieldDefaultValue(), null);\r
50d4c727 372 jPanelDynPcdValue.add(getJCheckBoxSkuEnable(), null);\r
373 jPanelDynPcdValue.add(getJButtonSkuInfoUpdate(), null);\r
4da2e625 374 bg.add(jRadioButtonHii);\r
375 bg.add(jRadioButtonVpd);\r
a13899c5 376 } \r
377\r
4da2e625 378 return jPanelDynPcdValue;\r
a13899c5 379 }\r
380\r
381 /**\r
382 * This method initializes jRadioButton \r
383 * \r
384 * @return javax.swing.JRadioButton \r
385 */\r
4da2e625 386 private JRadioButton getJRadioButtonHii() {\r
387 if (jRadioButtonHii == null) {\r
388 jRadioButtonHii = new JRadioButton();\r
389 jRadioButtonHii.setText("HII Enable");\r
390 jRadioButtonHii.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 391 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 392 boolean selected = jRadioButtonHii.isSelected();\r
393 jLabelVarName.setEnabled(selected);\r
394 jLabelVarGuid.setEnabled(selected);\r
395 jLabelPad.setEnabled(selected);\r
396 jLabelVarOffset.setEnabled(selected);\r
397 jLabelHiiDefaultValue.setEnabled(selected);\r
398 jTextFieldVarName.setEnabled(selected);\r
399 jTextFieldVarGuid.setEnabled(selected);\r
400 jTextFieldVarOffset.setEnabled(selected);\r
401 jTextFieldHiiDefaultValue.setEnabled(selected);\r
a13899c5 402 }\r
403 });\r
404 }\r
4da2e625 405 return jRadioButtonHii;\r
a13899c5 406 }\r
407\r
408 /**\r
409 * This method initializes jRadioButton1 \r
410 * \r
411 * @return javax.swing.JRadioButton \r
412 */\r
4da2e625 413 private JRadioButton getJRadioButtonVpd() {\r
414 if (jRadioButtonVpd == null) {\r
415 jRadioButtonVpd = new JRadioButton();\r
416 jRadioButtonVpd.setText("VPD Enable");\r
417 jRadioButtonVpd.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 418 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 419 boolean selected = jRadioButtonVpd.isSelected();\r
420 jTextFieldVpdOffset.setEnabled(selected);\r
421 jLabelVpdOffset.setEnabled(selected);\r
a13899c5 422 }\r
423 });\r
424 }\r
4da2e625 425 return jRadioButtonVpd;\r
a13899c5 426 }\r
427\r
428 /**\r
429 * This method initializes jScrollPane1 \r
430 * \r
431 * @return javax.swing.JScrollPane \r
432 */\r
4da2e625 433 private JScrollPane getJScrollPaneSkuInfo() {\r
434 if (jScrollPaneSkuInfo == null) {\r
435 jScrollPaneSkuInfo = new JScrollPane();\r
50d4c727 436 jScrollPaneSkuInfo.setPreferredSize(new java.awt.Dimension(300,50));\r
4da2e625 437 jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo());\r
a13899c5 438 }\r
4da2e625 439 return jScrollPaneSkuInfo;\r
a13899c5 440 }\r
441\r
442 /**\r
443 * This method initializes jTable1 \r
444 * \r
445 * @return javax.swing.JTable \r
446 */\r
4da2e625 447 private JTable getJTableSkuInfo() {\r
448 if (jTableSkuInfo == null) {\r
449 modelSku = new DynPcdTableModel();\r
450 jTableSkuInfo = new JTable(modelSku);\r
451 modelSku.addColumn("SKU ID");\r
452 modelSku.addColumn("SKU Name");\r
a13899c5 453 \r
4da2e625 454 jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
455 jTableSkuInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 456 public void valueChanged(ListSelectionEvent e) {\r
4da2e625 457 if (jTableDynPcd.getSelectedRow() < 0) {\r
a13899c5 458 return;\r
459 }\r
460 if (e.getValueIsAdjusting()){\r
461 return;\r
462 }\r
463 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
464 if (lsm.isSelectionEmpty()) {\r
465 return;\r
466 }\r
467 else{\r
1bf9fa5a 468 jTextFieldDefaultValue.setText("");\r
469 jTextFieldVpdOffset.setText("");\r
470 jTextFieldVarName.setText("");\r
471 jTextFieldVarGuid.setText("");\r
472 jTextFieldVarOffset.setText("");\r
473 jTextFieldHiiDefaultValue.setText("");\r
a13899c5 474 int selected = lsm.getMinSelectionIndex();\r
44053733 475 displaySkuInfoDetails(selected);\r
a13899c5 476 }\r
477 }\r
478 });\r
479 }\r
4da2e625 480 return jTableSkuInfo;\r
a13899c5 481 }\r
482\r
483 /**\r
484 * This method initializes jButton \r
485 * \r
486 * @return javax.swing.JButton \r
487 */\r
4da2e625 488 private JButton getJButtonSkuInfoUpdate() {\r
489 if (jButtonSkuInfoUpdate == null) {\r
490 jButtonSkuInfoUpdate = new JButton();\r
491 jButtonSkuInfoUpdate.setPreferredSize(new java.awt.Dimension(180,20));\r
c777d1d4 492 jButtonSkuInfoUpdate.setText("Update SKU Value");\r
493 FontMetrics fm = jButtonSkuInfoUpdate.getFontMetrics(jButtonSkuInfoUpdate.getFont());\r
494 jButtonSkuInfoUpdate.setPreferredSize(new Dimension (fm.stringWidth(jButtonSkuInfoUpdate.getText()) + 40, 20));\r
4da2e625 495 jButtonSkuInfoUpdate.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 496 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 497 int pcdSelected = jTableDynPcd.getSelectedRow();\r
a13899c5 498 if (pcdSelected < 0) {\r
499 return;\r
500 }\r
d6d24759 501 docConsole.setSaved(false);\r
a13899c5 502 updateSkuInfo(pcdSelected);\r
503 \r
504 }\r
505 });\r
506 }\r
4da2e625 507 return jButtonSkuInfoUpdate;\r
a13899c5 508 }\r
2a23019d 509 \r
a13899c5 510 private void updateSkuInfo (int pcdSelected) {\r
511 int skuCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);\r
50d4c727 512 String cName = modelPcd.getValueAt(pcdSelected, 0)+"";\r
513 String tsGuid = modelPcd.getValueAt(pcdSelected, 2)+"";\r
a13899c5 514 \r
515 String varName = null;\r
516 String varGuid = null;\r
517 String varOffset = null;\r
518 String hiiDefault = null;\r
519 String value = null;\r
520 String vpdOffset = null;\r
4da2e625 521 if (jRadioButtonHii.isSelected()) {\r
2a23019d 522 varName = Tools.convertStringToUnicodeHexString(jTextFieldVarName.getText());\r
523 if (varName.length() == 0) {\r
524 JOptionPane.showMessageDialog(this, "Variable Name is Empty.");\r
525 return;\r
526 }\r
4da2e625 527 varGuid = jTextFieldVarGuid.getText();\r
2a23019d 528 if (varGuid.length() == 0) {\r
529 JOptionPane.showMessageDialog(this, "Variable GUID is Empty.");\r
530 return;\r
531 }\r
4da2e625 532 varOffset = jTextFieldVarOffset.getText();\r
2a23019d 533 if (!DataValidation.isHex64BitDataType(varOffset)) {\r
534 JOptionPane.showMessageDialog(this, "Variable Offset is NOT Hex64BitDataType.");\r
535 return;\r
536 }\r
4da2e625 537 hiiDefault = jTextFieldHiiDefaultValue.getText();\r
2a23019d 538 if (!DataValidation.isDefaultValueType(hiiDefault)) {\r
539 JOptionPane.showMessageDialog(this, "Default Value is NOT DefaultValueType.");\r
540 return;\r
541 }\r
a13899c5 542 }\r
4da2e625 543 if (jRadioButtonVpd.isSelected()) {\r
544 vpdOffset = jTextFieldVpdOffset.getText();\r
2a23019d 545 if (!DataValidation.isHex64BitDataType(vpdOffset)) {\r
546 JOptionPane.showMessageDialog(this, "VPD Offset is NOT Hex64BitDataType.");\r
547 return;\r
548 }\r
a13899c5 549 }\r
4da2e625 550 if (jRadioButtonDefaultValue.isSelected()) {\r
551 value = jTextFieldDefaultValue.getText();\r
2a23019d 552 if (!DataValidation.isDefaultValueType(value)) {\r
553 JOptionPane.showMessageDialog(this, "Value is NOT DefaultValueType.");\r
554 return;\r
555 }\r
a13899c5 556 }\r
557 //\r
558 // SKU disabled. only modify data for default SKU.\r
559 //\r
4da2e625 560 if (!jCheckBoxSkuEnable.isSelected()) {\r
a13899c5 561 if (true) {\r
562 ffc.removeDynamicPcdBuildDataSkuInfo(pcdSelected);\r
4da2e625 563 if (jRadioButtonHii.isSelected()) {\r
a13899c5 564 ffc.genDynamicPcdBuildDataSkuInfo("0", varName, varGuid, varOffset, hiiDefault, null, null, pcdSelected);\r
50d4c727 565 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
2cd33eaf 566 if (al == null) {\r
567 return;\r
568 }\r
50d4c727 569 for (int i = 0; i < al.size(); ++i) {\r
570 String mKey = moduleInfo (al.get(i));\r
571 ffc.updatePcdData(mKey, cName, tsGuid, null, null, hiiDefault);\r
572 }\r
a13899c5 573 }\r
4da2e625 574 else if (jRadioButtonVpd.isSelected()){\r
a13899c5 575 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset, null, pcdSelected);\r
50d4c727 576 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
2cd33eaf 577 if (al == null) {\r
578 return;\r
579 }\r
50d4c727 580 for (int i = 0; i < al.size(); ++i) {\r
581 String mKey = moduleInfo (al.get(i));\r
582 ffc.updatePcdData(mKey, cName, tsGuid, null, null, vpdOffset);\r
583 }\r
a13899c5 584 }\r
585 else{\r
586 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value, pcdSelected);\r
50d4c727 587 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
2cd33eaf 588 if (al == null) {\r
589 return;\r
590 }\r
50d4c727 591 for (int i = 0; i < al.size(); ++i) {\r
592 String mKey = moduleInfo (al.get(i));\r
593 ffc.updatePcdData(mKey, cName, tsGuid, null, null, value);\r
594 }\r
a13899c5 595 }\r
596 }\r
597 }\r
598 //\r
599 // SKU Enabled, need add data to all SKUs.\r
600 //\r
4da2e625 601 if (jCheckBoxSkuEnable.isSelected()) {\r
a13899c5 602 if (skuCount == 1) {\r
603 \r
4da2e625 604 for (int i = 1; i < jTableSkuInfo.getRowCount(); ++i) {\r
605 ffc.genDynamicPcdBuildDataSkuInfo(jTableSkuInfo.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
a13899c5 606 }\r
607 }\r
608 else {\r
4da2e625 609 int row = jTableSkuInfo.getSelectedRow();\r
a13899c5 610 if (row < 0) {\r
611 return;\r
612 }\r
4da2e625 613 ffc.updateDynamicPcdBuildDataSkuInfo(jTableSkuInfo.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
a13899c5 614 }\r
615 }\r
616 }\r
50d4c727 617 \r
618 private String moduleInfo (String pcdInfo) {\r
619 \r
620 return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));\r
621 }\r
a13899c5 622 /**\r
623 * This method initializes jTextField \r
624 * \r
625 * @return javax.swing.JTextField \r
626 */\r
4da2e625 627 private JTextField getJTextFieldVarName() {\r
628 if (jTextFieldVarName == null) {\r
629 jTextFieldVarName = new JTextField();\r
630 jTextFieldVarName.setPreferredSize(new java.awt.Dimension(150,20));\r
631 jTextFieldVarName.setEnabled(false);\r
a13899c5 632 }\r
4da2e625 633 return jTextFieldVarName;\r
a13899c5 634 }\r
635\r
636 /**\r
637 * This method initializes jTextField1 \r
638 * \r
639 * @return javax.swing.JTextField \r
640 */\r
4da2e625 641 private JTextField getJTextFieldVarGuid() {\r
642 if (jTextFieldVarGuid == null) {\r
643 jTextFieldVarGuid = new JTextField();\r
644 jTextFieldVarGuid.setPreferredSize(new java.awt.Dimension(150,20));\r
645 jTextFieldVarGuid.setEnabled(false);\r
a13899c5 646 }\r
4da2e625 647 return jTextFieldVarGuid;\r
a13899c5 648 }\r
649\r
650 /**\r
651 * This method initializes jTextField2 \r
652 * \r
653 * @return javax.swing.JTextField \r
654 */\r
4da2e625 655 private JTextField getJTextFieldVarOffset() {\r
656 if (jTextFieldVarOffset == null) {\r
657 jTextFieldVarOffset = new JTextField();\r
658 jTextFieldVarOffset.setPreferredSize(new java.awt.Dimension(150,20));\r
659 jTextFieldVarOffset.setEnabled(false);\r
a13899c5 660 }\r
4da2e625 661 return jTextFieldVarOffset;\r
a13899c5 662 }\r
663\r
664 /**\r
665 * This method initializes jTextField3 \r
666 * \r
667 * @return javax.swing.JTextField \r
668 */\r
4da2e625 669 private JTextField getJTextFieldHiiDefaultValue() {\r
670 if (jTextFieldHiiDefaultValue == null) {\r
671 jTextFieldHiiDefaultValue = new JTextField();\r
672 jTextFieldHiiDefaultValue.setPreferredSize(new java.awt.Dimension(150,20));\r
673 jTextFieldHiiDefaultValue.setEnabled(false);\r
a13899c5 674 }\r
4da2e625 675 return jTextFieldHiiDefaultValue;\r
a13899c5 676 }\r
677\r
678 /**\r
679 * This method initializes jTextField4 \r
680 * \r
681 * @return javax.swing.JTextField \r
682 */\r
4da2e625 683 private JTextField getJTextFieldVpdOffset() {\r
684 if (jTextFieldVpdOffset == null) {\r
685 jTextFieldVpdOffset = new JTextField();\r
686 jTextFieldVpdOffset.setPreferredSize(new java.awt.Dimension(150,20));\r
687 jTextFieldVpdOffset.setEnabled(false);\r
a13899c5 688 }\r
4da2e625 689 return jTextFieldVpdOffset;\r
a13899c5 690 }\r
691\r
692 /**\r
693 * This method initializes jTextField5 \r
694 * \r
695 * @return javax.swing.JTextField \r
696 */\r
4da2e625 697 private JTextField getJTextFieldDefaultValue() {\r
698 if (jTextFieldDefaultValue == null) {\r
699 jTextFieldDefaultValue = new JTextField();\r
700 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(150,20));\r
a13899c5 701 }\r
4da2e625 702 return jTextFieldDefaultValue;\r
a13899c5 703 }\r
704\r
705 /**\r
706 * This method initializes jRadioButton2 \r
707 * \r
708 * @return javax.swing.JRadioButton \r
709 */\r
4da2e625 710 private JRadioButton getJRadioButtonDefaultValue() {\r
711 if (jRadioButtonDefaultValue == null) {\r
712 jRadioButtonDefaultValue = new JRadioButton();\r
713 jRadioButtonDefaultValue.setText("Default PCD Value");\r
714 jRadioButtonDefaultValue.setSelected(true);\r
715 jRadioButtonDefaultValue.setPreferredSize(new java.awt.Dimension(175,20));\r
716 jRadioButtonDefaultValue.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 717 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 718 jTextFieldDefaultValue.setEnabled(jRadioButtonDefaultValue.isSelected());\r
a13899c5 719 }\r
720 });\r
4da2e625 721 bg.add(jRadioButtonDefaultValue);\r
a13899c5 722 }\r
4da2e625 723 return jRadioButtonDefaultValue;\r
a13899c5 724 }\r
725\r
50d4c727 726 /**\r
727 * This method initializes jScrollPane \r
728 * \r
729 * @return javax.swing.JScrollPane \r
730 */\r
731 private JScrollPane getJScrollPane() {\r
732 if (jScrollPane == null) {\r
733 jScrollPane = new JScrollPane();\r
734 jScrollPane.setPreferredSize(new java.awt.Dimension(1003,180));\r
735 jScrollPane.setViewportView(getJPanelDynPcdValue());\r
736 }\r
737 return jScrollPane;\r
738 }\r
739\r
a13899c5 740} // @jve:decl-index=0:visual-constraint="10,10"\r
741\r
742class DynPcdTableModel extends DefaultTableModel {\r
44053733 743 /**\r
744 * \r
745 */\r
746 private static final long serialVersionUID = 1L;\r
747\r
a13899c5 748 public boolean isCellEditable(int row, int col) {\r
749 \r
750 return false;\r
751 }\r
752}\r