]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java
1. Fix EDKT436 "Is PCD driver" only gives one value: PEI_PCD_DRIVER to user
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / MsaHeader.java
index 123330d77bb44e53b7a8b1b8d967f8cba35a12cc..3427d7d8e5feab5c9bd4f0885c5bef543f052972 100644 (file)
@@ -18,6 +18,7 @@ package org.tianocore.frameworkwizard.module.ui;
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
 import java.awt.event.FocusEvent;\r
+import java.awt.event.ItemEvent;\r
 import java.util.Vector;\r
 \r
 import javax.swing.ButtonGroup;\r
@@ -66,12 +67,13 @@ public class MsaHeader extends IInternalFrame {
     private int dialogHeight = 630;\r
 \r
     private final int labelWidth = 155;\r
-    \r
+\r
     private int valueWidth = 320;\r
-    \r
+\r
     private final int labelCol = 12;\r
-    \r
+\r
     private final int valueCol = 168;\r
+\r
     //\r
     //Define class members\r
     //\r
@@ -173,7 +175,7 @@ public class MsaHeader extends IInternalFrame {
 \r
     private JCheckBox jCheckBoxPpc = null;\r
 \r
-    private JComboBox jComboBoxPcdIsDriver = null;\r
+    private JTextField jComboBoxPcdIsDriver = null;\r
 \r
     private JCheckBox jCheckBoxPcd = null;\r
 \r
@@ -210,6 +212,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxIa32.setText("IA32");\r
             jCheckBoxIa32.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxIa32.addFocusListener(this);\r
+            jCheckBoxIa32.addItemListener(this);\r
         }\r
         return jCheckBoxIa32;\r
     }\r
@@ -226,6 +229,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxX64.setText("X64");\r
             jCheckBoxX64.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxX64.addFocusListener(this);\r
+            jCheckBoxX64.addItemListener(this);\r
         }\r
         return jCheckBoxX64;\r
     }\r
@@ -242,6 +246,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxIpf.setText("IPF");\r
             jCheckBoxIpf.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxIpf.addFocusListener(this);\r
+            jCheckBoxIpf.addItemListener(this);\r
         }\r
         return jCheckBoxIpf;\r
     }\r
@@ -258,6 +263,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxEbc.setText("EBC");\r
             jCheckBoxEbc.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxEbc.addFocusListener(this);\r
+            jCheckBoxEbc.addItemListener(this);\r
         }\r
         return jCheckBoxEbc;\r
     }\r
@@ -274,6 +280,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxArm.setText("ARM");\r
             jCheckBoxArm.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxArm.addFocusListener(this);\r
+            jCheckBoxArm.addItemListener(this);\r
         }\r
         return jCheckBoxArm;\r
     }\r
@@ -290,6 +297,7 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxPpc.setText("PPC");\r
             jCheckBoxPpc.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\r
             jCheckBoxPpc.addFocusListener(this);\r
+            jCheckBoxPpc.addItemListener(this);\r
         }\r
         return jCheckBoxPpc;\r
     }\r
@@ -530,6 +538,7 @@ public class MsaHeader extends IInternalFrame {
             jComboBoxModuleType.setBounds(new java.awt.Rectangle(valueCol, 35, valueWidth, 20));\r
             jComboBoxModuleType.setPreferredSize(new java.awt.Dimension(valueWidth, 20));\r
             jComboBoxModuleType.addFocusListener(this);\r
+            jComboBoxModuleType.addItemListener(this);\r
         }\r
         return jComboBoxModuleType;\r
     }\r
