]> 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 929e1647e0bb9cbb803d6abf542a9b7494ff3d9f..56375e1b38396e68275e4d9f239f1022d34439fa 100644 (file)
@@ -14,6 +14,7 @@ import javax.swing.ListSelectionModel;
 import javax.swing.table.DefaultTableModel;\r
 \r
 import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
 import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
 import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
@@ -26,6 +27,7 @@ import java.util.HashMap;
 import java.util.Iterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+import java.util.Vector;\r
 \r
 public class FpdFrameworkModules extends IInternalFrame {\r
 \r
@@ -35,27 +37,27 @@ 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
     private FpdFileContents ffc = null;\r
-    \r
-    private Map<String, String> fpdMsa = null;\r
+    private OpeningPlatformType docConsole = null;\r
+    private Map<String, ArrayList<String>> fpdMsa = null;\r
     \r
     private ArrayList<ModuleIdentification> miList = null;\r
 \r
@@ -69,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
@@ -80,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
@@ -98,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
@@ -116,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
@@ -130,19 +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
-            model.addColumn("ModuleName");\r
-            model.addColumn("ModuleGUID");\r
-            model.addColumn("ModuleVersion");\r
-            model.addColumn("PackageGUID");\r
-            model.addColumn("PackageVersion");\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
@@ -150,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
@@ -166,39 +171,95 @@ 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 mg = (String)model.getValueAt(selectedRow, 1);\r
-                    String mv = (String)model.getValueAt(selectedRow, 2);\r
-                    String pg = (String)model.getValueAt(selectedRow, 3);\r
-                    String pv = (String)model.getValueAt(selectedRow, 4);\r
-                    if (fpdMsa.containsKey(mg + mv + pg + pv)) {\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
+                        vArchs = GlobalData.getModuleSupArchs(mi);\r
+                    }\r
+                    catch (Exception exp) {\r
+                        JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+                    }\r
+                    \r
+                    if (vArchs == null) {\r
+                        JOptionPane.showMessageDialog(frame, "No supported Archs specified in MSA file.");\r
+                        return;\r
+                    }\r
+                    \r
+                    String archsAdded = "";\r
+                    String mg = mi.getGuid();\r
+                    String mv = mi.getVersion();\r
+                    String pg = mi.getPackage().getGuid();\r
+                    String pv = mi.getPackage().getVersion();\r
+                    \r
+                    ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r
+                    if (al == null) {\r
+                        al = new ArrayList<String>();\r
+                        fpdMsa.put(mg + mv + pg + pv, al);\r
+                    }\r
+                    for (int i = 0; i < al.size(); ++i) {\r
+                        vArchs.remove(al.get(i));\r
+                    }\r
+                    //\r
+                    // Archs this Module supported have already been added.\r
+                    //\r
+                    if (vArchs.size() == 0) {\r
                         JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
                         return;\r
                     }\r
                     //ToDo put Arch instead of null\r
-                    fpdMsa.put(mg + mv + pg + pv, 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
+                        archsAdded += arch + " ";\r
+                        String[] row = {"", mv, "", pv, arch, path};\r
+                        \r
+                       if (mi != null) {\r
+                           row[0] = mi.getName();\r
+                           row[2] = mi.getPackage().getName();\r
+                           \r
+                       }\r
+                       modelFpdModules.addRow(row);\r
+                       \r
+                       docConsole.setSaved(false);\r
+                       try{\r
+                           //ToDo : specify archs need to add.\r
+                           ffc.addFrameworkModulesPcdBuildDefs(mi, arch, null);\r
+                       }\r
+                       catch (Exception exception) {\r
+                           JOptionPane.showMessageDialog(frame, "Adding " + row[0] + " with SupArch " + arch + ": "+ exception.getMessage());\r
+                           errorOccurred = true;\r
+                       }\r
+                    }\r
                     \r
-                    String[] row = {" ", mg, mv, pg, pv};\r
-                    if (getModuleId(mg + " " + mv + " " + pg + " " + pv) != null) {\r
-                        row[0] = getModuleId(mg + " " + mv + " " + pg + " " + pv).getName();\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
-                    model1.addRow(row);\r
-                    ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\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
@@ -206,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
@@ -223,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
@@ -237,20 +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
-            model1.addColumn("ModuleName");\r
-            model1.addColumn("ModuleGUID");\r
-            model1.addColumn("ModuleVersion");            \r
-            model1.addColumn("PackageGUID");\r
-            model1.addColumn("PackageVersion");\r
-//            model1.addColumn("SupportedArch");\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
@@ -258,60 +322,100 @@ 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
                     \r
-                    String mg = model1.getValueAt(selectedRow, 1).toString();\r
-                    String mv = model1.getValueAt(selectedRow, 2).toString();\r
-                    String pg = model1.getValueAt(selectedRow, 3).toString();\r
-                    String pv = model1.getValueAt(selectedRow, 4).toString();\r
-                    settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
+                    String[] sa = new String[5];\r
+                    ffc.getFrameworkModuleInfo(selectedRow, sa);\r
+                    String mg = sa[0];\r
+                    String mv = sa[1];\r
+                    String pg = sa[2];\r
+                    String pv = sa[3];\r
+                    String arch = sa[4];\r
+                    settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv + " " + arch, selectedRow, docConsole);\r
                     settingDlg.setVisible(true);\r
                 }\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
