]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleEvents.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 / ModuleEvents.java
index 26c8a62c36518669c5a9779c7c455aa80f28c0e6..676b7acc4eb71cd611d1bb0b30a1a4f706f38e18 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.EventsDocument;\r
 import org.tianocore.ProtocolNotifyUsage;\r
@@ -35,17 +35,16 @@ import org.tianocore.EventsDocument.Events.CreateEvents;
 import org.tianocore.EventsDocument.Events.SignalEvents;\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.Events.EventsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Events.EventsVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.EventsDlg;\r
 \r
 /**\r
  The class is used to create, update Event of MSA/MBD file\r
@@ -66,26 +65,6 @@ public class ModuleEvents extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelEventType = null;\r
-\r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JComboBox jComboBoxGuidC_Name = 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 JComboBox jComboBoxEventsType = 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
@@ -94,27 +73,13 @@ public class ModuleEvents extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
-    private JLabel jLabelArch = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
-    \r
-    private JLabel jLabelHelpText = null;\r
-\r
-    private JTextField jTextFieldHelpText = null;\r
-    \r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = 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
@@ -126,71 +91,10 @@ public class ModuleEvents extends IInternalFrame {
     private EventsVector vid = new EventsVector();\r
 \r
     private EnumerationData ed = new EnumerationData();\r
-    \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
 \r
-    /**\r
-     This method initializes jTextFieldC_Name \r
-     \r
-     @return javax.swing.JTextField jTextFieldC_Name\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxGuidC_Name() {\r
-        if (jComboBoxGuidC_Name == null) {\r
-            jComboBoxGuidC_Name = new JComboBox();\r
-            jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Event");\r
-        }\r
-        return jComboBoxGuidC_Name;\r
-    }\r
+    private IDefaultTableModel model = null;\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, 60, 320, 20));\r
-            jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxUsage;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jComboBoxEventsType     \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxEventsType() {\r
-        if (jComboBoxEventsType == null) {\r
-            jComboBoxEventsType = new JComboBox();\r
-            jComboBoxEventsType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxEventsType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxEventsType.setToolTipText("Select Create event if the Module has an event that is waiting to be signaled.  Select Signal if the Module will signal all events in an event group.  Signal Event The events are named by GUID.");\r
-        }\r
-        return jComboBoxEventsType;\r
-    }\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, 220, 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
@@ -237,27 +141,12 @@ public class ModuleEvents extends IInternalFrame {
             jButtonUpdate = new JButton();\r
             jButtonUpdate.setBounds(new java.awt.Rectangle(315, 220, 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, 245, 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
@@ -272,151 +161,111 @@ public class ModuleEvents 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
+     This method initializes jTable  \r
      \r
-     @return ICheckBoxList   \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("Guid C_Name");\r
+            model.addColumn("Type");\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
+    public static void main(String[] args) {\r
+\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \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, 135, 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("Events");\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,110,320,20));\r
-            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320,20));\r
-        }\r
-        return jTextFieldFeatureFlag;\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, 85, 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 inPackageDependencies\r
 \r
-    public static void main(String[] args) {\r
+     **/\r
+    private void init(Events inEvents) {\r
+        init();\r
+        this.events = inEvents;\r
+\r
+        if (this.events != null) {\r
+            if (this.events.getCreateEvents() != null) {\r
+                if (this.events.getCreateEvents().getEventTypesList().size() > 0) {\r
+                    for (int index = 0; index < this.events.getCreateEvents().getEventTypesList().size(); index++) {\r
+                        String arg0 = events.getCreateEvents().getEventTypesList().get(index).getEventGuidCName();\r
+                        String arg1 = ed.getVEventType().get(0);\r
+                        String arg2 = null;\r
+                        if (events.getCreateEvents().getEventTypesList().get(index).getUsage() != null) {\r
+                            arg2 = events.getCreateEvents().getEventTypesList().get(index).getUsage().toString();\r
+                        }\r
+\r
+                        String arg3 = events.getCreateEvents().getEventTypesList().get(index).getFeatureFlag();\r
+                        Vector<String> arg4 = Tools.convertListToVector(events.getCreateEvents().getEventTypesList()\r
+                                                                              .get(index).getSupArchList());\r
+                        String arg5 = events.getCreateEvents().getEventTypesList().get(index).getHelpText();\r
+                        id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+                        vid.addEvents(id);\r
+                    }\r
+                }\r
+            }\r
+            if (this.events.getSignalEvents() != null) {\r
+                if (this.events.getSignalEvents().getEventTypesList().size() > 0) {\r
+                    for (int index = 0; index < this.events.getSignalEvents().getEventTypesList().size(); index++) {\r
+                        String arg0 = events.getSignalEvents().getEventTypesList().get(index).getEventGuidCName();\r
+                        String arg1 = ed.getVEventType().get(1);\r
+                        String arg2 = null;\r
+                        if (events.getSignalEvents().getEventTypesList().get(index).getUsage() != null) {\r
+                            arg2 = events.getSignalEvents().getEventTypesList().get(index).getUsage().toString();\r
+                        }\r
 \r
+                        String arg3 = events.getSignalEvents().getEventTypesList().get(index).getFeatureFlag();\r
+                        Vector<String> arg4 = Tools.convertListToVector(events.getSignalEvents().getEventTypesList()\r
+                                                                              .get(index).getSupArchList());\r
+                        String arg5 = events.getSignalEvents().getEventTypesList().get(index).getHelpText();\r
+                        id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+                        vid.addEvents(id);\r
+                    }\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("Events");\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(Events inEvents) {\r
-       init();\r
-       this.events = inEvents;\r
-\r
-       if (this.events != null) {\r
-           if (this.events.getCreateEvents() != null) {\r
-               if (this.events.getCreateEvents().getEventTypesList().size() > 0) {\r
-                   for (int index = 0; index < this.events.getCreateEvents().getEventTypesList().size(); index++) {\r
-                       String arg0 = events.getCreateEvents().getEventTypesList().get(index).getEventGuidCName();\r
-                       String arg1 = ed.getVEventType().get(0);\r
-                       String arg2 = null;\r
-                       if (events.getCreateEvents().getEventTypesList().get(index).getUsage() != null) {\r
-                           arg2 = events.getCreateEvents().getEventTypesList().get(index).getUsage().toString();    \r
-                       }\r
-                       \r
-                       String arg3 = events.getCreateEvents().getEventTypesList().get(index).getFeatureFlag();\r
-                       Vector<String> arg4 = Tools.convertListToVector(events.getCreateEvents().getEventTypesList().get(index)\r
-                                                                                .getSupArchList());\r
-                       String arg5 = events.getCreateEvents().getEventTypesList().get(index).getHelpText();\r
-                       id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-                       vid.addEvents(id);\r
-                   }\r
-               }\r
-           }\r
-           if (this.events.getSignalEvents() != null) {\r
-               if (this.events.getSignalEvents().getEventTypesList().size() > 0) {\r
-                   for (int index = 0; index < this.events.getSignalEvents().getEventTypesList().size(); index++) {\r
-                       String arg0 = events.getSignalEvents().getEventTypesList().get(index).getEventGuidCName();\r
-                       String arg1 = ed.getVEventType().get(1);\r
-                       String arg2 = null;\r
-                       if (events.getSignalEvents().getEventTypesList().get(index).getUsage() != null) {\r
-                           arg2 = events.getSignalEvents().getEventTypesList().get(index).getUsage().toString();    \r
-                       }\r
-\r
-                       String arg3 = events.getSignalEvents().getEventTypesList().get(index).getFeatureFlag();\r
-                       Vector<String> arg4 = Tools.convertListToVector(events.getSignalEvents().getEventTypesList().get(index)\r
-                                                                                .getSupArchList());\r
-                       String arg5 = events.getSignalEvents().getEventTypesList().get(index).getHelpText();\r
-                       id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-                       vid.addEvents(id);\r
-                   }\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getEventsName());\r
-       reloadListArea();\r
-   }\r
 \r
     /**\r
      This is the default constructor\r
@@ -442,19 +291,6 @@ public class ModuleEvents extends IInternalFrame {
         this.setVisible(true);\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.jComboBoxGuidC_Name.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -463,68 +299,62 @@ public class ModuleEvents extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15,110,140,20));\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
-            jLabelArch.setText("Arch");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("Guid C_Name");\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelEventType = new JLabel();\r
-            jLabelEventType.setText("Event Type");\r
-            jLabelEventType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));\r
-            jLabelHelpText.setText("Help Text");\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
-            jContentPane.add(jLabelEventType, null);\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(getJComboBoxGuidC_Name(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
-            jStarLabel1 = new StarLabel();\r
-            jStarLabel1.setBounds(new java.awt.Rectangle(0, 10, 10, 20));\r
-            jStarLabel2 = new StarLabel();\r
-            jStarLabel2.setBounds(new java.awt.Rectangle(0, 35, 10, 20));\r
-\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(jStarLabel2, null);\r
-            jContentPane.add(getJComboBoxEventsType(), null);\r
-\r
-            jContentPane.add(getJComboBoxList(), null);\r
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJScrollPaneArch(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), 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
+        EventsDlg dlg = new EventsDlg(vid.getEvents(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addEvents(dlg.getId());\r
+            } else {\r
+                this.vid.setEvents(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
-     This method initializes events groups and usage type\r
+     Clear all table rows\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxEventsType, ed.getVEventType());\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVEventUsage());\r
-        Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\r
-        \r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\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
+     Read content of vector and put then into table\r
+     \r
+     **/\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
@@ -535,60 +365,27 @@ public class ModuleEvents 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 Name \r
-        //\r
-        if (isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
-            Log.err("Event Name couldn't be empty");\r
-            return false;\r
-        }\r
-        \r
-        if (!isEmpty(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
-            if (!DataValidation.isC_NameType(this.jComboBoxGuidC_Name.getSelectedItem().toString())) {\r
-                Log.err("Incorrect data type for Event Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\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
+            if (selectedRow > -1) {\r
+                this.model.removeRow(selectedRow);\r
+                this.vid.removeEvents(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
@@ -604,7 +401,7 @@ public class ModuleEvents extends IInternalFrame {
             this.events = Events.Factory.newInstance();\r
             CreateEvents ce = CreateEvents.Factory.newInstance();\r
             SignalEvents se = SignalEvents.Factory.newInstance();\r
-            \r
+\r
             if (count > 0) {\r
                 for (int index = 0; index < count; index++) {\r
                     if (vid.getEvents(index).getType().equals(ed.getVEventType().get(0))) {\r
@@ -628,7 +425,7 @@ public class ModuleEvents extends IInternalFrame {
                         ce.addNewEventTypes();\r
                         ce.setEventTypesArray(ce.getEventTypesList().size() - 1, e);\r
                     }\r
-                    if (vid.getEvents(index).getType().equals("Protocol Notify")) {\r
+                    if (vid.getEvents(index).getType().equals(ed.getVEventType().get(1))) {\r
                         SignalEvents.EventTypes e = SignalEvents.EventTypes.Factory.newInstance();\r
                         if (!isEmpty(vid.getEvents(index).getName())) {\r
                             e.setEventGuidCName(vid.getEvents(index).getName());\r
@@ -668,191 +465,52 @@ public class ModuleEvents extends IInternalFrame {
     }\r
 \r
     /* (non-Javadoc)\r
-     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
-     * \r
-     * Override componentResized to resize all components when frame's size is changed\r
+     * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)\r
+     *\r
      */\r
-    public void componentResized(ComponentEvent arg0) {\r
-        int intCurrentWidth = this.getJContentPane().getWidth();\r
-        int intCurrentHeight = this.getJContentPane().getHeight();\r
-        int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
-        int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
-\r
-        resizeComponentWidth(jComboBoxEventsType, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jComboBoxGuidC_Name, 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
-        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 EventsIdentification getCurrentEvents() {\r
-        String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
-        String arg1 = this.jComboBoxEventsType.getSelectedItem().toString();\r
-        String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
-\r
-        String arg3 = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arg4 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        String arg5 = this.jTextFieldHelpText.getText();\r
-        id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-        return id;\r
-    }\r
-\r
-    /**\r
-     Add current item to Vector\r
-     \r
-     **/\r
-    private void addToList() {\r
-        intSelectedItemId = vid.size();\r
-\r
-        vid.addEvents(getCurrentEvents());\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
+    public void valueChanged(ListSelectionEvent arg0) {\r
+        if (arg0.getValueIsAdjusting()) {\r
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeEvents(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
+        ListSelectionModel lsm = (ListSelectionModel) arg0.getSource();\r
+        if (lsm.isSelectionEmpty()) {\r
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateEvents(getCurrentEvents(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getEvents(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.jComboBoxGuidC_Name.setSelectedItem(vid.getEvents(intSelectedItemId).getName());\r
-            this.jComboBoxEventsType.setSelectedItem(vid.getEvents(intSelectedItemId).getType());\r
-            this.jComboBoxUsage.setSelectedItem(vid.getEvents(intSelectedItemId).getUsage());\r
-            this.jTextFieldHelpText.setText(vid.getEvents(intSelectedItemId).getHelp());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getEvents(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getEvents(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\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.getEvents(index).getName() + DataType.UNIX_LINE_SEPARATOR;\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
-        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
+     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
+     * Override componentResized to resize all components when frame's size is changed\r
      */\r
-    public void itemStateChanged(ItemEvent arg0) {\r
-        if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\r
-        }\r
+    public void componentResized(ComponentEvent arg0) {\r
+        int intCurrentWidth = this.getJContentPane().getWidth();\r
+        int intCurrentHeight = this.getJContentPane().getHeight();\r
+        int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
+        int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
+\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