]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java
Fix Sku Info update UI refresh to update the dynamic pcd value for selected sku id.
[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
85d9e5b1 194 int defaultSkuRow = getDefaultSkuInfoRow();\r
195 jTableSkuInfo.changeSelection(defaultSkuRow, 0, false, false);\r
196 \r
a13899c5 197 int skuCount = ffc.getDynamicPcdSkuInfoCount(i);\r
198 String defaultVal = ffc.getDynamicPcdBuildDataValue(i);\r
199 if (defaultVal != null) {\r
4da2e625 200 jRadioButtonDefaultValue.setSelected(true);\r
201 jTextFieldDefaultValue.setText(defaultVal);\r
a13899c5 202 if ( skuCount == 1) {\r
4da2e625 203 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 204 }\r
205 else{\r
4da2e625 206 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 207 }\r
208 }\r
209 \r
210 else if (ffc.getDynamicPcdBuildDataVpdOffset(i) != null) {\r
4da2e625 211 jRadioButtonVpd.setSelected(true);\r
212 jTextFieldVpdOffset.setText(ffc.getDynamicPcdBuildDataVpdOffset(i));\r
a13899c5 213 if (skuCount ==1) {\r
4da2e625 214 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 215 \r
216 }\r
217 else{\r
4da2e625 218 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 219 }\r
220 }\r
221 else {\r
4da2e625 222 jRadioButtonHii.setSelected(true);\r
a13899c5 223 String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(i)][7];\r
224 ffc.getDynamicPcdSkuInfos(i, saa);\r
2a23019d 225 \r
226 String varDisplayName = Tools.convertUnicodeHexStringToString(saa[0][1]);\r
227 jTextFieldVarName.setText(varDisplayName);\r
228 \r
4da2e625 229 jTextFieldVarGuid.setText(saa[0][2]);\r
230 jTextFieldVarOffset.setText(saa[0][3]);\r
231 jTextFieldHiiDefaultValue.setText(saa[0][4]);\r
a13899c5 232 if (skuCount ==1) {\r
4da2e625 233 jCheckBoxSkuEnable.setSelected(false);\r
a13899c5 234 }\r
235 else{\r
4da2e625 236 jCheckBoxSkuEnable.setSelected(true);\r
a13899c5 237 }\r
238 }\r
239 \r
240 }\r
241 \r
85d9e5b1 242 private void displaySkuInfoDetails(String id) {\r
4da2e625 243 int pcdSelected = jTableDynPcd.getSelectedRow();\r
a13899c5 244 if (pcdSelected < 0) {\r
245 return;\r
246 }\r
247 \r
85d9e5b1 248 int skuInfoCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);\r
249 String[][] saa = new String[skuInfoCount][7];\r
a13899c5 250 ffc.getDynamicPcdSkuInfos(pcdSelected, saa);\r
85d9e5b1 251 int i = 0;\r
252 while (i < skuInfoCount) {\r
253 if (id.equals(saa[i][0])) {\r
254 if (saa[i][5] != null){\r
255 jRadioButtonVpd.setSelected(true);\r
256 jTextFieldVpdOffset.setText(saa[i][5]);\r
257 } \r
258 \r
259 else if (saa[i][1] != null) {\r
260 jRadioButtonHii.setSelected(true);\r
261 String varDisplayName = Tools.convertUnicodeHexStringToString(saa[i][1]);\r
262 jTextFieldVarName.setText(varDisplayName);\r
263 jTextFieldVarGuid.setText(saa[i][2]);\r
264 jTextFieldVarOffset.setText(saa[i][3]);\r
265 jTextFieldHiiDefaultValue.setText(saa[i][4]);\r
266 }\r
267 \r
268 else{\r
269 jRadioButtonDefaultValue.setSelected(true);\r
270 jTextFieldDefaultValue.setText(saa[i][6]);\r
271 }\r
272 return;\r
273 }\r
274 ++i;\r
a13899c5 275 }\r
85d9e5b1 276 }\r
277 \r
278 private int getDefaultSkuInfoRow () {\r
279 for (int i = 0; i < modelSku.getRowCount(); ++i) {\r
280 if (modelSku.getValueAt(i, 0).equals("0")) {\r
281 return i;\r
282 }\r
283 }\r
284 return 0;\r
a13899c5 285 }\r
286\r
287 /**\r
288 * This method initializes jPanel3 \r
289 * \r
290 * @return javax.swing.JPanel \r
291 */\r
4da2e625 292 private JPanel getJPanelSkuInfo() {\r
293 if (jPanelSkuInfo == null) {\r
4da2e625 294 jPanelSkuInfo = new JPanel();\r
50d4c727 295 jPanelSkuInfo.setLayout(new BorderLayout());\r
4da2e625 296 jPanelSkuInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
50d4c727 297 jPanelSkuInfo.setPreferredSize(new java.awt.Dimension(600,120));\r
298\r
299// jPanelSkuInfo.add(getJPanelSkuInfoN(), java.awt.BorderLayout.NORTH);\r
300 jPanelSkuInfo.add(getJScrollPane(), java.awt.BorderLayout.NORTH);\r
301 jPanelSkuInfo.add(getJScrollPaneSkuInfo(), java.awt.BorderLayout.CENTER);\r
302 \r
303 \r
304// jPanelSkuInfo.add(getJPanelDynPcdValue(), java.awt.BorderLayout.SOUTH);\r
4da2e625 305 }\r
306 return jPanelSkuInfo;\r
a13899c5 307 }\r
308\r
309 /**\r
310 * This method initializes jCheckBox \r
311 * \r
312 * @return javax.swing.JCheckBox \r
313 */\r
4da2e625 314 private JCheckBox getJCheckBoxSkuEnable() {\r
315 if (jCheckBoxSkuEnable == null) {\r
316 jCheckBoxSkuEnable = new JCheckBox();\r
317 jCheckBoxSkuEnable.setText("SKU Enable");\r
318 jCheckBoxSkuEnable.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 319 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
85d9e5b1 320 if (!jCheckBoxSkuEnable.isSelected()) {\r
321 int defaultSkuRow = getDefaultSkuInfoRow();\r
322 jTableSkuInfo.changeSelection(defaultSkuRow, 0, false, false);\r
323 }\r
4da2e625 324 jTableSkuInfo.setEnabled(jCheckBoxSkuEnable.isSelected());\r
a13899c5 325 }\r
326 });\r
327 }\r
4da2e625 328 return jCheckBoxSkuEnable;\r
a13899c5 329 }\r
330\r
331 \r
332 /**\r
333 * This method initializes jPanel4 \r
334 * \r
335 * @return javax.swing.JPanel \r
336 */\r
4da2e625 337 private JPanel getJPanelDynPcdValue() {\r
338 if (jPanelDynPcdValue == null) {\r
a0783edc 339 jLabelPad1 = new JLabel();\r
340 jLabelPad1.setText(" ");\r
341 GridLayout gridLayout = new GridLayout();\r
342 gridLayout.setColumns(5);\r
343 gridLayout.setRows(4);\r
50d4c727 344 gridLayout.setHgap(20);\r
345 gridLayout.setVgap(20);\r
a0783edc 346 \r
4da2e625 347 jLabelVpdOffset = new JLabel();\r
348 jLabelVpdOffset.setPreferredSize(new java.awt.Dimension(80,20));\r
349 jLabelVpdOffset.setText("VPD Offset");\r
350 jLabelHiiDefaultValue = new JLabel();\r
351 jLabelHiiDefaultValue.setPreferredSize(new java.awt.Dimension(100,20));\r
352 jLabelHiiDefaultValue.setText("HII Default Value");\r
353 jLabelVarOffset = new JLabel();\r
354 jLabelVarOffset.setText("Variable Offset");\r
355 jLabelVarOffset.setPreferredSize(new java.awt.Dimension(90,20));\r
356 jLabelPad = new JLabel();\r
357 jLabelPad.setText(" ");\r
358 jLabelVarGuid = new JLabel();\r
359 jLabelVarGuid.setText("Variable GUID");\r
360 jLabelVarGuid.setPreferredSize(new java.awt.Dimension(100,20));\r
361 jLabelVarName = new JLabel();\r
362 jLabelVarName.setText("Variable Name");\r
363 jLabelVarName.setToolTipText("");\r
364 jLabelVarName.setPreferredSize(new java.awt.Dimension(90,20));\r
4da2e625 365 jPanelDynPcdValue = new JPanel();\r
366 jPanelDynPcdValue.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
50d4c727 367 jPanelDynPcdValue.setPreferredSize(new java.awt.Dimension(1000,150));\r
a0783edc 368 jPanelDynPcdValue.setLayout(gridLayout);\r
4da2e625 369 jPanelDynPcdValue.add(getJRadioButtonHii(), null);\r
370 jPanelDynPcdValue.add(jLabelVarName, null);\r
371 jPanelDynPcdValue.add(getJTextFieldVarName(), null);\r
372 jPanelDynPcdValue.add(jLabelVarGuid, null);\r
373 jPanelDynPcdValue.add(getJTextFieldVarGuid(), null);\r
374 jPanelDynPcdValue.add(jLabelPad, null);\r
375 jPanelDynPcdValue.add(jLabelVarOffset, null);\r
376 jPanelDynPcdValue.add(getJTextFieldVarOffset(), null);\r
377 jPanelDynPcdValue.add(jLabelHiiDefaultValue, null);\r
378 jPanelDynPcdValue.add(getJTextFieldHiiDefaultValue(), null);\r
379 jPanelDynPcdValue.add(getJRadioButtonVpd(), null);\r
380 jPanelDynPcdValue.add(jLabelVpdOffset, null);\r
4da2e625 381 jLabelPadd = new JLabel();\r
382 jLabelPadd.setText(" ");\r
a0783edc 383 jPanelDynPcdValue.add(getJTextFieldVpdOffset(), null);\r
4da2e625 384 jLabelVarName.setEnabled(false);\r
385 jLabelVarGuid.setEnabled(false);\r
386 jLabelHiiDefaultValue.setEnabled(false);\r
387 jLabelVarOffset.setEnabled(false);\r
388 jLabelVpdOffset.setEnabled(false);\r
a0783edc 389 jPanelDynPcdValue.add(jLabelPadd, null);\r
390 jPanelDynPcdValue.add(jLabelPad1, null);\r
4da2e625 391 jPanelDynPcdValue.add(getJRadioButtonDefaultValue(), null);\r
392 jPanelDynPcdValue.add(getJTextFieldDefaultValue(), null);\r
50d4c727 393 jPanelDynPcdValue.add(getJCheckBoxSkuEnable(), null);\r
394 jPanelDynPcdValue.add(getJButtonSkuInfoUpdate(), null);\r
4da2e625 395 bg.add(jRadioButtonHii);\r
396 bg.add(jRadioButtonVpd);\r
a13899c5 397 } \r
398\r
4da2e625 399 return jPanelDynPcdValue;\r
a13899c5 400 }\r
401\r
402 /**\r
403 * This method initializes jRadioButton \r
404 * \r
405 * @return javax.swing.JRadioButton \r
406 */\r
4da2e625 407 private JRadioButton getJRadioButtonHii() {\r
408 if (jRadioButtonHii == null) {\r
409 jRadioButtonHii = new JRadioButton();\r
410 jRadioButtonHii.setText("HII Enable");\r
411 jRadioButtonHii.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 412 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 413 boolean selected = jRadioButtonHii.isSelected();\r
414 jLabelVarName.setEnabled(selected);\r
415 jLabelVarGuid.setEnabled(selected);\r
416 jLabelPad.setEnabled(selected);\r
417 jLabelVarOffset.setEnabled(selected);\r
418 jLabelHiiDefaultValue.setEnabled(selected);\r
419 jTextFieldVarName.setEnabled(selected);\r
420 jTextFieldVarGuid.setEnabled(selected);\r
421 jTextFieldVarOffset.setEnabled(selected);\r
422 jTextFieldHiiDefaultValue.setEnabled(selected);\r
a13899c5 423 }\r
424 });\r
425 }\r
4da2e625 426 return jRadioButtonHii;\r
a13899c5 427 }\r
428\r
429 /**\r
430 * This method initializes jRadioButton1 \r
431 * \r
432 * @return javax.swing.JRadioButton \r
433 */\r
4da2e625 434 private JRadioButton getJRadioButtonVpd() {\r
435 if (jRadioButtonVpd == null) {\r
436 jRadioButtonVpd = new JRadioButton();\r
437 jRadioButtonVpd.setText("VPD Enable");\r
438 jRadioButtonVpd.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 439 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 440 boolean selected = jRadioButtonVpd.isSelected();\r
441 jTextFieldVpdOffset.setEnabled(selected);\r
442 jLabelVpdOffset.setEnabled(selected);\r
a13899c5 443 }\r
444 });\r
445 }\r
4da2e625 446 return jRadioButtonVpd;\r
a13899c5 447 }\r
448\r
449 /**\r
450 * This method initializes jScrollPane1 \r
451 * \r
452 * @return javax.swing.JScrollPane \r
453 */\r
4da2e625 454 private JScrollPane getJScrollPaneSkuInfo() {\r
455 if (jScrollPaneSkuInfo == null) {\r
456 jScrollPaneSkuInfo = new JScrollPane();\r
50d4c727 457 jScrollPaneSkuInfo.setPreferredSize(new java.awt.Dimension(300,50));\r
4da2e625 458 jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo());\r
a13899c5 459 }\r
4da2e625 460 return jScrollPaneSkuInfo;\r
a13899c5 461 }\r
462\r
463 /**\r
464 * This method initializes jTable1 \r
465 * \r
466 * @return javax.swing.JTable \r
467 */\r
4da2e625 468 private JTable getJTableSkuInfo() {\r
469 if (jTableSkuInfo == null) {\r
470 modelSku = new DynPcdTableModel();\r
471 jTableSkuInfo = new JTable(modelSku);\r
472 modelSku.addColumn("SKU ID");\r
473 modelSku.addColumn("SKU Name");\r
85d9e5b1 474 jTableSkuInfo.setEnabled(false);\r
4da2e625 475 jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
476 jTableSkuInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 477 public void valueChanged(ListSelectionEvent e) {\r
4da2e625 478 if (jTableDynPcd.getSelectedRow() < 0) {\r
a13899c5 479 return;\r
480 }\r
481 if (e.getValueIsAdjusting()){\r
482 return;\r
483 }\r
484 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
485 if (lsm.isSelectionEmpty()) {\r
486 return;\r
487 }\r
488 else{\r
1bf9fa5a 489 jTextFieldDefaultValue.setText("");\r
490 jTextFieldVpdOffset.setText("");\r
491 jTextFieldVarName.setText("");\r
492 jTextFieldVarGuid.setText("");\r
493 jTextFieldVarOffset.setText("");\r
494 jTextFieldHiiDefaultValue.setText("");\r
a13899c5 495 int selected = lsm.getMinSelectionIndex();\r
85d9e5b1 496 String skuId = modelSku.getValueAt(selected, 0)+"";\r
497 displaySkuInfoDetails(skuId);\r
a13899c5 498 }\r
499 }\r
500 });\r
501 }\r
4da2e625 502 return jTableSkuInfo;\r
a13899c5 503 }\r
504\r
505 /**\r
506 * This method initializes jButton \r
507 * \r
508 * @return javax.swing.JButton \r
509 */\r
4da2e625 510 private JButton getJButtonSkuInfoUpdate() {\r
511 if (jButtonSkuInfoUpdate == null) {\r
512 jButtonSkuInfoUpdate = new JButton();\r
513 jButtonSkuInfoUpdate.setPreferredSize(new java.awt.Dimension(180,20));\r
c777d1d4 514 jButtonSkuInfoUpdate.setText("Update SKU Value");\r
515 FontMetrics fm = jButtonSkuInfoUpdate.getFontMetrics(jButtonSkuInfoUpdate.getFont());\r
516 jButtonSkuInfoUpdate.setPreferredSize(new Dimension (fm.stringWidth(jButtonSkuInfoUpdate.getText()) + 40, 20));\r
4da2e625 517 jButtonSkuInfoUpdate.addActionListener(new java.awt.event.ActionListener() {\r
a13899c5 518 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 519 int pcdSelected = jTableDynPcd.getSelectedRow();\r
a13899c5 520 if (pcdSelected < 0) {\r
521 return;\r
522 }\r
d6d24759 523 docConsole.setSaved(false);\r
a13899c5 524 updateSkuInfo(pcdSelected);\r
525 \r
526 }\r
527 });\r
528 }\r
4da2e625 529 return jButtonSkuInfoUpdate;\r
a13899c5 530 }\r
2a23019d 531 \r
a13899c5 532 private void updateSkuInfo (int pcdSelected) {\r
533 int skuCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);\r
50d4c727 534 String cName = modelPcd.getValueAt(pcdSelected, 0)+"";\r
535 String tsGuid = modelPcd.getValueAt(pcdSelected, 2)+"";\r
a13899c5 536 \r
537 String varName = null;\r
538 String varGuid = null;\r
539 String varOffset = null;\r
540 String hiiDefault = null;\r
541 String value = null;\r
542 String vpdOffset = null;\r
4da2e625 543 if (jRadioButtonHii.isSelected()) {\r
2a23019d 544 varName = Tools.convertStringToUnicodeHexString(jTextFieldVarName.getText());\r
545 if (varName.length() == 0) {\r
546 JOptionPane.showMessageDialog(this, "Variable Name is Empty.");\r
547 return;\r
548 }\r
4da2e625 549 varGuid = jTextFieldVarGuid.getText();\r
2a23019d 550 if (varGuid.length() == 0) {\r
551 JOptionPane.showMessageDialog(this, "Variable GUID is Empty.");\r
552 return;\r
553 }\r
4da2e625 554 varOffset = jTextFieldVarOffset.getText();\r
2a23019d 555 if (!DataValidation.isHex64BitDataType(varOffset)) {\r
556 JOptionPane.showMessageDialog(this, "Variable Offset is NOT Hex64BitDataType.");\r
557 return;\r
558 }\r
4da2e625 559 hiiDefault = jTextFieldHiiDefaultValue.getText();\r
2a23019d 560 if (!DataValidation.isDefaultValueType(hiiDefault)) {\r
561 JOptionPane.showMessageDialog(this, "Default Value is NOT DefaultValueType.");\r
562 return;\r
563 }\r
a13899c5 564 }\r
4da2e625 565 if (jRadioButtonVpd.isSelected()) {\r
566 vpdOffset = jTextFieldVpdOffset.getText();\r
2a23019d 567 if (!DataValidation.isHex64BitDataType(vpdOffset)) {\r
568 JOptionPane.showMessageDialog(this, "VPD Offset is NOT Hex64BitDataType.");\r
569 return;\r
570 }\r
a13899c5 571 }\r
4da2e625 572 if (jRadioButtonDefaultValue.isSelected()) {\r
573 value = jTextFieldDefaultValue.getText();\r
2a23019d 574 if (!DataValidation.isDefaultValueType(value)) {\r
575 JOptionPane.showMessageDialog(this, "Value is NOT DefaultValueType.");\r
576 return;\r
577 }\r
a13899c5 578 }\r
579 //\r
580 // SKU disabled. only modify data for default SKU.\r
581 //\r
4da2e625 582 if (!jCheckBoxSkuEnable.isSelected()) {\r
a13899c5 583 if (true) {\r
584 ffc.removeDynamicPcdBuildDataSkuInfo(pcdSelected);\r
4da2e625 585 if (jRadioButtonHii.isSelected()) {\r
a13899c5 586 ffc.genDynamicPcdBuildDataSkuInfo("0", varName, varGuid, varOffset, hiiDefault, null, null, 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, hiiDefault);\r
594 }\r
a13899c5 595 }\r
4da2e625 596 else if (jRadioButtonVpd.isSelected()){\r
a13899c5 597 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, vpdOffset, null, pcdSelected);\r
50d4c727 598 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
2cd33eaf 599 if (al == null) {\r
600 return;\r
601 }\r
50d4c727 602 for (int i = 0; i < al.size(); ++i) {\r
603 String mKey = moduleInfo (al.get(i));\r
604 ffc.updatePcdData(mKey, cName, tsGuid, null, null, vpdOffset);\r
605 }\r
a13899c5 606 }\r
607 else{\r
608 ffc.genDynamicPcdBuildDataSkuInfo("0", null, null, null, null, null, value, pcdSelected);\r
50d4c727 609 ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
2cd33eaf 610 if (al == null) {\r
611 return;\r
612 }\r
50d4c727 613 for (int i = 0; i < al.size(); ++i) {\r
614 String mKey = moduleInfo (al.get(i));\r
615 ffc.updatePcdData(mKey, cName, tsGuid, null, null, value);\r
616 }\r
a13899c5 617 }\r
618 }\r
619 }\r
620 //\r
621 // SKU Enabled, need add data to all SKUs.\r
622 //\r
4da2e625 623 if (jCheckBoxSkuEnable.isSelected()) {\r
a13899c5 624 if (skuCount == 1) {\r
625 \r
4da2e625 626 for (int i = 1; i < jTableSkuInfo.getRowCount(); ++i) {\r
85d9e5b1 627 ffc.genDynamicPcdBuildDataSkuInfo(modelSku.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
a13899c5 628 }\r
629 }\r
630 else {\r
4da2e625 631 int row = jTableSkuInfo.getSelectedRow();\r
a13899c5 632 if (row < 0) {\r
633 return;\r
634 }\r
85d9e5b1 635 ffc.updateDynamicPcdBuildDataSkuInfo(modelSku.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
a13899c5 636 }\r
637 }\r
638 }\r
50d4c727 639 \r
640 private String moduleInfo (String pcdInfo) {\r
641 \r
642 return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));\r
643 }\r
a13899c5 644 /**\r
645 * This method initializes jTextField \r
646 * \r
647 * @return javax.swing.JTextField \r
648 */\r
4da2e625 649 private JTextField getJTextFieldVarName() {\r
650 if (jTextFieldVarName == null) {\r
651 jTextFieldVarName = new JTextField();\r
652 jTextFieldVarName.setPreferredSize(new java.awt.Dimension(150,20));\r
653 jTextFieldVarName.setEnabled(false);\r
a13899c5 654 }\r
4da2e625 655 return jTextFieldVarName;\r
a13899c5 656 }\r
657\r
658 /**\r
659 * This method initializes jTextField1 \r
660 * \r
661 * @return javax.swing.JTextField \r
662 */\r
4da2e625 663 private JTextField getJTextFieldVarGuid() {\r
664 if (jTextFieldVarGuid == null) {\r
665 jTextFieldVarGuid = new JTextField();\r
666 jTextFieldVarGuid.setPreferredSize(new java.awt.Dimension(150,20));\r
667 jTextFieldVarGuid.setEnabled(false);\r
a13899c5 668 }\r
4da2e625 669 return jTextFieldVarGuid;\r
a13899c5 670 }\r
671\r
672 /**\r
673 * This method initializes jTextField2 \r
674 * \r
675 * @return javax.swing.JTextField \r
676 */\r
4da2e625 677 private JTextField getJTextFieldVarOffset() {\r
678 if (jTextFieldVarOffset == null) {\r
679 jTextFieldVarOffset = new JTextField();\r
680 jTextFieldVarOffset.setPreferredSize(new java.awt.Dimension(150,20));\r
681 jTextFieldVarOffset.setEnabled(false);\r
a13899c5 682 }\r
4da2e625 683 return jTextFieldVarOffset;\r
a13899c5 684 }\r
685\r
686 /**\r
687 * This method initializes jTextField3 \r
688 * \r
689 * @return javax.swing.JTextField \r
690 */\r
4da2e625 691 private JTextField getJTextFieldHiiDefaultValue() {\r
692 if (jTextFieldHiiDefaultValue == null) {\r
693 jTextFieldHiiDefaultValue = new JTextField();\r
694 jTextFieldHiiDefaultValue.setPreferredSize(new java.awt.Dimension(150,20));\r
695 jTextFieldHiiDefaultValue.setEnabled(false);\r
a13899c5 696 }\r
4da2e625 697 return jTextFieldHiiDefaultValue;\r
a13899c5 698 }\r
699\r
700 /**\r
701 * This method initializes jTextField4 \r
702 * \r
703 * @return javax.swing.JTextField \r
704 */\r
4da2e625 705 private JTextField getJTextFieldVpdOffset() {\r
706 if (jTextFieldVpdOffset == null) {\r
707 jTextFieldVpdOffset = new JTextField();\r
708 jTextFieldVpdOffset.setPreferredSize(new java.awt.Dimension(150,20));\r
709 jTextFieldVpdOffset.setEnabled(false);\r
a13899c5 710 }\r
4da2e625 711 return jTextFieldVpdOffset;\r
a13899c5 712 }\r
713\r
714 /**\r
715 * This method initializes jTextField5 \r
716 * \r
717 * @return javax.swing.JTextField \r
718 */\r
4da2e625 719 private JTextField getJTextFieldDefaultValue() {\r
720 if (jTextFieldDefaultValue == null) {\r
721 jTextFieldDefaultValue = new JTextField();\r
722 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(150,20));\r
a13899c5 723 }\r
4da2e625 724 return jTextFieldDefaultValue;\r
a13899c5 725 }\r
726\r
727 /**\r
728 * This method initializes jRadioButton2 \r
729 * \r
730 * @return javax.swing.JRadioButton \r
731 */\r
4da2e625 732 private JRadioButton getJRadioButtonDefaultValue() {\r
733 if (jRadioButtonDefaultValue == null) {\r
734 jRadioButtonDefaultValue = new JRadioButton();\r
735 jRadioButtonDefaultValue.setText("Default PCD Value");\r
736 jRadioButtonDefaultValue.setSelected(true);\r
737 jRadioButtonDefaultValue.setPreferredSize(new java.awt.Dimension(175,20));\r
738 jRadioButtonDefaultValue.addItemListener(new java.awt.event.ItemListener() {\r
a13899c5 739 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4da2e625 740 jTextFieldDefaultValue.setEnabled(jRadioButtonDefaultValue.isSelected());\r
a13899c5 741 }\r
742 });\r
4da2e625 743 bg.add(jRadioButtonDefaultValue);\r
a13899c5 744 }\r
4da2e625 745 return jRadioButtonDefaultValue;\r
a13899c5 746 }\r
747\r
50d4c727 748 /**\r
749 * This method initializes jScrollPane \r
750 * \r
751 * @return javax.swing.JScrollPane \r
752 */\r
753 private JScrollPane getJScrollPane() {\r
754 if (jScrollPane == null) {\r
755 jScrollPane = new JScrollPane();\r
756 jScrollPane.setPreferredSize(new java.awt.Dimension(1003,180));\r
757 jScrollPane.setViewportView(getJPanelDynPcdValue());\r
758 }\r
759 return jScrollPane;\r
760 }\r
761\r
a13899c5 762} // @jve:decl-index=0:visual-constraint="10,10"\r
763\r
764class DynPcdTableModel extends DefaultTableModel {\r
44053733 765 /**\r
766 * \r
767 */\r
768 private static final long serialVersionUID = 1L;\r
769\r
a13899c5 770 public boolean isCellEditable(int row, int col) {\r
771 \r
772 return false;\r
773 }\r
774}\r