]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java
a. Enhanced toolchain setting UI for ModuleSa build options and global build options.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdModuleSA.java
index ed3b6e20297bbcea4b09bf9c5d18b647dc0a7320..14fd02499f7c0a001e9137fc57572e9eaf158931 100644 (file)
@@ -4,6 +4,7 @@ import java.awt.BorderLayout;
 import java.awt.Dimension;\r
 import java.awt.Toolkit;\r
 \r
+import javax.swing.DefaultCellEditor;\r
 import javax.swing.JFrame;\r
 import javax.swing.JOptionPane;\r
 import javax.swing.JPanel;\r
@@ -24,11 +25,12 @@ import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableModel;\r
 \r
 import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.GlobalData;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\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
+import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
 \r
 import java.awt.FlowLayout;\r
 import java.awt.event.ActionEvent;\r
@@ -37,7 +39,6 @@ import java.util.ArrayList;
 import java.util.HashMap;\r
 import java.util.Iterator;\r
 import java.util.ListIterator;\r
-import java.util.Set;\r
 import java.util.Vector;\r
 \r
 import javax.swing.JTextField;\r
@@ -119,7 +120,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JButton jButtonUpdatePcd = null;\r
     private JComboBox jComboBoxFeatureFlagValue = null;\r
     private OpeningPlatformType docConsole = null;\r
-    private JLabel jLabelPad = null;\r
+    private JPanel jPanelCustomToolChain = null;\r
+    private JPanel jPanelToolchainS = null;\r
+    private JPanel jPanelToolchainC = null;\r
     /**\r
      * This is the default constructor\r
      */\r
@@ -183,20 +186,19 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                 if (mi != null) {\r
                     saa[i][0] = mi.getName();\r
                     saa[i][2] = mi.getVersion();\r
-                    saa[i][4] = mi.getPackage().getVersion();\r
+                    saa[i][4] = mi.getPackageId().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
                     selectedInstancesTableModel.addRow(saa[i]);\r
                 }\r
-                \r
-                \r
             }\r
         }\r
+        showClassToResolved();\r
     }\r
     \r
-    public void initModuleSAOptions(String key) {\r
+    public void initFvInfo (String key) {\r
         //\r
         // display module SA options\r
         //\r
@@ -215,6 +217,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (ffsKey != null) {\r
             jTextFieldFfsKey.setText(ffsKey);\r
         }\r
+    }\r
+    \r
+    public void initToolChainOptions(String key) {\r
         \r
         optionsTableModel.setRowCount(0);\r
         String[][] saa = new String[ffc.getModuleSAOptionsCount(key)][6];\r
@@ -281,7 +286,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                 \r
             }\r
             \r
-            showClassToResolved();\r
+//            showClassToResolved();\r
         }\r
         catch(Exception e) {\r
             e.printStackTrace();\r
@@ -292,11 +297,12 @@ 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 = WorkspaceProfile.getModules(depPkgList[i]);\r
-            Iterator ismi = smi.iterator();\r
+            Iterator ismi = GlobalData.vModuleList.iterator();\r
             while(ismi.hasNext()) {\r
                 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
-                \r
+                if (!mi.getPackageId().getGuid().equalsIgnoreCase(depPkgList[i].getGuid())) {\r
+                    continue;\r
+                }\r
                 String[] clsProduced = getClassProduced(mi);\r
                 \r
                 boolean isPotential = false;\r
@@ -412,6 +418,21 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         }\r
         libInstanceTableModel.setRowCount(0);\r
     }\r
+    \r
+    private void addLibInstance (ModuleIdentification libMi) {\r
+        \r
+        ffc.genLibraryInstance(libMi, moduleKey);\r
+        //\r
+        // Add pcd information of selected instance to current moduleSA\r
+        //\r
+        try{\r
+            ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
+        }\r
+        catch (Exception exception) {\r
+            JOptionPane.showMessageDialog(frame, "Adding Instance" + libMi.getName() + ": "+ exception.getMessage());\r
+        }\r
+        \r
+    }\r
     /**\r
      * This method initializes this\r
      * \r
@@ -449,8 +470,10 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         if (jTabbedPane == null) {\r
             jTabbedPane = new JTabbedPane();\r
             jTabbedPane.addTab("PCD Build Definition", null, getJPanelPcd(), null);\r
-            jTabbedPane.addTab("Module SA Options", null, getJPanelModuleSaOpts(), null);\r
             jTabbedPane.addTab("Libraries", null, getJPanelLibrary(), null);\r
+            jTabbedPane.addTab("FV Info", null, getJPanelModuleSaOpts(), null);\r
+            jTabbedPane.addTab("Custom Toolchain", null, getJPanelCustomToolChain(), null);\r
+            \r
         }\r
         return jTabbedPane;\r
     }\r
@@ -986,17 +1009,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                     libInstanceTableModel.getValueAt(row, 3) + " " +\r
                     libInstanceTableModel.getValueAt(row, 4);\r
                     ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceValue);\r
-                    ffc.genLibraryInstance(libMi, moduleKey);\r
-                    //\r
-                    // Add pcd information of selected instance to current moduleSA\r
-                    //\r
-                    try{\r
-                        ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
-                    }\r
-                    catch (Exception exception) {\r
-                        JOptionPane.showMessageDialog(frame, "Adding Instance" + s[0] + ": "+ exception.getMessage());\r
-                    }\r
+                    addLibInstance (libMi);\r
                     resolveLibraryInstances(instanceValue);\r
+                    showClassToResolved();\r
                 }\r
             });\r
         }\r
@@ -1078,9 +1093,6 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      */\r
     private JPanel getJPanelModuleSaOpts() {\r
         if (jPanelModuleSaOpts == null) {\r
-            jLabelPad = new JLabel();\r
-            jLabelPad.setText("");\r
-            jLabelPad.setPreferredSize(new java.awt.Dimension(250,16));\r
             FlowLayout flowLayout4 = new FlowLayout();\r
             flowLayout4.setAlignment(java.awt.FlowLayout.LEFT);\r
             jLabelFfsFormatKey = new JLabel();\r
@@ -1101,13 +1113,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             jPanelModuleSaOpts.add(getJTextFieldFileGuid(), null);\r
             jPanelModuleSaOpts.add(jLabelFfsFormatKey, null);\r
             jPanelModuleSaOpts.add(getJTextFieldFfsKey(), null);\r
-            jPanelModuleSaOpts.add(getJScrollPaneModuleSaOptions(), null);\r
-            jPanelModuleSaOpts.add(jLabelPad, null);\r
-            jPanelModuleSaOpts.add(getJButtonNew(), null);\r
-            jPanelModuleSaOpts.add(getJButtonDeleteOption(), null);\r
             jPanelModuleSaOpts.addComponentListener(new java.awt.event.ComponentAdapter() {\r
                 public void componentShown(java.awt.event.ComponentEvent e) {\r
-                    initModuleSAOptions(moduleKey);\r
+                    initFvInfo(moduleKey);\r
                 }\r
             });\r
         }\r
@@ -1213,7 +1221,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     private JScrollPane getJScrollPaneModuleSaOptions() {\r
         if (jScrollPaneModuleSaOptions == null) {\r
             jScrollPaneModuleSaOptions = new JScrollPane();\r
-            jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,200));\r
+            jScrollPaneModuleSaOptions.setPreferredSize(new java.awt.Dimension(600,350));\r
             jScrollPaneModuleSaOptions.setViewportView(getJTableModuleSaOptions());\r
         }\r
         return jScrollPaneModuleSaOptions;\r