-                    String mg = model1.getValueAt(selectedRow, 1).toString();\r
-                    String mv = model1.getValueAt(selectedRow, 2).toString();\r
-                    String pg = model1.getValueAt(selectedRow, 3).toString();\r
-                    String pv = model1.getValueAt(selectedRow, 4).toString();\r
-                    model1.removeRow(selectedRow);\r
-                    fpdMsa.remove(mg+mv+pg+pv);\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
+                    String mv = sa[1];\r
+                    String pg = sa[2];\r
+                    String pv = sa[3];\r
+                    String arch = 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
+                    modelFpdModules.removeRow(selectedRow);\r
+                    if (arch == null) {\r
+                        // if no arch specified in ModuleSA\r
+                        fpdMsa.remove(mg+mv+pg+pv);\r
+                    }\r
+                    else {\r
+                        ArrayList<String> al = fpdMsa.get(mg+mv+pg+pv);\r
+                        al.remove(arch);\r
+                        if (al.size() == 0) {\r
+                            fpdMsa.remove(mg+mv+pg+pv);\r
+                        }\r
+                    }\r
+                    \r
+                    \r
+                    docConsole.setSaved(false);\r
                     ffc.removeModuleSA(selectedRow);\r
                 }\r
             });\r
         }\r
-        return jButton2;\r
+        return jButtonRemoveModule;\r
     }\r
 \r
     /**\r
@@ -336,12 +440,17 @@ public class FpdFrameworkModules extends IInternalFrame {
         \r
     }\r
     \r
+    public FpdFrameworkModules(OpeningPlatformType opt) {\r
+        this(opt.getXmlFpd());\r
+        docConsole = opt;\r
+    }\r
+    \r
     private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
         try {\r
             GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
         }\r
         catch(Exception e){\r
-            JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
+            JOptionPane.showMessageDialog(frame, "Error occurred when getting module data.");\r
         }\r
         \r
         if (ffc == null){\r
@@ -350,18 +459,36 @@ public class FpdFrameworkModules extends IInternalFrame {
         }\r
         \r
         if (fpdMsa == null) {\r
-            fpdMsa = new HashMap<String, String>();\r
+            fpdMsa = new HashMap<String, ArrayList<String>>();\r
         }\r
         \r
         if (ffc.getFrameworkModulesCount() > 0) {\r
             String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
             ffc.getFrameworkModulesInfo(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 = 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
+                    row[1] = mi.getVersion();\r
+                    row[2] = mi.getPackage().getName();\r
+                    row[3] = mi.getPackage().getVersion();\r
+                    row[4] = saa[i][4];\r
+                    try{\r
+                        row[5] = GlobalData.getMsaFile(mi).getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+                    }\r
+                    catch (Exception e) {\r
+                        JOptionPane.showMessageDialog(frame, "ShowFPDModules:" + e.getMessage());\r
+                    }\r
+                }\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
+                    fpdMsa.put(saa[i][0]+row[1]+saa[i][2]+row[3], al);\r
                 }\r
-                model1.addRow(saa[i]);\r
-                fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
+                al.add(saa[i][4]);\r
+                \r
             }\r
         }\r
         \r
@@ -380,16 +507,22 @@ public class FpdFrameworkModules extends IInternalFrame {
         while(ispi.hasNext()) {\r
             PackageIdentification pi = (PackageIdentification)ispi.next();\r
             String[] s = {"", "", "", "", ""};\r
-            s[3] = pi.getGuid();\r
-            s[4] = pi.getVersion();\r
+            \r
             Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
             Iterator ismi = smi.iterator();\r
             while(ismi.hasNext()) {\r
                 ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
                 s[0] = mi.getName();\r
-                s[1] = mi.getGuid();\r
-                s[2] = mi.getVersion();\r
-                model.addRow(s);\r
+                s[1] = mi.getVersion();\r
+                s[2] = pi.getName();\r
+                s[3] = pi.getVersion();\r
+                try {\r
+                    s[4] = GlobalData.getMsaFile(mi).getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+                }\r
+                catch (Exception e) {\r
+                    JOptionPane.showMessageDialog(frame, "ShowAllModules:" + e.getMessage());\r
+                }\r
+                modelAllModules.addRow(s);\r
                 miList.add(mi);\r
             }\r
         }\r
@@ -406,31 +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 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().equals(keyPart[2]) || !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
-                    return mi;\r
-                }\r
-            }\r
-        }\r
-        return null;\r
-    }\r
 \r
 }  //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r