]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
Change radio button in package header editor to a label.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
index cbcb5a98333e0ea392257f95ed1e90082267b775..8eeef72e15d4b6b565f579a864798950a2002019 100644 (file)
@@ -102,7 +102,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
 \r
     private JLabel jLabelTokenSpace = null;\r
 \r
-    private JTextField jTextFieldTsGuid = null;\r
+    private JComboBox jComboBoxTsGuid = null;\r
 \r
     private JLabel jLabelVarVal = null;\r
 \r
@@ -270,11 +270,12 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 }\r
             }\r
         });\r
-        initFrame();\r
+        \r
         this.setVisible(true);\r
     }\r
 \r
     private void init(SpdFileContents sfc){\r
+        initFrame(sfc);\r
         if (sfc.getSpdPcdDefinitionCount() == 0) {\r
             return ;\r
         }\r
@@ -379,7 +380,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jContentPane.add(jLabelItemType, null);\r
             jContentPane.add(jLabelC_Name, null);\r
             jContentPane.add(jLabelTokenSpace, null);\r
-            jContentPane.add(getJTextFieldTsGuid(), null);\r
+            jContentPane.add(getJComboBoxTsGuid(), null);\r
             jContentPane.add(jLabelVarVal, null);\r
             jContentPane.add(getJTextFieldC_Name(), null);\r
             jContentPane.add(jLabelToken, null);\r
@@ -431,7 +432,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                        jContentPane.add(jLabelTokenSpace, null);\r
     \r
      **/\r
-    private void initFrame() {\r
+    private void initFrame(SpdFileContents sfc) {\r
 \r
         jComboBoxDataType.addItem("UINT8");\r
         jComboBoxDataType.addItem("UINT16");\r
@@ -440,11 +441,17 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         jComboBoxDataType.addItem("VOID*");\r
         jComboBoxDataType.addItem("BOOLEAN");\r
         jComboBoxDataType.setSelectedIndex(0);\r
+        \r
+        Vector<String> vGuidCName = new Vector<String>();\r
+        sfc.getSpdGuidDeclWithType(vGuidCName, "TOKEN_SPACE_GUID");\r
+        for (int i = 0; i < vGuidCName.size(); ++i) {\r
+            jComboBoxTsGuid.addItem(vGuidCName.get(i));\r
+        }\r
     }\r
 \r
     public void actionPerformed(ActionEvent arg0) {\r
         \r
-        docConsole.setSaved(false);\r
+        \r
             if (arg0.getSource() == jButtonOk) {\r
                 this.save();\r
                 this.dispose();\r
@@ -455,6 +462,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
 \r
             if (arg0.getSource() == jButtonAdd) {\r
                 //ToDo: check before add\r
+          \r
                 boolean[] b = {jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected()};\r
                 if (!checkValidUsage(b)) {\r
                     return;\r
@@ -468,7 +476,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                     modTypeList = null;\r
                 }\r
                 Object[] row = {jTextFieldC_Name.getText(), jTextFieldToken.getText(),\r
-                                jTextFieldTsGuid.getText(), jComboBoxDataType.getSelectedItem(), \r
+                                jComboBoxTsGuid.getSelectedItem(), jComboBoxDataType.getSelectedItem(), \r
                                 jTextFieldDefaultValue.getText(), jTextFieldHelp.getText(),\r
                                 jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(),\r
                                 jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected(),\r
@@ -476,6 +484,11 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 if (!dataValidation(row)) {\r
                     return;\r
                 }\r
+                \r
+                if (tokenCNameExisted(jTextFieldToken.getText(), jTextFieldC_Name.getText())) {\r
+                    return;\r
+                }\r
+                \r
                 model.addRow(row);\r
                 jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
                 String usage = getValidUsage(jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected());\r
@@ -483,6 +496,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                     usage = null;\r
                 }\r
                 sfc.genSpdPcdDefinitions(row[0]+"", row[1]+"", row[3]+"", usage, row[2]+"", row[4]+"", row[5]+"", archList, modTypeList);\r
+                docConsole.setSaved(false);\r
             }\r
             //\r
             // remove selected line\r
@@ -495,6 +509,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 if (rowSelected >= 0) {\r
                     model.removeRow(rowSelected);\r
                     sfc.removeSpdPcdDefinition(rowSelected);\r
+                    docConsole.setSaved(false);\r
                 }\r
             }\r
 \r
@@ -504,6 +519,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
                 }\r
                 model.setRowCount(0);\r
                 sfc.removeSpdPcdDefinition();\r
+                docConsole.setSaved(false);\r
             }\r
             \r
     }\r
@@ -513,18 +529,17 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     }\r
 \r
     /**\r
-     * This method initializes jTextFieldTsGuid        \r
+     * This method initializes jComboBoxTsGuid \r
      *         \r
-     * @return javax.swing.JTextField  \r
+     * @return javax.swing.JComboBox   \r
      */\r
