]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleLibraryClassDefinitions.java
Use table and popup window to add/edit all elements of module instead of original...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / ModuleLibraryClassDefinitions.java
index a815c8549bd43eee0199a2454d6fd4ee698fb809..5104651700f551c4860e377e286708506e20cfa5 100644 (file)
@@ -17,16 +17,15 @@ package org.tianocore.frameworkwizard.module.ui;
 import java.awt.Dimension;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
-import java.awt.event.ItemEvent;\r
+import java.awt.event.MouseEvent;\r
 import java.util.Vector;\r
 \r
 import javax.swing.JButton;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JLabel;\r
 import javax.swing.JPanel;\r
 import javax.swing.JScrollPane;\r
-import javax.swing.JTextArea;\r
-import javax.swing.JTextField;\r
+import javax.swing.JTable;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.event.ListSelectionEvent;\r
 \r
 import org.tianocore.LibraryClassDefinitionsDocument;\r
 import org.tianocore.LibraryUsage;\r
@@ -34,17 +33,15 @@ import org.tianocore.ModuleSurfaceAreaDocument;
 import org.tianocore.LibraryClassDefinitionsDocument.LibraryClassDefinitions;\r
 import org.tianocore.LibraryClassDocument.LibraryClass;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
-import org.tianocore.frameworkwizard.common.DataValidation;\r
-import org.tianocore.frameworkwizard.common.EnumerationData;\r
+import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
 import org.tianocore.frameworkwizard.common.Log;\r
 import org.tianocore.frameworkwizard.common.Tools;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
