]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
Fix EDKT143.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
index a849f5ab464d44fc5f53816e08e95eeee7002b74..5164c0f6c96eb35bcc29890dff46af16a6f1e5a4 100644 (file)
@@ -24,6 +24,8 @@ import javax.swing.table.DefaultTableModel;
 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.SurfaceAreaQuery;\r
 import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
@@ -96,11 +98,11 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private HashMap<String, ArrayList<String>> classConsumed = null;\r
     private JPanel jPanel8 = null;\r
     private JLabel jLabel6 = null;\r
-    private JTextField jTextField = null;\r
+    private JTextField jTextFieldFvBinding = null;\r
     private JLabel jLabel7 = null;\r
-    private JTextField jTextField1 = null;\r
+    private JTextField jTextFieldFileGuid = null;\r
     private JLabel jLabel8 = null;\r
-    private JTextField jTextField2 = null;\r
+    private JTextField jTextFieldFfsKey = null;\r
     private JScrollPane jScrollPane6 = null;\r
     private JTable jTable4 = null;\r
     private JButton jButton4 = null;\r
@@ -117,6 +119,8 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JTextField jTextField4 = null;\r
     private JButton jButton6 = null;\r
     private JComboBox jComboBox1 = null;\r
+    private OpeningPlatformType docConsole = null;\r
+    private JLabel jLabel12 = null;\r
     /**\r
      * This is the default constructor\r
      */\r
@@ -129,26 +133,28 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         this.ffc = ffc;\r
     }\r
     \r
