]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
auto adjust pcd settings when display existing ModuleSA settings. if new PCD added...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFrameworkModules.java
index c37be625ac2ce18044fc4a6fb0a8fa2b63ff5de5..56375e1b38396e68275e4d9f239f1022d34439fa 100644 (file)
@@ -37,21 +37,21 @@ public class FpdFrameworkModules extends IInternalFrame {
     private static final long serialVersionUID = 1L;\r
     static JFrame frame;\r
     private JSplitPane jSplitPane = null;\r
-    private JPanel jPanel = null;\r
-    private JPanel jPanel1 = null;\r
+    private JPanel jPanelTop = null;\r
+    private JPanel jPanelBottom = null;\r
     private JLabel jLabel = null;\r
-    private JScrollPane jScrollPane = null;\r
-    private JTable jTable = null;\r
-    private JPanel jPanel2 = null;\r
-    private JButton jButton = null;\r
-    private JLabel jLabel1 = null;\r
-    private JPanel jPanel3 = null;\r
-    private JScrollPane jScrollPane1 = null;\r
-    private JTable jTable1 = null;\r
-    private JButton jButton1 = null;\r
-    private JButton jButton2 = null;\r
-    private NonEditableTableModel model = null;\r
-    private NonEditableTableModel model1 = null;\r
+    private JScrollPane jScrollPaneAllModules = null;\r
+    private JTable jTableAllModules = null;\r
+    private JPanel jPanelTopSouth = null;\r
+    private JButton jButtonAddModule = null;\r
+    private JLabel jLabelModulesAdded = null;\r
+    private JPanel jPanelBottomSouth = null;\r
+    private JScrollPane jScrollPaneFpdModules = null;\r
+    private JTable jTableFpdModules = null;\r
+    private JButton jButtonSettings = null;\r
+    private JButton jButtonRemoveModule = null;\r
+    private NonEditableTableModel modelAllModules = null;\r
+    private NonEditableTableModel modelFpdModules = null;\r
     \r
     private FpdModuleSA settingDlg = null;\r
     \r
@@ -71,8 +71,8 @@ public class FpdFrameworkModules extends IInternalFrame {
             jSplitPane = new JSplitPane();\r
             jSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
             jSplitPane.setDividerLocation(250);\r
-            jSplitPane.setBottomComponent(getJPanel1());\r
-            jSplitPane.setTopComponent(getJPanel());\r
+            jSplitPane.setBottomComponent(getJPanelBottom());\r
+            jSplitPane.setTopComponent(getJPanelTop());\r
         }\r
         return jSplitPane;\r
     }\r
