]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
update ModuleSA PCD editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
index 58c181dcd38fe4a2d710d719e4d142382061146c..2923a441534525cd7e31fd7c957b11b040b541c8 100644 (file)
@@ -1,6 +1,8 @@
 package org.tianocore.frameworkwizard.platform.ui;\r
 \r
 import java.awt.BorderLayout;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
 \r
 import javax.swing.JFrame;\r
 import javax.swing.JOptionPane;\r
@@ -128,13 +130,16 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         model.setRowCount(0);\r
         int pcdCount = ffc.getPcdDataCount(key);\r
         if (pcdCount != 0) {\r
-            String[][] saa = new String[pcdCount][6];\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
             }\r
         }\r
-        \r
+        //\r
+        // display library classes that need to be resolved. also potential instances for them.\r
+        //\r
+        resolveLibraryInstances(key);\r
         //\r
         // display lib instances already selected for key\r
         //\r
@@ -144,17 +149,22 @@ 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
-                if (getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]) != null) {\r
-                    saa[i][0] = getModuleId(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]).getName();\r
+                ModuleIdentification mi = 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
+                    saa[i][4] = mi.getPackage().getVersion();\r
+                    //\r
+                    // re-evaluate lib instance usage when adding a already-selected lib instance.\r
+                    //\r
+                    resolveLibraryInstances(saa[i][1] + " " + saa[i][2] + " " + saa[i][3] + " " + saa[i][4]);\r
+                    model1.addRow(saa[i]);\r
                 }\r
                 \r
-                model1.addRow(saa[i]);\r
+                \r
             }\r
         }\r
-        //\r
-        // display library classes that need to be resolved. also potential instances for them.\r
-        //\r
-        resolveLibraryInstances(key);\r
+        \r
         //\r
         // display module SA options\r
         //\r
@@ -326,14 +336,16 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         \r
         while(ispi.hasNext()) {\r
             PackageIdentification pi = (PackageIdentification)ispi.next();\r
-            if ( !pi.getGuid().equals(keyPart[2]) || !pi.getVersion().equals(keyPart[3])){\r
+            if ( !pi.getGuid().equals(keyPart[2])){\r
+//                            || !pi.getVersion().equals(keyPart[3])){\r
                 continue;\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]) && mi.getVersion().equals(keyPart[1])){\r
+                if (mi.getGuid().equals(keyPart[0])){\r
+//                                && mi.getVersion().equals(keyPart[1])){\r
                     return mi;\r
                 }\r
             }\r
@@ -398,6 +410,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      */\r
     private void initialize() {\r
         this.setSize(664, 515);\r
+        this.centerWindow();\r
         this.setModal(true);\r
         this.setTitle("Module Settings");\r
         this.setContentPane(getJContentPane());\r
@@ -471,6 +484,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jPanel1.add(getJPanel7(), java.awt.BorderLayout.CENTER);\r
             jPanel1.addComponentListener(new java.awt.event.ComponentAdapter() {\r
                 public void componentShown(java.awt.event.ComponentEvent e) {\r
+                    init(moduleKey);\r
                 }\r
             });\r
         }\r
@@ -499,10 +513,13 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (jTable == null) {\r
             model = new PartialEditableTableModel();\r
             jTable = new JTable(model);\r
+            jTable.setRowHeight(20);\r
+            jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             model.addColumn("CName");\r
             model.addColumn("TokenSpaceGUID");\r
             model.addColumn("ItemType");\r
             model.addColumn("Token");\r
+            model.addColumn("MaxDatumSize");\r
             model.addColumn("DataType");\r
             model.addColumn("DefaultValue");\r
                         \r
@@ -682,7 +699,8 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             model1.addColumn("PackageGUID");\r
             model1.addColumn("PackageVersion");\r
             jTable1 = new JTable(model1);\r
-            \r
+            jTable1.setRowHeight(20);\r
+            jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -731,7 +749,8 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             model2 = new LibraryTableModel();\r
             model2.addColumn("LibraryClass");\r
             jTable2 = new JTable(model2);\r
-            \r
+            jTable2.setRowHeight(20);\r
+            jTable2.setShowGrid(false);\r
             jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -803,7 +822,8 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             model3.addColumn("PackageGUID");\r
             model3.addColumn("PackageVersion");\r
             jTable3 = new JTable(model3);\r
-            \r
+            jTable3.setRowHeight(20);\r
+            jTable3.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
             jTable3.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
                 public void valueChanged(ListSelectionEvent e) {\r
@@ -914,8 +934,12 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     //\r
                     // Add pcd information of selected instance to current moduleSA\r
                     //\r
+                    try{\r
                     ffc.addFrameworkModulesPcdBuildDefs(getModuleId(instanceValue), ffc.getModuleSA(moduleKey));\r
-                    \r
+                    }\r
+                    catch (Exception exception) {\r
+                        JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
+                    }\r
                     resolveLibraryInstances(instanceValue);\r
                 }\r
             });\r
