]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
1.change GlobalData to WorkspaceProfile.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
index 36b22be6a4784f7e2945847ab2986a047ffb7039..ed3b6e20297bbcea4b09bf9c5d18b647dc0a7320 100644 (file)
@@ -23,10 +23,9 @@ import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableModel;\r
 import javax.swing.table.TableModel;\r
 \r
-import org.apache.xmlbeans.XmlObject;\r
 import org.tianocore.frameworkwizard.common.DataValidation;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
-import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
+import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
 import org.tianocore.frameworkwizard.platform.ui.global.SurfaceAreaQuery;\r
 import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
 import org.tianocore.frameworkwizard.platform.ui.id.PackageIdentification;\r
@@ -38,7 +37,6 @@ import java.util.ArrayList;
 import java.util.HashMap;\r
 import java.util.Iterator;\r
 import java.util.ListIterator;\r
-import java.util.Map;\r
 import java.util.Set;\r
 import java.util.Vector;\r
 \r
@@ -93,6 +91,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private DefaultTableModel optionsTableModel = null;\r
     private FpdFileContents ffc = null;\r
     private String moduleKey = null;\r
+    private int moduleSaNum = -1;\r
     private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
     private ArrayList<String> classProduced = null;\r
     private HashMap<String, ArrayList<String>> classConsumed = null;\r