@@ -624,15 +633,15 @@ public class MsaHeader extends IInternalFrame {
      *  \r
      * @return javax.swing.JComboBox    \r
      */\r
-    private JComboBox getJComboBoxPcdIsDriver() {\r
+    private JTextField getJComboBoxPcdIsDriver() {\r
         if (jComboBoxPcdIsDriver == null) {\r
-            jComboBoxPcdIsDriver = new JComboBox();\r
+            jComboBoxPcdIsDriver = new JTextField();\r
             jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(valueWidth, 20));\r
             jComboBoxPcdIsDriver.setBounds(new java.awt.Rectangle(valueCol, 530, valueWidth, 20));\r
-            jComboBoxPcdIsDriver.addItemListener(this);\r
+            //jComboBoxPcdIsDriver.addItemListener(this);\r
             jComboBoxPcdIsDriver.addFocusListener(this);\r
             jComboBoxPcdIsDriver.setEnabled(false);\r
-            Tools.generateComboBoxByVector(jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\r
+            //Tools.generateComboBoxByVector(jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\r
             jComboBoxPcdIsDriver.setVisible(false);\r
         }\r
         return jComboBoxPcdIsDriver;\r
@@ -801,11 +810,7 @@ public class MsaHeader extends IInternalFrame {
             this.ex = inEx;\r
             if (ex.getPcdIsDriver() != null) {\r
                 this.jCheckBoxPcd.setSelected(true);\r
-                this.jComboBoxPcdIsDriver.setEnabled(true);\r
-                this.jComboBoxPcdIsDriver.setSelectedItem(ex.getPcdIsDriver());\r
-                // TODO:  If the module type is DXE_DRIVER, set PCD_DXE_DRIVER\r
-                //        If the module type is PEIM, set PCD_PEI_DRIVER\r
-                //        If the module type is anything else, unset this!\r
+                this.jCheckBoxPcd.setEnabled(true);\r
             }\r
             this.jCheckBoxFlashMap.setSelected(ex.getTianoR8FlashMapH());\r
         }\r
@@ -963,29 +968,11 @@ public class MsaHeader extends IInternalFrame {
      *\r
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
-        if (arg0.getSource() == jButtonOk) {\r
-            if (this.check()) {\r
-                this.save();\r
-            } else {\r
-                return;\r
-            }\r
-            this.setEdited(true);\r
-            this.dispose();\r
-        }\r
-\r
-        if (arg0.getSource() == jButtonCancel) {\r
-            this.setEdited(false);\r
-        }\r
-\r
         if (arg0.getSource() == jButtonGenerateGuid) {\r
             jTextFieldGuid.setText(Tools.generateUuidString());\r
             jTextFieldGuid.requestFocus();\r
             jButtonGenerateGuid.requestFocus();\r
         }\r
-\r
-        if (arg0.getSource() == this.jCheckBoxPcd) {\r
-            this.jComboBoxPcdIsDriver.setEnabled(this.jCheckBoxPcd.isSelected());\r
-        }\r
     }\r
 \r
     /**\r
@@ -1363,12 +1350,13 @@ public class MsaHeader extends IInternalFrame {
                 //                jTextFieldOutputFileBasename.addFocusListener(this);\r
                 return;\r
             }\r
-            \r
+\r
             if (!DataValidation.isOutputFileBasename(this.jTextFieldOutputFileBasename.getText())) {\r
-                Log.wrn("Update Msa Header", "Incorrect data type for Output File Basename, it must be a valid file name");\r
+                Log.wrn("Update Msa Header",\r
+                        "Incorrect data type for Output File Basename, it must be a valid file name");\r
                 return;\r
             }\r
-            \r
+\r
             if (!this.jTextFieldOutputFileBasename.getText().equals(md.getOutputFileBasename())) {\r
                 this.md.setOutputFileBasename(this.jTextFieldOutputFileBasename.getText());\r
             } else {\r
@@ -1415,51 +1403,6 @@ public class MsaHeader extends IInternalFrame {
             }\r
         }\r
 \r
-        //\r
-        // Check Pcd is Driver\r
-        //\r
-        if (arg0.getSource() == this.jCheckBoxPcd || arg0.getSource() == this.jComboBoxPcdIsDriver) {\r
-            if ((this.ex == null) && this.jCheckBoxPcd.isSelected()) {\r
-                this.ex = ExternsDocument.Externs.Factory.newInstance();\r
-                this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
-                                                                                              .toString()));\r
-                this.msa.setExterns(this.ex);\r
-            } else if ((this.ex != null) && (this.ex.getPcdIsDriver() == null) && this.jCheckBoxPcd.isSelected()) {\r
-                this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
-                                                                                              .toString()));\r
-                this.msa.setExterns(this.ex);\r
-            } else if ((this.ex != null) && (this.ex.getPcdIsDriver() != null)) {\r
-                if (this.jCheckBoxPcd.isSelected()\r
-                    && !this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(\r
-                                                                                      this.ex.getPcdIsDriver()\r
-                                                                                             .toString())) {\r
-                    this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
-                                                                                                  .toString()));\r
-                    this.msa.setExterns(this.ex);\r
-                }\r
-                if (!this.jCheckBoxPcd.isSelected()) {\r
-                    ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance();\r
-                    if (this.ex.getExternList() != null) {\r
-                        for (int index = 0; index < this.ex.getExternList().size(); index++) {\r
-                            newEx.addNewExtern();\r
-                            newEx.setExternArray(index, this.ex.getExternArray(index));\r
-                        }\r
-                    }\r
-                    if (this.ex.getSpecificationList() != null) {\r
-                        for (int index = 0; index < this.ex.getSpecificationList().size(); index++) {\r
-                            newEx.addNewSpecification();\r
-                            newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index));\r
-                        }\r
-                    }\r
-                    if (this.ex.getTianoR8FlashMapH()) {\r
-                        newEx.setTianoR8FlashMapH(this.ex.getTianoR8FlashMapH());\r
-                    }\r
-                    this.ex = newEx;\r
-                    this.msa.setExterns(this.ex);\r
-                }\r
-            }\r
-        }\r
-\r
         //\r
         // Check Flash Map\r
         //\r
@@ -1543,7 +1486,7 @@ public class MsaHeader extends IInternalFrame {
     }\r
 \r
     private void setAllItemsSelected(boolean isSelected) {\r
-        this.jCheckBoxIa32.setSelected(isSelected);\r
+        this.jCheckBoxIa32.setSelected(true);\r
         this.jCheckBoxX64.setSelected(isSelected);\r
         this.jCheckBoxIpf.setSelected(isSelected);\r
         this.jCheckBoxEbc.setSelected(isSelected);\r
@@ -1553,10 +1496,12 @@ public class MsaHeader extends IInternalFrame {
 \r
     private void setSelectedItems(Vector<String> v) {\r
         setAllItemsSelected(false);\r
+        boolean isIA32Selected = false;\r
         if (v != null) {\r
             for (int index = 0; index < v.size(); index++) {\r
                 if (v.get(index).equals(this.jCheckBoxIa32.getText())) {\r
                     this.jCheckBoxIa32.setSelected(true);\r
+                    isIA32Selected = true;\r
                     continue;\r
                 }\r
                 if (v.get(index).equals(this.jCheckBoxIpf.getText())) {\r
@@ -1580,6 +1525,9 @@ public class MsaHeader extends IInternalFrame {
                     continue;\r
                 }\r
             }\r
+            if (!isIA32Selected) {\r
+                this.jCheckBoxIa32.setSelected(false);\r
+            }\r
         }\r
     }\r
 \r
@@ -1595,6 +1543,8 @@ public class MsaHeader extends IInternalFrame {
             jCheckBoxPcd.setText("Is this a PCD Driver?");\r
             jCheckBoxPcd.addFocusListener(this);\r
             jCheckBoxPcd.addActionListener(this);\r
+            jCheckBoxPcd.setEnabled(false);\r
+            jCheckBoxPcd.addItemListener(this);\r
         }\r
         return jCheckBoxPcd;\r
     }\r
@@ -1660,4 +1610,83 @@ public class MsaHeader extends IInternalFrame {
         }\r
         return jRadioButtonBinaryModuleFalse;\r
     }\r
+\r
+    public void itemStateChanged(ItemEvent arg0) {\r
+        if (arg0.getSource() == this.jCheckBoxIa32 || arg0.getSource() == this.jCheckBoxIpf\r
+            || arg0.getSource() == this.jCheckBoxX64 || arg0.getSource() == this.jCheckBoxEbc\r
+            || arg0.getSource() == this.jCheckBoxArm || arg0.getSource() == this.jCheckBoxPpc) {\r
+            if (!this.jCheckBoxIa32.isSelected() && !this.jCheckBoxX64.isSelected() && !this.jCheckBoxIpf.isSelected()\r
+                && !this.jCheckBoxEbc.isSelected() && !this.jCheckBoxPpc.isSelected()\r
+                && !this.jCheckBoxArm.isSelected()) {\r
+                Log\r
+                   .wrn("At lease one Supportted Architecture should be selected!    IA32 is selected as default value!");\r
+                this.jCheckBoxIa32.setSelected(true);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == this.jComboBoxModuleType) {\r
+            if (this.jComboBoxModuleType.getSelectedItem().equals("PEIM")\r
+                || this.jComboBoxModuleType.getSelectedItem().equals("DXE_DRIVER")) {\r
+                this.jCheckBoxPcd.setEnabled(true);\r
+                if (this.jCheckBoxPcd.isSelected()) {\r
+                    this.jCheckBoxPcd.setSelected(false);\r
+                    this.jCheckBoxPcd.setSelected(true);\r
+                }\r
+            } else {\r
+                this.jCheckBoxPcd.setEnabled(false);\r
+                this.jCheckBoxPcd.setSelected(false);\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check Pcd is Driver\r
+        //\r
+        if (arg0.getSource() == this.jCheckBoxPcd) {\r
+            if (this.jCheckBoxPcd.isSelected()) {\r
+                if (this.jComboBoxModuleType.getSelectedItem().toString().equals("DXE_DRIVER")) {\r
+                    this.jComboBoxPcdIsDriver.setText("DXE_PCD_DRIVER");\r
+                    this.jComboBoxPcdIsDriver.setEnabled(true);\r
+                } else if (this.jComboBoxModuleType.getSelectedItem().toString().equals("PEIM")) {\r
+                    this.jComboBoxPcdIsDriver.setText("PEI_PCD_DRIVER");\r
+                    this.jComboBoxPcdIsDriver.setEnabled(true);\r
+                }\r
+            }\r
+\r
+            if ((this.ex == null) && this.jCheckBoxPcd.isSelected()) {\r
+                this.ex = ExternsDocument.Externs.Factory.newInstance();\r
+                this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));\r
+                this.msa.setExterns(this.ex);\r
+            } else if ((this.ex != null) && (this.ex.getPcdIsDriver() == null) && this.jCheckBoxPcd.isSelected()) {\r
+                this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));\r
+                this.msa.setExterns(this.ex);\r
+            } else if ((this.ex != null) && (this.ex.getPcdIsDriver() != null)) {\r
+                if (this.jCheckBoxPcd.isSelected()\r
+                    && !this.jComboBoxPcdIsDriver.getText().toString().equals(this.ex.getPcdIsDriver().toString())) {\r
+                    this.ex.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getText()));\r
+                    this.msa.setExterns(this.ex);\r
+                }\r
+                if (!this.jCheckBoxPcd.isSelected()) {\r
+                    ExternsDocument.Externs newEx = ExternsDocument.Externs.Factory.newInstance();\r
+                    if (this.ex.getExternList() != null) {\r
+                        for (int index = 0; index < this.ex.getExternList().size(); index++) {\r
+                            newEx.addNewExtern();\r
+                            newEx.setExternArray(index, this.ex.getExternArray(index));\r
+                        }\r
+                    }\r
+                    if (this.ex.getSpecificationList() != null) {\r
+                        for (int index = 0; index < this.ex.getSpecificationList().size(); index++) {\r
+                            newEx.addNewSpecification();\r
+                            newEx.setSpecificationArray(index, this.ex.getSpecificationArray(index));\r
+                        }\r
+                    }\r
+                    if (this.ex.getTianoR8FlashMapH()) {\r
+                        newEx.setTianoR8FlashMapH(this.ex.getTianoR8FlashMapH());\r
+                    }\r
+                    this.ex = newEx;\r
+                    this.msa.setExterns(this.ex);\r
+                }\r
+            }\r
+            this.save();\r
+        }\r
+    }\r
 }\r