]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBootModes.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 / ModuleBootModes.java
index 978214645eae578e612f552d41b87f5cfbaf0f5c..51fa6f81968c905d7cb4a4f240c1ec2701f7e32a 100644 (file)
 \r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
+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.BootModeNames;\r
 import org.tianocore.BootModeUsage;\r
@@ -35,16 +35,15 @@ import org.tianocore.BootModesDocument.BootModes;
 import org.tianocore.BootModesDocument.BootModes.BootMode;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\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.BootModes.BootModesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.BootModes.BootModesVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.BootModesDlg;\r
 \r
 /**\r
  The class is used to create, update BootModes of MSA/MBD file\r
@@ -65,28 +64,6 @@ public class ModuleBootModes extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelBootModeName = null;\r
-\r
-    private JComboBox jComboBoxBootModeName = null;\r
-\r
-    private JLabel jLabelUsage = null;\r
-\r
-    private JComboBox jComboBoxUsage = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private StarLabel jStarLabel2 = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private JLabel jLabelArch = null;\r
-\r
-    private JTextArea jTextAreaList = null;\r
-\r
-    private JComboBox jComboBoxList = null;\r
-\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -95,21 +72,13 @@ public class ModuleBootModes extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
-    private JScrollPane jScrollPaneArch = null;\r
-    \r
-    private JLabel jLabelHelpText = null;\r
-\r
-    private JTextField jTextFieldHelpText = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\r
-    private int intSelectedItemId = 0;\r
-\r
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -120,68 +89,9 @@ public class ModuleBootModes extends IInternalFrame {
 \r
     private BootModesVector vid = new BootModesVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-\r
-    /**\r
-     This method initializes jComboBoxBootModeName \r
-     \r
-     @return javax.swing.JComboBox jComboBoxBootModeName\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxBootModeName() {\r
-        if (jComboBoxBootModeName == null) {\r
-            jComboBoxBootModeName = new JComboBox();\r
-            jComboBoxBootModeName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxBootModeName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxBootModeName;\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 java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxUsage;\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, 85, 320, 20));\r
-            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jTextFieldFeatureFlag;\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, 195, 210, 20));\r
-            jComboBoxList.addItemListener(this);\r
-            jComboBoxList.addActionListener(this);\r
-            jComboBoxList.setPreferredSize(new java.awt.Dimension(210, 20));\r
-        }\r
-        return jComboBoxList;\r
-    }\r
+    private int selectedRow = -1;\r
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -228,27 +138,12 @@ public class ModuleBootModes extends IInternalFrame {
             jButtonUpdate = new JButton();\r
             jButtonUpdate.setBounds(new java.awt.Rectangle(315, 195, 80, 20));\r
             jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));\r
-            jButtonUpdate.setText("Update");\r
+            jButtonUpdate.setText("Edit");\r
             jButtonUpdate.addActionListener(this);\r
         }\r
         return jButtonUpdate;\r
     }\r
 \r
-    /**\r
-     * This method initializes jScrollPaneFileList   \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, 220, 465, 240));\r
-            jScrollPaneList.setViewportView(getJTextAreaList());\r
-            jScrollPaneList.setPreferredSize(new java.awt.Dimension(465, 240));\r
-        }\r
-        return jScrollPaneList;\r
-    }\r
-\r
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -263,117 +158,91 @@ public class ModuleBootModes extends IInternalFrame {
     }\r
 \r
     /**\r
-     * This method initializes jTextAreaFileList \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
+     This method initializes jScrollPaneTable    \r
+     \r
+     @return javax.swing.JScrollPane \r
+     **/\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 jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \r
+     This method initializes jTable  \r
+     \r
+     @return javax.swing.JTable  \r
      **/\r
-    private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
-        if (iCheckBoxListArch == null) {\r
-            iCheckBoxListArch = new ICheckBoxList();\r
-            iCheckBoxListArch.addFocusListener(this);\r
-            iCheckBoxListArch.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);\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
+            model.addColumn("Name");\r
+            model.addColumn("Usage");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
-        return iCheckBoxListArch;\r
+        return jTable;\r
     }\r
 \r
-    /**\r
-     This method initializes jScrollPaneArch \r
-\r
-     @return javax.swing.JScrollPane \r
+    public static void main(String[] args) {\r
+    }\r
 \r
+    /**\r
+     This method initializes this\r
+     \r
      **/\r
-    private JScrollPane getJScrollPaneArch() {\r
-        if (jScrollPaneArch == null) {\r
-            jScrollPaneArch = new JScrollPane();\r
-            jScrollPaneArch.setBounds(new java.awt.Rectangle(160, 110, 320, 80));\r
-            jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
-            jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
-        }\r
-        return jScrollPaneArch;\r
+    private void init() {\r
+        this.setSize(500, 515);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Boot Modes");\r
     }\r
-    \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
-       }\r
-       return jTextFieldHelpText;\r
-   }\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inBootModes\r
 \r