@@ -1017,6 +1041,11 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jPanel8.add(getJScrollPane6(), null);\r
             jPanel8.add(getJButton4(), null);\r
             jPanel8.add(getJButton5(), null);\r
+            jPanel8.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+                public void componentShown(java.awt.event.ComponentEvent e) {\r
+                    init(moduleKey);\r
+                }\r
+            });\r
         }\r
         return jPanel8;\r
     }\r
@@ -1099,7 +1128,17 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             optionsTableModel.addColumn("SupportedArchs");\r
             optionsTableModel.addColumn("Contents");\r
             jTable4 = new JTable(optionsTableModel);\r
+            jTable4.setRowHeight(20);\r
+            Vector<String> vArch = new Vector<String>();\r
+            vArch.add("IA32");\r
+            vArch.add("X64");\r
+            vArch.add("IPF");\r
+            vArch.add("EBC");\r
+            vArch.add("ARM");\r
+            vArch.add("PPC");\r
+            jTable4.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
             jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+                       jTable4.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             jTable4.getModel().addTableModelListener(new TableModelListener() {\r
                 public void tableChanged(TableModelEvent arg0) {\r
                     // TODO Auto-generated method stub\r
@@ -1109,23 +1148,28 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     if (arg0.getType() == TableModelEvent.UPDATE){\r
                         //ToDo Data Validition check.\r
                         String targets = m.getValueAt(row, 0) + "";\r
-                        Vector<Object> targetName = new Vector<Object>();\r
-                        String[] sArray = targets.split(" ");\r
-                        for (int i = 0; i < sArray.length; ++i) {\r
-                            targetName.add(sArray[i]);\r
+                        Vector<Object> targetName = null;\r
+                        if (targets.length() > 0) {\r
+                            targetName = new Vector<Object>();\r
+                            String[] sArray = targets.split(" ");\r
+                            for (int i = 0; i < sArray.length; ++i) {\r
+                                targetName.add(sArray[i]);\r
+                            }\r
                         }\r
+                        \r
                         String toolChain = m.getValueAt(row, 1) + "";\r
                         String tagName = m.getValueAt(row, 2) + "";\r
                         String toolCode = m.getValueAt(row, 3) + "";\r
                         String archs = m.getValueAt(row, 4) + "";\r
-                        Vector<Object> supArch = new Vector<Object>();\r
-                        String[] sArray1 = archs.split(" ");\r
-                        for (int i = 0; i < sArray1.length; ++i) {\r
-                            supArch.add(sArray1[i]);\r
-                        }\r
-                        if (supArch.size() == 0) {\r
-                            supArch.add("IA32");\r
+                        Vector<Object> supArch = null;\r
+                        if (archs.length() > 0) {\r
+                            supArch = new Vector<Object>();\r
+                            String[] sArray1 = archs.split(" ");\r
+                            for (int i = 0; i < sArray1.length; ++i) {\r
+                                supArch.add(sArray1[i]);\r
+                            }\r
                         }\r
+                        \r
                         String contents = m.getValueAt(row, 5) + "";\r
                         \r
                         ffc.updateModuleSAOptionsOpt(moduleKey, row, targetName, toolChain, tagName, toolCode, supArch, contents);\r
@@ -1181,6 +1225,24 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         }\r
         return jButton5;\r
     }\r
+    \r
+    /**\r
+    Start the window at the center of screen\r
+    \r
+    **/\r
+   protected void centerWindow(int intWidth, int intHeight) {\r
+       Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
+       this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
+   }\r
+\r
+   /**\r
+    Start the window at the center of screen\r
+    \r
+    **/\r
+   protected void centerWindow() {\r
+       centerWindow(this.getSize().width, this.getSize().height);\r
+   }\r
+\r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r
@@ -1193,7 +1255,7 @@ class PartialEditableTableModel extends DefaultTableModel {
     public boolean isCellEditable(int row, int col) {\r
         switch (col){\r
         case 2:\r
-            return true;\r
+            return false;\r
         default:\r
             return false; \r
         }\r