@@ -1234,6 +1242,16 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             optionsTableModel.addColumn("Contents");\r
             jTableModuleSaOptions = new JTable(optionsTableModel);\r
             jTableModuleSaOptions.setRowHeight(20);\r
+            \r
+            javax.swing.table.TableColumn toolFamilyCol = jTableModuleSaOptions.getColumnModel().getColumn(1);\r
+            JComboBox cb = new JComboBox();\r
+            cb.addItem("MSFT");\r
+            cb.addItem("GCC");\r
+            cb.addItem("CYGWIN");\r
+            cb.addItem("INTEL");\r
+            cb.addItem("USER_DEFINED");\r
+            toolFamilyCol.setCellEditor(new DefaultCellEditor(cb));\r
+            \r
             Vector<String> vArch = new Vector<String>();\r
             vArch.add("IA32");\r
             vArch.add("X64");\r
@@ -1242,6 +1260,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
             vArch.add("ARM");\r
             vArch.add("PPC");\r
             jTableModuleSaOptions.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
+            \r
+            jTableModuleSaOptions.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor());\r
+            \r
             jTableModuleSaOptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
                        jTableModuleSaOptions.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
             jTableModuleSaOptions.getModel().addTableModelListener(new TableModelListener() {\r
@@ -1558,11 +1579,55 @@ private JComboBox getJComboBoxFeatureFlagValue() {
         jComboBoxFeatureFlagValue = new JComboBox();\r
         jComboBoxFeatureFlagValue.setPreferredSize(new java.awt.Dimension(100,20));\r
         jComboBoxFeatureFlagValue.setVisible(false);\r
-        jComboBoxFeatureFlagValue.addItem("true");\r
-        jComboBoxFeatureFlagValue.addItem("false");\r
+        jComboBoxFeatureFlagValue.addItem("TRUE");\r
+        jComboBoxFeatureFlagValue.addItem("FALSE");\r
     }\r
     return jComboBoxFeatureFlagValue;\r
 }\r
+/**\r
+ * This method initializes jPanelCustomToolChain       \r
+ *     \r
+ * @return javax.swing.JPanel  \r
+ */\r
+private JPanel getJPanelCustomToolChain() {\r
+    if (jPanelCustomToolChain == null) {\r
+        jPanelCustomToolChain = new JPanel();\r
+        jPanelCustomToolChain.setLayout(new BorderLayout());\r
+        jPanelCustomToolChain.add(getJPanelToolchainS(), java.awt.BorderLayout.SOUTH);\r
+        jPanelCustomToolChain.add(getJPanelToolchainC(), java.awt.BorderLayout.CENTER);\r
+        jPanelCustomToolChain.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+            public void componentShown(java.awt.event.ComponentEvent e) {\r
+                initToolChainOptions(moduleKey);\r
+            }\r
+        });\r
+    }\r
+    return jPanelCustomToolChain;\r
+}\r
+/**\r
+ * This method initializes jPanelToolchainS    \r
+ *     \r
+ * @return javax.swing.JPanel  \r
+ */\r
+private JPanel getJPanelToolchainS() {\r
+    if (jPanelToolchainS == null) {\r
+        jPanelToolchainS = new JPanel();\r
+        jPanelToolchainS.add(getJButtonNew(), null);\r
+        jPanelToolchainS.add(getJButtonDeleteOption(), null);\r
+    }\r
+    return jPanelToolchainS;\r
+}\r
+/**\r
+ * This method initializes jPanelToolchainC    \r
+ *     \r
+ * @return javax.swing.JPanel  \r
+ */\r
+private JPanel getJPanelToolchainC() {\r
+    if (jPanelToolchainC == null) {\r
+        jPanelToolchainC = new JPanel();\r
+        jPanelToolchainC.add(getJScrollPaneModuleSaOptions(), null);\r
+    }\r
+    return jPanelToolchainC;\r
+}\r
 \r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r