-    private JTextField getJTextFieldTsGuid() {\r
-        if (jTextFieldTsGuid == null) {\r
-            jTextFieldTsGuid = new JTextField();\r
-            jTextFieldTsGuid.setPreferredSize(new java.awt.Dimension(315,20));\r
-            jTextFieldTsGuid.setSize(new java.awt.Dimension(317,20));\r
-            jTextFieldTsGuid.setLocation(new java.awt.Point(156,58));\r
+    private JComboBox getJComboBoxTsGuid() {\r
+        if (jComboBoxTsGuid == null) {\r
+            jComboBoxTsGuid = new JComboBox();\r
+            jComboBoxTsGuid.setBounds(new java.awt.Rectangle(156,58,315,20));\r
+    \r
         }\r
-        return jTextFieldTsGuid;\r
+        return jComboBoxTsGuid;\r
     }\r
 \r
     /**\r
@@ -609,7 +624,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         \r
         Tools.resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
         Tools.resizeComponentWidth(this.jTextFieldToken, this.getWidth(), intPreferredWidth);\r
-        Tools.resizeComponentWidth(this.jTextFieldTsGuid, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jComboBoxTsGuid, this.getWidth(), intPreferredWidth);\r
         Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
         Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
         Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
@@ -812,6 +827,16 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxFeatureFlag.setBounds(new java.awt.Rectangle(156,161,100,21));\r
             jCheckBoxFeatureFlag.setText("Feature Flag");\r
             jCheckBoxFeatureFlag.setPreferredSize(new java.awt.Dimension(21,20));\r
+            jCheckBoxFeatureFlag.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (jCheckBoxFeatureFlag.isSelected()) {\r
+                        jCheckBoxPatchInMod.setSelected(false);\r
+                        jCheckBoxFixedAtBuild.setSelected(false);\r
+                        jCheckBoxDyn.setSelected(false);\r
+                        jCheckBoxDynEx.setSelected(false);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jCheckBoxFeatureFlag;\r
     }\r
@@ -827,6 +852,13 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxFixedAtBuild.setBounds(new java.awt.Rectangle(312,133,108,20));\r
             jCheckBoxFixedAtBuild.setText("Fixed at Build");\r
             jCheckBoxFixedAtBuild.setPreferredSize(new java.awt.Dimension(21,20));\r
+            jCheckBoxFixedAtBuild.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (jCheckBoxFixedAtBuild.isSelected()) {\r
+                        jCheckBoxFeatureFlag.setSelected(false);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jCheckBoxFixedAtBuild;\r
     }\r
@@ -842,6 +874,13 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxPatchInMod.setBounds(new java.awt.Rectangle(156,133,154,20));\r
             jCheckBoxPatchInMod.setText("Patchable in Module");\r
             jCheckBoxPatchInMod.setPreferredSize(new java.awt.Dimension(21,20));\r
+            jCheckBoxPatchInMod.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (jCheckBoxPatchInMod.isSelected()) {\r
+                        jCheckBoxFeatureFlag.setSelected(false);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jCheckBoxPatchInMod;\r
     }\r
@@ -857,6 +896,13 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxDyn.setBounds(new java.awt.Rectangle(278,161,80,20));\r
             jCheckBoxDyn.setText("Dynamic");\r
             jCheckBoxDyn.setPreferredSize(new java.awt.Dimension(21,20));\r
+            jCheckBoxDyn.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (jCheckBoxDyn.isSelected()) {\r
+                        jCheckBoxFeatureFlag.setSelected(false);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jCheckBoxDyn;\r
     }\r
@@ -872,6 +918,13 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jCheckBoxDynEx.setBounds(new java.awt.Rectangle(371,161,99,20));\r
             jCheckBoxDynEx.setText("DynamicEx");\r
             jCheckBoxDynEx.setPreferredSize(new java.awt.Dimension(21,20));\r
+            jCheckBoxDynEx.addItemListener(new java.awt.event.ItemListener() {\r
+                public void itemStateChanged(java.awt.event.ItemEvent e) {\r
+                    if (jCheckBoxDynEx.isSelected()) {\r
+                        jCheckBoxFeatureFlag.setSelected(false);\r
+                    }\r
+                }\r
+            });\r
         }\r
         return jCheckBoxDynEx;\r
     }\r
@@ -897,6 +950,28 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
         return usage.trim();\r
     }\r
     \r
+    private boolean tokenCNameExisted(String token, String cName) {\r
+        Integer inputToken = Integer.decode(token);\r
+        \r
+        for (int i = 0; i < jTable.getRowCount(); ++i) {\r
+            if (jTable.getValueAt(i, 0).equals(cName)) {\r
+                JOptionPane.showMessageDialog(frame, "C_Name already existed in table.");\r
+                return true;\r
+            }\r
+            if (jTable.getValueAt(i, 1).equals(token)) {\r
+                JOptionPane.showMessageDialog(frame, "Token already existed in table.");\r
+                return true;\r
+            }\r
+            Integer tokenValue = Integer.decode(jTable.getValueAt(i, 1)+"");\r
+            if (tokenValue.equals(inputToken)) {\r
+                JOptionPane.showMessageDialog(frame, "Same token value already existed in table.");\r
+                return true;\r
+            }\r
+            \r
+        }\r
+        return false;\r
+    }\r
+    \r
     private boolean checkValidUsage(boolean[] b) {\r
         if (!(b[0] || b[1] || b[2] || b[3] || b[4])){\r
             JOptionPane.showMessageDialog(frame, "You must specify at least one usage.");\r