-    public void setKey(String k){\r
+    public void setKey(String k, int i, OpeningPlatformType dc){\r
         this.moduleKey = k;\r
+        this.docConsole = dc;\r
         jTabbedPane.setSelectedIndex(0);\r
+        initPcdBuildDefinition(i);\r
     }\r
 \r
     /**\r
       init will be called each time FpdModuleSA object is to be shown.\r
       @param key Module information.\r
      **/\r
-    public void initPcdBuildDefinition(String key) {\r
+    public void initPcdBuildDefinition(int i) {\r
         //\r
         // display pcd for key.\r
         //\r
         model.setRowCount(0);\r
-        int pcdCount = ffc.getPcdDataCount(key);\r
+        int pcdCount = ffc.getPcdDataCount(i);\r
         if (pcdCount != 0) {\r
             String[][] saa = new String[pcdCount][7];\r
-            ffc.getPcdData(key, saa);\r
-            for (int i = 0; i < saa.length; ++i) {\r
-                model.addRow(saa[i]);\r
+            ffc.getPcdData(i, saa);\r
+            for (int j = 0; j < saa.length; ++j) {\r
+                model.addRow(saa[j]);\r
             }\r
         }\r
     }\r
@@ -157,7 +163,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         //\r
         // display library classes that need to be resolved. also potential instances for them.\r
         //\r
-        resolveLibraryInstances(key);\r
+        resolveLibraryInstances(moduleKey);\r
         //\r
         // display lib instances already selected for key\r
         //\r
@@ -190,15 +196,22 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         //\r
         String fvBinding = ffc.getFvBinding(key);\r
         if (fvBinding != null) {\r
-            jTextField.setText(fvBinding);\r
+            jTextFieldFvBinding.setText(fvBinding);\r
         }\r
         String fileGuid = ffc.getFfsFileNameGuid(key);\r
         if (fileGuid != null) {\r
-            jTextField1.setText(fileGuid);\r
+            jTextFieldFileGuid.setText(fileGuid);\r
         }\r
         String ffsKey = ffc.getFfsFormatKey(key);\r
         if (ffsKey != null) {\r
-            jTextField2.setText(ffsKey);\r
+            jTextFieldFfsKey.setText(ffsKey);\r
+        }\r
+        \r
+        optionsTableModel.setRowCount(0);\r
+        String[][] saa = new String[ffc.getModuleSAOptionsCount(key)][6];\r
+        ffc.getModuleSAOptions(key, saa);\r
+        for (int i = 0; i < saa.length; ++i) {\r
+            optionsTableModel.addRow(saa[i]);\r
         }\r
     }\r
     \r
@@ -348,7 +361,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     \r
     private ModuleIdentification getModuleId(String key){\r
         //\r
-        // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
+        // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion, Arch into string array.\r
         //\r
         String[] keyPart = key.split(" ");\r
         Set<PackageIdentification> spi = GlobalData.getPackageList();\r
@@ -356,16 +369,26 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         \r
         while(ispi.hasNext()) {\r
             PackageIdentification pi = (PackageIdentification)ispi.next();\r
-            if ( !pi.getGuid().equals(keyPart[2])){\r
-//                            || !pi.getVersion().equals(keyPart[3])){\r
+            if ( !pi.getGuid().equals(keyPart[2])){ \r
+\r
                 continue;\r
             }\r
+            if (keyPart[3] != null && keyPart[3].length() > 0 && !keyPart[3].equals("null")){\r
+                if(!pi.getVersion().equals(keyPart[3])){\r
+                    continue;\r
+                }\r
+            }\r
             Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
             Iterator ismi = smi.iterator();\r
             while(ismi.hasNext()) {\r
                 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
                 if (mi.getGuid().equals(keyPart[0])){\r
-//                                && mi.getVersion().equals(keyPart[1])){\r
+                    if (keyPart[1] != null && keyPart[1].length() > 0 && !keyPart[1].equals("null")){\r
+                        if(!mi.getVersion().equals(keyPart[1])){\r
+                            continue;\r
+                        }\r
+                    }\r
+\r
                     return mi;\r
                 }\r
             }\r
@@ -482,7 +505,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
             jPanel.addComponentListener(new java.awt.event.ComponentAdapter() {\r
                 public void componentShown(java.awt.event.ComponentEvent e) {\r
-                    initPcdBuildDefinition(moduleKey);\r
+//                    initPcdBuildDefinition(moduleKey);\r
                 }\r
             });\r
             \r
@@ -744,7 +767,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JPanel getJPanel4() {\r
         if (jPanel4 == null) {\r
             jLabel1 = new JLabel();\r
-            jLabel1.setText("Library Classes Consumed");\r
+            jLabel1.setText("Library Classes Uninstantiated");\r
             jPanel4 = new JPanel();\r
             jPanel4.add(jLabel1, null);\r
             jPanel4.add(getJScrollPane3(), null);\r
@@ -881,7 +904,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JScrollPane getJScrollPane4() {\r
         if (jScrollPane4 == null) {\r
             jScrollPane4 = new JScrollPane();\r
-            jScrollPane4.setPreferredSize(new java.awt.Dimension(450,170));\r
+            jScrollPane4.setPreferredSize(new java.awt.Dimension(430,170));\r
             jScrollPane4.setViewportView(getJTable3());\r
         }\r
         return jScrollPane4;\r
@@ -986,6 +1009,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     if (row < 0) {\r
                         return;\r
                     }\r
+                    docConsole.setSaved(false);\r
                     Object[] s = {model3.getValueAt(row, 0), model3.getValueAt(row, 1),\r
                                   model3.getValueAt(row, 2), model3.getValueAt(row, 3),\r
                                   model3.getValueAt(row, 4)};\r
@@ -994,12 +1018,13 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     model3.getValueAt(row, 2) + " " +\r
                     model3.getValueAt(row, 3) + " " +\r
                     model3.getValueAt(row, 4);\r
-                    ffc.genLibraryInstance(model3.getValueAt(row, 1)+"", model3.getValueAt(row, 2)+"", model3.getValueAt(row, 3)+"", model3.getValueAt(row, 4)+"", moduleKey);\r
+                    ModuleIdentification libMi = getModuleId(instanceValue);\r
+                    ffc.genLibraryInstance(libMi, moduleKey);\r
                     //\r
                     // Add pcd information of selected instance to current moduleSA\r
                     //\r
                     try{\r
-                        ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey));\r
+                        ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
                     }\r
                     catch (Exception exception) {\r
                         JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
@@ -1027,6 +1052,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     if (row < 0) {\r
                         return;\r
                     }\r
+                    docConsole.setSaved(false);\r
                     removeInstance(model1.getValueAt(row, 1) + " " + \r
                                    model1.getValueAt(row, 2) + " " +\r
                                    model1.getValueAt(row, 3) + " " +\r
@@ -1072,14 +1098,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     public void actionPerformed(ActionEvent arg0) {\r
 \r
         if (arg0.getSource() == jButton2) {\r
-//            ffc.removeLibraryInstances(moduleKey);\r
-//            for (int i = 0; i < model1.getRowCount(); ++i) {\r
-//                String mg = model1.getValueAt(i, 1)+"";\r
-//                String mv = model1.getValueAt(i, 2)+"";\r
-//                String pg = model1.getValueAt(i, 3)+"";\r
-//                String pv = model1.getValueAt(i, 4)+"";\r
-//                ffc.genLibraryInstance(mg, mv, pg, pv, moduleKey);\r
-//            }\r
+            if (jTable4.isEditing()) {\r
+                jTable4.getCellEditor().stopCellEditing();\r
+            }\r
             this.setVisible(false);\r
         }\r
     }\r
@@ -1090,20 +1111,30 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      */\r
     private JPanel getJPanel8() {\r
         if (jPanel8 == null) {\r
+            jLabel12 = new JLabel();\r
+            jLabel12.setText("");\r
+            jLabel12.setPreferredSize(new java.awt.Dimension(250,16));\r
+            FlowLayout flowLayout4 = new FlowLayout();\r
+            flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r
             jLabel8 = new JLabel();\r
             jLabel8.setText("FFS Format Key");\r
+            jLabel8.setPreferredSize(new java.awt.Dimension(90,16));\r
             jLabel7 = new JLabel();\r
             jLabel7.setText("FFS File GUID");\r
+            jLabel7.setPreferredSize(new java.awt.Dimension(90,16));\r
             jLabel6 = new JLabel();\r
             jLabel6.setText("FV Binding");\r
+            jLabel6.setPreferredSize(new java.awt.Dimension(90,16));\r
             jPanel8 = new JPanel();\r
+            jPanel8.setLayout(flowLayout4);\r
             jPanel8.add(jLabel6, null);\r
-            jPanel8.add(getJTextField(), null);\r
+            jPanel8.add(getJTextFieldFvBinding(), null);\r
             jPanel8.add(jLabel7, null);\r
-            jPanel8.add(getJTextField1(), null);\r
+            jPanel8.add(getJTextFieldFileGuid(), null);\r
             jPanel8.add(jLabel8, null);\r
-            jPanel8.add(getJTextField2(), null);\r
+            jPanel8.add(getJTextFieldFfsKey(), null);\r
             jPanel8.add(getJScrollPane6(), null);\r
+            jPanel8.add(jLabel12, null);\r
             jPanel8.add(getJButton4(), null);\r
             jPanel8.add(getJButton5(), null);\r
             jPanel8.addComponentListener(new java.awt.event.ComponentAdapter() {\r
@@ -1119,51 +1150,91 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField() {\r
-        if (jTextField == null) {\r
-            jTextField = new JTextField();\r
-            jTextField.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jTextField.addFocusListener(new java.awt.event.FocusAdapter() {\r
+    private JTextField getJTextFieldFvBinding() {\r
+        if (jTextFieldFvBinding == null) {\r
+            jTextFieldFvBinding = new JTextField();\r
+            jTextFieldFvBinding.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jTextFieldFvBinding.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    ffc.setFvBinding(moduleKey, jTextField.getText());\r
+                    String originalFvBinding = ffc.getFvBinding(moduleKey);\r
+                    String newFvBinding = jTextFieldFvBinding.getText();\r
+                    if (newFvBinding.equals(originalFvBinding)) {\r
+                        return;\r
+                    }\r
+                    if (newFvBinding.length() == 0 && originalFvBinding == null) {\r
+                        return;\r
+                    }\r
+                    docConsole.setSaved(false);\r
+                    ffc.setFvBinding(moduleKey, newFvBinding);\r
                 }\r
             });\r
+            \r
         }\r
-        return jTextField;\r
+        return jTextFieldFvBinding;\r
     }\r
     /**\r
      * This method initializes jTextField1     \r
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField1() {\r
-        if (jTextField1 == null) {\r
-            jTextField1 = new JTextField();\r
-            jTextField1.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {\r
+    private JTextField getJTextFieldFileGuid() {\r
+        if (jTextFieldFileGuid == null) {\r
+            jTextFieldFileGuid = new JTextField();\r
+            jTextFieldFileGuid.setPreferredSize(new java.awt.Dimension(300,20));\r
+            jTextFieldFileGuid.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    ffc.setFfsFileNameGuid(moduleKey, jTextField1.getText());\r
+                    String originalFileGuid = ffc.getFfsFileNameGuid(moduleKey);\r
+                    String newFileGuid = jTextFieldFileGuid.getText();\r
+                    if (newFileGuid.equals(originalFileGuid)) {\r
+                        return;\r
+                    }\r
+                    if (newFileGuid.length() == 0 && originalFileGuid == null) {\r
+                        return;\r
+                    }\r
+                    if (newFileGuid.length() > 0) {\r
+                        if (!DataValidation.isGuid(newFileGuid)) {\r
+                            JOptionPane.showMessageDialog(frame, "FFS File Guid is NOT GUID Type.");\r
+                            return;\r
+                        }\r
+                    }\r
+                    \r
+                    docConsole.setSaved(false);\r
+                    if (newFileGuid.length() == 0) {\r
+                        newFileGuid = null;\r
+                    }\r
+                    ffc.setFfsFileNameGuid(moduleKey, newFileGuid);\r
                 }\r
             });\r
+            \r
         }\r
-        return jTextField1;\r
+        return jTextFieldFileGuid;\r
     }\r
     /**\r
-     * This method initializes jTextField2     \r
+     * This method initializes jTextFieldFfsKey        \r
      *         \r
      * @return javax.swing.JTextField  \r
      */\r
-    private JTextField getJTextField2() {\r
-        if (jTextField2 == null) {\r
-            jTextField2 = new JTextField();\r
-            jTextField2.setPreferredSize(new java.awt.Dimension(100,20));\r
-            jTextField2.addFocusListener(new java.awt.event.FocusAdapter() {\r
+    private JTextField getJTextFieldFfsKey() {\r
+        if (jTextFieldFfsKey == null) {\r
+            jTextFieldFfsKey = new JTextField();\r
+            jTextFieldFfsKey.setPreferredSize(new java.awt.Dimension(150,20));\r
+            jTextFieldFfsKey.addFocusListener(new java.awt.event.FocusAdapter() {\r
                 public void focusLost(java.awt.event.FocusEvent e) {\r
-                    ffc.setFfsFormatKey(moduleKey, jTextField2.getText());\r
+                    String originalFfsKey = ffc.getFfsFormatKey(moduleKey);\r
+                    String newFfsKey = jTextFieldFfsKey.getText();\r
+                    if (newFfsKey.equals(originalFfsKey)) {\r
+                        return;\r
+                    }\r
+                    if (newFfsKey.length() == 0 && originalFfsKey == null) {\r
+                        return;\r
+                    }\r
+                    docConsole.setSaved(false);\r
+                    ffc.setFfsFormatKey(moduleKey, newFfsKey);\r
                 }\r
             });\r
+            \r
         }\r
-        return jTextField2;\r
+        return jTextFieldFfsKey;\r
     }\r
     /**\r
      * This method initializes jScrollPane6    \r
@@ -1236,7 +1307,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                         }\r
                         \r
                         String contents = m.getValueAt(row, 5) + "";\r
-                        \r
+                        docConsole.setSaved(false);\r
                         ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
                     }\r
                 }\r
@@ -1256,11 +1327,11 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jButton4.setText("New");\r
             jButton4.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    String[] row = {"", "", "", "", "IA32", ""};\r
+                    String[] row = {"", "", "", "", "", ""};\r
                     optionsTableModel.addRow(row);\r
                     Vector<Object> v = new Vector<Object>();\r
-                    Vector<Object> v1 = new Vector<Object>();\r
-                    v1.add("IA32");\r
+                    Vector<Object> v1 = null;\r
+                    docConsole.setSaved(false);\r
                     ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
                 }\r
             });\r
@@ -1282,7 +1353,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     if (jTable4.getSelectedRow() < 0) {\r
                         return;\r
                     }\r
-                    \r
+                    docConsole.setSaved(false);\r
                     ffc.removeModuleSAOptionsOpt(moduleKey, jTable4.getSelectedRow());\r
                     optionsTableModel.removeRow(jTable4.getSelectedRow());\r
                 }\r
@@ -1442,7 +1513,7 @@ private void pcdNonDynamicToDynamic(String cName, String tsGuid) {
     ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);\r
     for (int i = 0; i < al.size(); ++i) {\r
         String[] s = al.get(i).split(" ");\r
-        String mKey = s[0] + s[1] + s[2] + s[3];\r
+        String mKey = s[0] + " " + s[1]+ " " + s[2] + " " + s[3];\r
         ffc.updatePcdData(mKey, cName, tsGuid, jComboBox.getSelectedItem()+"", jTextField3.getText(), jTextField4.isVisible() ? jTextField4.getText() : jComboBox1.getSelectedItem()+"");\r
         s[4] = jComboBox.getSelectedItem()+"";\r
         al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);\r
@@ -1494,6 +1565,7 @@ private JButton getJButton6() {
                 if (row < 0) {\r
                     return;\r
                 }\r
+                docConsole.setSaved(false);\r
                 model.setValueAt(jComboBox.getSelectedItem(), row, 2);\r
                 model.setValueAt(jTextField3.getText(), row, 4);\r
                 model.setValueAt(jTextField4.isVisible()? jTextField4.getText():jComboBox1.getSelectedItem(), row, 6);\r