]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
UI rearrangement for build options and moduleSa settings.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
index 76a4dea0499b891532359cde4a1befc6b5cfc0d0..289dd148a5389136fb154315a6d219626625b140 100644 (file)
@@ -39,6 +39,7 @@ import javax.swing.table.TableModel;
 import org.tianocore.PackageSurfaceAreaDocument;\r
 \r
 import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
 import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
@@ -101,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
@@ -269,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
@@ -340,11 +342,11 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
            \r
             jLabelSupArch = new JLabel();\r
             jLabelSupArch.setBounds(new java.awt.Rectangle(241,192,89,16));\r
-            jLabelSupArch.setText("Supported Arch");\r
+            jLabelSupArch.setText("Supported Architectures");\r
             jLabelSupArch.setEnabled(true);\r
             jLabelSupMod = new JLabel();\r
             jLabelSupMod.setBounds(new java.awt.Rectangle(15,193,103,16));\r
-            jLabelSupMod.setText("Supported Module");\r
+            jLabelSupMod.setText("Supported Module type");\r
             jLabelSupMod.setEnabled(true);\r
             starLabel = new StarLabel();\r
             starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
@@ -355,7 +357,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,84,20));\r
             jLabelVarVal.setText("Valid Usage");\r
             jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("C_Name");\r
+            jLabelC_Name.setText("C Name");\r
             jLabelC_Name.setBounds(new java.awt.Rectangle(11,9,140,20));\r
             jLabelTokenSpace = new JLabel();\r
             jLabelTokenSpace.setBounds(new java.awt.Rectangle(11,58,140,20));\r
@@ -364,7 +366,7 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
             jLabelDataType.setText("Data Type");\r
             jLabelDataType.setBounds(new java.awt.Rectangle(11,83,140,20));\r
             jLabelToken = new JLabel();\r
-            jLabelToken.setText("Token");\r
+            jLabelToken.setText("Token Number");\r
             jLabelToken.setBounds(new java.awt.Rectangle(11,33,140,20));\r
             jLabelItemType = new JLabel();\r
             jLabelItemType.setText("Help Text");\r
@@ -378,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
@@ -430,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
@@ -439,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
@@ -454,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
@@ -467,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
@@ -475,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
@@ -482,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
@@ -494,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
@@ -503,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
@@ -512,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
@@ -606,14 +622,14 @@ public class SpdPcdDefs extends IInternalFrame implements TableModelListener{
     public void componentResized(ComponentEvent arg0) {\r
         int intPreferredWidth = 500;\r
         \r
-        resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldToken, this.getWidth(), intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldTsGuid, this.getWidth(), intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
-        resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jTextFieldToken, 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
         \r
-        resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
+        Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
 //        relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
 //        relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
 //        relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
@@ -811,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
@@ -826,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
@@ -841,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
@@ -856,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
@@ -871,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
@@ -896,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