-    public static void main(String[] args) {\r
+     **/\r
+    private void init(BootModes inBootModes) {\r
+        init();\r
+        this.bootModes = inBootModes;\r
+\r
+        if (this.bootModes != null) {\r
+            if (this.bootModes.getBootModeList().size() > 0) {\r
+                for (int index = 0; index < this.bootModes.getBootModeList().size(); index++) {\r
+                    String arg0 = null;\r
+                    if (bootModes.getBootModeList().get(index).getBootModeName() != null) {\r
+                        arg0 = bootModes.getBootModeList().get(index).getBootModeName().toString();\r
+                    }\r
+                    String arg1 = null;\r
+                    if (bootModes.getBootModeList().get(index).getUsage() != null) {\r
+                        arg1 = bootModes.getBootModeList().get(index).getUsage().toString();\r
+                    }\r
+\r
+                    String arg2 = bootModes.getBootModeList().get(index).getFeatureFlag();\r
+                    Vector<String> arg3 = Tools.convertListToVector(bootModes.getBootModeList().get(index)\r
+                                                                             .getSupArchList());\r
+                    String arg4 = bootModes.getBootModeList().get(index).getHelpText();\r
+\r
+                    id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+                    vid.addBootModes(id);\r
+                }\r
+            }\r
+        }\r
+        showTable();\r
     }\r
-    \r
-    /**\r
-    This method initializes this\r
-    \r
-    **/\r
-   private void init() {\r
-       this.setSize(500, 515);\r
-       this.setContentPane(getJScrollPane());\r
-       this.setTitle("Boot Modes");\r
-       initFrame();\r
-       this.setViewMode(false);\r
-   }\r
-\r
-   /**\r
-    This method initializes this\r
-    Fill values to all fields if these values are not empty\r
-    \r
-    @param inPackageDependencies\r
-\r
-    **/\r
-   private void init(BootModes inBootModes) {\r
-       init();\r
-       this.bootModes = inBootModes;\r
-\r
-       if (this.bootModes != null) {\r
-           if (this.bootModes.getBootModeList().size() > 0) {\r
-               for (int index = 0; index < this.bootModes.getBootModeList().size(); index++) {\r
-                   String arg0 = null;\r
-                   if (bootModes.getBootModeList().get(index).getBootModeName() != null) {\r
-                       arg0 = bootModes.getBootModeList().get(index).getBootModeName().toString();\r
-                   }\r
-                   String arg1 = null;\r
-                   if (bootModes.getBootModeList().get(index).getUsage() != null) {\r
-                       arg1 = bootModes.getBootModeList().get(index).getUsage().toString();    \r
-                   }\r
-                   \r
-                   String arg2 = bootModes.getBootModeList().get(index).getFeatureFlag();\r
-                   Vector<String> arg3 = Tools.convertListToVector(bootModes.getBootModeList().get(index).getSupArchList());\r
-                   String arg4 = bootModes.getBootModeList().get(index).getHelpText();\r
-                   \r
-                   id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
-                   vid.addBootModes(id);\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getBootModesName());\r
-       reloadListArea();\r
-   }\r
 \r
     /**\r
      This is the default constructor\r
@@ -398,20 +267,6 @@ public class ModuleBootModes extends IInternalFrame {
         init(msa.getBootModes());\r
         this.setVisible(true);\r
     }\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.jComboBoxBootModeName.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
 \r
     /**\r
      This method initializes jContentPane\r
@@ -421,62 +276,62 @@ public class ModuleBootModes extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
-            jLabelArch.setText("Arch");\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelBootModeName = new JLabel();\r
-            jLabelBootModeName.setText("Boot Mode Name");\r
-            jLabelBootModeName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 60, 140, 20));\r
-            jLabelHelpText.setText("Help Text");\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-\r
-            jContentPane.add(jLabelBootModeName, null);\r
-            jContentPane.add(getJComboBoxBootModeName(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBoxUsage(), 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(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelArch, null);\r
-\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(getJScrollPaneList(), null);\r
-            jContentPane.add(getJScrollPaneArch(), null);\r
-            jContentPane.add(jLabelHelpText, null);\r
-            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        BootModesDlg dlg = new BootModesDlg(vid.getBootModes(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addBootModes(dlg.getId());\r
+            } else {\r
+                this.vid.setBootModes(dlg.getId(), index);\r
+            }\r
+            this.showTable();\r
+            this.save();\r
+            dlg.dispose();\r
+        }\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            dlg.dispose();\r
+        }\r
+    }\r
+\r
+    /**\r
+     Clear all table rows\r
+     \r
+     **/\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
     /**\r
-     This method initializes BootModeName groups and Usage type\r
+     Read content of vector and put then into table\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxBootModeName, ed.getVBootModeNames());\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
-        \r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
+    private void showTable() {\r
+        clearAll();\r
+\r
+        if (vid.size() > 0) {\r
+            for (int index = 0; index < vid.size(); index++) {\r
+                model.addRow(vid.toStringVector(index));\r
+            }\r
+        }\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\r
     }\r
 \r
     /* (non-Javadoc)\r
@@ -487,45 +342,27 @@ public class ModuleBootModes extends IInternalFrame {
      */\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\r
-            if (!checkAdd()) {\r
+            if (this.selectedRow < 0) {\r
+                Log.err("Please select one record first.");\r
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\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 if all fields have correct data types \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
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
+            }\r
+            if (selectedRow > -1) {\r
+                this.model.removeRow(selectedRow);\r
+                this.vid.removeBootModes(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
@@ -551,7 +388,8 @@ public class ModuleBootModes extends IInternalFrame {
                     if (!isEmpty(vid.getBootModes(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getBootModes(index).getFeatureFlag());\r
                     }\r
-                    if (vid.getBootModes(index).getSupArchList() != null && vid.getBootModes(index).getSupArchList().size() > 0) {\r
+                    if (vid.getBootModes(index).getSupArchList() != null\r
+                        && vid.getBootModes(index).getSupArchList().size() > 0) {\r
                         p.setSupArchList(vid.getBootModes(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getBootModes(index).getHelp())) {\r
@@ -569,6 +407,36 @@ public class ModuleBootModes extends IInternalFrame {
         }\r
     }\r
 \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
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
+     *\r
+     */\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -580,180 +448,12 @@ public class ModuleBootModes extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jComboBoxBootModeName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jComboBoxUsage, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jTextFieldHelpText, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jScrollPaneArch, intCurrentWidth, intPreferredWidth);\r
-\r
-        resizeComponentWidth(jComboBoxList, intCurrentWidth, intPreferredWidth);\r
-        resizeComponent(jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
-\r
-        relocateComponentX(jButtonAdd, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON);\r
-        relocateComponentX(jButtonRemove, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON);\r
-        relocateComponentX(jButtonUpdate, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON);\r
-    }\r
-    \r
-    private BootModesIdentification getCurrentBootModes() {\r
-        String arg0 = this.jComboBoxBootModeName.getSelectedItem().toString();\r
-        \r
-        String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
-\r
-        String arg2 = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arg3 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        String arg4 = this.jTextFieldHelpText.getText();\r
-        id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
-        return id;\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
-    /**\r
-    Add current item to Vector\r
-    \r
-    **/\r
-   private void addToList() {\r
-       intSelectedItemId = vid.size();\r
-\r
-       vid.addBootModes(getCurrentBootModes());\r
-\r
-       jComboBoxList.addItem(id.getName());\r
-       jComboBoxList.setSelectedItem(id.getName());\r
-\r
-       //\r
-       // Reset select item index\r
-       //\r
-       intSelectedItemId = vid.size();\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
-    Remove current item from Vector\r
-    \r
-    **/\r
-   private void removeFromList() {\r
-       //\r
-       // Check if exist items\r
-       //\r
-       if (this.vid.size() < 1) {\r
-           return;\r
-       }\r
-\r
-       int intTempIndex = intSelectedItemId;\r
-\r
-       jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-       vid.removeBootModes(intTempIndex);\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
-    Update current item of Vector\r
-    \r
-    **/\r
-   private void updateForList() {\r
-       //\r
-       // Check if exist items\r
-       //\r
-       if (this.vid.size() < 1) {\r
-           return;\r
-       }\r
-\r
-       //\r
-       // Backup selected item index\r
-       //\r
-       int intTempIndex = intSelectedItemId;\r
-\r
-       vid.updateBootModes(getCurrentBootModes(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getBootModes(index).getName());\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
-    \r
-    **/\r
-   private void reloadFromList() {\r
-       if (vid.size() > 0) {\r
-           //\r
-           // Get selected item index\r
-           //\r
-           intSelectedItemId = jComboBoxList.getSelectedIndex();\r
-\r
-           this.jComboBoxBootModeName.setSelectedItem(vid.getBootModes(intSelectedItemId).getName());\r
-           this.jComboBoxUsage.setSelectedItem(vid.getBootModes(intSelectedItemId).getUsage());\r
-           this.jTextFieldHelpText.setText(vid.getBootModes(intSelectedItemId).getHelp());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getBootModes(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getBootModes(intSelectedItemId).getSupArchList());\r
-\r
-       } else {\r
-       }\r
-\r
-       reloadListArea();\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 < vid.size(); index++) {\r
-           strListItem = strListItem + vid.getBootModes(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
-       }\r
-       this.jTextAreaList.setText(strListItem);\r
-   }\r
-\r
-   /* (non-Javadoc)\r
-    * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)\r
-    *\r
-    * Reflesh the frame when selected item changed\r
-    * \r
-    */\r
-   public void itemStateChanged(ItemEvent arg0) {\r
-       if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-           reloadFromList();\r
-       }\r
-   }\r
 }\r