-import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
-import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
 import org.tianocore.frameworkwizard.module.Identifications.LibraryClass.LibraryClassIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.LibraryClass.LibraryClassVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.LibraryClassDefsDlg;\r
 \r
 /**\r
  The class is used to create, update Library Class Definition of MSA/MBD file\r
@@ -63,61 +60,17 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JComboBox jComboBoxLibraryClassName = null;\r
-\r
-    private JLabel jLabelUsage = null;\r
-\r
-    private JComboBox jComboBoxUsage = null;\r
-\r
-    private JComboBox jComboBoxList = null;\r
-\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
 \r
     private JButton jButtonUpdate = null;\r
 \r
-    private JLabel jLabelLibraryClassName = null;\r
-\r
-    private JScrollPane jScrollPaneList = null;\r
-\r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JTextArea jTextAreaList = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private StarLabel jStarLabel2 = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
-\r
-    private JLabel jLabelRecommendedInstanceVersion = null;\r
-\r
-    private JTextField jTextFieldRecommendedInstanceVersion = null;\r
-\r
-    private JLabel jLabelRecommendedInstanceGuid = null;\r
-\r
-    private JTextField jTextFieldRecommendedInstanceGuid = null;\r
-\r
-    private JButton jButtonGenerateGuid = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private JLabel jLabelArch = null;\r
-\r
-    private JLabel jLabelModuleList = null;\r
-\r
-    private JScrollPane jScrollPaneModuleList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListModule = null;\r
-\r
-    private JLabel jLabelHelpText = null;\r
-\r
-    private JTextField jTextFieldHelpText = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not for UI\r
@@ -128,65 +81,11 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
 \r
     private LibraryClassVector vLibraryClass = new LibraryClassVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-\r
-    private Vector<String> vLib = new Vector<String>();\r
-\r
-    private int intSelectedItemId = 0;\r
-\r
-    private WorkspaceTools wt = new WorkspaceTools();\r
-\r
-    private LibraryClassIdentification lcid = null;\r
-\r
     private OpeningModuleType omt = null;\r
 \r
-    /**\r
-     This method initializes jComboBoxSelect \r
-     \r
-     @return javax.swing.JComboBox jComboBoxSelect\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxLibraryClassName() {\r
-        if (jComboBoxLibraryClassName == null) {\r
-            jComboBoxLibraryClassName = new JComboBox();\r
-            jComboBoxLibraryClassName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxLibraryClassName.setPreferredSize(new Dimension(320, 20));\r
-            jComboBoxLibraryClassName.setEnabled(true);\r
-        }\r
-        return jComboBoxLibraryClassName;\r
-    }\r
-\r
-    /**\r
-     This method initializes jComboBoxUsage \r
-     \r
-     @return javax.swing.JComboBox jComboBoxUsage\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxUsage() {\r
-        if (jComboBoxUsage == null) {\r
-            jComboBoxUsage = new JComboBox();\r
-            jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxUsage.setPreferredSize(new Dimension(320, 20));\r
-        }\r
-        return jComboBoxUsage;\r
-    }\r
+    private IDefaultTableModel model = null;\r
 \r
-    /**\r
-     This method initializes jComboBoxFileList \r
-     \r
-     @return javax.swing.JComboBox jComboBoxFileList\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxList() {\r
-        if (jComboBoxList == null) {\r
-            jComboBoxList = new JComboBox();\r
-            jComboBoxList.setBounds(new java.awt.Rectangle(15, 330, 210, 20));\r
-            jComboBoxList.setPreferredSize(new Dimension(210, 20));\r
-            jComboBoxList.addItemListener(this);\r
-            jComboBoxList.addActionListener(this);\r
-        }\r
-        return jComboBoxList;\r
-    }\r
+    private int selectedRow = -1;\r
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -232,28 +131,13 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         if (jButtonUpdate == null) {\r
             jButtonUpdate = new JButton();\r
             jButtonUpdate.setBounds(new java.awt.Rectangle(315, 330, 80, 20));\r
-            jButtonUpdate.setText("Update");\r
+            jButtonUpdate.setText("Edit");\r
             jButtonUpdate.setPreferredSize(new Dimension(80, 20));\r
             jButtonUpdate.addActionListener(this);\r
         }\r
         return jButtonUpdate;\r
     }\r
 \r
-    /**\r
-     This method initializes jScrollPane       \r
-     \r
-     @return javax.swing.JScrollPane   \r
-     */\r
-    private JScrollPane getJScrollPaneList() {\r
-        if (jScrollPaneList == null) {\r
-            jScrollPaneList = new JScrollPane();\r
-            jScrollPaneList.setBounds(new java.awt.Rectangle(15, 355, 465, 100));\r
-            jScrollPaneList.setPreferredSize(new Dimension(465, 260));\r
-            jScrollPaneList.setViewportView(getJTextAreaList());\r
-        }\r
-        return jScrollPaneList;\r
-    }\r
-\r
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -268,147 +152,41 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
     }\r
 \r
     /**\r
-     * This method initializes jTextAreaList   \r
-     *         \r
-     * @return javax.swing.JTextArea   \r
-     */\r
-    private JTextArea getJTextAreaList() {\r
-        if (jTextAreaList == null) {\r
-            jTextAreaList = new JTextArea();\r
-            jTextAreaList.setEditable(false);\r
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldRecommendedInstanceVersion    \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldRecommendedInstanceVersion() {\r
-        if (jTextFieldRecommendedInstanceVersion == null) {\r
-            jTextFieldRecommendedInstanceVersion = new JTextField();\r
-            jTextFieldRecommendedInstanceVersion.setPreferredSize(new java.awt.Dimension(260, 20));\r
-            jTextFieldRecommendedInstanceVersion.setSize(new java.awt.Dimension(260, 20));\r
-            jTextFieldRecommendedInstanceVersion.setLocation(new java.awt.Point(220, 85));\r
-        }\r
-        return jTextFieldRecommendedInstanceVersion;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldRecommendedInstanceGuid       \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldRecommendedInstanceGuid() {\r
-        if (jTextFieldRecommendedInstanceGuid == null) {\r
-            jTextFieldRecommendedInstanceGuid = new JTextField();\r
-            jTextFieldRecommendedInstanceGuid.setBounds(new java.awt.Rectangle(220, 110, 190, 20));\r
-            jTextFieldRecommendedInstanceGuid.setPreferredSize(new java.awt.Dimension(190, 20));\r
-        }\r
-        return jTextFieldRecommendedInstanceGuid;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jButtonGenerateGuid     \r
-     *         \r
-     * @return javax.swing.JButton     \r
-     */\r
-    private JButton getJButtonGenerateGuid() {\r
-        if (jButtonGenerateGuid == null) {\r
-            jButtonGenerateGuid = new JButton();\r
-            jButtonGenerateGuid.setBounds(new java.awt.Rectangle(415, 110, 65, 20));\r
-            jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
-            jButtonGenerateGuid.setText("GEN");\r
-            jButtonGenerateGuid.addActionListener(this);\r
-        }\r
-        return jButtonGenerateGuid;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldFeatureFlag   \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldFeatureFlag() {\r
-        if (jTextFieldFeatureFlag == null) {\r
-            jTextFieldFeatureFlag = new JTextField();\r
-            jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
-            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jTextFieldFeatureFlag;\r
-    }\r
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jScrollPaneTable  \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JScrollPane   \r
      **/\r
-    private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
-        if (iCheckBoxListArch == null) {\r
-            iCheckBoxListArch = new ICheckBoxList();\r
-            iCheckBoxListArch.addFocusListener(this);\r
+    private JScrollPane getJScrollPaneTable() {\r
+        if (jScrollPaneTable == null) {\r
+            jScrollPaneTable = new JScrollPane();\r
+            jScrollPaneTable.setBounds(new java.awt.Rectangle(15, 10, 470, 420));\r
+            jScrollPaneTable.setPreferredSize(new Dimension(470, 420));\r
+            jScrollPaneTable.setViewportView(getJTable());\r
         }\r
-        return iCheckBoxListArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jTable    \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JTable        \r
      **/\r
-    private ICheckBoxList getICheckBoxListSupModuleList() {\r
-        if (iCheckBoxListModule == null) {\r
-            iCheckBoxListModule = new ICheckBoxList();\r
-        }\r
-        return iCheckBoxListModule;\r
-    }\r
+    private JTable getJTable() {\r
+        if (jTable == null) {\r
+            jTable = new JTable();\r
+            model = new IDefaultTableModel();\r
+            jTable = new JTable(model);\r
+            jTable.setRowHeight(20);\r
 \r
-    /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \r
-     \r
-     **/\r
-    private JScrollPane getJScrollPaneArch() {\r
-        if (jScrollPaneArch == null) {\r
-            jScrollPaneArch = new JScrollPane();\r
-            jScrollPaneArch.setBounds(new java.awt.Rectangle(160, 160, 320, 80));\r
-            jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
-            jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
-        }\r
-        return jScrollPaneArch;\r
-    }\r
-\r
-    /**\r
-     This method initializes jScrollPaneModuleList     \r
-     \r
-     @return javax.swing.JScrollPane   \r
-     \r
-     **/\r
-    private JScrollPane getJScrollPaneModuleList() {\r
-        if (jScrollPaneModuleList == null) {\r
-            jScrollPaneModuleList = new JScrollPane();\r
-            jScrollPaneModuleList.setBounds(new java.awt.Rectangle(160, 245, 320, 80));\r
-            jScrollPaneModuleList.setPreferredSize(new java.awt.Dimension(320, 80));\r
-            jScrollPaneModuleList.setViewportView(getICheckBoxListSupModuleList());\r
-        }\r
-        return jScrollPaneModuleList;\r
-    }\r
+            model.addColumn("Library Class Name");\r
+            model.addColumn("Usage");\r
 \r
-    /**\r
-     This method initializes jTextFieldHelpText        \r
-     \r
-     @return javax.swing.JTextField    \r
-     \r
-     **/\r
-    private JTextField getJTextFieldHelpText() {\r
-        if (jTextFieldHelpText == null) {\r
-            jTextFieldHelpText = new JTextField();\r
-            jTextFieldHelpText.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
-            jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
-        return jTextFieldHelpText;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -435,39 +213,10 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         super();\r
         this.omt = inOmt;\r
         this.msa = omt.getXmlMsa();\r
-        initLibraryClass();\r
         init(msa.getLibraryClassDefinitions());\r
         this.setVisible(true);\r
     }\r
 \r
-    //    private void initLibraryClass(MsaHeaderDocument.MsaHeader msaHeader) {\r
-    //        Enum e = msaHeader.getModuleType();\r
-    //        if (e == ModuleTypeDef.BASE) {\r
-    //            vLib = ed.getVLibClassDefBase();\r
-    //        } else if (e == ModuleTypeDef.PEI_CORE) {\r
-    //            vLib = ed.getVLibClassDefPei();\r
-    //        } else if (e == ModuleTypeDef.PEIM) {\r
-    //            vLib = ed.getVLibClassDefPeim();\r
-    //        } else if (e == ModuleTypeDef.DXE_CORE) {\r
-    //            vLib = ed.getVLibClassDefDxeCore();\r
-    //        } else if (e == ModuleTypeDef.DXE_DRIVER) {\r
-    //            vLib = ed.getVLibClassDefDxeDriver();\r
-    //        } else if (e == ModuleTypeDef.DXE_SMM_DRIVER) {\r
-    //            vLib = ed.getVLibClassDefDxeSmmDriver();\r
-    //        } else if (e == ModuleTypeDef.UEFI_DRIVER) {\r
-    //            vLib = ed.getVLibClassDefUefiDriver();\r
-    //        } else {\r
-    //            //vLib = ed.getVLibClassDef();\r
-    //        }\r
-    //    }\r
-\r
-    /**\r
-     \r
-     **/\r
-    private void initLibraryClass() {\r
-        vLib = wt.getAllLibraryClassDefinitionsFromWorkspace();\r
-    }\r
-\r
     /**\r
      This method initializes this\r
      Fill values to all fields if these values are not empty\r
@@ -484,7 +233,7 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
                     String name = lcd.getLibraryClassList().get(index).getKeyword();\r
                     String usage = null;\r
                     if (lcd.getLibraryClassList().get(index).getUsage() != null) {\r
-                        usage = lcd.getLibraryClassList().get(index).getUsage().toString();    \r
+                        usage = lcd.getLibraryClassList().get(index).getUsage().toString();\r
                     }\r
                     String version = lcd.getLibraryClassList().get(index).getRecommendedInstanceVersion();\r
                     String guid = lcd.getLibraryClassList().get(index).getRecommendedInstanceGuid();\r
@@ -503,8 +252,7 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         //\r
         // Update the list\r
         //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vLibraryClass.getLibraryClassName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
@@ -515,21 +263,6 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Library Class Definitions");\r
         this.setBounds(new java.awt.Rectangle(0, 0, 500, 515));\r
-        initFrame();\r
-        this.setViewMode(false);\r
-    }\r
-\r
-    /**\r
-     Disable all components when the mode is view\r
-     \r
-     @param isView true - The view mode; false - The non-view mode\r
-     \r
-     **/\r
-    public void setViewMode(boolean isView) {\r
-        if (isView) {\r
-            this.jComboBoxLibraryClassName.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
     }\r
 \r
     /**\r
@@ -540,159 +273,18 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 60, 140, 20));\r
-            jLabelHelpText.setText("Help Text");\r
-            jLabelModuleList = new JLabel();\r
-            jLabelModuleList.setBounds(new java.awt.Rectangle(15, 245, 140, 20));\r
-            jLabelModuleList.setText("Sup Module List");\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
-            jLabelArch.setText("Sup Arch List");\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelRecommendedInstanceGuid = new JLabel();\r
-            jLabelRecommendedInstanceGuid.setBounds(new java.awt.Rectangle(15, 110, 200, 20));\r
-            jLabelRecommendedInstanceGuid.setText("Recommended Instance Guid");\r
-            jLabelRecommendedInstanceVersion = new JLabel();\r
-            jLabelRecommendedInstanceVersion.setBounds(new java.awt.Rectangle(15, 85, 200, 20));\r
-            jLabelRecommendedInstanceVersion.setText("Recommended Instance Version");\r
-            jLabelLibraryClassName = new JLabel();\r
-            jLabelLibraryClassName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelLibraryClassName.setText("Library Class Name");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelUsage.setText("Usage");\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 465));\r
-\r
-            jContentPane.add(getJComboBoxLibraryClassName(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
-            jContentPane.add(jLabelLibraryClassName, null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-            jContentPane.add(getJComboBoxList(), null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
+\r
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(jLabelRecommendedInstanceVersion, null);\r
-            jContentPane.add(getJTextFieldRecommendedInstanceVersion(), null);\r
-            jContentPane.add(jLabelRecommendedInstanceGuid, null);\r
-            jContentPane.add(getJTextFieldRecommendedInstanceGuid(), null);\r
-            jContentPane.add(getJButtonGenerateGuid(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJScrollPaneArch(), null);\r
-            jStarLabel1 = new StarLabel();\r
-            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
-            jStarLabel2 = new StarLabel();\r
-            jStarLabel2.setLocation(new java.awt.Point(0, 35));\r
-\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(jStarLabel2, null);\r
-            jContentPane.add(jLabelModuleList, null);\r
-            jContentPane.add(getJScrollPaneModuleList(), null);\r
-            jContentPane.add(jLabelHelpText, null);\r
-            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
-    /**\r
-     This method initializes all existing libraries and usage types\r
-     \r
-     **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxLibraryClassName, vLib);\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVLibraryUsage());\r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
-        this.iCheckBoxListModule.setAllItems(ed.getVFrameworkModuleTypes());\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
-     *\r
-     * Override actionPerformed to listen all actions\r
-     * \r
-     */\r
-    public void actionPerformed(ActionEvent arg0) {\r
-        if (arg0.getSource() == jButtonAdd) {\r
-            if (!checkAdd()) {\r
-                return;\r
-            }\r
-            addToList();\r
-        }\r
-        if (arg0.getSource() == jButtonRemove) {\r
-            removeFromList();\r
-        }\r
-        if (arg0.getSource() == jButtonUpdate) {\r
-            updateForList();\r
-        }\r
-        if (arg0.getSource() == jButtonGenerateGuid) {\r
-            this.jTextFieldRecommendedInstanceGuid.setText(Tools.generateUuidString());\r
-        }\r
-    }\r
-\r
-    /**\r
-     Data validation for all fields\r
-     \r
-     @retval true - All datas are valid\r
-     @retval false - At least one data is invalid\r
-     \r
-     **/\r
-    public boolean checkAdd() {\r
-        //\r
-        // Check LibraryClass\r
-        //\r
-        if (this.jComboBoxLibraryClassName.getSelectedItem() == null) {\r
-            Log.err("No Library Class can be added");\r
-            return false;\r
-        }\r
-        if (!DataValidation.isLibraryClass(this.jComboBoxLibraryClassName.getSelectedItem().toString())) {\r
-            Log.err("Incorrect data type for Library Class");\r
-            return false;\r
-        }\r
-\r
-        //\r
-        // Check RecommendedInstanceVersion\r
-        //\r
-        if (!isEmpty(this.jTextFieldRecommendedInstanceVersion.getText())) {\r
-            if (!DataValidation.isRecommendedInstanceVersion(this.jTextFieldRecommendedInstanceVersion.getText())) {\r
-                Log.err("Incorrect data type for Recommended Instance Version");\r
-                return false;\r
-            }\r
-        }\r
-\r
-        //\r
-        // Check RecommendedInstanceGuid\r
-        //\r
-        if (!isEmpty(this.jTextFieldRecommendedInstanceGuid.getText())) {\r
-            if (!DataValidation.isGuid(this.jTextFieldRecommendedInstanceGuid.getText())) {\r
-                Log.err("Incorrect data type for Recommended Instance Guid");\r
-                return false;\r
-            }\r
-        }\r
-\r
-        //\r
-        // Check FeatureFlag\r
-        //\r
-        if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
-            if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
-                Log.err("Incorrect data type for Feature Flag");\r
-                return false;\r
-            }\r
-        }\r
-\r
-        if (this.vLibraryClass.findLibraryClass(this.jComboBoxLibraryClassName.getSelectedItem().toString()) > -1) {\r
-            Log.err("The Library Class has been added already!");\r
-            return false;\r
-        }\r
-        return true;\r
-    }\r
-\r
     /**\r
      Save all components of Mbd Header\r
      if exists mbdHeader, set the value directly\r
@@ -746,175 +338,111 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         }\r
     }\r
 \r
-    private LibraryClassIdentification getCurrentLibraryClass() {\r
-        String name = this.jComboBoxLibraryClassName.getSelectedItem().toString();\r
-        String usage = this.jComboBoxUsage.getSelectedItem().toString();\r
-        String version = this.jTextFieldRecommendedInstanceVersion.getText();\r
-        String guid = this.jTextFieldRecommendedInstanceGuid.getText();\r
-        String featureFlag = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arch = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        Vector<String> module = this.iCheckBoxListModule.getAllCheckedItemsString();\r
-        String help = this.jTextFieldHelpText.getText();\r
-        lcid = new LibraryClassIdentification(name, usage, version, guid, arch, featureFlag, module, help);\r
-        return lcid;\r
-    }\r
-\r
-    /**\r
-     Add current item to Vector\r
-     \r
-     **/\r
-    private void addToList() {\r
-        intSelectedItemId = vLibraryClass.size();\r
-\r
-        vLibraryClass.addLibraryClass(getCurrentLibraryClass());\r
-\r
-        jComboBoxList.addItem(lcid.getLibraryClassName());\r
-        jComboBoxList.setSelectedItem(lcid.getLibraryClassName());\r
-\r
-        //\r
-        // Reset select item index\r
-        //\r
-        intSelectedItemId = vLibraryClass.size();\r
-\r
-        //\r
-        // Reload all fields of selected item\r
-        //\r
-        reloadFromList();\r
-\r
-        // \r
-        // Save to memory\r
-        //\r
-        save();\r
+    private void showEdit(int index) {\r
+        LibraryClassDefsDlg mcdd = new LibraryClassDefsDlg(vLibraryClass.getLibraryClass(index), new IFrame());\r
+        int result = mcdd.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vLibraryClass.addLibraryClass(mcdd.getLcid());\r
+            } else {\r
+                this.vLibraryClass.setLibraryClass(mcdd.getLcid(), index);\r
+            }\r
+            this.showTable();\r
+            this.save();\r
+            mcdd.dispose();\r
+        }\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            mcdd.dispose();\r
+        }\r
     }\r
 \r
-    /**\r
-     Remove current item from Vector\r
-     \r
-     **/\r
-    private void removeFromList() {\r
-        //\r
-        // Check if exist items\r
-        //\r
-        if (this.vLibraryClass.size() < 1) {\r
-            return;\r
+    /* (non-Javadoc)\r
+     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
+     *\r
+     * Override actionPerformed to listen all actions\r
+     * \r
+     */\r
+    public void actionPerformed(ActionEvent arg0) {\r
+        if (arg0.getSource() == jButtonAdd) {\r
+            showEdit(-1);\r
+        }\r
+        if (arg0.getSource() == jButtonUpdate) {\r
+            if (this.selectedRow < 0) {\r
+                Log.err("Please select one record first.");\r
+                return;\r
+            }\r
+            showEdit(selectedRow);\r
         }\r
 \r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vLibraryClass.removeLibraryClass(intTempIndex);\r
-\r
-        //\r
-        // Reload all fields of selected item\r
-        //\r
-        reloadFromList();\r
-\r
-        // \r
-        // Save to memory\r
-        //\r
-        save();\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
+            }\r
+            if (selectedRow > -1) {\r
+                this.model.removeRow(selectedRow);\r
+                this.vLibraryClass.removeLibraryClass(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
+            }\r
+        }\r
     }\r
 \r
     /**\r
-     Update current item of Vector\r
+     Clear all table rows\r
      \r
      **/\r
-    private void updateForList() {\r
-        //\r
-        // Check if exist items\r
-        //\r
-        if (this.vLibraryClass.size() < 1) {\r
-            return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vLibraryClass.updateLibraryClass(getCurrentLibraryClass(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vLibraryClass.size(); index++) {\r
-            jComboBoxList.addItem(vLibraryClass.getLibraryClass(index).getLibraryClassName());\r
+    private void clearAll() {\r
+        if (model != null) {\r
+            for (int index = model.getRowCount() - 1; index >= 0; index--) {\r
+                model.removeRow(index);\r
+            }\r
         }\r
-\r
-        //\r
-        // Restore selected item index\r
-        //\r
-        intSelectedItemId = intTempIndex;\r
-\r
-        //\r
-        // Reset select item index\r
-        //\r
-        jComboBoxList.setSelectedIndex(intSelectedItemId);\r
-\r
-        //\r
-        // Reload all fields of selected item\r
-        //\r
-        reloadFromList();\r
-\r
-        // \r
-        // Save to memory\r
-        //\r
-        save();\r
     }\r
 \r
     /**\r
-     Refresh all fields' values of selected item of Vector\r
+     Read content of vector and put then into table\r
      \r
      **/\r
-    private void reloadFromList() {\r
+    private void showTable() {\r
+        clearAll();\r
+\r
         if (vLibraryClass.size() > 0) {\r
-            //\r
-            // Get selected item index\r
-            //\r
-            intSelectedItemId = jComboBoxList.getSelectedIndex();\r
-\r
-            this.jComboBoxLibraryClassName.setSelectedItem(vLibraryClass.getLibraryClass(intSelectedItemId)\r
-                                                                        .getLibraryClassName());\r
-            this.jComboBoxUsage.setSelectedItem(vLibraryClass.getLibraryClass(intSelectedItemId).getUsage());\r
-            this.jTextFieldRecommendedInstanceVersion.setText(vLibraryClass.getLibraryClass(intSelectedItemId)\r
-                                                                           .getRecommendedInstanceVersion());\r
-            this.jTextFieldRecommendedInstanceGuid.setText(vLibraryClass.getLibraryClass(intSelectedItemId)\r
-                                                                        .getRecommendedInstanceGuid());\r
-            this.jTextFieldFeatureFlag.setText(vLibraryClass.getLibraryClass(intSelectedItemId).getFeatureFlag());\r
-            this.iCheckBoxListArch.setAllItemsUnchecked();\r
-            this.iCheckBoxListArch.initCheckedItem(true, vLibraryClass.getLibraryClass(intSelectedItemId)\r
-                                                                      .getSupArchList());\r
-            this.iCheckBoxListModule.setAllItemsUnchecked();\r
-            this.iCheckBoxListModule.initCheckedItem(true, vLibraryClass.getLibraryClass(intSelectedItemId)\r
-                                                                        .getSupModuleList());\r
-            this.jTextFieldHelpText.setText(vLibraryClass.getLibraryClass(intSelectedItemId).getHelp());\r
-        } else {\r
+            for (int index = 0; index < vLibraryClass.size(); index++) {\r
+                model.addRow(vLibraryClass.toStringVector(index));\r
+            }\r
         }\r
-\r
-        reloadListArea();\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\r
+        //this.jScrollPane.setViewportView(this.jTable);\r
     }\r
 \r
-    /**\r
-     Update list area pane via the elements of Vector\r
-     \r
-     **/\r
-    private void reloadListArea() {\r
-        String strListItem = "";\r
-        for (int index = 0; index < vLibraryClass.size(); index++) {\r
-            strListItem = strListItem + vLibraryClass.getLibraryClass(index).getLibraryClassName()\r
-                          + DataType.UNIX_LINE_SEPARATOR;\r
+    /* (non-Javadoc)\r
+     * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)\r
+     *\r
+     */\r
+    public void valueChanged(ListSelectionEvent arg0) {\r
+        if (arg0.getValueIsAdjusting()) {\r
+            return;\r
+        }\r
+        ListSelectionModel lsm = (ListSelectionModel) arg0.getSource();\r
+        if (lsm.isSelectionEmpty()) {\r
+            return;\r
+        } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\r
-     * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
+     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
      *\r
-     * Reflesh the frame when selected item changed\r
-     * \r
      */\r
-    public void itemStateChanged(ItemEvent arg0) {\r
-        if (arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\r
+    public void mouseClicked(MouseEvent arg0) {\r
+        if (arg0.getClickCount() == 2) {\r
+            if (this.selectedRow < 0) {\r
+                return;\r
+            } else {\r
+                showEdit(selectedRow);\r
+            }\r
         }\r
     }\r
 \r
@@ -929,24 +457,12 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(this.jComboBoxLibraryClassName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jComboBoxUsage, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldHelpText, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldRecommendedInstanceVersion, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldRecommendedInstanceGuid, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jScrollPaneArch, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jScrollPaneModuleList, intCurrentWidth, intPreferredWidth);\r
-\r
-        relocateComponentX(this.jButtonGenerateGuid, intCurrentWidth, intPreferredWidth,\r
-                           DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
-\r
-        resizeComponentWidth(this.jComboBoxList, intCurrentWidth, intPreferredWidth);\r
-        resizeComponent(this.jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
-        relocateComponentX(this.jButtonAdd, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON);\r
-        relocateComponentX(this.jButtonRemove, intCurrentWidth, intPreferredWidth,\r
-                           DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON);\r
-        relocateComponentX(this.jButtonUpdate, intCurrentWidth, intPreferredWidth,\r
-                           DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON);\r
+        resizeComponent(this.jScrollPaneTable, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
+        relocateComponent(this.jButtonAdd, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight,\r
+                          DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON, DataType.SPACE_TO_BOTTOM_FOR_ADD_BUTTON);\r
+        relocateComponent(this.jButtonRemove, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight,\r
+                          DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON, DataType.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON);\r
+        relocateComponent(this.jButtonUpdate, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight,\r
+                          DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON, DataType.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON);\r
     }\r
 }\r