]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
Added module type column to the FPD module table, and also removed AUTO_RESIZE_OFF...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFrameworkModules.java
index f79318848918e1a1358c9e9c38091ff85831b7ce..0a15d3188a427f2bb83678daf71f4bf24c972abe 100644 (file)
@@ -32,156 +32,296 @@ import java.util.Vector;
 public class FpdFrameworkModules extends IInternalFrame {\r
 \r
     /**\r
-     * \r
+     * Initialize Globals\r
      */\r
     private static final long serialVersionUID = 1L;\r
+\r
     static JFrame frame;\r
+\r
     private JSplitPane jSplitPane = null;\r
-    private JPanel jPanel = null;\r
-    private JPanel jPanel1 = null;\r
+\r
+    private JPanel jPanelTop = null;\r
+\r
+    private JPanel jPanelBottom = null;\r
+\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
-    \r
+\r
+    private JScrollPane jScrollPaneAllModules = null;\r
+\r
+    private JTable jTableAllModules = null;\r
+\r
+    private JPanel jPanelTopSouth = null;\r
+\r
+    private JButton jButtonAddModule = null;\r
+\r
+    private JLabel jLabelModulesAdded = null;\r
+\r
+    private JPanel jPanelBottomSouth = null;\r
+\r
+    private JScrollPane jScrollPaneFpdModules = null;\r
+\r
+    private JTable jTableFpdModules = null;\r
+\r
+    private JButton jButtonSettings = null;\r
+\r
+    private JButton jButtonRemoveModule = null;\r
+\r
+    private NonEditableTableModel modelAllModules = null;\r
+\r
+    private NonEditableTableModel modelFpdModules = null;\r
+\r
     private FpdModuleSA settingDlg = null;\r
-    \r
+\r
     private FpdFileContents ffc = null;\r
+\r
     private OpeningPlatformType docConsole = null;\r
+\r
     private Map<String, ArrayList<String>> fpdMsa = null;\r
-    \r
+\r
     private ArrayList<ModuleIdentification> miList = null;\r
+    \r
+    /**\r
+     * Column settings for displaying all modules in workspace\r
+     */\r
+    private final int modNameColForAllModTable = 0;\r
+    \r
+    private final int pkgNameColForAllModTable = 1;\r
+    \r
+    private final int pathColForAllModTable = 2;\r
+    \r
+    private final int typeColForAllModTable = 3;\r
+    \r
+    private final int pkgVerColForAllModTable = 5;\r
+    \r
+    private final int modVerColForAllModTable = 4;\r
+    \r
+    /**\r
+     * Column settings for display modules in the FPD file\r
+     */\r
+    private final int modNameColForFpdModTable = 0;\r
+    \r
+    private final int pkgNameColForFpdModTable = 1;\r
+    \r
+    private final int pathColForFpdModTable = 2;\r
+    \r
+    private final int archColForFpdModTable = 3;\r
+    \r
+    private final int pkgVerColForFpdModTable = 6;\r
 \r
+    private final int modVerColForFpdModTable = 5;\r
+    \r
+    private final int typeColForFpdModTable = 4;\r
+    \r
     /**\r
-     * This method initializes jSplitPane      \r
+     * FpdFileContents structure\r
+     */\r
+    private final int ffcModGuid = 0;\r
+    \r
+    private final int ffcModVer = 1;\r
+    \r
+    private final int ffcPkgGuid = 2;\r
+    \r
+    private final int ffcPkgVer = 3;\r
+    \r
+    private final int ffcModArch = 4;\r
+    \r
+    /**\r
+     * Set Column Widths, Only the PATH should not have a max width.\r
+     */\r
+    private final int modNameMinWidth = 168;\r
+    \r
+    private final int modNamePrefWidth = 200;\r
+    \r
+    private final int modNameMaxWidth = 350;\r
+\r
+    private final int pkgNameMinWidth = 100;\r
+    \r
+    private final int pkgNamePrefWidth = 130;\r
+    \r
+    private final int pkgNameMaxWidth = 150;\r
+    \r
+    private final int verMinWidth = 60;\r
+    \r
+    private final int verMaxWidth = 80;\r
+    \r
+    private final int verPrefWidth = 70;\r
+    \r
+    private final int pathPrefWidth = 320;\r
+    \r
+    private final int pathMinWidth = 280;\r
+    \r
+    private final int archPrefWidth = 80;\r
+    \r
+    private final int archMinWidth = 60;\r
+    \r
+    private final int archMaxWidth = 100;\r
+    \r
+    private final int typePrefWidth = 145;\r
+    \r
+    private final int typeMinWidth = 100;\r
+    \r
+    private final int typeMaxWidth = 155;\r
+    \r
+    /**\r
+     * This method initializes jSplitPane\r
+     * \r
+     * This is the main edit window\r
      *         \r
-     * @return javax.swing.JSplitPane  \r
+     * @return javax.swing.JSplitPane jSplitPane       \r
      */\r
     private JSplitPane getJSplitPane() {\r
         if (jSplitPane == null) {\r
             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
 \r
     /**\r
-     * This method initializes jPanel  \r
+     * This method initializes jPanelTop\r
+     * \r
+     * This panel contains the All Modules Table       \r
      *         \r
-     * @return javax.swing.JPanel      \r
+     * @return javax.swing.JPanel      jPanelTop\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
-     * This method initializes jPanel\r
+     * This method initializes jPanelBottom\r
      *         \r
-     * @return javax.swing.JPanel      \r
+     * This panel contains the FPD Modules Table\r
+     * \r
+     * @return javax.swing.JPanel      jPanelBottom\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
-     * This method initializes jScrollPane     \r
+     * This method initializes jScrollPaneAllModules   \r
      *         \r
-     * @return javax.swing.JScrollPane \r
+     * @return javax.swing.JScrollPane jScrollPaneAllModules\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
-     * This method initializes jTable  \r
+     * This method initializes jTableAllModules\r
      *         \r
-     * @return javax.swing.JTable      \r
+     * @return javax.swing.JTable      jTableAllModules\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("<html>Module<br>Name</html>");\r
+            modelAllModules.addColumn("<html>Package<br>Name</html>");\r
+            modelAllModules.addColumn("Path");\r
+            modelAllModules.addColumn("<html>Module<br>Type</html>");\r
+            modelAllModules.addColumn("<html>Module<br>Version</html>");\r
+            modelAllModules.addColumn("<html>Package<br>Version</html>");\r
             \r
-            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            javax.swing.table.TableColumn column = null;\r
+            column = jTableAllModules.getColumnModel().getColumn(modNameColForAllModTable);\r
+            column.setPreferredWidth(modNamePrefWidth);\r
+            column.setMinWidth(modNameMinWidth);\r
+            column.setMaxWidth(modNameMaxWidth);\r
+            column = jTableAllModules.getColumnModel().getColumn(modVerColForAllModTable);\r
+            column.setPreferredWidth(verPrefWidth);\r
+            column.setMaxWidth(verMaxWidth);\r
+            column.setMinWidth(verMinWidth);\r
+            column = jTableAllModules.getColumnModel().getColumn(pkgNameColForAllModTable);\r
+            column.setPreferredWidth(pkgNamePrefWidth);\r
+            column.setMinWidth(pkgNameMinWidth);\r
+            column.setMaxWidth(pkgNameMaxWidth);\r
+            column = jTableAllModules.getColumnModel().getColumn(pkgVerColForAllModTable);\r
+            column.setPreferredWidth(verPrefWidth);\r
+            column.setMaxWidth(verMaxWidth);\r
+            column.setMinWidth(verMinWidth);\r
+            column = jTableAllModules.getColumnModel().getColumn(typeColForAllModTable);\r
+            column.setPreferredWidth(typePrefWidth);\r
+            column.setMaxWidth(typeMaxWidth);\r
+            column.setMinWidth(typeMinWidth);\r
+            column = jTableAllModules.getColumnModel().getColumn(pathColForAllModTable);\r
+            column.setPreferredWidth(pathPrefWidth);\r
+            column.setMinWidth(pathMinWidth);\r
+\r
+            jTableAllModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+\r
         }\r
-        return jTable;\r
+        return jTableAllModules;\r
     }\r
 \r
     /**\r
-     * This method initializes jPanel2 \r
-     *         \r
-     * @return javax.swing.JPanel      \r
+     * This method initializes jPanelTopSouth\r
+     * \r
+     * This panel contains the ADD button\r
+     * \r
+     * @return javax.swing.JPanel   jPanelTopSouth\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
-     * This method initializes jButton \r
+     * This method initializes jButtonAddModule        \r
      *         \r
-     * @return javax.swing.JButton     \r
+     * @return javax.swing.JButton     jButtonAddModule\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
-                    if (selectedRow < 0){\r
+                    int selectedRow = jTableAllModules.getSelectedRow();\r
+                    if (selectedRow < 0) {\r
                         return;\r
                     }\r
-                    \r
-                    String path = model.getValueAt(selectedRow, 4)+"";\r
+\r
+                    TableSorter sorter = (TableSorter) jTableAllModules.getModel();\r
+                    selectedRow = sorter.modelIndex(selectedRow);\r
+                    String path = modelAllModules.getValueAt(selectedRow, pathColForAllModTable) + "";\r
                     ModuleIdentification mi = miList.get(selectedRow);\r
                     Vector<String> vArchs = null;\r
                     try {\r
@@ -190,18 +330,19 @@ public class FpdFrameworkModules extends IInternalFrame {
                     catch (Exception exp) {\r
                         JOptionPane.showMessageDialog(frame, exp.getMessage());\r
                     }\r
-                    \r
+\r
                     if (vArchs == null) {\r
-                        JOptionPane.showMessageDialog(frame, "No supported Archs specified in MSA file.");\r
+                        JOptionPane.showMessageDialog(frame, "No Supported Architectures specified in MSA file.");\r
                         return;\r
                     }\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
+                    String mType = mi.getModuleType();\r
+\r
                     ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r
                     if (al == null) {\r
                         al = new ArrayList<String>();\r
@@ -214,183 +355,247 @@ public class FpdFrameworkModules extends IInternalFrame {
                     // Archs this Module supported have already been added.\r
                     //\r
                     if (vArchs.size() == 0) {\r
-                        JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
+                        JOptionPane.showMessageDialog(frame, "This Module has already been added.");\r
                         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
                         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
-                       model1.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, "PCD Insertion Fail. " + exception.getMessage());\r
-                       }\r
+                        String[] row = { "", "", "", "", "", "", "" };\r
+\r
+                        if (mi != null) {\r
+                            row[modNameColForFpdModTable] = mi.getName();\r
+                            row[pkgNameColForFpdModTable] = mi.getPackage().getName();\r
+                            row[pathColForFpdModTable] = path;\r
+                            row[archColForFpdModTable] = arch;\r
+                            row[pkgVerColForFpdModTable] = pv;\r
+                            row[modVerColForFpdModTable] = mv;\r
+                            row[typeColForFpdModTable] = mType;\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
+                        } catch (Exception exception) {\r
+                            JOptionPane.showMessageDialog(frame, "Adding " + row[modNameColForFpdModTable] + " with Supporting Architectures: " + arch\r
+                                                                 + ": " + 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
+\r
+                    String s = "This Module with Architecture " + archsAdded;\r
+                    if (errorOccurred) {\r
+                        s += " was added with Error. Platform may NOT Build.";\r
+                    } else {\r
+                        s += " was 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
-     * This method initializes jPanel3 \r
+     * This method initializes jPanelBottomSouth\r
+     * \r
+     * This panel contains the Settings and Remove Buttons\r
      *         \r
-     * @return javax.swing.JPanel      \r
+     * @return javax.swing.JPanel      jPanelBottomSouth\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
-     * This method initializes jScrollPane1    \r
+     * This method initializes jScrollPaneFpdModules\r
      *         \r
-     * @return javax.swing.JScrollPane \r
+     * @return javax.swing.JScrollPane jScrollPaneFpdModules\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
-     * This method initializes jTable\r
+     * This method initializes jTableFpdModules\r
      *         \r
-     * @return javax.swing.JTable      \r
+     * @return javax.swing.JTable      jTableFpdModules\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("<html>Module<br>Name</html>");\r
+            modelFpdModules.addColumn("<html>Package<br>Name</html>");\r
+            modelFpdModules.addColumn("Path");\r
+            modelFpdModules.addColumn("<html>Supported<br>Architectures</html>");\r
+            modelFpdModules.addColumn("<html>Module<br>Type</html>");\r
+            modelFpdModules.addColumn("<html>Module<br>Version</html>");\r
+            modelFpdModules.addColumn("<html>Package<br>Version</html>");\r
+\r
             \r
-            jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            javax.swing.table.TableColumn column = null;\r
+            column = jTableFpdModules.getColumnModel().getColumn(modNameColForFpdModTable);\r
+            column.setPreferredWidth(modNamePrefWidth);\r
+            column.setMinWidth(modNameMinWidth);\r
+            column.setMaxWidth(modNameMaxWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(modVerColForFpdModTable);\r
+            column.setPreferredWidth(verPrefWidth);\r
+            column.setMaxWidth(verMaxWidth);\r
+            column.setMinWidth(verMinWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(pkgNameColForFpdModTable);\r
+            column.setPreferredWidth(pkgNamePrefWidth);\r
+            column.setMinWidth(pkgNameMinWidth);\r
+            column.setMaxWidth(pkgNameMaxWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(pkgVerColForFpdModTable);\r
+            column.setPreferredWidth(verPrefWidth);\r
+            column.setMaxWidth(verMaxWidth);\r
+            column.setMinWidth(verMinWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(archColForFpdModTable);\r
+            column.setPreferredWidth(archPrefWidth);\r
+            column.setMaxWidth(archMaxWidth);\r
+            column.setMinWidth(archMinWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(pathColForFpdModTable);\r
+            column.setPreferredWidth(pathPrefWidth);\r
+            column.setMinWidth(pathMinWidth);\r
+            column = jTableFpdModules.getColumnModel().getColumn(typeColForFpdModTable);\r
+            column.setPreferredWidth(typePrefWidth);\r
+            column.setMaxWidth(typeMaxWidth);\r
+            column.setMinWidth(typeMinWidth);\r
+\r
+            jTableFpdModules.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+\r
         }\r
-        return jTable1;\r
+        return jTableFpdModules;\r
     }\r
 \r
     /**\r
-     * This method initializes jButton1        \r
+     * This method initializes jButtonSettings\r
      *         \r
-     * @return javax.swing.JButton     \r
+     * @return javax.swing.JButton     jButtonSettings\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
-                    if (selectedRow < 0){\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
+\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
+                    String mg = sa[ffcModGuid];\r
+                    String mv = sa[ffcModVer];\r
+                    String pg = sa[ffcPkgGuid];\r
+                    String pv = sa[ffcPkgVer];\r
+                    String arch = sa[ffcModArch];\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
-     * This method initializes jButton2        \r
+     * This method initializes jButtonRemoveModule\r
      *         \r
-     * @return javax.swing.JButton     \r
+     * @return javax.swing.JButton     jButtonRemoveModule\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
-                    if (selectedRow < 0){\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
-                    String mv = sa[1];\r
-                    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
+                    String mg = sa[ffcModGuid];\r
+                    String mv = sa[ffcModVer];\r
+                    String pg = sa[ffcPkgGuid];\r
+                    String pv = sa[ffcPkgVer];\r
+                    String arch = sa[ffcModArch];\r
+                    ModuleIdentification mi = GlobalData.getModuleId(mg + " " + mv + " " + pg + " " + pv + " " + arch);\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
-                    }\r
-                    else {\r
-                        ArrayList<String> al = fpdMsa.get(mg+mv+pg+pv);\r
+                        fpdMsa.remove(mg + mv + pg + pv);\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
+                            fpdMsa.remove(mg + mv + pg + pv);\r
                         }\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
+     * \r
      * @param args\r
      */\r
     public static void main(String[] args) {\r
-        // TODO Auto-generated method stub\r
+        // Set the pane visable\r
         new FpdFrameworkModules().setVisible(true);\r
     }\r
 \r
@@ -402,17 +607,17 @@ public class FpdFrameworkModules extends IInternalFrame {
         initialize();\r
     }\r
 \r
-    public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
+    public FpdFrameworkModules(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
         this();\r
         init(fpd);\r
-        \r
+\r
     }\r
-    \r
+\r
     public FpdFrameworkModules(OpeningPlatformType opt) {\r
         this(opt.getXmlFpd());\r
         docConsole = opt;\r
     }\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
@@ -420,81 +625,92 @@ public class FpdFrameworkModules extends IInternalFrame {
         catch(Exception e){\r
             JOptionPane.showMessageDialog(frame, "Error occurred when getting module data.");\r
         }\r
-        \r
-        if (ffc == null){\r
+\r
+        if (ffc == null) {\r
             ffc = new FpdFileContents(fpd);\r
             ffc.initDynPcdMap();\r
         }\r
-        \r
+\r
         if (fpdMsa == null) {\r
             fpdMsa = new HashMap<String, ArrayList<String>>();\r
         }\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
-                ModuleIdentification mi = getModuleId(saa[i][0]+ " "+saa[i][1]+" "+saa[i][2]+" "+saa[i][3]);\r
-                String[] row = {"", "", "", "", "", ""};\r
+                ModuleIdentification mi = GlobalData.getModuleId(saa[i][ffcModGuid] + " " + saa[i][ffcModVer] + " "\r
+                                                                 + saa[i][ffcPkgGuid] + " " + saa[i][ffcPkgVer]);\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
+                    row[modNameColForFpdModTable] = mi.getName();\r
+                    row[modVerColForFpdModTable] = mi.getVersion();\r
+                    row[typeColForFpdModTable] = mi.getModuleType();\r
+                    row[pkgNameColForFpdModTable] = mi.getPackage().getName();\r
+                    row[pkgVerColForFpdModTable] = mi.getPackage().getVersion();\r
+                    row[archColForFpdModTable] = saa[i][4];\r
+                    try {\r
+                        row[pathColForFpdModTable] = GlobalData.getMsaFile(mi).getPath().substring(\r
+                                                                                      System.getenv("WORKSPACE")\r
+                                                                                            .length() + 1);\r
+                    } catch (Exception e) {\r
+                        JOptionPane.showMessageDialog(frame, "Show FPD Modules:" + e.getMessage());\r
                     }\r
                 }\r
-                model1.addRow(row);\r
-                ArrayList<String> al = fpdMsa.get(saa[i][0]+row[1]+saa[i][2]+row[3]);\r
+                modelFpdModules.addRow(row);\r
+                ArrayList<String> al = fpdMsa.get(saa[i][ffcModGuid] + saa[i][ffcModVer]\r
+                                                  + saa[i][ffcPkgGuid] + saa[i][ffcPkgVer]);\r
                 if (al == null) {\r
                     al = new ArrayList<String>();\r
-                    fpdMsa.put(saa[i][0]+row[1]+saa[i][2]+row[3], al);\r
+                    fpdMsa.put(saa[i][ffcModGuid] + saa[i][ffcModVer] + saa[i][ffcPkgGuid] + saa[i][ffcPkgVer], al);\r
                 }\r
-                al.add(saa[i][4]);\r
-                \r
+                al.add(saa[i][ffcModArch]);\r
+\r
             }\r
+            TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+            sorter.setSortingStatus(modNameColForFpdModTable, TableSorter.ASCENDING);\r
         }\r
-        \r
+\r
         showAllModules();\r
-        \r
+\r
     }\r
-    \r
+\r
     private void showAllModules() {\r
-        \r
+\r
         if (miList == null) {\r
             miList = new ArrayList<ModuleIdentification>();\r
         }\r
         Set<PackageIdentification> spi = GlobalData.getPackageList();\r
         Iterator ispi = spi.iterator();\r
-        \r
-        while(ispi.hasNext()) {\r
-            PackageIdentification pi = (PackageIdentification)ispi.next();\r
-            String[] s = {"", "", "", "", ""};\r
-            \r
+\r
+        while (ispi.hasNext()) {\r
+            PackageIdentification pi = (PackageIdentification) ispi.next();\r
+            String[] s = { "", "", "", "", "", "" };\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.getVersion();\r
-                s[2] = pi.getName();\r
-                s[3] = pi.getVersion();\r
+            while (ismi.hasNext()) {\r
+                ModuleIdentification mi = (ModuleIdentification) ismi.next();\r
+                s[modNameColForAllModTable] = mi.getName();\r
+                s[modVerColForAllModTable] = mi.getVersion();\r
+                s[typeColForAllModTable] = mi.getModuleType();\r
+                s[pkgNameColForAllModTable] = pi.getName();\r
+                s[pkgVerColForAllModTable] = pi.getVersion();\r
                 try {\r
-                    s[4] = GlobalData.getMsaFile(mi).getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+                    s[pathColForAllModTable] = GlobalData.getMsaFile(mi).getPath()\r
+                                            .substring(System.getenv("WORKSPACE").length() + 1);\r
+                } catch (Exception e) {\r
+                    JOptionPane.showMessageDialog(frame, "Show All Modules:" + e.getMessage());\r
                 }\r
-                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
+        \r
+        TableSorter sorter = (TableSorter)jTableAllModules.getModel();\r
+        sorter.setSortingStatus(modNameColForAllModTable, TableSorter.ASCENDING);\r
     }\r
+\r
     /**\r
      * This method initializes this\r
      * \r
@@ -505,47 +721,10 @@ public class FpdFrameworkModules extends IInternalFrame {
         this.setTitle("Framework Modules");\r
         this.setContentPane(getJSplitPane());\r
         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().equals(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().equals(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
+} //  @jve:decl-index=0:visual-constraint="10,10"\r
 \r
 class NonEditableTableModel extends DefaultTableModel {\r
     /**\r