]> 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 e5a4e885744fb5d10a5346ddfe90d80c783ced9a..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
@@ -36,6 +38,9 @@ import java.util.Iterator;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JTextField;\r
 \r
 public class FpdModuleSA extends JDialog implements ActionListener {\r
 \r
@@ -81,11 +86,23 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private LibraryTableModel model1 = null;\r
     private LibraryTableModel model2 = null;\r
     private LibraryTableModel model3 = null;\r
+    private DefaultTableModel optionsTableModel = null;\r
     private FpdFileContents ffc = null;\r
     private String moduleKey = null;\r
     private HashMap<String, ArrayList<String>> classInstanceMap = null;\r
     private ArrayList<String> classProduced = null;\r
     private HashMap<String, ArrayList<String>> classConsumed = null;\r
+    private JPanel jPanel8 = null;\r
+    private JLabel jLabel6 = null;\r
+    private JTextField jTextField = null;\r
+    private JLabel jLabel7 = null;\r
+    private JTextField jTextField1 = null;\r
+    private JLabel jLabel8 = null;\r
+    private JTextField jTextField2 = null;\r
+    private JScrollPane jScrollPane6 = null;\r
+    private JTable jTable4 = null;\r
+    private JButton jButton4 = null;\r
+    private JButton jButton5 = null;\r
     /**\r
      * This is the default constructor\r
      */\r
@@ -113,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
@@ -129,17 +149,37 @@ 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
         //\r
-        // display library classes that need to be resolved. also potential instances for them.\r
+        // display module SA options\r
         //\r
-        resolveLibraryInstances(key);\r
+        String fvBinding = ffc.getFvBinding(key);\r
+        if (fvBinding != null) {\r
+            jTextField.setText(fvBinding);\r
+        }\r
+        String fileGuid = ffc.getFfsFileNameGuid(key);\r
+        if (fileGuid != null) {\r
+            jTextField1.setText(fileGuid);\r
+        }\r
+        String ffsKey = ffc.getFfsFormatKey(key);\r
+        if (ffsKey != null) {\r
+            jTextField2.setText(ffsKey);\r
+        }\r
     }\r
     \r
     private void resolveLibraryInstances(String key) {\r
@@ -296,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
@@ -368,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
@@ -397,6 +440,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (jTabbedPane == null) {\r
             jTabbedPane = new JTabbedPane();\r
             jTabbedPane.addTab("PCD Build Definition", null, getJPanel(), null);\r
+            jTabbedPane.addTab("Module SA Options", null, getJPanel8(), null);\r
             jTabbedPane.addTab("Libraries", null, getJPanel1(), null);\r
         }\r
         return jTabbedPane;\r
@@ -440,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
@@ -468,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
@@ -651,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
@@ -700,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
@@ -772,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
@@ -883,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
@@ -963,6 +1018,231 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             this.setVisible(false);\r
         }\r
     }\r
+    /**\r
+     * This method initializes jPanel8 \r
+     *         \r
+     * @return javax.swing.JPanel      \r
+     */\r
+    private JPanel getJPanel8() {\r
+        if (jPanel8 == null) {\r
+            jLabel8 = new JLabel();\r
+            jLabel8.setText("FFS Format Key");\r
+            jLabel7 = new JLabel();\r
+            jLabel7.setText("FFS File GUID");\r
+            jLabel6 = new JLabel();\r
+            jLabel6.setText("FV Binding");\r
+            jPanel8 = new JPanel();\r
+            jPanel8.add(jLabel6, null);\r
+            jPanel8.add(getJTextField(), null);\r
+            jPanel8.add(jLabel7, null);\r
+            jPanel8.add(getJTextField1(), null);\r
+            jPanel8.add(jLabel8, null);\r
+            jPanel8.add(getJTextField2(), null);\r
+            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
+    /**\r
+     * This method initializes jTextField      \r
+     *         \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
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    ffc.setFvBinding(moduleKey, jTextField.getText());\r
+                }\r
+            });\r
+        }\r
+        return jTextField;\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
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    ffc.setFfsFileNameGuid(moduleKey, jTextField1.getText());\r
+                }\r
+            });\r
+        }\r
+        return jTextField1;\r
+    }\r
+    /**\r
+     * This method initializes jTextField2     \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
+                public void focusLost(java.awt.event.FocusEvent e) {\r
+                    ffc.setFfsFormatKey(moduleKey, jTextField2.getText());\r
+                }\r
+            });\r
+        }\r
+        return jTextField2;\r
+    }\r
+    /**\r
+     * This method initializes jScrollPane6    \r
+     *         \r
+     * @return javax.swing.JScrollPane \r
+     */\r
+    private JScrollPane getJScrollPane6() {\r
+        if (jScrollPane6 == null) {\r
+            jScrollPane6 = new JScrollPane();\r
+            jScrollPane6.setPreferredSize(new java.awt.Dimension(600,200));\r
+            jScrollPane6.setViewportView(getJTable4());\r
+        }\r
+        return jScrollPane6;\r
+    }\r
+    /**\r
+     * This method initializes jTable4 \r
+     *         \r
+     * @return javax.swing.JTable      \r
+     */\r
+    private JTable getJTable4() {\r
+        if (jTable4 == null) {\r
+            optionsTableModel = new DefaultTableModel();\r
+            optionsTableModel.addColumn("BuildTargets");\r
+            optionsTableModel.addColumn("ToolChainFamily");\r
+            optionsTableModel.addColumn("TagName");\r
+            optionsTableModel.addColumn("ToolCode");\r
+            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
+                    int row = arg0.getFirstRow();\r
+                    TableModel m = (TableModel)arg0.getSource();\r
+                    \r
+                    if (arg0.getType() == TableModelEvent.UPDATE){\r
+                        //ToDo Data Validition check.\r
+                        String targets = m.getValueAt(row, 0) + "";\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 = 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
+                    }\r
+                }\r
+            });\r
+        }\r
+        return jTable4;\r
+    }\r
+    /**\r
+     * This method initializes jButton4        \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButton4() {\r
+        if (jButton4 == null) {\r
+            jButton4 = new JButton();\r
+            jButton4.setPreferredSize(new java.awt.Dimension(80,20));\r
+            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
+                    optionsTableModel.addRow(row);\r
+                    Vector<Object> v = new Vector<Object>();\r
+                    Vector<Object> v1 = new Vector<Object>();\r
+                    v1.add("IA32");\r
+                    ffc.genModuleSAOptionsOpt(moduleKey, v, "", "", "", v1, "");\r
+                }\r
+            });\r
+        }\r
+        return jButton4;\r
+    }\r
+    /**\r
+     * This method initializes jButton5        \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButton5() {\r
+        if (jButton5 == null) {\r
+            jButton5 = new JButton();\r
+            jButton5.setPreferredSize(new java.awt.Dimension(80,20));\r
+            jButton5.setText("Delete");\r
+            jButton5.addActionListener(new java.awt.event.ActionListener() {\r
+                public void actionPerformed(java.awt.event.ActionEvent e) {\r
+                    if (jTable4.getSelectedRow() < 0) {\r
+                        return;\r
+                    }\r
+                    \r
+                    ffc.removeModuleSAOptionsOpt(moduleKey, jTable4.getSelectedRow());\r
+                    optionsTableModel.removeRow(jTable4.getSelectedRow());\r
+                }\r
+            });\r
+        }\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
@@ -975,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