]> git.proxmox.com Git - mirror_edk2.git/blobdiff - 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
index 04fc791c48228d585da448d98a7268a7c7371fca..c7a455ed9174a4d1ba511487774e5bddb0a31b33 100644 (file)
@@ -191,7 +191,9 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
     // should display default sku info here, as no selection event of table1 will be triggered when change selection of rows in table. \r
     //\r
     private void displayDetails(int i) {\r
-        jTableSkuInfo.changeSelection(0, 1, false, false);\r
+       int defaultSkuRow = getDefaultSkuInfoRow();\r
+               jTableSkuInfo.changeSelection(defaultSkuRow, 0, false, false);\r
+               \r
         int skuCount = ffc.getDynamicPcdSkuInfoCount(i);\r
         String defaultVal = ffc.getDynamicPcdBuildDataValue(i);\r
         if (defaultVal != null) {\r
@@ -237,34 +239,49 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
         \r
     }\r
     \r
-    private void displaySkuInfoDetails(int i) {\r
+    private void displaySkuInfoDetails(String id) {\r
         int pcdSelected = jTableDynPcd.getSelectedRow();\r
         if (pcdSelected < 0) {\r
             return;\r
         }\r
         \r
-        String[][] saa = new String[ffc.getDynamicPcdSkuInfoCount(pcdSelected)][7];\r
+        int skuInfoCount = ffc.getDynamicPcdSkuInfoCount(pcdSelected);\r
+        String[][] saa = new String[skuInfoCount][7];\r
         ffc.getDynamicPcdSkuInfos(pcdSelected, saa);\r
-        \r
-        if (saa[i][5] != null){\r
-            jRadioButtonVpd.setSelected(true);\r
-            jTextFieldVpdOffset.setText(saa[i][5]);\r
-        } \r
-        \r
-        else if (saa[i][1] != null) {\r
-            jRadioButtonHii.setSelected(true);\r
-            String varDisplayName = Tools.convertUnicodeHexStringToString(saa[i][1]);\r
-            jTextFieldVarName.setText(varDisplayName);\r
-            jTextFieldVarGuid.setText(saa[i][2]);\r
-            jTextFieldVarOffset.setText(saa[i][3]);\r
-            jTextFieldHiiDefaultValue.setText(saa[i][4]);\r
-        }\r
-        \r
-        else{\r
-            jRadioButtonDefaultValue.setSelected(true);\r
-            jTextFieldDefaultValue.setText(saa[i][6]);\r
+        int i = 0;\r
+        while (i < skuInfoCount) {\r
+               if (id.equals(saa[i][0])) {\r
+                       if (saa[i][5] != null){\r
+                    jRadioButtonVpd.setSelected(true);\r
+                    jTextFieldVpdOffset.setText(saa[i][5]);\r
+                } \r
+                \r
+                else if (saa[i][1] != null) {\r
+                    jRadioButtonHii.setSelected(true);\r
+                    String varDisplayName = Tools.convertUnicodeHexStringToString(saa[i][1]);\r
+                    jTextFieldVarName.setText(varDisplayName);\r
+                    jTextFieldVarGuid.setText(saa[i][2]);\r
+                    jTextFieldVarOffset.setText(saa[i][3]);\r
+                    jTextFieldHiiDefaultValue.setText(saa[i][4]);\r
+                }\r
+                \r
+                else{\r
+                    jRadioButtonDefaultValue.setSelected(true);\r
+                    jTextFieldDefaultValue.setText(saa[i][6]);\r
+                }\r
+                       return;\r
+               }\r
+               ++i;\r
         }\r
-        \r
+    }\r
+    \r
+    private int getDefaultSkuInfoRow () {\r
+       for (int i = 0; i < modelSku.getRowCount(); ++i) {\r
+               if (modelSku.getValueAt(i, 0).equals("0")) {\r
+                       return i;\r
+               }\r
+       }\r
+       return 0;\r
     }\r
 \r
     /**\r
@@ -300,6 +317,10 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
             jCheckBoxSkuEnable.setText("SKU Enable");\r
             jCheckBoxSkuEnable.addItemListener(new java.awt.event.ItemListener() {\r
                 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                       if (!jCheckBoxSkuEnable.isSelected()) {\r
+                               int defaultSkuRow = getDefaultSkuInfoRow();\r
+                               jTableSkuInfo.changeSelection(defaultSkuRow, 0, false, false);\r
+                       }\r
                     jTableSkuInfo.setEnabled(jCheckBoxSkuEnable.isSelected());\r
                 }\r
             });\r
@@ -450,7 +471,7 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
             jTableSkuInfo = new JTable(modelSku);\r
             modelSku.addColumn("SKU ID");\r
             modelSku.addColumn("SKU Name");\r
-            \r
+            jTableSkuInfo.setEnabled(false);\r
             jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTableSkuInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -472,7 +493,8 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
                         jTextFieldVarOffset.setText("");\r
                         jTextFieldHiiDefaultValue.setText("");\r
                         int selected = lsm.getMinSelectionIndex();\r
-                        displaySkuInfoDetails(selected);\r
+                        String skuId = modelSku.getValueAt(selected, 0)+"";\r
+                        displaySkuInfoDetails(skuId);\r
                     }\r
                 }\r
             });\r
@@ -602,7 +624,7 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
             if (skuCount == 1) {\r
                 \r
                 for (int i = 1; i < jTableSkuInfo.getRowCount(); ++i) {\r
-                    ffc.genDynamicPcdBuildDataSkuInfo(jTableSkuInfo.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
+                    ffc.genDynamicPcdBuildDataSkuInfo(modelSku.getValueAt(i, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
                 }\r
             }\r
             else {\r
@@ -610,7 +632,7 @@ public class FpdDynamicPcdBuildDefinitions extends IInternalFrame {
                 if (row < 0) {\r
                     return;\r
                 }\r
-                ffc.updateDynamicPcdBuildDataSkuInfo(jTableSkuInfo.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
+                ffc.updateDynamicPcdBuildDataSkuInfo(modelSku.getValueAt(row, 0)+"", varName, varGuid, varOffset, hiiDefault, vpdOffset, value, pcdSelected);\r
             }\r
         }\r
     }\r