@@ -135,6 +134,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     \r
     public void setKey(String k, int i, OpeningPlatformType dc){\r
         this.moduleKey = k;\r
+        moduleSaNum = i;\r
         this.docConsole = dc;\r
         classProduced = null;\r
         classConsumed = null;\r
@@ -151,6 +151,10 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         // display pcd for key.\r
         //\r
         model.setRowCount(0);\r
+        jTextAreaPcdHelp.setText("");\r
+        jComboBoxItemType.setSelectedIndex(-1);\r
+        jTextFieldMaxDatumSize.setText("");\r
+        jTextFieldPcdDefault.setText("");\r
         int pcdCount = ffc.getPcdDataCount(i);\r
         if (pcdCount != 0) {\r
             String[][] saa = new String[pcdCount][7];\r
@@ -175,7 +179,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             String[][] saa = new String[instanceCount][5];\r
             ffc.getLibraryInstances(key, saa);\r
             for (int i = 0; i < saa.length; ++i) {\r
-                ModuleIdentification mi = GlobalData.getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
+                ModuleIdentification mi = WorkspaceProfile.getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
                 if (mi != null) {\r
                     saa[i][0] = mi.getName();\r
                     saa[i][2] = mi.getVersion();\r
@@ -196,14 +200,17 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         //\r
         // display module SA options\r
         //\r
+        jTextFieldFvBinding.setText("");\r
         String fvBinding = ffc.getFvBinding(key);\r
         if (fvBinding != null) {\r
             jTextFieldFvBinding.setText(fvBinding);\r
         }\r
+        jTextFieldFileGuid.setText("");\r
         String fileGuid = ffc.getFfsFileNameGuid(key);\r
         if (fileGuid != null) {\r
             jTextFieldFileGuid.setText(fileGuid);\r
         }\r
+        jTextFieldFfsKey.setText("");\r
         String ffsKey = ffc.getFfsFormatKey(key);\r
         if (ffsKey != null) {\r
             jTextFieldFfsKey.setText(ffsKey);\r
@@ -218,51 +225,41 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     }\r
     \r
     private void resolveLibraryInstances(String key) {\r
-        ModuleIdentification mi = GlobalData.getModuleId(key);\r
+        ModuleIdentification mi = WorkspaceProfile.getModuleId(key);\r
         PackageIdentification[] depPkgList = null;\r
         try{\r
-            Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
-            SurfaceAreaQuery.setDoc(m);\r
             //\r
             // Get dependency pkg list into which we will search lib instances.\r
             //\r
-            depPkgList = SurfaceAreaQuery.getDependencePkg(null);\r
+            depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
             //\r
             // Get the lib class consumed, produced by this module itself.\r
             //\r
-            String[] classConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
+            Vector<String> vClassConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi);\r
             \r
             if (this.classConsumed == null) {\r
                 this.classConsumed = new HashMap<String, ArrayList<String>>();\r
             }\r
             \r
-            for(int i = 0; i < classConsumed.length; ++i){\r
-                ArrayList<String> consumedBy = this.classConsumed.get(classConsumed[i]);\r
+            for(int i = 0; i < vClassConsumed.size(); ++i){\r
+                ArrayList<String> consumedBy = this.classConsumed.get(vClassConsumed.get(i));\r
                 if (consumedBy == null) {\r
                     consumedBy = new ArrayList<String>();\r
                 }\r
                 consumedBy.add(key);\r
-                this.classConsumed.put(classConsumed[i], consumedBy);\r
+                this.classConsumed.put(vClassConsumed.get(i), consumedBy);\r
             }\r
             \r
-            String[] classProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
+            Vector<String> vClassProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
             if (this.classProduced == null) {\r
                 this.classProduced = new ArrayList<String>();\r
             }\r
-            for(int i = 0; i < classProduced.length; ++i){\r
-                if (!this.classProduced.contains(classProduced[i])){\r
-                    this.classProduced.add(classProduced[i]);\r
+            for(int i = 0; i < vClassProduced.size(); ++i){\r
+                if (!this.classProduced.contains(vClassProduced.get(i))){\r
+                    this.classProduced.add(vClassProduced.get(i));\r
                 }\r
             }\r
-            //\r
-            // Get classes unresolved\r
-            //\r
-//            Iterator<String> lip = this.classProduced.listIterator();\r
-//            while(lip.hasNext()){\r
-//                String clsProduced = lip.next();\r
-//                this.classConsumed.remove(clsProduced);\r
-//\r
-//            }\r
+            \r
             //\r
             // find potential instances in all dependency pkgs for classes still in classConsumed.\r
             //\r
@@ -295,7 +292,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         ArrayList<String> al = new ArrayList<String>();\r
         \r
         for (int i = 0; i < depPkgList.length; ++i) {\r
-            Set<ModuleIdentification> smi = GlobalData.getModules(depPkgList[i]);\r
+            Set<ModuleIdentification> smi = WorkspaceProfile.getModules(depPkgList[i]);\r
             Iterator ismi = smi.iterator();\r
             while(ismi.hasNext()) {\r
                 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
@@ -326,7 +323,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     }\r
     \r
     private void removeInstance(String key) {\r
-        ModuleIdentification mi = GlobalData.getModuleId(key); \r
+        ModuleIdentification mi = WorkspaceProfile.getModuleId(key); \r
         //\r
         // remove pcd information of instance from current ModuleSA\r
         //\r
@@ -365,10 +362,12 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private String[] getClassProduced(ModuleIdentification mi){\r
         \r
         try{\r
-            Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
-            SurfaceAreaQuery.setDoc(m);\r
-            String[] clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED");\r
-            return clsProduced;\r
+            Vector<String> clsProduced = SurfaceAreaQuery.getLibraryClasses("ALWAYS_PRODUCED", mi);\r
+            String[] sClassProduced = new String[clsProduced.size()];\r
+            for (int i = 0; i < clsProduced.size(); ++i) {\r
+                sClassProduced[i] = clsProduced.get(i);\r
+            }\r
+            return sClassProduced;\r
             \r
         }catch (Exception e) {\r
             e.printStackTrace();\r
@@ -379,16 +378,17 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     \r
     private String[] getClassConsumed(ModuleIdentification mi){\r
         \r
-        String[] clsConsumed = null;\r
         try{\r
-            Map<String, XmlObject> m = GlobalData.getNativeMsa(mi);\r
-            SurfaceAreaQuery.setDoc(m);\r
-            clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED");\r
-            \r
+            Vector<String> clsConsumed = SurfaceAreaQuery.getLibraryClasses("ALWAYS_CONSUMED", mi);\r
+            String[] sClassConsumed = new String[clsConsumed.size()];\r
+            for (int i = 0; i < clsConsumed.size(); ++i) {\r
+                sClassConsumed[i] = clsConsumed.get(i);\r
+            }\r
+            return sClassConsumed;\r
         }catch (Exception e) {\r
             e.printStackTrace();\r
         }\r
-        return clsConsumed;\r
+        return new String[0];\r
     }\r
     \r
     private void showClassToResolved(){\r
@@ -400,12 +400,12 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         while(li.hasNext()){\r
             \r
             String[] s = {li.next()};\r
-            if (classConsumed.get(s[0]) == null) {\r
-                continue;\r
-            }\r
-            if (classConsumed.get(s[0]).size() == 0) {\r
-                continue;\r
-            }\r
+//            if (classConsumed.get(s[0]) == null) {\r
+//                continue;\r
+//            }\r
+//            if (classConsumed.get(s[0]).size() == 0) {\r
+//                continue;\r
+//            }\r
             if (!classProduced.contains(s[0])){\r
                 libClassTableModel.addRow(s);\r
             }\r
@@ -471,7 +471,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jPanelPcd.add(getJPanelPcdSouth(), java.awt.BorderLayout.SOUTH);\r
             jPanelPcd.addComponentListener(new java.awt.event.ComponentAdapter() {\r
                 public void componentShown(java.awt.event.ComponentEvent e) {\r
-//                    initPcdBuildDefinition(moduleKey);\r
+                    initPcdBuildDefinition(moduleSaNum);\r
                 }\r
             });\r
             \r
@@ -546,8 +546,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     else{\r
                         int selectedRow = lsm.getMinSelectionIndex();\r
                         String cName = jTablePcd.getValueAt(selectedRow, 0)+"";\r
+                        String tsGuid = jTablePcd.getValueAt(selectedRow, 1)+"";\r
                         String[] pcdInfo = {"", ""};\r
-                        getPcdInfo(cName, pcdInfo);\r
+                        getPcdInfo(cName, tsGuid, pcdInfo);\r
                         jTextAreaPcdHelp.setText(pcdInfo[0]);\r
                         initComboBox(pcdInfo[1]);\r
                         jComboBoxItemType.setSelectedItem(pcdInfo[1]);\r
@@ -627,17 +628,17 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         }\r
     }\r
     \r
-    private void getPcdInfo(String cName, String[] sa) {\r
+    private void getPcdInfo(String cName, String tsGuid, String[] sa) {\r
         String[][] saa = new String[ffc.getLibraryInstancesCount(moduleKey)][5];\r
         ffc.getLibraryInstances(moduleKey, saa);\r
         \r
         try{\r
-            if (ffc.getPcdBuildDataInfo(GlobalData.getModuleId(moduleKey), cName, sa)) {\r
+            if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(moduleKey), cName, tsGuid, sa)) {\r
                 return;\r
             }\r
             for (int j = 0; j < saa.length; ++j) {\r
-                if (ffc.getPcdBuildDataInfo(GlobalData.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),\r
-                                            cName, sa)) {\r
+                if (ffc.getPcdBuildDataInfo(WorkspaceProfile.getModuleId(saa[j][1] + " " + saa[j][2] + " " + saa[j][3] + " " + saa[j][4]),\r
+                                            cName, tsGuid, sa)) {\r
                     return;\r
                 }\r
             }\r
@@ -786,7 +787,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             selectedInstancesTableModel.addColumn("PackageVersion");\r
             jTableSelectedInstances = new JTable(selectedInstancesTableModel);\r
             jTableSelectedInstances.setRowHeight(20);\r
-            jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+            jTableSelectedInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
             jTableSelectedInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             \r
         }\r
@@ -844,8 +845,8 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                         while(li.hasNext()) {\r
                             String instance = li.next();\r
                             String[] s = {"", "", "", "", ""};\r
-                            if (GlobalData.getModuleId(instance) != null) {\r
-                                s[0] = GlobalData.getModuleId(instance).getName();\r
+                            if (WorkspaceProfile.getModuleId(instance) != null) {\r
+                                s[0] = WorkspaceProfile.getModuleId(instance).getName();\r
                             }\r
                             \r
                             String[] instancePart = instance.split(" ");\r
@@ -891,7 +892,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             libInstanceTableModel.addColumn("PackageVersion");\r
             jTableLibInstances = new JTable(libInstanceTableModel);\r
             jTableLibInstances.setRowHeight(20);\r
-            jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+            jTableLibInstances.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
             jTableLibInstances.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             \r
         }\r
@@ -984,7 +985,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     libInstanceTableModel.getValueAt(row, 2) + " " +\r
                     libInstanceTableModel.getValueAt(row, 3) + " " +\r
                     libInstanceTableModel.getValueAt(row, 4);\r
-                    ModuleIdentification libMi = GlobalData.getModuleId(instanceValue);\r
+                    ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceValue);\r
                     ffc.genLibraryInstance(libMi, moduleKey);\r
                     //\r
                     // Add pcd information of selected instance to current moduleSA\r
@@ -1088,6 +1089,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jLabelFfsFileGuid = new JLabel();\r
             jLabelFfsFileGuid.setText("FFS File GUID");\r
             jLabelFfsFileGuid.setPreferredSize(new java.awt.Dimension(90,16));\r
+            jLabelFfsFileGuid.setVisible(false);\r
             jLabelFvBinding = new JLabel();\r
             jLabelFvBinding.setText("FV Binding");\r
             jLabelFvBinding.setPreferredSize(new java.awt.Dimension(90,16));\r
@@ -1147,6 +1149,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (jTextFieldFileGuid == null) {\r
             jTextFieldFileGuid = new JTextField();\r
             jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20));\r
+            jTextFieldFileGuid.setVisible(false);\r
             jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
                     String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey);\r
@@ -1183,7 +1186,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JTextField getJTextFieldFfsKey() {\r
         if (jTextFieldFfsKey == null) {\r
             jTextFieldFfsKey = new JTextField();\r
-            jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(250,20));\r
             jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
                     String originalFfsKey = ffc.getFfsFormatKey(moduleKey);\r
@@ -1439,6 +1442,10 @@ private JComboBox getJComboBoxItemType() {
                 if (jComboBoxItemType.getItemCount() == 3) {\r
                     if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {\r
                         pcdDynamicToNonDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r
+                        if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {\r
+                            jTextFieldPcdDefault.setText("");\r
+                            jTextFieldPcdDefault.setEnabled(true);\r
+                        }\r
                     }\r
                     else{\r
                         pcdNonDynamicToDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");\r