@@ -82,17 +82,17 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel() {\r
-        if (jPanel == null) {\r
+    private JPanel getJPanelTop() {\r
+        if (jPanelTop == null) {\r
             jLabel = new JLabel();\r
             jLabel.setText("Modules in Workspace");\r
-            jPanel = new JPanel();\r
-            jPanel.setLayout(new BorderLayout());\r
-            jPanel.add(jLabel, java.awt.BorderLayout.NORTH);\r
-            jPanel.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
-            jPanel.add(getJPanel2(), java.awt.BorderLayout.SOUTH);\r
+            jPanelTop = new JPanel();\r
+            jPanelTop.setLayout(new BorderLayout());\r
+            jPanelTop.add(jLabel, java.awt.BorderLayout.NORTH);\r
+            jPanelTop.add(getJScrollPaneAllModules(), java.awt.BorderLayout.CENTER);\r
+            jPanelTop.add(getJPanelTopSouth(), java.awt.BorderLayout.SOUTH);\r
         }\r
-        return jPanel;\r
+        return jPanelTop;\r
     }\r
 \r
     /**\r
@@ -100,17 +100,17 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel1() {\r
-        if (jPanel1 == null) {\r
-            jLabel1 = new JLabel();\r
-            jLabel1.setText("Modules Added");\r
-            jPanel1 = new JPanel();\r
-            jPanel1.setLayout(new BorderLayout());\r
-            jPanel1.add(jLabel1, java.awt.BorderLayout.NORTH);\r
-            jPanel1.add(getJPanel3(), java.awt.BorderLayout.SOUTH);\r
-            jPanel1.add(getJScrollPane1(), java.awt.BorderLayout.CENTER);\r
+    private JPanel getJPanelBottom() {\r
+        if (jPanelBottom == null) {\r
+            jLabelModulesAdded = new JLabel();\r
+            jLabelModulesAdded.setText("Modules Added");\r
+            jPanelBottom = new JPanel();\r
+            jPanelBottom.setLayout(new BorderLayout());\r
+            jPanelBottom.add(jLabelModulesAdded, java.awt.BorderLayout.NORTH);\r
+            jPanelBottom.add(getJPanelBottomSouth(), java.awt.BorderLayout.SOUTH);\r
+            jPanelBottom.add(getJScrollPaneFpdModules(), java.awt.BorderLayout.CENTER);\r
         }\r
-        return jPanel1;\r
+        return jPanelBottom;\r
     }\r
 \r
     /**\r
@@ -118,13 +118,13 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane() {\r
-        if (jScrollPane == null) {\r
-            jScrollPane = new JScrollPane();\r
-            jScrollPane.setPreferredSize(new java.awt.Dimension(600,200));\r
-            jScrollPane.setViewportView(getJTable());\r
+    private JScrollPane getJScrollPaneAllModules() {\r
+        if (jScrollPaneAllModules == null) {\r
+            jScrollPaneAllModules = new JScrollPane();\r
+            jScrollPaneAllModules.setPreferredSize(new java.awt.Dimension(600,200));\r
+            jScrollPaneAllModules.setViewportView(getJTableAllModules());\r
         }\r
-        return jScrollPane;\r
+        return jScrollPaneAllModules;\r
     }\r
 \r
     /**\r
@@ -132,20 +132,22 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable() {\r
-        if (jTable == null) {\r
-            model = new NonEditableTableModel();\r
-            jTable = new JTable(model);\r
-            jTable.setRowHeight(20);\r
-            model.addColumn("ModuleName");\r
-            model.addColumn("ModuleVersion");\r
-            model.addColumn("PackageName");\r
-            model.addColumn("PackageVersion");\r
-            model.addColumn("Path");\r
+    private JTable getJTableAllModules() {\r
+        if (jTableAllModules == null) {\r
+            modelAllModules = new NonEditableTableModel();\r
+            TableSorter sorter = new TableSorter(modelAllModules);\r
+            jTableAllModules = new JTable(sorter);\r
+            sorter.setTableHeader(jTableAllModules.getTableHeader());\r
+            jTableAllModules.setRowHeight(20);\r
+            modelAllModules.addColumn("ModuleName");\r
+            modelAllModules.addColumn("ModuleVersion");\r
+            modelAllModules.addColumn("PackageName");\r
+            modelAllModules.addColumn("PackageVersion");\r
+            modelAllModules.addColumn("Path");\r
             \r
-            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
         }\r
-        return jTable;\r
+        return jTableAllModules;\r
     }\r
 \r
     /**\r
@@ -153,15 +155,15 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel2() {\r
-        if (jPanel2 == null) {\r
+    private JPanel getJPanelTopSouth() {\r
+        if (jPanelTopSouth == null) {\r
             FlowLayout flowLayout = new FlowLayout();\r
             flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
-            jPanel2 = new JPanel();\r
-            jPanel2.setLayout(flowLayout);\r
-            jPanel2.add(getJButton(), null);\r
+            jPanelTopSouth = new JPanel();\r
+            jPanelTopSouth.setLayout(flowLayout);\r
+            jPanelTopSouth.add(getJButtonAddModule(), null);\r
         }\r
-        return jPanel2;\r
+        return jPanelTopSouth;\r
     }\r
 \r
     /**\r
@@ -169,19 +171,21 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton() {\r
-        if (jButton == null) {\r
-            jButton = new JButton();\r
-            jButton.setPreferredSize(new java.awt.Dimension(130,20));\r
-            jButton.setText("Add a Module");\r
-            jButton.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonAddModule() {\r
+        if (jButtonAddModule == null) {\r
+            jButtonAddModule = new JButton();\r
+            jButtonAddModule.setPreferredSize(new java.awt.Dimension(130,20));\r
+            jButtonAddModule.setText("Add a Module");\r
+            jButtonAddModule.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    int selectedRow = jTable.getSelectedRow();\r
+                    int selectedRow = jTableAllModules.getSelectedRow();\r
                     if (selectedRow < 0){\r
                         return;\r
                     }\r
                     \r
-                    String path = model.getValueAt(selectedRow, 4)+"";\r
+                    TableSorter sorter = (TableSorter)jTableAllModules.getModel();\r
+                    selectedRow = sorter.modelIndex(selectedRow);\r
+                    String path = modelAllModules.getValueAt(selectedRow, 4)+"";\r
                     ModuleIdentification mi = miList.get(selectedRow);\r
                     Vector<String> vArchs = null;\r
                     try {\r
@@ -218,6 +222,7 @@ public class FpdFrameworkModules extends IInternalFrame {
                         return;\r
                     }\r
                     //ToDo put Arch instead of null\r
+                    boolean errorOccurred = false;\r
                     for (int i = 0; i < vArchs.size(); ++i) {\r
                         String arch = vArchs.get(i);\r
                         al.add(arch);\r
@@ -229,7 +234,7 @@ public class FpdFrameworkModules extends IInternalFrame {
                            row[2] = mi.getPackage().getName();\r
                            \r
                        }\r
-                       model1.addRow(row);\r
+                       modelFpdModules.addRow(row);\r
                        \r
                        docConsole.setSaved(false);\r
                        try{\r
@@ -237,17 +242,24 @@ public class FpdFrameworkModules extends IInternalFrame {
                            ffc.addFrameworkModulesPcdBuildDefs(mi, arch, null);\r
                        }\r
                        catch (Exception exception) {\r
-                           JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
+                           JOptionPane.showMessageDialog(frame, "Adding " + row[0] + " with SupArch " + arch + ": "+ exception.getMessage());\r
+                           errorOccurred = true;\r
                        }\r
                     }\r
                     \r
-                    \r
-                    JOptionPane.showMessageDialog(frame, "This Module with Arch "+ archsAdded +" Added Successfully.");\r
-                    jTable1.changeSelection(model1.getRowCount()-1, 0, false, false);\r
+                    String s = "This Module with Arch "+ archsAdded;\r
+                    if (errorOccurred) {\r
+                        s += " Added with Error. Platform may NOT Be Built."; \r
+                    }\r
+                    else {\r
+                        s += " Added Successfully.";\r
+                    }\r
+                    JOptionPane.showMessageDialog(frame,  s);\r
+                    jTableFpdModules.changeSelection(modelFpdModules.getRowCount()-1, 0, false, false);\r
                 }\r
             });\r
         }\r
-        return jButton;\r
+        return jButtonAddModule;\r
     }\r
 \r
     /**\r
@@ -255,16 +267,16 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JPanel      \r
      */\r
-    private JPanel getJPanel3() {\r
-        if (jPanel3 == null) {\r
+    private JPanel getJPanelBottomSouth() {\r
+        if (jPanelBottomSouth == null) {\r
             FlowLayout flowLayout1 = new FlowLayout();\r
             flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
-            jPanel3 = new JPanel();\r
-            jPanel3.setLayout(flowLayout1);\r
-            jPanel3.add(getJButton1(), null);\r
-            jPanel3.add(getJButton2(), null);\r
+            jPanelBottomSouth = new JPanel();\r
+            jPanelBottomSouth.setLayout(flowLayout1);\r
+            jPanelBottomSouth.add(getJButtonSettings(), null);\r
+            jPanelBottomSouth.add(getJButtonRemoveModule(), null);\r
         }\r
-        return jPanel3;\r
+        return jPanelBottomSouth;\r
     }\r
 \r
     /**\r
@@ -272,13 +284,13 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JScrollPane \r
      */\r
-    private JScrollPane getJScrollPane1() {\r
-        if (jScrollPane1 == null) {\r
-            jScrollPane1 = new JScrollPane();\r
-            jScrollPane1.setPreferredSize(new java.awt.Dimension(453,200));\r
-            jScrollPane1.setViewportView(getJTable1());\r
+    private JScrollPane getJScrollPaneFpdModules() {\r
+        if (jScrollPaneFpdModules == null) {\r
+            jScrollPaneFpdModules = new JScrollPane();\r
+            jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(453,200));\r
+            jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
         }\r
-        return jScrollPane1;\r
+        return jScrollPaneFpdModules;\r
     }\r
 \r
     /**\r
@@ -286,21 +298,23 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JTable      \r
      */\r
-    private JTable getJTable1() {\r
-        if (jTable1 == null) {\r
-            model1 = new NonEditableTableModel();\r
-            jTable1 = new JTable(model1);\r
-            jTable1.setRowHeight(20);\r
-            model1.addColumn("ModuleName");\r
-            model1.addColumn("ModuleVersion");            \r
-            model1.addColumn("PackageName");\r
-            model1.addColumn("PackageVersion");\r
-            model1.addColumn("SupportedArch");\r
-            model1.addColumn("Path");\r
+    private JTable getJTableFpdModules() {\r
+        if (jTableFpdModules == null) {\r
+            modelFpdModules = new NonEditableTableModel();\r
+            TableSorter sorter = new TableSorter(modelFpdModules);\r
+            jTableFpdModules = new JTable(sorter);\r
+            sorter.setTableHeader(jTableFpdModules.getTableHeader());\r
+            jTableFpdModules.setRowHeight(20);\r
+            modelFpdModules.addColumn("ModuleName");\r
+            modelFpdModules.addColumn("ModuleVersion");            \r
+            modelFpdModules.addColumn("PackageName");\r
+            modelFpdModules.addColumn("PackageVersion");\r
+            modelFpdModules.addColumn("SupportedArch");\r
+            modelFpdModules.addColumn("Path");\r
             \r
-            jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
         }\r
-        return jTable1;\r
+        return jTableFpdModules;\r
     }\r
 \r
     /**\r
@@ -308,17 +322,30 @@ public class FpdFrameworkModules extends IInternalFrame {
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton1() {\r
-        if (jButton1 == null) {\r
-            jButton1 = new JButton();\r
-            jButton1.setPreferredSize(new java.awt.Dimension(130,20));\r
-            jButton1.setText("Settings");\r
-            jButton1.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonSettings() {\r
+        if (jButtonSettings == null) {\r
+            jButtonSettings = new JButton();\r
+            jButtonSettings.setPreferredSize(new java.awt.Dimension(130,20));\r
+            jButtonSettings.setText("Settings");\r
+            jButtonSettings.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    int selectedRow = jTable1.getSelectedRow();\r
+                    int selectedRow = jTableFpdModules.getSelectedRow();\r
                     if (selectedRow < 0){\r
                         return;\r
                     }\r
+                    \r
+                    TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+                    selectedRow = sorter.modelIndex(selectedRow);\r
+                    try {\r
+                        if (ffc.adjustPcd(selectedRow)) {\r
+                            docConsole.setSaved(false);\r
+                        }\r
+                    }\r
+                    catch (Exception exp) {\r
+                        JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+                        return;\r
+                    }\r
+                    \r
                     if (settingDlg == null) {\r
                         settingDlg = new FpdModuleSA(ffc);\r
                     }\r
@@ -335,25 +362,30 @@ public class FpdFrameworkModules extends IInternalFrame {
                 }\r
             });\r
         }\r
-        return jButton1;\r
+        return jButtonSettings;\r
     }\r
\r
 \r
     /**\r
      * This method initializes jButton2        \r
      *         \r
      * @return javax.swing.JButton     \r
      */\r
-    private JButton getJButton2() {\r
-        if (jButton2 == null) {\r
-            jButton2 = new JButton();\r
-            jButton2.setPreferredSize(new java.awt.Dimension(130,20));\r
-            jButton2.setText("Remove Module");\r
-            jButton2.addActionListener(new java.awt.event.ActionListener() {\r
+    private JButton getJButtonRemoveModule() {\r
+        if (jButtonRemoveModule == null) {\r
+            jButtonRemoveModule = new JButton();\r
+            jButtonRemoveModule.setPreferredSize(new java.awt.Dimension(130,20));\r
+            jButtonRemoveModule.setText("Remove Module");\r
+            jButtonRemoveModule.addActionListener(new java.awt.event.ActionListener() {\r
                 public void actionPerformed(java.awt.event.ActionEvent e) {\r
-                    int selectedRow = jTable1.getSelectedRow();\r
+                    int selectedRow = jTableFpdModules.getSelectedRow();\r
                     if (selectedRow < 0){\r
                         return;\r
                     }\r
+                    \r
+                    TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+                    selectedRow = sorter.modelIndex(selectedRow);\r
+                    \r
                     String[] sa = new String[5];\r
                     ffc.getFrameworkModuleInfo(selectedRow, sa);\r
                     String mg = sa[0];\r
@@ -361,10 +393,10 @@ public class FpdFrameworkModules extends IInternalFrame {
                     String pg = sa[2];\r
                     String pv = sa[3];\r
                     String arch = sa[4];\r
-                    ModuleIdentification mi = getModuleId(sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3] + " " + sa[4]);\r
+                    ModuleIdentification mi = GlobalData.getModuleId(sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3] + " " + sa[4]);\r
                     mv = mi.getVersion();\r
                     pv = mi.getPackage().getVersion();\r
-                    model1.removeRow(selectedRow);\r
+                    modelFpdModules.removeRow(selectedRow);\r
                     if (arch == null) {\r
                         // if no arch specified in ModuleSA\r
                         fpdMsa.remove(mg+mv+pg+pv);\r
@@ -383,7 +415,7 @@ public class FpdFrameworkModules extends IInternalFrame {
                 }\r
             });\r
         }\r
-        return jButton2;\r
+        return jButtonRemoveModule;\r
     }\r
 \r
     /**\r
@@ -434,7 +466,7 @@ public class FpdFrameworkModules extends IInternalFrame {
             String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
             ffc.getFrameworkModulesInfo(saa);\r
             for (int i = 0; i < saa.length; ++i) {\r
-                ModuleIdentification mi = getModuleId(saa[i][0]+ " "+saa[i][1]+" "+saa[i][2]+" "+saa[i][3]);\r
+                ModuleIdentification mi = GlobalData.getModuleId(saa[i][0]+ " "+saa[i][1]+" "+saa[i][2]+" "+saa[i][3]);\r
                 String[] row = {"", "", "", "", "", ""};\r
                 if (mi != null) {\r
                     row[0] = mi.getName();\r
@@ -449,7 +481,7 @@ public class FpdFrameworkModules extends IInternalFrame {
                         JOptionPane.showMessageDialog(frame, "ShowFPDModules:" + e.getMessage());\r
                     }\r
                 }\r
-                model1.addRow(row);\r
+                modelFpdModules.addRow(row);\r
                 ArrayList<String> al = fpdMsa.get(saa[i][0]+row[1]+saa[i][2]+row[3]);\r
                 if (al == null) {\r
                     al = new ArrayList<String>();\r
@@ -490,7 +522,7 @@ public class FpdFrameworkModules extends IInternalFrame {
                 catch (Exception e) {\r
                     JOptionPane.showMessageDialog(frame, "ShowAllModules:" + e.getMessage());\r
                 }\r
-                model.addRow(s);\r
+                modelAllModules.addRow(s);\r
                 miList.add(mi);\r
             }\r
         }\r
@@ -507,43 +539,6 @@ public class FpdFrameworkModules extends IInternalFrame {
         this.setVisible(true);\r
         \r
     }\r
-    \r
-    private ModuleIdentification getModuleId(String key){\r
-        //\r
-        // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion, Arch into string array.\r
-        //\r
-        String[] keyPart = key.split(" ");\r
-        Set<PackageIdentification> spi = GlobalData.getPackageList();\r
-        Iterator ispi = spi.iterator();\r
-        \r
-        while(ispi.hasNext()) {\r
-            PackageIdentification pi = (PackageIdentification)ispi.next();\r
-            if ( !pi.getGuid().equalsIgnoreCase(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().equalsIgnoreCase(keyPart[0])){\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
-        }\r
-        return null;\r
-    }\r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r