]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Use table and popup window to add/edit all elements of module instead of original...
authorhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 12 Jul 2006 07:46:39 +0000 (07:46 +0000)
committerhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 12 Jul 2006 07:46:39 +0000 (07:46 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@894 6f19259b-4bc3-4df7-8a09-765794883524

48 files changed:
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/ArchCheckBox.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/BootModes/BootModesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/DataHubs/DataHubsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Events/EventsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Externs/ExternsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Guids/GuidsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/HiiPackages/HiiPackagesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Hobs/HobsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/LibraryClass/LibraryClassVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/PackageDependencies/PackageDependenciesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/PcdCoded/PcdCodedVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Ppis/PpisVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Protocols/ProtocolsVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/SourceFiles/SourceFilesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/SystemTables/SystemTablesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identifications/Variables/VariablesVector.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBootModes.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleDataHubs.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleEvents.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleGuids.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleHiiPackages.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleHobs.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleLibraryClassDefinitions.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePCDs.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePackageDependencies.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePpis.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleProtocols.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleSourceFiles.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleSystemTables.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleVariables.java
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/DataHubsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/EventsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/GuidsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HiiPackagesDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HobsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/LibraryClassDefsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PCDsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PackageDepDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PpisDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ProtocolsDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SourceFilesDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SystemTablesDlg.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/VariablesDlg.java [new file with mode: 0644]

index f32ff6ed6553996ebd4264f888f6cd8f24ce7c7d..ba50465c6b2522166739803e865811602f909b2f 100644 (file)
@@ -17,7 +17,7 @@ package org.tianocore.frameworkwizard.common;
 /**\r
  The class is used to define all used final variables\r
 \r
 /**\r
  The class is used to define all used final variables\r
 \r
-**/\r
+ **/\r
 public class DataType {\r
 \r
     /**\r
 public class DataType {\r
 \r
     /**\r
@@ -28,168 +28,200 @@ public class DataType {
     public static void main(String[] args) {\r
 \r
     }\r
     public static void main(String[] args) {\r
 \r
     }\r
-    \r
+\r
     //\r
     // Define all return types\r
     //\r
     public static final int RETURN_TYPE_OK = 1;\r
     //\r
     // Define all return types\r
     //\r
     public static final int RETURN_TYPE_OK = 1;\r
-    \r
+\r
     public static final int RETURN_TYPE_CANCEL = 2;\r
     public static final int RETURN_TYPE_CANCEL = 2;\r
-    \r
+\r
     public static final int RETURN_TYPE_NEXT = 3;\r
     public static final int RETURN_TYPE_NEXT = 3;\r
-    \r
+\r
     public static final int RETURN_TYPE_BACK = 4;\r
     public static final int RETURN_TYPE_BACK = 4;\r
-    \r
+\r
     public static final int RETURN_TYPE_MODULE_SURFACE_AREA = 11;\r
     public static final int RETURN_TYPE_MODULE_SURFACE_AREA = 11;\r
-    \r
+\r
     public static final int RETURN_TYPE_PACKAGE_SURFACE_AREA = 12;\r
     public static final int RETURN_TYPE_PACKAGE_SURFACE_AREA = 12;\r
-    \r
+\r
     public static final int RETURN_TYPE_PLATFORM_SURFACE_AREA = 13;\r
     public static final int RETURN_TYPE_PLATFORM_SURFACE_AREA = 13;\r
-    \r
+\r
     public static final int RETURN_TYPE_BUILD_XML = 14;\r
     public static final int RETURN_TYPE_BUILD_XML = 14;\r
-    \r
+\r
     public static final int RETURN_TYPE_WORKSPACE = 15;\r
     public static final int RETURN_TYPE_WORKSPACE = 15;\r
-    \r
+\r
     public static final int RETURN_TYPE_TEXT = 16;\r
     public static final int RETURN_TYPE_TEXT = 16;\r
-    \r
-    \r
+\r
     //\r
     // Define all used final variables\r
     //\r
     public static final String DOS_LINE_SEPARATOR = "\r\n";\r
 \r
     public static final String UNIX_LINE_SEPARATOR = "\n";\r
     //\r
     // Define all used final variables\r
     //\r
     public static final String DOS_LINE_SEPARATOR = "\r\n";\r
 \r
     public static final String UNIX_LINE_SEPARATOR = "\n";\r
-    \r
+\r
     public static final String EMPTY_SELECT_ITEM = "----";\r
     public static final String EMPTY_SELECT_ITEM = "----";\r
-    \r
+\r
     public static final String DOS_FILE_SEPARATOR = "\\";\r
     public static final String DOS_FILE_SEPARATOR = "\\";\r
-    \r
+\r
     public static final String UNIX_FILE_SEPARATOR = "/";\r
     public static final String UNIX_FILE_SEPARATOR = "/";\r
-    \r
+\r
     //\r
     // Define xml files ext\r
     //\r
     public static final String COPY_OF = "Copy of ";\r
     //\r
     // Define xml files ext\r
     //\r
     public static final String COPY_OF = "Copy of ";\r
-    \r
+\r
     public static final String FILE_EXT_SEPARATOR = ".";\r
     public static final String FILE_EXT_SEPARATOR = ".";\r
-    \r
+\r
     public static final String WORKSPACE = "Workspace";\r
     public static final String WORKSPACE = "Workspace";\r
-    \r
+\r
     public static final String MODULE_SURFACE_AREA = "Module Surface Area Description";\r
     public static final String MODULE_SURFACE_AREA = "Module Surface Area Description";\r
-    \r
+\r
     public static final String MODULE_SURFACE_AREA_EXT = "msa";\r
     public static final String MODULE_SURFACE_AREA_EXT = "msa";\r
-    \r
-    public static final String MODULE_SURFACE_AREA_EXT_DESCRIPTION = MODULE_SURFACE_AREA + " (*." + MODULE_SURFACE_AREA_EXT + ")";\r
-    \r
+\r
+    public static final String MODULE_SURFACE_AREA_EXT_DESCRIPTION = MODULE_SURFACE_AREA + " (*."\r
+                                                                     + MODULE_SURFACE_AREA_EXT + ")";\r
+\r
     public static final String PACKAGE_SURFACE_AREA = "Package Surface Area Description";\r
     public static final String PACKAGE_SURFACE_AREA = "Package Surface Area Description";\r
-    \r
+\r
     public static final String PACKAGE_SURFACE_AREA_EXT = "spd";\r
     public static final String PACKAGE_SURFACE_AREA_EXT = "spd";\r
-    \r
-    public static final String PACKAGE_SURFACE_AREA_EXT_DESCRIPTION = PACKAGE_SURFACE_AREA + " (*." + PACKAGE_SURFACE_AREA_EXT + ")";\r
-    \r
+\r
+    public static final String PACKAGE_SURFACE_AREA_EXT_DESCRIPTION = PACKAGE_SURFACE_AREA + " (*."\r
+                                                                      + PACKAGE_SURFACE_AREA_EXT + ")";\r
+\r
     public static final String PLATFORM_SURFACE_AREA = "Platform Surface Area Description";\r
     public static final String PLATFORM_SURFACE_AREA = "Platform Surface Area Description";\r
-    \r
+\r
     public static final String PLATFORM_SURFACE_AREA_EXT = "fpd";\r
     public static final String PLATFORM_SURFACE_AREA_EXT = "fpd";\r
-    \r
-    public static final String PLATFORM_SURFACE_AREA_EXT_DESCRIPTION = PLATFORM_SURFACE_AREA + " (*." + PLATFORM_SURFACE_AREA_EXT + ")";\r
-    \r
+\r
+    public static final String PLATFORM_SURFACE_AREA_EXT_DESCRIPTION = PLATFORM_SURFACE_AREA + " (*."\r
+                                                                       + PLATFORM_SURFACE_AREA_EXT + ")";\r
+\r
     public static final String ANT_BUILD_FILE = "ANT Build File";\r
     public static final String ANT_BUILD_FILE = "ANT Build File";\r
-    \r
+\r
     public static final String ANT_BUILD_FILE_EXT = "xml";\r
     public static final String ANT_BUILD_FILE_EXT = "xml";\r
-    \r
+\r
     public static final String ANT_BUILD_FILE_EXT_DESCRIPTION = ANT_BUILD_FILE + " (*." + ANT_BUILD_FILE_EXT + ")";\r
     public static final String ANT_BUILD_FILE_EXT_DESCRIPTION = ANT_BUILD_FILE + " (*." + ANT_BUILD_FILE_EXT + ")";\r
-    \r
+\r
     public static final String TEXT_FILE = "Text File";\r
     public static final String TEXT_FILE = "Text File";\r
-    \r
+\r
     public static final String TEXT_FILE_EXT = "txt";\r
     public static final String TEXT_FILE_EXT = "txt";\r
-    \r
+\r
     public static final String TEXT_FILE_EXT_DESCRIPTION = TEXT_FILE + " (*." + TEXT_FILE_EXT + ")";\r
     public static final String TEXT_FILE_EXT_DESCRIPTION = TEXT_FILE + " (*." + TEXT_FILE_EXT + ")";\r
-    \r
+\r
     //\r
     // Define file separator for current OS\r
     //\r
     public static String FILE_SEPARATOR = System.getProperty("file.separator");\r
     //\r
     // Define file separator for current OS\r
     //\r
     public static String FILE_SEPARATOR = System.getProperty("file.separator");\r
-            \r
+\r
     //\r
     // Defien all used frame, container component's sizes\r
     //\r
     public static final int MAIN_FRAME_PREFERRED_SIZE_WIDTH = 800;\r
     //\r
     // Defien all used frame, container component's sizes\r
     //\r
     public static final int MAIN_FRAME_PREFERRED_SIZE_WIDTH = 800;\r
+\r
     public static final int MAIN_FRAME_PREFERRED_SIZE_HEIGHT = 600;\r
     public static final int MAIN_FRAME_PREFERRED_SIZE_HEIGHT = 600;\r
+\r
     public static final int MAIN_FRAME_MAX_SIZE_WIDTH = 1920;\r
     public static final int MAIN_FRAME_MAX_SIZE_WIDTH = 1920;\r
+\r
     public static final int MAIN_FRAME_MAX_SIZE_HEIGHT = 1200;\r
     public static final int MAIN_FRAME_MAX_SIZE_HEIGHT = 1200;\r
-    \r
+\r
     public static final int MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_WIDTH = 790;\r
     public static final int MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_WIDTH = 790;\r
+\r
     public static final int MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
     public static final int MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
-    \r
-    public static final int MAIN_FRAME_WIDTH_SPACING = MAIN_FRAME_PREFERRED_SIZE_WIDTH - MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_WIDTH;\r
-    public static final int MAIN_FRAME_HEIGHT_SPACING = MAIN_FRAME_PREFERRED_SIZE_HEIGHT - MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_HEIGHT;\r
-    \r
+\r
+    public static final int MAIN_FRAME_WIDTH_SPACING = MAIN_FRAME_PREFERRED_SIZE_WIDTH\r
+                                                       - MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_WIDTH;\r
+\r
+    public static final int MAIN_FRAME_HEIGHT_SPACING = MAIN_FRAME_PREFERRED_SIZE_HEIGHT\r
+                                                        - MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_HEIGHT;\r
+\r
     public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH = 273;\r
     public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH = 273;\r
+\r
     public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
     public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
-    \r
+\r
     public static final int MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH = 515;\r
     public static final int MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH = 515;\r
+\r
     public static final int MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
     public static final int MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT = 545;\r
+\r
     public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_X = 260;\r
     public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_X = 260;\r
+\r
     public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_Y = 1;\r
     public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_Y = 1;\r
-    \r
+\r
     public static final int SPACE_TO_RIGHT_FOR_GENERATE_BUTTON = 10;\r
     public static final int SPACE_TO_RIGHT_FOR_GENERATE_BUTTON = 10;\r
+\r
     public static final int SPACE_TO_RIGHT_FOR_OK_BUTTON = 10;\r
     public static final int SPACE_TO_RIGHT_FOR_OK_BUTTON = 10;\r
+\r
     public static final int SPACE_TO_RIGHT_FOR_ADD_BUTTON = 180;\r
     public static final int SPACE_TO_RIGHT_FOR_ADD_BUTTON = 180;\r
+\r
     public static final int SPACE_TO_RIGHT_FOR_REMOVE_BUTTON = 95;\r
     public static final int SPACE_TO_RIGHT_FOR_REMOVE_BUTTON = 95;\r
+\r
     public static final int SPACE_TO_RIGHT_FOR_UPDATE_BUTTON = 10;\r
     public static final int SPACE_TO_RIGHT_FOR_UPDATE_BUTTON = 10;\r
-    public static final int SPACE_TO_RIGHT_FOR_PROTOCOL_NOTIFY = 25;\r
     \r
     \r
+    public static final int SPACE_TO_BOTTOM_FOR_ADD_BUTTON = 30;\r
+\r
+    public static final int SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON = 30;\r
+\r
+    public static final int SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON = 30;\r
+\r
+    public static final int SPACE_TO_RIGHT_FOR_PROTOCOL_NOTIFY = 25;\r
+\r
     public static final int LEFT_WIDTH = 160;\r
     public static final int LEFT_WIDTH = 160;\r
+\r
     public static final int LEFT_HEIGHT = 20;\r
     public static final int LEFT_HEIGHT = 20;\r
-    \r
+\r
     public static final int RIGHT_WIDTH = 320;\r
     public static final int RIGHT_WIDTH = 320;\r
+\r
     public static final int RIGHT_HEIGHT = 20;\r
     public static final int RIGHT_HEIGHT = 20;\r
-    \r
+\r
     public static final int RIGHT_MULTIPLE_HEIGHT = 4 * RIGHT_HEIGHT;\r
     public static final int RIGHT_MULTIPLE_HEIGHT = 4 * RIGHT_HEIGHT;\r
-    \r
+\r
     public static final int BUTTON_GEN_WIDTH = 65;\r
     public static final int BUTTON_GEN_WIDTH = 65;\r
+\r
     public static final int BUTTON_GEN_HEIGHT = 20;\r
     public static final int BUTTON_GEN_HEIGHT = 20;\r
-    \r
+\r
     public static final int BUTTON_BROWSE_WIDTH = 65;\r
     public static final int BUTTON_BROWSE_WIDTH = 65;\r
+\r
     public static final int BUTTON_BROWSE_HEIGHT = 20;\r
     public static final int BUTTON_BROWSE_HEIGHT = 20;\r
-    \r
+\r
     public static final int BUTTON_ADD_WIDTH = 80;\r
     public static final int BUTTON_ADD_WIDTH = 80;\r
+\r
     public static final int BUTTON_ADD_HEIGHT = 20;\r
     public static final int BUTTON_ADD_HEIGHT = 20;\r
-    \r
+\r
     public static final int BUTTON_UPDATE_WIDTH = 80;\r
     public static final int BUTTON_UPDATE_WIDTH = 80;\r
+\r
     public static final int BUTTON_UPDATE_HEIGHT = 20;\r
     public static final int BUTTON_UPDATE_HEIGHT = 20;\r
-    \r
+\r
     public static final int BUTTON_REMOVE_WIDTH = 80;\r
     public static final int BUTTON_REMOVE_WIDTH = 80;\r
+\r
     public static final int BUTTON_REMOVE_HEIGHT = 20;\r
     public static final int BUTTON_REMOVE_HEIGHT = 20;\r
-    \r
+\r
     public static final int SCROLLBAR_WIDTH = 18;\r
     public static final int SCROLLBAR_WIDTH = 18;\r
+\r
     public static final int SCROLLBAR_HEIGHT = 18;\r
     public static final int SCROLLBAR_HEIGHT = 18;\r
-    \r
+\r
     //\r
     // Common Help Text\r
     // First defined here\r
     // Will be replaced by resource file later\r
     //\r
     public static final String SUP_ARCH_LIST_HELP_TEXT = "Deselecting a checkbox will restrict this module for use with the selected architectures, based on the list of items that are checked. If all boxes are checked, then the module will support all current AND FUTURE architectures";\r
     //\r
     // Common Help Text\r
     // First defined here\r
     // Will be replaced by resource file later\r
     //\r
     public static final String SUP_ARCH_LIST_HELP_TEXT = "Deselecting a checkbox will restrict this module for use with the selected architectures, based on the list of items that are checked. If all boxes are checked, then the module will support all current AND FUTURE architectures";\r
-    \r
+\r
     //\r
     // Project name and version\r
     //\r
     public static final String PROJECT_NAME = "Framework Wizard";\r
     //\r
     // Project name and version\r
     //\r
     public static final String PROJECT_NAME = "Framework Wizard";\r
-    \r
+\r
     public static final String PROJECT_VERSION = "1.0";\r
     public static final String PROJECT_VERSION = "1.0";\r
-    \r
+\r
     //\r
     // Sort Type\r
     //\r
     public static final int SORT_TYPE_ASCENDING = 1;\r
     //\r
     // Sort Type\r
     //\r
     public static final int SORT_TYPE_ASCENDING = 1;\r
-    \r
+\r
     public static final int SORT_TYPE_DESCENDING = 2;\r
     public static final int SORT_TYPE_DESCENDING = 2;\r
-    \r
+\r
     //\r
     // Module Type\r
     //\r
     public static final String MODULE_TYPE_LIBRARY = "Library";\r
     //\r
     // Module Type\r
     //\r
     public static final String MODULE_TYPE_LIBRARY = "Library";\r
-    \r
+\r
     public static final String MODULE_TYPE_MODULE = "Module";\r
 }\r
     public static final String MODULE_TYPE_MODULE = "Module";\r
 }\r
index 2fc8b0268b9352de692672255402602501a50e81..bb4212a4595a4712661020aeb394d8df1011db3b 100644 (file)
@@ -20,6 +20,8 @@ public class EnumerationData {
     //\r
     // Static data\r
     //\r
     //\r
     // Static data\r
     //\r
+    public final static String EXTERNS_PCD_IS_DRIVER = "Pcd Is Driver";\r
+    \r
     public final static String EXTERNS_SPECIFICATION = "Specification";\r
     \r
     public final static String EXTERNS_MODULE_ENTRY_POINT = "ModuleEntryPoint";\r
     public final static String EXTERNS_SPECIFICATION = "Specification";\r
     \r
     public final static String EXTERNS_MODULE_ENTRY_POINT = "ModuleEntryPoint";\r
@@ -647,6 +649,9 @@ public class EnumerationData {
     \r
     private void initExternTypes() {\r
         vExternTypes.removeAllElements();\r
     \r
     private void initExternTypes() {\r
         vExternTypes.removeAllElements();\r
+        \r
+        vExternTypes.addElement(EnumerationData.EXTERNS_PCD_IS_DRIVER);\r
+\r
         vExternTypes.addElement(EnumerationData.EXTERNS_SPECIFICATION);\r
         \r
         vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_ENTRY_POINT);\r
         vExternTypes.addElement(EnumerationData.EXTERNS_SPECIFICATION);\r
         \r
         vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_ENTRY_POINT);\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/ArchCheckBox.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/ArchCheckBox.java
new file mode 100644 (file)
index 0000000..e564ab5
--- /dev/null
@@ -0,0 +1,246 @@
+/** @file\r
\r
+ The file is used to provid 6 kinds of arch in one jpanel \r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.common.ui;\r
+\r
+import java.util.Vector;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JCheckBox;\r
+\r
+public class ArchCheckBox extends JPanel {\r
+\r
+    ///\r
+    ///\r
+    ///\r
+    private static final long serialVersionUID = 4792669775676953990L;\r
+\r
+    private JCheckBox jCheckBoxIa32 = null;\r
+\r
+    private JCheckBox jCheckBoxX64 = null;\r
+\r
+    private JCheckBox jCheckBoxIpf = null;\r
+\r
+    private JCheckBox jCheckBoxEbc = null;\r
+\r
+    private JCheckBox jCheckBoxArm = null;\r
+\r
+    private JCheckBox jCheckBoxPpc = null;\r
+\r
+    /**\r
+     * This method initializes jCheckBoxIa32   \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxIa32() {\r
+        if (jCheckBoxIa32 == null) {\r
+            jCheckBoxIa32 = new JCheckBox();\r
+            jCheckBoxIa32.setBounds(new java.awt.Rectangle(0, 0, 50, 20));\r
+            jCheckBoxIa32.setText("IA32");\r
+        }\r
+        return jCheckBoxIa32;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBoxX64    \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxX64() {\r
+        if (jCheckBoxX64 == null) {\r
+            jCheckBoxX64 = new JCheckBox();\r
+            jCheckBoxX64.setBounds(new java.awt.Rectangle(50, 0, 50, 20));\r
+            jCheckBoxX64.setText("X64");\r
+        }\r
+        return jCheckBoxX64;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBoxIpf    \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxIpf() {\r
+        if (jCheckBoxIpf == null) {\r
+            jCheckBoxIpf = new JCheckBox();\r
+            jCheckBoxIpf.setBounds(new java.awt.Rectangle(100, 0, 50, 20));\r
+            jCheckBoxIpf.setText("IPF");\r
+        }\r
+        return jCheckBoxIpf;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBoxEbc    \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxEbc() {\r
+        if (jCheckBoxEbc == null) {\r
+            jCheckBoxEbc = new JCheckBox();\r
+            jCheckBoxEbc.setBounds(new java.awt.Rectangle(150, 0, 50, 20));\r
+            jCheckBoxEbc.setText("EBC");\r
+        }\r
+        return jCheckBoxEbc;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBoxArm    \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxArm() {\r
+        if (jCheckBoxArm == null) {\r
+            jCheckBoxArm = new JCheckBox();\r
+            jCheckBoxArm.setBounds(new java.awt.Rectangle(200, 0, 55, 20));\r
+            jCheckBoxArm.setText("ARM");\r
+        }\r
+        return jCheckBoxArm;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jCheckBoxPrc    \r
+     *         \r
+     * @return javax.swing.JCheckBox   \r
+     */\r
+    private JCheckBox getJCheckBoxPpc() {\r
+        if (jCheckBoxPpc == null) {\r
+            jCheckBoxPpc = new JCheckBox();\r
+            jCheckBoxPpc.setBounds(new java.awt.Rectangle(255, 0, 50, 20));\r
+            jCheckBoxPpc.setText("PPC");\r
+        }\r
+        return jCheckBoxPpc;\r
+    }\r
+\r
+    /**\r
+     \r
+     @param args\r
+     \r
+     **/\r
+    public static void main(String[] args) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    /**\r
+     * This is the default constructor\r
+     */\r
+    public ArchCheckBox() {\r
+        super();\r
+        initialize();\r
+    }\r
+\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void initialize() {\r
+        this.setSize(320, 20);\r
+        this.setLayout(null);\r
+        this.add(getJCheckBoxIa32(), null);\r
+        this.add(getJCheckBoxX64(), null);\r
+        this.add(getJCheckBoxIpf(), null);\r
+        this.add(getJCheckBoxEbc(), null);\r
+        this.add(getJCheckBoxArm(), null);\r
+        this.add(getJCheckBoxPpc(), null);\r
+    }\r
+    \r
+    public Vector<String> getSelectedItemsVector() {\r
+        Vector<String> v = new Vector<String>();\r
+        if (this.jCheckBoxIa32.isSelected()) {\r
+            v.addElement(jCheckBoxIa32.getText());\r
+        }\r
+        if (this.jCheckBoxX64.isSelected()) {\r
+            v.addElement(jCheckBoxX64.getText());\r
+        }\r
+        if (this.jCheckBoxIpf.isSelected()) {\r
+            v.addElement(jCheckBoxIpf.getText());\r
+        }\r
+        if (this.jCheckBoxEbc.isSelected()) {\r
+            v.addElement(jCheckBoxEbc.getText());\r
+        }\r
+        if (this.jCheckBoxArm.isSelected()) {\r
+            v.addElement(jCheckBoxArm.getText());\r
+        }\r
+        if (this.jCheckBoxPpc.isSelected()) {\r
+            v.addElement(jCheckBoxPpc.getText());\r
+        }\r
+        return v;\r
+    }\r
+    \r
+    public String getSelectedItemsString() {\r
+        String s = "";\r
+        if (this.jCheckBoxIa32.isSelected()) {\r
+            s = s + jCheckBoxIa32.getText() + " ";\r
+        }\r
+        if (this.jCheckBoxX64.isSelected()) {\r
+            s = s + jCheckBoxX64.getText() + " ";\r
+        }\r
+        if (this.jCheckBoxIpf.isSelected()) {\r
+            s = s + jCheckBoxIpf.getText() + " ";\r
+        }\r
+        if (this.jCheckBoxEbc.isSelected()) {\r
+            s = s + jCheckBoxEbc.getText() + " ";\r
+        }\r
+        if (this.jCheckBoxArm.isSelected()) {\r
+            s = s + jCheckBoxArm.getText() + " ";\r
+        }\r
+        if (this.jCheckBoxPpc.isSelected()) {\r
+            s = s + jCheckBoxPpc.getText() + " ";\r
+        }\r
+        return s.trim();\r
+    }\r
+    \r
+    public void setAllItmesSelected(boolean isSelected) {\r
+        this.jCheckBoxIa32.setSelected(isSelected);\r
+        this.jCheckBoxX64.setSelected(isSelected);\r
+        this.jCheckBoxIpf.setSelected(isSelected);\r
+        this.jCheckBoxEbc.setSelected(isSelected);\r
+        this.jCheckBoxArm.setSelected(isSelected);\r
+        this.jCheckBoxPpc.setSelected(isSelected);\r
+    }\r
+    \r
+    public void setSelectedItems(Vector<String> v) {\r
+        setAllItmesSelected(false);\r
+        if (v != null) {\r
+            for (int index = 0; index < v.size(); index++) {\r
+                if (v.get(index).equals(this.jCheckBoxIa32.getText())) {\r
+                    this.jCheckBoxIa32.setSelected(true);\r
+                    continue;\r
+                }\r
+                if (v.get(index).equals(this.jCheckBoxIpf.getText())) {\r
+                    this.jCheckBoxIpf.setSelected(true);\r
+                    continue;\r
+                }\r
+                if (v.get(index).equals(this.jCheckBoxX64.getText())) {\r
+                    this.jCheckBoxX64.setSelected(true);\r
+                    continue;\r
+                }\r
+                if (v.get(index).equals(this.jCheckBoxEbc.getText())) {\r
+                    this.jCheckBoxEbc.setSelected(true);\r
+                    continue;\r
+                }\r
+                if (v.get(index).equals(this.jCheckBoxArm.getText())) {\r
+                    this.jCheckBoxArm.setSelected(true);\r
+                    continue;\r
+                }\r
+                if (v.get(index).equals(this.jCheckBoxPpc.getText())) {\r
+                    this.jCheckBoxPpc.setSelected(true);\r
+                    continue;\r
+                }\r
+            }\r
+        }\r
+    }\r
+}\r
index 71255787b1f20e3946c2d473f96f3f7a4fb6d3a6..82928060bcd4fd8f093519dbb76b421dc56e6b33 100644 (file)
@@ -50,7 +50,7 @@ public class BootModesVector {
         vBootModes.addElement(arg0);\r
     }\r
 \r
         vBootModes.addElement(arg0);\r
     }\r
 \r
-    public void updateBootModes(BootModesIdentification arg0, int arg1) {\r
+    public void setBootModes(BootModesIdentification arg0, int arg1) {\r
         vBootModes.setElementAt(arg0, arg1);\r
     }\r
 \r
         vBootModes.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,11 @@ public class BootModesVector {
     public int size() {\r
         return this.vBootModes.size();\r
     }\r
     public int size() {\r
         return this.vBootModes.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getBootModes(index).getName());\r
+        v.addElement(getBootModes(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index b7899bdd7ddb315b05f9b3268b0e87ed2204dbdc..7405342c74451da3d3148114cfb1dbbc4438bb44 100644 (file)
@@ -50,7 +50,7 @@ public class DataHubsVector {
         vDataHubs.addElement(arg0);\r
     }\r
 \r
         vDataHubs.addElement(arg0);\r
     }\r
 \r
-    public void updateDataHubs(DataHubsIdentification arg0, int arg1) {\r
+    public void setDataHubs(DataHubsIdentification arg0, int arg1) {\r
         vDataHubs.setElementAt(arg0, arg1);\r
     }\r
 \r
         vDataHubs.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,11 @@ public class DataHubsVector {
     public int size() {\r
         return this.vDataHubs.size();\r
     }\r
     public int size() {\r
         return this.vDataHubs.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getDataHubs(index).getName());\r
+        v.addElement(getDataHubs(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index bafd98ab099b58959deafe49982c5b57379ccbd0..f64e184aa3484070eb3d4c8ca6b6fa6992751e7b 100644 (file)
@@ -50,7 +50,7 @@ public class EventsVector {
         vEvents.addElement(arg0);\r
     }\r
 \r
         vEvents.addElement(arg0);\r
     }\r
 \r
-    public void updateEvents(EventsIdentification arg0, int arg1) {\r
+    public void setEvents(EventsIdentification arg0, int arg1) {\r
         vEvents.setElementAt(arg0, arg1);\r
     }\r
 \r
         vEvents.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class EventsVector {
     public int size() {\r
         return this.vEvents.size();\r
     }\r
     public int size() {\r
         return this.vEvents.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getEvents(index).getName());\r
+        v.addElement(getEvents(index).getType());\r
+        v.addElement(getEvents(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index ee5a031b4949e11bcb82d72b8b58cd3eb4c1c946..93b2507f42fed60b84e6c888e9832ca2c4e365f2 100644 (file)
@@ -16,6 +16,8 @@ package org.tianocore.frameworkwizard.module.Identifications.Externs;
 \r
 import java.util.Vector;\r
 \r
 \r
 import java.util.Vector;\r
 \r
+import org.tianocore.frameworkwizard.common.EnumerationData;\r
+\r
 public class ExternsVector {\r
 \r
     private Vector<ExternsIdentification> vExterns = new Vector<ExternsIdentification>();\r
 public class ExternsVector {\r
 \r
     private Vector<ExternsIdentification> vExterns = new Vector<ExternsIdentification>();\r
@@ -47,10 +49,24 @@ public class ExternsVector {
     }\r
 \r
     public void addExterns(ExternsIdentification arg0) {\r
     }\r
 \r
     public void addExterns(ExternsIdentification arg0) {\r
-        vExterns.addElement(arg0);\r
+        boolean isExistPcd = false;\r
+        if (arg0.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+            for (int index = 0; index < size(); index++) {\r
+                if (getExterns(index).getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+                    setExterns(arg0, index);\r
+                    isExistPcd = true;\r
+                    break;\r
+                }\r
+            }\r
+            if (!isExistPcd) {\r
+                vExterns.addElement(arg0);    \r
+            }\r
+        } else {\r
+            vExterns.addElement(arg0);\r
+        }\r
     }\r
 \r
     }\r
 \r
-    public void updateExterns(ExternsIdentification arg0, int arg1) {\r
+    public void setExterns(ExternsIdentification arg0, int arg1) {\r
         vExterns.setElementAt(arg0, arg1);\r
     }\r
 \r
         vExterns.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -87,4 +103,10 @@ public class ExternsVector {
         return this.vExterns.size();\r
     }\r
 \r
         return this.vExterns.size();\r
     }\r
 \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getExterns(index).getName());\r
+        v.addElement(getExterns(index).getType());\r
+        return v;\r
+    }\r
 }\r
 }\r
index 01694cc5a8e9344141679bf77f905d8229f54bd4..6d415c31629bc1c4c31287f0c66b28f555c4eec7 100644 (file)
@@ -50,7 +50,7 @@ public class GuidsVector {
         vGuids.addElement(arg0);\r
     }\r
 \r
         vGuids.addElement(arg0);\r
     }\r
 \r
-    public void updateGuids(GuidsIdentification arg0, int arg1) {\r
+    public void setGuids(GuidsIdentification arg0, int arg1) {\r
         vGuids.setElementAt(arg0, arg1);\r
     }\r
 \r
         vGuids.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class GuidsVector {
     public int size() {\r
         return this.vGuids.size();\r
     }\r
     public int size() {\r
         return this.vGuids.size();\r
     }\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getGuids(index).getName());\r
+        v.addElement(getGuids(index).getUsage());\r
+        return v;\r
+    }\r
 \r
 }\r
 \r
 }\r
index 161f6a4a28204a275bf3ad641aae953236a984d6..f946c0c7e37bcb8a0ed15f4b395897743a4ebaba 100644 (file)
@@ -50,7 +50,7 @@ public class HiiPackagesVector {
         vHiiPackages.addElement(arg0);\r
     }\r
 \r
         vHiiPackages.addElement(arg0);\r
     }\r
 \r
-    public void updateHiiPackages(HiiPackagesIdentification arg0, int arg1) {\r
+    public void setHiiPackages(HiiPackagesIdentification arg0, int arg1) {\r
         vHiiPackages.setElementAt(arg0, arg1);\r
     }\r
 \r
         vHiiPackages.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,11 @@ public class HiiPackagesVector {
     public int size() {\r
         return this.vHiiPackages.size();\r
     }\r
     public int size() {\r
         return this.vHiiPackages.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getHiiPackages(index).getName());\r
+        v.addElement(getHiiPackages(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index fbbf529494da179e36ca7bd7476ef760260f35b6..550cb0aca19821ee8f0817d1bd5892f8749bc54e 100644 (file)
@@ -50,7 +50,7 @@ public class HobsVector {
         vHobs.addElement(arg0);\r
     }\r
 \r
         vHobs.addElement(arg0);\r
     }\r
 \r
-    public void updateHobs(HobsIdentification arg0, int arg1) {\r
+    public void setHobs(HobsIdentification arg0, int arg1) {\r
         vHobs.setElementAt(arg0, arg1);\r
     }\r
 \r
         vHobs.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class HobsVector {
     public int size() {\r
         return this.vHobs.size();\r
     }\r
     public int size() {\r
         return this.vHobs.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getHobs(index).getName());\r
+        v.addElement(getHobs(index).getType());\r
+        v.addElement(getHobs(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index efb146e1e7b42df6ca2071c2d9072c3eab0f137a..d5e22f980bab5270a91dfd77387a314d97140077 100644 (file)
@@ -50,7 +50,7 @@ public class LibraryClassVector {
         vLibraryClass.addElement(lib);\r
     }\r
     \r
         vLibraryClass.addElement(lib);\r
     }\r
     \r
-    public void updateLibraryClass(LibraryClassIdentification lib, int index) {\r
+    public void setLibraryClass(LibraryClassIdentification lib, int index) {\r
         vLibraryClass.setElementAt(lib, index);\r
     }\r
     \r
         vLibraryClass.setElementAt(lib, index);\r
     }\r
     \r
index 386a803628d083b0920eabeaff0b558aff59d0fb..7661453c4fd972398b1b6feec4a1150b27a6a21f 100644 (file)
@@ -50,7 +50,7 @@ public class PackageDependenciesVector {
         vPackageDependencies.addElement(arg0);\r
     }\r
 \r
         vPackageDependencies.addElement(arg0);\r
     }\r
 \r
-    public void updatePackageDependencies(PackageDependenciesIdentification arg0, int arg1) {\r
+    public void setPackageDependencies(PackageDependenciesIdentification arg0, int arg1) {\r
         vPackageDependencies.setElementAt(arg0, arg1);\r
     }\r
 \r
         vPackageDependencies.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class PackageDependenciesVector {
     public int size() {\r
         return this.vPackageDependencies.size();\r
     }\r
     public int size() {\r
         return this.vPackageDependencies.size();\r
     }\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getPackageDependencies(index).getName());\r
+        v.addElement(getPackageDependencies(index).getVersion());\r
+        return v;\r
+    }\r
 \r
 }\r
 \r
 }\r
index 023290db77602ffbd041d0fc2c2999341c633ec2..7d8529f4e27861c6426d035f82768d08de02a902 100644 (file)
@@ -50,7 +50,7 @@ public class PcdCodedVector {
         vPcdCoded.addElement(arg0);\r
     }\r
 \r
         vPcdCoded.addElement(arg0);\r
     }\r
 \r
-    public void updatePcdCoded(PcdCodedIdentification arg0, int arg1) {\r
+    public void setPcdCoded(PcdCodedIdentification arg0, int arg1) {\r
         vPcdCoded.setElementAt(arg0, arg1);\r
     }\r
 \r
         vPcdCoded.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -87,4 +87,11 @@ public class PcdCodedVector {
         return this.vPcdCoded.size();\r
     }\r
 \r
         return this.vPcdCoded.size();\r
     }\r
 \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getPcdCoded(index).getName());\r
+        v.addElement(getPcdCoded(index).getType());\r
+        v.addElement(getPcdCoded(index).getValue());\r
+        return v;\r
+    }\r
 }\r
 }\r
index b1d34577018252c4ed9e0d22d8cc1cc97777b19c..5baa0a0af652964c35977d2e8bbd37a270afd698 100644 (file)
@@ -50,7 +50,7 @@ public class PpisVector {
         vPpis.addElement(arg0);\r
     }\r
 \r
         vPpis.addElement(arg0);\r
     }\r
 \r
-    public void updatePpis(PpisIdentification arg0, int arg1) {\r
+    public void setPpis(PpisIdentification arg0, int arg1) {\r
         vPpis.setElementAt(arg0, arg1);\r
     }\r
 \r
         vPpis.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,13 @@ public class PpisVector {
     public int size() {\r
         return this.vPpis.size();\r
     }\r
     public int size() {\r
         return this.vPpis.size();\r
     }\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getPpis(index).getName());\r
+        v.addElement(getPpis(index).getType());\r
+        v.addElement(getPpis(index).getUsage());\r
+        return v;\r
+    }\r
 \r
 }\r
 \r
 }\r
index b9667049f6e9322b115e8d5a28f2d733e3307b68..7f09670d5ad5d294b78e2e74c04b26bc91eb0449 100644 (file)
@@ -50,7 +50,7 @@ public class ProtocolsVector {
         vProtocols.addElement(arg0);\r
     }\r
 \r
         vProtocols.addElement(arg0);\r
     }\r
 \r
-    public void updateProtocols(ProtocolsIdentification arg0, int arg1) {\r
+    public void setProtocols(ProtocolsIdentification arg0, int arg1) {\r
         vProtocols.setElementAt(arg0, arg1);\r
     }\r
 \r
         vProtocols.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class ProtocolsVector {
     public int size() {\r
         return this.vProtocols.size();\r
     }\r
     public int size() {\r
         return this.vProtocols.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getProtocols(index).getName());\r
+        v.addElement(getProtocols(index).getType());\r
+        v.addElement(getProtocols(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index 8dccb74627f98704832238306de57b8f7b153efd..3e6e98dac30f52d03a1cd6e3678090ba9a4c09f3 100644 (file)
@@ -50,7 +50,7 @@ public class SourceFilesVector {
         vSourceFiles.addElement(sfi);\r
     }\r
 \r
         vSourceFiles.addElement(sfi);\r
     }\r
 \r
-    public void updateSourceFiles(SourceFilesIdentification sfi, int index) {\r
+    public void setSourceFiles(SourceFilesIdentification sfi, int index) {\r
         vSourceFiles.setElementAt(sfi, index);\r
     }\r
 \r
         vSourceFiles.setElementAt(sfi, index);\r
     }\r
 \r
@@ -86,4 +86,10 @@ public class SourceFilesVector {
     public int size() {\r
         return this.vSourceFiles.size();\r
     }\r
     public int size() {\r
         return this.vSourceFiles.size();\r
     }\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getSourceFiles(index).getFilename());\r
+        return v;\r
+    }\r
 }\r
 }\r
index 8babcd725f661c977e039456775515b74ecea426..fb875acfd575794a13d45268e9ea50c4f92f5a37 100644 (file)
@@ -50,7 +50,7 @@ public class SystemTablesVector {
         vSystemTables.addElement(arg0);\r
     }\r
 \r
         vSystemTables.addElement(arg0);\r
     }\r
 \r
-    public void updateSystemTables(SystemTablesIdentification arg0, int arg1) {\r
+    public void setSystemTables(SystemTablesIdentification arg0, int arg1) {\r
         vSystemTables.setElementAt(arg0, arg1);\r
     }\r
 \r
         vSystemTables.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,11 @@ public class SystemTablesVector {
     public int size() {\r
         return this.vSystemTables.size();\r
     }\r
     public int size() {\r
         return this.vSystemTables.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getSystemTables(index).getName());\r
+        v.addElement(getSystemTables(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index 946545729fcfc892dc5b2ffc70c2c0129ec197d3..6949eff7c3fd864b30a4fbc75a3c5dca88ddab96 100644 (file)
@@ -50,7 +50,7 @@ public class VariablesVector {
         vVariables.addElement(arg0);\r
     }\r
 \r
         vVariables.addElement(arg0);\r
     }\r
 \r
-    public void updateVariables(VariablesIdentification arg0, int arg1) {\r
+    public void setVariables(VariablesIdentification arg0, int arg1) {\r
         vVariables.setElementAt(arg0, arg1);\r
     }\r
 \r
         vVariables.setElementAt(arg0, arg1);\r
     }\r
 \r
@@ -86,5 +86,12 @@ public class VariablesVector {
     public int size() {\r
         return this.vVariables.size();\r
     }\r
     public int size() {\r
         return this.vVariables.size();\r
     }\r
-\r
+    \r
+    public Vector<String> toStringVector(int index) {\r
+        Vector<String> v = new Vector<String>();\r
+        v.addElement(getVariables(index).getName());\r
+        v.addElement(getVariables(index).getGuid());\r
+        v.addElement(getVariables(index).getUsage());\r
+        return v;\r
+    }\r
 }\r
 }\r
index 978214645eae578e612f552d41b87f5cfbaf0f5c..51fa6f81968c905d7cb4a4f240c1ec2701f7e32a 100644 (file)
 \r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
 \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.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 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.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
 \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.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.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.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.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
 \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
     //\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
     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
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     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
 \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
-    /**\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
 \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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -263,117 +158,91 @@ public class ModuleBootModes extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\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
      **/\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
         }\r
-        return iCheckBoxListArch;\r
+        return jTable;\r
     }\r
 \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
+    /**\r
+     This method initializes this\r
+     \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
     /**\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
 \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
-    /**\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
 \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
         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
 \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
      **/\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 = 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(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
         }\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
     /**\r
-     This method initializes BootModeName groups and Usage type\r
+     Read content of vector and put then into table\r
      \r
      **/\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
     }\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
      */\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
         }\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\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 (!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
                         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
         }\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
     /* (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
         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
-    /**\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
 }\r
index cf342d24c4be41d11d8b55db24e5cdd7cd0b4096..753b7e8eab6cc2a6e9faa0d3de4e327b75d8d4da 100644 (file)
 \r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
 \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.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 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.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.DataHubUsage;\r
 import org.tianocore.DataHubsDocument;\r
 \r
 import org.tianocore.DataHubUsage;\r
 import org.tianocore.DataHubsDocument;\r
@@ -34,16 +34,15 @@ import org.tianocore.DataHubsDocument.DataHubs;
 import org.tianocore.DataHubsDocument.DataHubs.DataHubRecord;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.DataHubsDocument.DataHubs.DataHubRecord;\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.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.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.DataHubs.DataHubsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.DataHubs.DataHubsVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.DataHubs.DataHubsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.DataHubs.DataHubsVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.DataHubsDlg;\r
 \r
 /**\r
  The class is used to create, update DataHub of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update DataHub of MSA/MBD file\r
@@ -64,28 +63,6 @@ public class ModuleDataHubs extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelUsage = null;\r
-\r
-    private JComboBox jComboBoxUsage = null;\r
-\r
-    private JLabel jLabelDataHubRecord = null;\r
-\r
-    private JTextField jTextFieldDataHubRecord = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -94,21 +71,13 @@ public class ModuleDataHubs extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -119,69 +88,9 @@ public class ModuleDataHubs extends IInternalFrame {
 \r
     private DataHubsVector vid = new DataHubsVector();\r
 \r
 \r
     private DataHubsVector vid = new DataHubsVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
+    private IDefaultTableModel model = null;\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 jTextFieldDataHubRecord \r
-     \r
-     @return javax.swing.JTextField jTextFieldDataHubRecord\r
-     \r
-     **/\r
-    private JTextField getJTextFieldDataHubRecord() {\r
-        if (jTextFieldDataHubRecord == null) {\r
-            jTextFieldDataHubRecord = new JTextField();\r
-            jTextFieldDataHubRecord.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jTextFieldDataHubRecord.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldDataHubRecord.setToolTipText("Enter the C Name of the Data Hub Record");\r
-        }\r
-        return jTextFieldDataHubRecord;\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
-\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -228,27 +137,12 @@ public class ModuleDataHubs 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -263,62 +157,41 @@ public class ModuleDataHubs extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \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
-        }\r
-        return iCheckBoxListArch;\r
-    }\r
-\r
-    /**\r
-     This method initializes jScrollPaneArch \r
-\r
+     This method initializes jScrollPaneTable    \r
+     \r
      @return javax.swing.JScrollPane \r
      @return javax.swing.JScrollPane \r
-\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
+    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
         }\r
-        return jScrollPaneArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jTextFieldHelpText  \r
-     \r
-     @return javax.swing.JTextField  \r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \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
+    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("Data Hub C_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
         }\r
-        return jTextFieldHelpText;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -333,8 +206,6 @@ public class ModuleDataHubs extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Data Hubs");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Data Hubs");\r
-        initFrame();\r
-        this.setViewMode(false);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -354,24 +225,20 @@ public class ModuleDataHubs extends IInternalFrame {
                     String arg0 = dataHubs.getDataHubRecordList().get(index).getDataHubCName();\r
                     String arg1 = null;\r
                     if (dataHubs.getDataHubRecordList().get(index).getUsage() != null) {\r
                     String arg0 = dataHubs.getDataHubRecordList().get(index).getDataHubCName();\r
                     String arg1 = null;\r
                     if (dataHubs.getDataHubRecordList().get(index).getUsage() != null) {\r
-                        arg1 = dataHubs.getDataHubRecordList().get(index).getUsage().toString();    \r
+                        arg1 = dataHubs.getDataHubRecordList().get(index).getUsage().toString();\r
                     }\r
                     }\r
-                    \r
+\r
                     String arg2 = dataHubs.getDataHubRecordList().get(index).getFeatureFlag();\r
                     Vector<String> arg3 = Tools.convertListToVector(dataHubs.getDataHubRecordList().get(index)\r
                                                                             .getSupArchList());\r
                     String arg4 = dataHubs.getDataHubRecordList().get(index).getHelpText();\r
                     String arg2 = dataHubs.getDataHubRecordList().get(index).getFeatureFlag();\r
                     Vector<String> arg3 = Tools.convertListToVector(dataHubs.getDataHubRecordList().get(index)\r
                                                                             .getSupArchList());\r
                     String arg4 = dataHubs.getDataHubRecordList().get(index).getHelpText();\r
-                    \r
+\r
                     id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\r
                     vid.addDataHubs(id);\r
                 }\r
             }\r
         }\r
                     id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\r
                     vid.addDataHubs(id);\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getDataHubsName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -398,19 +265,6 @@ public class ModuleDataHubs extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jTextFieldDataHubRecord.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -419,62 +273,62 @@ public class ModuleDataHubs extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelDataHubRecord = new JLabel();\r
-            jLabelDataHubRecord.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelDataHubRecord.setText("Data Hub Record");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\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
-            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 = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-\r
-            jContentPane.add(jLabelDataHubRecord, null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(jLabelArch, null);\r
-\r
-            jContentPane.add(getJTextFieldDataHubRecord(), null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-\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
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
 \r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(jStarLabel2, 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(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
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        DataHubsDlg dlg = new DataHubsDlg(vid.getDataHubs(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addDataHubs(dlg.getId());\r
+            } else {\r
+                this.vid.setDataHubs(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
     /**\r
-     This method initializes Usage type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVDataHubUsage());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -485,60 +339,27 @@ public class ModuleDataHubs extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\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 DataHubRecord \r
-        //\r
-        if (isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
-            Log.err("Data Hub Record couldn't be empty");\r
-            return false;\r
+            showEdit(selectedRow);\r
         }\r
 \r
         }\r
 \r
-        if (!isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
-            if (!DataValidation.isC_NameType(this.jTextFieldDataHubRecord.getText())) {\r
-                Log.err("Incorrect data type for Data Hub Record");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeDataHubs(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -584,190 +405,52 @@ public class ModuleDataHubs extends IInternalFrame {
     }\r
 \r
     /* (non-Javadoc)\r
     }\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
      */\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(jTextFieldDataHubRecord, 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 DataHubsIdentification getCurrentDataHubs() {\r
-        String arg0 = this.jTextFieldDataHubRecord.getText();\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
-        \r
-        id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\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.addDataHubs(getCurrentDataHubs());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeDataHubs(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateDataHubs(getCurrentDataHubs(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getDataHubs(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.jTextFieldDataHubRecord.setText(vid.getDataHubs(intSelectedItemId).getName());\r
-            this.jComboBoxUsage.setSelectedItem(vid.getDataHubs(intSelectedItemId).getUsage());\r
-            this.jTextFieldHelpText.setText(vid.getDataHubs(intSelectedItemId).getHelp());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getDataHubs(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getDataHubs(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\r
         }\r
-\r
-        reloadListArea();\r
     }\r
 \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.getDataHubs(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
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      * \r
+     * Override componentResized to resize all components when frame's size is changed\r
      */\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
     }\r
 }\r
index 26c8a62c36518669c5a9779c7c455aa80f28c0e6..676b7acc4eb71cd611d1bb0b30a1a4f706f38e18 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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
 \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.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.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.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.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.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
 \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
     //\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
     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
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     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
     private EventsVector vid = new EventsVector();\r
 \r
     private EnumerationData ed = new EnumerationData();\r
-    \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
 \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
-    /**\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
 \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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -272,151 +161,111 @@ public class ModuleEvents extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jTable  \r
      \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JTable  \r
      **/\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
         }\r
-        return iCheckBoxListArch;\r
+        return jTable;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \r
+     This method initializes this\r
      \r
      **/\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
     }\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
 \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
 \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
-    /**\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
 \r
     /**\r
      This is the default constructor\r
@@ -442,19 +291,6 @@ public class ModuleEvents extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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
     /**\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
      **/\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 = 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(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
         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
 \r
     /**\r
-     This method initializes events groups and usage type\r
+     Clear all table rows\r
      \r
      **/\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
     }\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
      */\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
         }\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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
-        //\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
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\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
             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
             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
                         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
                         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
     }\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
      */\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
             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
             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
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\r
         }\r
-\r
-        reloadListArea();\r
     }\r
 \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
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      * \r
+     * Override componentResized to resize all components when frame's size is changed\r
      */\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
     }\r
 }\r
index cfabd0aeb76e3d0cfe7d80854ce6ba1f96556339..99a24302cd425c9fb901a4e6e1f20022a51e6c49 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
-import java.awt.event.ItemEvent;\r
 import java.awt.event.ItemListener;\r
 import java.awt.event.ItemListener;\r
+import java.awt.event.MouseEvent;\r
 import java.util.Vector;\r
 \r
 import javax.swing.JButton;\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.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.ExternsDocument;\r
 import org.tianocore.PcdDriverTypes;\r
 \r
 import org.tianocore.ExternsDocument;\r
 import org.tianocore.PcdDriverTypes;\r
@@ -34,15 +34,16 @@ import org.tianocore.ExternsDocument.Externs;
 import org.tianocore.ExternsDocument.Externs.Extern;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.ExternsDocument.Externs.Extern;\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.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.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.IInternalFrame;\r
-import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
 import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.ExternsDlg;\r
 \r
 /**\r
  The class is used to create, update DataHub of MSA/MBD file \r
 \r
 /**\r
  The class is used to create, update DataHub of MSA/MBD file \r
@@ -63,14 +64,6 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelName = null;\r
-\r
-    private JComboBox jComboBoxType = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -79,31 +72,13 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JLabel jLabelPcdIsDriver = null;\r
-\r
-    private JComboBox jComboBoxPcdIsDriver = null;\r
-\r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JTextField jTextFieldC_Name = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JLabel jLabelArch = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -114,39 +89,9 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
 \r
     private ExternsVector vid = new ExternsVector();\r
 \r
 \r
     private ExternsVector vid = new ExternsVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
+    private IDefaultTableModel model = null;\r
 \r
 \r
-    /**\r
-     This method initializes jComboBoxType \r
-     \r
-     @return javax.swing.JComboBox jComboBoxType\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxType() {\r
-        if (jComboBoxType == null) {\r
-            jComboBoxType = new JComboBox();\r
-            jComboBoxType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxType;\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, 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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -193,27 +138,12 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
             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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -228,92 +158,41 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
     }\r
 \r
     /**\r
     }\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
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jComboBoxPcdIsDriver    \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxPcdIsDriver() {\r
-        if (jComboBoxPcdIsDriver == null) {\r
-            jComboBoxPcdIsDriver = new JComboBox();\r
-            jComboBoxPcdIsDriver.setLocation(new java.awt.Point(160, 10));\r
-            jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxPcdIsDriver.addItemListener(this);\r
-        }\r
-        return jComboBoxPcdIsDriver;\r
-    }\r
-\r
-    /**\r
-     This method initializes jTextFieldC_Name  \r
-     \r
-     @return javax.swing.JTextField    \r
+     This method initializes jScrollPaneTable    \r
      \r
      \r
+     @return javax.swing.JScrollPane \r
      **/\r
      **/\r
-    private JTextField getJTextFieldC_Name() {\r
-        if (jTextFieldC_Name == null) {\r
-            jTextFieldC_Name = new JTextField();\r
-            jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
-            jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320,20));\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
         }\r
-        return jTextFieldC_Name;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jTextFieldFeatureFlag    \r
-     \r
-     @return javax.swing.JTextField   \r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \r
      **/\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
+    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("Type");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return jTextFieldFeatureFlag;\r
-    }\r
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \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
-        }\r
-        return iCheckBoxListArch;\r
-    }\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, 110, 320, 80));\r
-            jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
-            jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
-        }\r
-        return jScrollPaneArch;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -328,7 +207,6 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Externs");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Externs");\r
-        initFrame();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -347,9 +225,13 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
             // Get PcdIsDriver\r
             //\r
             if (this.externs.getPcdIsDriver() != null) {\r
             // Get PcdIsDriver\r
             //\r
             if (this.externs.getPcdIsDriver() != null) {\r
-                this.jComboBoxPcdIsDriver.setSelectedItem(this.externs.getPcdIsDriver().toString());\r
+                String arg0 = this.externs.getPcdIsDriver().toString();\r
+                String arg1 = EnumerationData.EXTERNS_PCD_IS_DRIVER;\r
+\r
+                id = new ExternsIdentification(arg0, arg1, null, null);\r
+                vid.addExterns(id);\r
             }\r
             }\r
-            \r
+\r
             //\r
             // Get specification\r
             //\r
             //\r
             // Get specification\r
             //\r
@@ -423,11 +305,7 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getExternsName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -462,54 +340,62 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelC_Name.setText("Value");\r
-            jLabelPcdIsDriver = new JLabel();\r
-            jLabelPcdIsDriver.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelPcdIsDriver.setText("Pcd Is Driver");\r
-            jLabelName = new JLabel();\r
-            jLabelName.setText("Choose Type");\r
-            jLabelName.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\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
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-\r
-            jContentPane.add(jLabelName, null);\r
-            jContentPane.add(getJComboBoxType(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(getJScrollPaneArch(), 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(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-            jContentPane.add(jLabelPcdIsDriver, null);\r
-            jContentPane.add(getJComboBoxPcdIsDriver(), null);\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(getJTextFieldC_Name(), null);\r
+            jContentPane.add(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        ExternsDlg dlg = new ExternsDlg(vid.getExterns(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addExterns(dlg.getId());\r
+            } else {\r
+                this.vid.setExterns(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
     /**\r
-     This method initializes Usage type and Externs type\r
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
-        Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -520,67 +406,27 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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 CName \r
-        //\r
-        if (isEmpty(this.jTextFieldC_Name.getText())) {\r
-            Log.err("Value couldn't be empty");\r
-            return false;\r
-        }\r
-\r
-        if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
-            if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
-                if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) {\r
-                    Log.err("Incorrect data type for Specification");\r
-                    return false;\r
-                }    \r
-            } else {\r
-                if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) {\r
-                    Log.err("Incorrect data type for C_Name");\r
-                    return false;\r
-                }    \r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeExterns(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -594,16 +440,24 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
             int count = this.vid.size();\r
 \r
             this.externs = Externs.Factory.newInstance();\r
             int count = this.vid.size();\r
 \r
             this.externs = Externs.Factory.newInstance();\r
-            //\r
-            // Save PcdIsDriver first\r
-            //\r
-            if (!this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
-                externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
-                                                                                              .toString()));\r
-            }\r
+            //            //\r
+            //            // Save PcdIsDriver first\r
+            //            //\r
+            //            if (!this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
+            //                externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(this.jComboBoxPcdIsDriver.getSelectedItem()\r
+            //                                                                                              .toString()));\r
+            //            }\r
 \r
             if (count > 0) {\r
                 for (int index = 0; index < count; index++) {\r
 \r
             if (count > 0) {\r
                 for (int index = 0; index < count; index++) {\r
+                    //\r
+                    // Save Pcd Is Driver\r
+                    //\r
+                    if (vid.getExterns(index).getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+                        externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(vid.getExterns(index).getName()));\r
+                        continue;\r
+                    }\r
+\r
                     //\r
                     // Save specfication\r
                     //\r
                     //\r
                     // Save specfication\r
                     //\r
@@ -697,198 +551,52 @@ public class ModuleExterns extends IInternalFrame implements ItemListener {
     }\r
 \r
     /* (non-Javadoc)\r
     }\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
      */\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(this.jComboBoxPcdIsDriver, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jComboBoxType, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldC_Name, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.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 ExternsIdentification getCurrentExterns() {\r
-        String arg0 = this.jTextFieldC_Name.getText();\r
-        String arg1 = this.jComboBoxType.getSelectedItem().toString();\r
-\r
-        String arg2 = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arg3 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-\r
-        id = new ExternsIdentification(arg0, arg1, arg2, arg3);\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.addExterns(getCurrentExterns());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeExterns(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateExterns(getCurrentExterns(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getExterns(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.jTextFieldC_Name.setText(vid.getExterns(intSelectedItemId).getName());\r
-            this.jComboBoxType.setSelectedItem(vid.getExterns(intSelectedItemId).getType());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getExterns(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getExterns(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\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.getExterns(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
-        }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      *\r
-     * Reflesh the frame when selected item changed\r
-     * \r
      */\r
      */\r
-    public void itemStateChanged(ItemEvent arg0) {\r
-        if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\r
-        }\r
-        if (arg0.getSource() == this.jComboBoxPcdIsDriver && arg0.getStateChange() == ItemEvent.SELECTED && externs != null) {\r
-            String s = this.jComboBoxPcdIsDriver.getSelectedItem().toString();\r
-            if (s.equals(DataType.EMPTY_SELECT_ITEM)) {\r
-                this.externs.setPcdIsDriver(null);\r
+    public void mouseClicked(MouseEvent arg0) {\r
+        if (arg0.getClickCount() == 2) {\r
+            if (this.selectedRow < 0) {\r
+                return;\r
             } else {\r
             } else {\r
-                this.externs.setPcdIsDriver(PcdDriverTypes.Enum.forString(s));\r
+                showEdit(selectedRow);\r
             }\r
             }\r
-            this.msa.setExterns(externs);\r
-            this.omt.setSaved(false);\r
         }\r
     }\r
         }\r
     }\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
+     */\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
 }\r
index 35ac3f52787557c1d4e0be5f16c4a1de8b957572..6c0c4114db43204e36ae67cfacb905d5a1bcad1d 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.GuidUsage;\r
 import org.tianocore.GuidsDocument;\r
 \r
 import org.tianocore.GuidUsage;\r
 import org.tianocore.GuidsDocument;\r
@@ -33,24 +33,20 @@ import org.tianocore.GuidsDocument.Guids;
 import org.tianocore.GuidsDocument.Guids.GuidCNames;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.GuidsDocument.Guids.GuidCNames;\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.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.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.Guids.GuidsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Guids.GuidsVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Guids.GuidsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Guids.GuidsVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.GuidsDlg;\r
 \r
 /**\r
  The class is used to create, update Guids of MSA/MBD file\r
  It extends IInternalFrame\r
  \r
 \r
 /**\r
  The class is used to create, update Guids of MSA/MBD file\r
  It extends IInternalFrame\r
  \r
-\r
-\r
  **/\r
 public class ModuleGuids extends IInternalFrame {\r
 \r
  **/\r
 public class ModuleGuids extends IInternalFrame {\r
 \r
@@ -64,28 +60,6 @@ public class ModuleGuids extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JComboBox jComboBoxCName = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -94,21 +68,13 @@ public class ModuleGuids extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -119,71 +85,9 @@ public class ModuleGuids extends IInternalFrame {
 \r
     private GuidsVector vid = new GuidsVector();\r
 \r
 \r
     private GuidsVector vid = new GuidsVector();\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 getJComboBoxCName() {\r
-        if (jComboBoxCName == null) {\r
-            jComboBoxCName = new JComboBox();\r
-            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxCName;\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
+    private IDefaultTableModel model = null;\r
 \r
 \r
-    /**\r
-     This method initializes jTextFieldFeatureFlag    \r
-     \r
-     @return javax.swing.JTextField   \r
-     \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
-\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -230,27 +134,12 @@ public class ModuleGuids 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -265,62 +154,41 @@ public class ModuleGuids extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \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
-        }\r
-        return iCheckBoxListArch;\r
-    }\r
-\r
-    /**\r
-     This method initializes jScrollPaneArch \r
-\r
+     This method initializes jScrollPaneTable    \r
+     \r
      @return javax.swing.JScrollPane \r
      @return javax.swing.JScrollPane \r
-\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
+    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
         }\r
-        return jScrollPaneArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jTextFieldHelpText  \r
-     \r
-     @return javax.swing.JTextField  \r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \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
+    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("Usage");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return jTextFieldHelpText;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -335,8 +203,6 @@ public class ModuleGuids extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Guids");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Guids");\r
-        initFrame();\r
-        this.setViewMode(false);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -356,7 +222,7 @@ public class ModuleGuids extends IInternalFrame {
                     String arg0 = guids.getGuidCNamesList().get(index).getGuidCName();\r
                     String arg1 = null;\r
                     if (guids.getGuidCNamesList().get(index).getUsage() != null) {\r
                     String arg0 = guids.getGuidCNamesList().get(index).getGuidCName();\r
                     String arg1 = null;\r
                     if (guids.getGuidCNamesList().get(index).getUsage() != null) {\r
-                        arg1 = guids.getGuidCNamesList().get(index).getUsage().toString();    \r
+                        arg1 = guids.getGuidCNamesList().get(index).getUsage().toString();\r
                     }\r
 \r
                     String arg2 = guids.getGuidCNamesList().get(index).getFeatureFlag();\r
                     }\r
 \r
                     String arg2 = guids.getGuidCNamesList().get(index).getFeatureFlag();\r
@@ -369,11 +235,7 @@ public class ModuleGuids extends IInternalFrame {
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getGuidsName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -400,18 +262,6 @@ public class ModuleGuids extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -420,65 +270,62 @@ public class ModuleGuids extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("C_Name");\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\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
-            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 = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(getJComboBoxCName(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
 \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
-\r
-            jContentPane.add(getJComboBoxList(), null);\r
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\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
 \r
-            initFrame();\r
+    private void showEdit(int index) {\r
+        GuidsDlg dlg = new GuidsDlg(vid.getGuids(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addGuids(dlg.getId());\r
+            } else {\r
+                this.vid.setGuids(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
+    /**\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
-        return jContentPane;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes Usage type\r
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllGuidDeclarationsFromWorkspace());\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVGuidUsage());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -489,55 +336,27 @@ public class ModuleGuids extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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.jComboBoxCName.getSelectedItem().toString())) {\r
-            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
-                Log.err("Incorrect data type for Guid Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeGuids(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -582,190 +401,52 @@ public class ModuleGuids extends IInternalFrame {
     }\r
 \r
     /* (non-Javadoc)\r
     }\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
      */\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(jComboBoxCName, 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 GuidsIdentification getCurrentGuids() {\r
-        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\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
-\r
-        id = new GuidsIdentification(arg0, arg1, arg2, arg3, arg4);\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.addGuids(getCurrentGuids());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeGuids(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateGuids(getCurrentGuids(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getGuids(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.jComboBoxCName.setSelectedItem(vid.getGuids(intSelectedItemId).getName());\r
-            this.jComboBoxUsage.setSelectedItem(vid.getGuids(intSelectedItemId).getUsage());\r
-            this.jTextFieldHelpText.setText(vid.getGuids(intSelectedItemId).getHelp());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getGuids(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getGuids(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\r
         }\r
-\r
-        reloadListArea();\r
     }\r
 \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.getGuids(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
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      * \r
+     * Override componentResized to resize all components when frame's size is changed\r
      */\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
     }\r
 }\r
index aefeba500f7c48e1d9508405a45db588705dea8f..884879e177d35a971440bd38a0d92bdc018c5a1a 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.HiiPackageUsage;\r
 import org.tianocore.HiiPackagesDocument;\r
 \r
 import org.tianocore.HiiPackageUsage;\r
 import org.tianocore.HiiPackagesDocument;\r
@@ -33,22 +33,19 @@ import org.tianocore.HiiPackagesDocument.HiiPackages;
 import org.tianocore.HiiPackagesDocument.HiiPackages.HiiPackage;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.HiiPackagesDocument.HiiPackages.HiiPackage;\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.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.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.HiiPackages.HiiPackagesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.HiiPackages.HiiPackagesVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.HiiPackages.HiiPackagesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.HiiPackages.HiiPackagesVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.HiiPackagesDlg;\r
 \r
 /**\r
  The class is used to create, update Formset of MSA/MBD file\r
  It extends IInternalFrame\r
 \r
 /**\r
  The class is used to create, update Formset of MSA/MBD file\r
  It extends IInternalFrame\r
\r
-\r
 \r
  **/\r
 public class ModuleHiiPackages extends IInternalFrame {\r
 \r
  **/\r
 public class ModuleHiiPackages extends IInternalFrame {\r
@@ -63,28 +60,6 @@ public class ModuleHiiPackages extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelName = null;\r
-\r
-    private JTextField jTextFieldName = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -93,21 +68,13 @@ public class ModuleHiiPackages extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -118,69 +85,9 @@ public class ModuleHiiPackages extends IInternalFrame {
 \r
     private HiiPackagesVector vid = new HiiPackagesVector();\r
 \r
 \r
     private HiiPackagesVector vid = new HiiPackagesVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-\r
-    /**\r
-     This method initializes jTextFieldName \r
-     \r
-     @return javax.swing.JTextField jTextFieldName\r
-     \r
-     **/\r
-    private JTextField getJTextFieldName() {\r
-        if (jTextFieldName == null) {\r
-            jTextFieldName = new JTextField();\r
-            jTextFieldName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jTextFieldName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldName.setToolTipText("Enter the C Name of the HII Package");\r
-        }\r
-        return jTextFieldName;\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
+    private IDefaultTableModel model = null;\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
-\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -227,27 +134,12 @@ public class ModuleHiiPackages 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -262,62 +154,41 @@ public class ModuleHiiPackages extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     This method initializes jTextFieldHelpText  \r
-     \r
-     @return javax.swing.JTextField  \r
+     This method initializes jScrollPaneTable    \r
      \r
      \r
+     @return javax.swing.JScrollPane \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
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \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 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
         }\r
-        return iCheckBoxListArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-\r
-     @return javax.swing.JScrollPane \r
-\r
+     This method initializes jTable  \r
+     \r
+     @return javax.swing.JTable  \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
+    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("Hii Package C_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
         }\r
-        return jScrollPaneArch;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -332,8 +203,6 @@ public class ModuleHiiPackages extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Hii Packages");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Hii Packages");\r
-        initFrame();\r
-        this.setViewMode(false);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -353,24 +222,20 @@ public class ModuleHiiPackages extends IInternalFrame {
                     String arg0 = hiiPackages.getHiiPackageList().get(index).getHiiCName();\r
                     String arg1 = null;\r
                     if (hiiPackages.getHiiPackageList().get(index).getUsage() != null) {\r
                     String arg0 = hiiPackages.getHiiPackageList().get(index).getHiiCName();\r
                     String arg1 = null;\r
                     if (hiiPackages.getHiiPackageList().get(index).getUsage() != null) {\r
-                        arg1 = hiiPackages.getHiiPackageList().get(index).getUsage().toString();    \r
+                        arg1 = hiiPackages.getHiiPackageList().get(index).getUsage().toString();\r
                     }\r
 \r
                     String arg2 = hiiPackages.getHiiPackageList().get(index).getFeatureFlag();\r
                     Vector<String> arg3 = Tools.convertListToVector(hiiPackages.getHiiPackageList().get(index)\r
                                                                                .getSupArchList());\r
                     String arg4 = hiiPackages.getHiiPackageList().get(index).getHelpText();\r
                     }\r
 \r
                     String arg2 = hiiPackages.getHiiPackageList().get(index).getFeatureFlag();\r
                     Vector<String> arg3 = Tools.convertListToVector(hiiPackages.getHiiPackageList().get(index)\r
                                                                                .getSupArchList());\r
                     String arg4 = hiiPackages.getHiiPackageList().get(index).getHelpText();\r
-                    \r
+\r
                     id = new HiiPackagesIdentification(arg0, arg1, arg2, arg3, arg4);\r
                     vid.addHiiPackages(id);\r
                 }\r
             }\r
         }\r
                     id = new HiiPackagesIdentification(arg0, arg1, arg2, arg3, arg4);\r
                     vid.addHiiPackages(id);\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getHiiPackagesName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -400,19 +265,6 @@ public class ModuleHiiPackages extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jTextFieldName.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -421,62 +273,62 @@ public class ModuleHiiPackages extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelName = new JLabel();\r
-            jLabelName.setText("Name");\r
-            jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\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
-            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 = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-\r
-            jContentPane.add(jLabelName, null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJTextFieldName(), null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
 \r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-\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
-\r
-            jContentPane.add(getJComboBoxList(), null);\r
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\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
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        HiiPackagesDlg dlg = new HiiPackagesDlg(vid.getHiiPackages(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addHiiPackages(dlg.getId());\r
+            } else {\r
+                this.vid.setHiiPackages(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
     /**\r
-     This method initializes Usage type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVHiiPackageUsage());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -487,60 +339,27 @@ public class ModuleHiiPackages extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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 Hii Package Name \r
-        //\r
-        if (isEmpty(this.jTextFieldName.getText())) {\r
-            Log.err("Hii Package Name Record couldn't be empty");\r
-            return false;\r
-        }\r
-\r
-        if (!isEmpty(this.jTextFieldName.getText())) {\r
-            if (!DataValidation.isC_NameType(this.jTextFieldName.getText())) {\r
-                Log.err("Incorrect data type for Hii Package Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeHiiPackages(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -586,190 +405,52 @@ public class ModuleHiiPackages extends IInternalFrame {
     }\r
 \r
     /* (non-Javadoc)\r
     }\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
      */\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(jTextFieldName, 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 HiiPackagesIdentification getCurrentHiiPackages() {\r
-        String arg0 = this.jTextFieldName.getText();\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
-        \r
-        id = new HiiPackagesIdentification(arg0, arg1, arg2, arg3, arg4);\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.addHiiPackages(getCurrentHiiPackages());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeHiiPackages(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateHiiPackages(getCurrentHiiPackages(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getHiiPackages(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.jTextFieldName.setText(vid.getHiiPackages(intSelectedItemId).getName());\r
-            this.jComboBoxUsage.setSelectedItem(vid.getHiiPackages(intSelectedItemId).getUsage());\r
-            this.jTextFieldHelpText.setText(vid.getHiiPackages(intSelectedItemId).getHelp());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getHiiPackages(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getHiiPackages(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\r
         }\r
-\r
-        reloadListArea();\r
     }\r
 \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.getHiiPackages(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
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      * \r
+     * Override componentResized to resize all components when frame's size is changed\r
      */\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
     }\r
 }\r
index 7bbf1190b7f563a346387cedb84f03517c575bbd..8b11f081d89f2f85689ad749b3db6b9331bbe532 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.HobTypes;\r
 import org.tianocore.HobUsage;\r
 \r
 import org.tianocore.HobTypes;\r
 import org.tianocore.HobUsage;\r
@@ -33,17 +33,15 @@ import org.tianocore.HobsDocument;
 import org.tianocore.HobsDocument.Hobs;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.HobsDocument.Hobs;\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.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.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.Hobs.HobsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Hobs.HobsVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Hobs.HobsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Hobs.HobsVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.HobsDlg;\r
 \r
 /**\r
  The class is used to create, update Hob of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update Hob of MSA/MBD file\r
@@ -64,26 +62,6 @@ public class ModuleHobs extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabel = null;\r
-\r
-    private JComboBox jComboBoxGuidC_Name = null;\r
-\r
-    private JLabel jLabelUsage = null;\r
-\r
-    private JLabel jLabelHobType = null;\r
-\r
-    private JComboBox jComboBoxUsage = null;\r
-\r
-    private JComboBox jComboBoxHobType = null;\r
-\r
-    private StarLabel jStarLabel1 = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -92,25 +70,13 @@ public class ModuleHobs extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -121,72 +87,9 @@ public class ModuleHobs extends IInternalFrame {
 \r
     private HobsVector vid = new HobsVector();\r
 \r
 \r
     private HobsVector vid = new HobsVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-    \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
-\r
-    /**\r
-     This method initializes jTextField \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, 10, 320, 20));\r
-            jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Hob");\r
-        }\r
-        return jComboBoxGuidC_Name;\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, 60, 320, 20));\r
-            jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxUsage;\r
-    }\r
-\r
-    /**\r
-     This method initializes jComboBoxHobType \r
-     \r
-     @return javax.swing.JComboBox jComboBoxHobType\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxHobType() {\r
-        if (jComboBoxHobType == null) {\r
-            jComboBoxHobType = new JComboBox();\r
-            jComboBoxHobType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxHobType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxHobType;\r
-    }\r
+    private IDefaultTableModel model = null;\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -233,27 +136,12 @@ public class ModuleHobs 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -268,77 +156,43 @@ public class ModuleHobs extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\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 iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \r
+     This method initializes jScrollPaneTable    \r
+     \r
+     @return javax.swing.JScrollPane \r
      **/\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 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
         }\r
-        return iCheckBoxListArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-\r
-     @return javax.swing.JScrollPane \r
-\r
+     This method initializes jTable  \r
+     \r
+     @return javax.swing.JTable  \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
+    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
         }\r
-        return jScrollPaneArch;\r
+        return jTable;\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, 85, 320, 20));\r
-           jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
-       }\r
-       return jTextFieldHelpText;\r
-   }\r
 \r
     public static void main(String[] args) {\r
 \r
 \r
     public static void main(String[] args) {\r
 \r
@@ -352,8 +206,6 @@ public class ModuleHobs extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Hobs");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Hobs");\r
-        initFrame();\r
-        this.setViewMode(false);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -373,13 +225,13 @@ public class ModuleHobs extends IInternalFrame {
                     String arg0 = hobs.getHobTypesList().get(index).getHobGuidCName();\r
                     String arg1 = null;\r
                     if (hobs.getHobTypesList().get(index).getHobType() != null) {\r
                     String arg0 = hobs.getHobTypesList().get(index).getHobGuidCName();\r
                     String arg1 = null;\r
                     if (hobs.getHobTypesList().get(index).getHobType() != null) {\r
-                        arg1 = hobs.getHobTypesList().get(index).getHobType().toString();    \r
+                        arg1 = hobs.getHobTypesList().get(index).getHobType().toString();\r
                     }\r
                     String arg2 = null;\r
                     if (hobs.getHobTypesList().get(index).getUsage() != null) {\r
                     }\r
                     String arg2 = null;\r
                     if (hobs.getHobTypesList().get(index).getUsage() != null) {\r
-                        arg2 = hobs.getHobTypesList().get(index).getUsage().toString();    \r
+                        arg2 = hobs.getHobTypesList().get(index).getUsage().toString();\r
                     }\r
                     }\r
-                    \r
+\r
                     String arg3 = hobs.getHobTypesList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(hobs.getHobTypesList().get(index).getSupArchList());\r
                     String arg5 = hobs.getHobTypesList().get(index).getHelpText();\r
                     String arg3 = hobs.getHobTypesList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(hobs.getHobTypesList().get(index).getSupArchList());\r
                     String arg5 = hobs.getHobTypesList().get(index).getHelpText();\r
@@ -388,11 +240,7 @@ public class ModuleHobs extends IInternalFrame {
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getHobsName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -419,20 +267,6 @@ public class ModuleHobs extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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
-            this.jComboBoxHobType.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -441,65 +275,63 @@ public class ModuleHobs extends IInternalFrame {
      **/\r
     public JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     public 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
-            jLabelHobType = new JLabel();\r
-            jLabelHobType.setText("Hob Type");\r
-            jLabelHobType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabel = new JLabel();\r
-            jLabel.setText("C_Name");\r
-            jLabel.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
+\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 495));\r
-\r
-            jContentPane.add(jLabel, null);\r
-            jContentPane.add(getJComboBoxGuidC_Name(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(jLabelHobType, null);\r
-            jContentPane.add(getJComboBoxUsage(), null);\r
-            jContentPane.add(getJComboBoxHobType(), null);\r
-            jStarLabel1 = new StarLabel();\r
-            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
-            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
 \r
-            jContentPane.add(jLabelArch, 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(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), 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
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        HobsDlg dlg = new HobsDlg(vid.getHobs(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addHobs(dlg.getId());\r
+            } else {\r
+                this.vid.setHobs(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
     /**\r
-     This method initializes Usage type and Hob type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVHobUsage());\r
-        Tools.generateComboBoxByVector(jComboBoxHobType, ed.getVHobType());\r
-        Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\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.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -510,60 +342,27 @@ public class ModuleHobs extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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("Hob 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 Hob Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeHobs(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -608,6 +407,36 @@ public class ModuleHobs extends IInternalFrame {
         }\r
     }\r
 \r
         }\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -619,182 +448,12 @@ public class ModuleHobs extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jComboBoxGuidC_Name, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jComboBoxHobType, 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 HobsIdentification getCurrentHobs() {\r
-        String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
-        String arg1 = this.jComboBoxHobType.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 HobsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\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
-    /**\r
-    Add current item to Vector\r
-    \r
-    **/\r
-   private void addToList() {\r
-       intSelectedItemId = vid.size();\r
-\r
-       vid.addHobs(getCurrentHobs());\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.removeHobs(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.updateHobs(getCurrentHobs(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getHobs(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.getHobs(intSelectedItemId).getName());\r
-           this.jComboBoxHobType.setSelectedItem(vid.getHobs(intSelectedItemId).getType());\r
-           this.jComboBoxUsage.setSelectedItem(vid.getHobs(intSelectedItemId).getUsage());\r
-           this.jTextFieldHelpText.setText(vid.getHobs(intSelectedItemId).getHelp());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getHobs(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getHobs(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.getHobs(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
 }\r
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.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 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.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
 \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.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.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.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.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
 \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
     //\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 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 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
 \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
 \r
     //\r
     // Not for UI\r
@@ -128,65 +81,11 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
 \r
     private LibraryClassVector vLibraryClass = new LibraryClassVector();\r
 \r
 \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
     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
-    /**\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
 \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
         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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -268,147 +152,41 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JScrollPane   \r
      **/\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
         }\r
-        return iCheckBoxListArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jTable    \r
      \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JTable        \r
      **/\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
-    /**\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
-    /**\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
         }\r
-        return jTextFieldHelpText;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\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
         super();\r
         this.omt = inOmt;\r
         this.msa = omt.getXmlMsa();\r
-        initLibraryClass();\r
         init(msa.getLibraryClassDefinitions());\r
         this.setVisible(true);\r
     }\r
 \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
     /**\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
                     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
                     }\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
         //\r
         // Update the list\r
         //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vLibraryClass.getLibraryClassName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\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
         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
     }\r
 \r
     /**\r
@@ -540,159 +273,18 @@ public class ModuleLibraryClassDefinitions extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\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 = 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(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
         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
     /**\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
         }\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
 \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
         }\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
     }\r
 \r
     /**\r
-     Update current item of Vector\r
+     Clear all table rows\r
      \r
      **/\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
-        //\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
     }\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
      \r
      **/\r
-    private void reloadFromList() {\r
+    private void showTable() {\r
+        clearAll();\r
+\r
         if (vLibraryClass.size() > 0) {\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
-\r
-        reloadListArea();\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\r
+        //this.jScrollPane.setViewportView(this.jTable);\r
     }\r
 \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
         }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      *\r
-     * Reflesh the frame when selected item changed\r
-     * \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
         }\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
         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
     }\r
 }\r
index d87fca0d82f343c7ec77db4c8f436ff10cf813f0..492b305c7260a1f15208daf6e3f6ab55c50296f0 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.PcdCodedDocument;\r
 import org.tianocore.PcdItemTypes;\r
 \r
 import org.tianocore.PcdCodedDocument;\r
 import org.tianocore.PcdItemTypes;\r
@@ -33,17 +33,15 @@ import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
 import org.tianocore.PcdCodedDocument.PcdCoded;\r
 import org.tianocore.PcdCodedDocument.PcdCoded.PcdEntry;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.PcdCodedDocument.PcdCoded;\r
 import org.tianocore.PcdCodedDocument.PcdCoded.PcdEntry;\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.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.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.PcdCoded.PcdCodedIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdCodedVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdCodedIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdCodedVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.PCDsDlg;\r
 \r
 /**\r
  The class is used to create, update PCD of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update PCD of MSA/MBD file\r
@@ -64,32 +62,6 @@ public class ModulePCDs extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelItemType = null;\r
-\r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JComboBox jComboBoxItemType = null;\r
-\r
-    private JComboBox jComboBoxCName = null;\r
-\r
-    private JLabel jLabelDefaultValue = null;\r
-\r
-    private JTextField jTextFieldDefaultValue = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private StarLabel jStarLabel2 = null;\r
-\r
-    private StarLabel jStarLabel3 = null;\r
-\r
-    private JLabel jLabelHelpText = null;\r
-\r
-    private JTextField jTextFieldHelpText = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -98,27 +70,13 @@ public class ModulePCDs extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JLabel jLabelTokenSpaceGuid = null;\r
-\r
-    private JTextField jTextFieldTokenSpaceGuid = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private JLabel jLabelArch = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -129,85 +87,9 @@ public class ModulePCDs extends IInternalFrame {
 \r
     private PcdCodedVector vid = new PcdCodedVector();\r
 \r
 \r
     private PcdCodedVector vid = new PcdCodedVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-    \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
+    private IDefaultTableModel model = null;\r
 \r
 \r
-    /**\r
-     This method initializes jComboBoxItemType \r
-     \r
-     @return javax.swing.JComboBox jComboBoxItemType\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxItemType() {\r
-        if (jComboBoxItemType == null) {\r
-            jComboBoxItemType = new JComboBox();\r
-            jComboBoxItemType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxItemType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxItemType;\r
-    }\r
-\r
-    /**\r
-     This method initializes jTextFieldC_Name \r
-     \r
-     @return javax.swing.JTextField jTextFieldC_Name\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxCName() {\r
-        if (jComboBoxCName == null) {\r
-            jComboBoxCName = new JComboBox();\r
-            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxCName;\r
-    }\r
-\r
-    /**\r
-     This method initializes jTextFieldDefaultValue \r
-     \r
-     @return javax.swing.JTextField jTextFieldDefaultValue\r
-     \r
-     **/\r
-    private JTextField getJTextFieldDefaultValue() {\r
-        if (jTextFieldDefaultValue == null) {\r
-            jTextFieldDefaultValue = new JTextField();\r
-            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
-            jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jTextFieldDefaultValue;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldHelpText      \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldHelpText() {\r
-        if (jTextFieldHelpText == null) {\r
-            jTextFieldHelpText = new JTextField();\r
-            jTextFieldHelpText.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
-            jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jTextFieldHelpText;\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, 245, 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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -254,27 +136,12 @@ public class ModulePCDs extends IInternalFrame {
             jButtonUpdate = new JButton();\r
             jButtonUpdate.setBounds(new java.awt.Rectangle(315, 245, 80, 20));\r
             jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));\r
             jButtonUpdate = new JButton();\r
             jButtonUpdate.setBounds(new java.awt.Rectangle(315, 245, 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
             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, 270, 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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -289,133 +156,93 @@ public class ModulePCDs extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     * This method initializes jTextFieldTokenSpaceGuid        \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldTokenSpaceGuid() {\r
-        if (jTextFieldTokenSpaceGuid == null) {\r
-            jTextFieldTokenSpaceGuid = new JTextField();\r
-            jTextFieldTokenSpaceGuid.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
-            jTextFieldTokenSpaceGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
+     This method initializes jTable  \r
+     \r
+     @return javax.swing.JTable  \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
+            model.addColumn("Name");\r
+            model.addColumn("Type");\r
+            model.addColumn("Value");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return jTextFieldTokenSpaceGuid;\r
+        return jTable;\r
     }\r
 \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
+    public static void main(String[] args) {\r
+\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
-\r
-     @return ICheckBoxList   \r
+     This method initializes this\r
+     \r
      **/\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
-        }\r
-        return iCheckBoxListArch;\r
+    private void init() {\r
+        this.setSize(500, 515);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Pcd Coded");\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-\r
-     @return javax.swing.JScrollPane \r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inPackageDependencies\r
 \r
      **/\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
-    public static void main(String[] args) {\r
+    private void init(PcdCoded inPcdCodeds) {\r
+        init();\r
+        this.pcds = inPcdCodeds;\r
+\r
+        if (this.pcds != null) {\r
+            if (this.pcds.getPcdEntryList().size() > 0) {\r
+                for (int index = 0; index < this.pcds.getPcdEntryList().size(); index++) {\r
+                    String arg0 = pcds.getPcdEntryList().get(index).getCName();\r
+                    String arg1 = pcds.getPcdEntryList().get(index).getTokenSpaceGuidCName();\r
+\r
+                    String arg2 = pcds.getPcdEntryList().get(index).getFeatureFlag();\r
+                    Vector<String> arg3 = Tools.convertListToVector(pcds.getPcdEntryList().get(index).getSupArchList());\r
+\r
+                    String arg4 = pcds.getPcdEntryList().get(index).getDefaultValue();\r
+                    String arg5 = pcds.getPcdEntryList().get(index).getHelpText();\r
+                    String arg6 = null;\r
+                    if (pcds.getPcdEntryList().get(index).getPcdItemType() != null) {\r
+                        arg6 = pcds.getPcdEntryList().get(index).getPcdItemType().toString();\r
+                    }\r
 \r
 \r
+                    id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
+                    vid.addPcdCoded(id);\r
+                }\r
+            }\r
+        }\r
+        showTable();\r
     }\r
 \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("Pcd Coded");\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(PcdCoded inPcdCodeds) {\r
-       init();\r
-       this.pcds = inPcdCodeds;\r
-\r
-       if (this.pcds != null) {\r
-           if (this.pcds.getPcdEntryList().size() > 0) {\r
-               for (int index = 0; index < this.pcds.getPcdEntryList().size(); index++) {\r
-                   String arg0 = pcds.getPcdEntryList().get(index).getCName();\r
-                   String arg1 = pcds.getPcdEntryList().get(index).getTokenSpaceGuidCName();\r
-                   \r
-\r
-                   String arg2 = pcds.getPcdEntryList().get(index).getFeatureFlag();\r
-                   Vector<String> arg3 = Tools.convertListToVector(pcds.getPcdEntryList().get(index).getSupArchList());\r
-                   \r
-                   String arg4 = pcds.getPcdEntryList().get(index).getDefaultValue();\r
-                   String arg5 = pcds.getPcdEntryList().get(index).getHelpText();\r
-                   String arg6 = null;\r
-                   if (pcds.getPcdEntryList().get(index).getPcdItemType() != null) {\r
-                       arg6 = pcds.getPcdEntryList().get(index).getPcdItemType().toString();\r
-                   }\r
-                   \r
-                   id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
-                   vid.addPcdCoded(id);\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getPcdCodedName());\r
-       reloadListArea();\r
-   }\r
-    \r
     /**\r
      This is the default constructor\r
      \r
     /**\r
      This is the default constructor\r
      \r
@@ -440,19 +267,6 @@ public class ModulePCDs extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jTextFieldDefaultValue.setEnabled(!isView);\r
-            this.jComboBoxItemType.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -461,73 +275,62 @@ public class ModulePCDs extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\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
-            jLabelTokenSpaceGuid = new JLabel();\r
-            jLabelTokenSpaceGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelTokenSpaceGuid.setText("Token Space C_Name");\r
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(15, 110, 137, 19));\r
-            jLabelHelpText.setText("Help Text");\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("C_Name");\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelDefaultValue = new JLabel();\r
-            jLabelDefaultValue.setText("Default Value");\r
-            jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
-            jLabelItemType = new JLabel();\r
-            jLabelItemType.setText("Item Type");\r
-            jLabelItemType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 520));\r
-\r
-            jContentPane.add(jLabelItemType, null);\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(getJComboBoxCName(), null);\r
-            jContentPane.add(jLabelDefaultValue, null);\r
-            jContentPane.add(getJTextFieldDefaultValue(), null);\r
-            jContentPane.add(getJComboBoxItemType(), 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
-            jStarLabel3 = new StarLabel();\r
-            jStarLabel3.setLocation(new java.awt.Point(0, 110));\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(jStarLabel2, null);\r
-            jContentPane.add(jStarLabel3, null);\r
-            jContentPane.add(jLabelHelpText, null);\r
-            jContentPane.add(getJTextFieldHelpText(), 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(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-            jContentPane.add(jLabelTokenSpaceGuid, null);\r
-            jContentPane.add(getJTextFieldTokenSpaceGuid(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(getJScrollPaneArch(), null);\r
+            jContentPane.add(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        PCDsDlg dlg = new PCDsDlg(vid.getPcdCoded(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addPcdCoded(dlg.getId());\r
+            } else {\r
+                this.vid.setPcdCoded(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
     /**\r
-     This method initializes Usage type, Item type and Datum type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPcdDeclarationsFromWorkspace());\r
-        Tools.generateComboBoxByVector(jComboBoxItemType, ed.getVPcdItemTypes());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -538,83 +341,27 @@ public class ModulePCDs extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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 C_Name \r
-        //\r
-        if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
-            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
-                Log.err("Incorrect data type for C_Name");\r
-                return false;\r
-            }\r
-        }\r
-        \r
-        //\r
-        // Check TokenSpaceGuid\r
-        //\r
-        if (!isEmpty(this.jTextFieldTokenSpaceGuid.getText())) {\r
-            if (!DataValidation.isC_NameType(this.jTextFieldTokenSpaceGuid.getText())) {\r
-                Log.err("Incorrect data type for Token Space C_Name");\r
-                return false;\r
-            }\r
-        }\r
-        \r
-        //\r
-        // Check DefaultValue\r
-        //\r
-        if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
-            if (!DataValidation.isDefaultValueType(this.jTextFieldDefaultValue.getText())) {\r
-                Log.err("Incorrect data type for Default Value");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\r
             }\r
-        }\r
-        \r
-        //\r
-        // Check HelpText\r
-        //\r
-        if (isEmpty(this.jTextFieldHelpText.getText())) {\r
-            Log.err("Help Text couldn't be empty");\r
-            return false;\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.removePcdCoded(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-        \r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -640,7 +387,8 @@ public class ModulePCDs extends IInternalFrame {
                     if (!isEmpty(vid.getPcdCoded(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getPcdCoded(index).getFeatureFlag());\r
                     }\r
                     if (!isEmpty(vid.getPcdCoded(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getPcdCoded(index).getFeatureFlag());\r
                     }\r
-                    if (vid.getPcdCoded(index).getSupArchList() != null && vid.getPcdCoded(index).getSupArchList().size() > 0) {\r
+                    if (vid.getPcdCoded(index).getSupArchList() != null\r
+                        && vid.getPcdCoded(index).getSupArchList().size() > 0) {\r
                         p.setSupArchList(vid.getPcdCoded(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getPcdCoded(index).getValue())) {\r
                         p.setSupArchList(vid.getPcdCoded(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getPcdCoded(index).getValue())) {\r
@@ -664,6 +412,36 @@ public class ModulePCDs extends IInternalFrame {
         }\r
     }\r
 \r
         }\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -675,188 +453,12 @@ public class ModulePCDs extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jComboBoxCName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jTextFieldTokenSpaceGuid, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jComboBoxItemType, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jTextFieldDefaultValue, 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
+        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
-    private PcdCodedIdentification getCurrentPcdCoded() {\r
-        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
-        String arg1 = this.jTextFieldTokenSpaceGuid.getText();\r
-        \r
-\r
-        String arg2 = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arg3 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        \r
-        String arg4 = this.jTextFieldDefaultValue.getText();\r
-        String arg5 = this.jTextFieldHelpText.getText();\r
-        String arg6 = this.jComboBoxItemType.getSelectedItem().toString();\r
-        id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\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.addPcdCoded(getCurrentPcdCoded());\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.removePcdCoded(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.updatePcdCoded(getCurrentPcdCoded(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getPcdCoded(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.jComboBoxCName.setSelectedItem(vid.getPcdCoded(intSelectedItemId).getName());\r
-           this.jTextFieldTokenSpaceGuid.setText(vid.getPcdCoded(intSelectedItemId).getGuid());\r
-           \r
-           this.jTextFieldDefaultValue.setText(vid.getPcdCoded(intSelectedItemId).getValue());\r
-           this.jTextFieldHelpText.setText(vid.getPcdCoded(intSelectedItemId).getHelp());\r
-           this.jComboBoxItemType.setSelectedItem(vid.getPcdCoded(intSelectedItemId).getType());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getPcdCoded(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getPcdCoded(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.getPcdCoded(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
 }\r
index 3ff3d4ad6d4f5fe57b0330a7cbcae1bc3c82efaa..661f71f7283d9f63385501663593a0cc78ae8993 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.ActionEvent;\r
 import java.awt.event.ComponentEvent;\r
-import java.awt.event.ItemEvent;\r
-import java.awt.event.ItemListener;\r
+import java.awt.event.MouseEvent;\r
 import java.util.Vector;\r
 \r
 import javax.swing.JButton;\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.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
 \r
-import org.tianocore.PackageDependenciesDocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.PackageDependenciesDocument.PackageDependencies;\r
 import org.tianocore.PackageDependenciesDocument.PackageDependencies.Package;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.PackageDependenciesDocument.PackageDependencies;\r
 import org.tianocore.PackageDependenciesDocument.PackageDependencies.Package;\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.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.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.PackageDependencies.PackageDependenciesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.PackageDepDlg;\r
 import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
 import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
 \r
 import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
 import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
 \r
@@ -53,7 +50,7 @@ import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
 \r
 \r
  **/\r
 \r
 \r
  **/\r
-public class ModulePackageDependencies extends IInternalFrame implements ItemListener {\r
+public class ModulePackageDependencies extends IInternalFrame {\r
 \r
     ///\r
     /// Define class Serial Version UID\r
 \r
     ///\r
     /// Define class Serial Version UID\r
@@ -65,30 +62,6 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelPackageName = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private JComboBox jComboBoxPackageName = null;\r
-\r
-    private JLabel jLabelPackageGuid = null;\r
-\r
-    private JTextField jTextFieldPackageGuid = null;\r
-\r
-    private JButton jButtonGenerateGuid = null;\r
-\r
-    private JLabel jLabelPackageVersion = null;\r
-\r
-    private JTextField jTextFieldPackageVersion = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -97,127 +70,30 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JLabel jLabelArch = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
 \r
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
 \r
-    private PackageDependenciesIdentification id = null;\r
+    private PackageDependencies pd = null;\r
 \r
 \r
-    private PackageDependenciesVector vid = new PackageDependenciesVector();\r
+    private PackageDependenciesIdentification pdid = null;\r
 \r
 \r
-    private PackageDependenciesDocument.PackageDependencies packageDependencies = null;\r
+    private PackageDependenciesVector vid = new PackageDependenciesVector();\r
 \r
     private WorkspaceTools wt = new WorkspaceTools();\r
 \r
     private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
 \r
 \r
     private WorkspaceTools wt = new WorkspaceTools();\r
 \r
     private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
 \r
-    /**\r
-     * This method initializes jComboBoxPackageName    \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxPackageName() {\r
-        if (jComboBoxPackageName == null) {\r
-            jComboBoxPackageName = new JComboBox();\r
-            jComboBoxPackageName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxPackageName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxPackageName.setToolTipText("If your Module requires a package list that here.");\r
-            jComboBoxPackageName.addItemListener(this);\r
-        }\r
-        return jComboBoxPackageName;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldPackageGuid   \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldPackageGuid() {\r
-        if (jTextFieldPackageGuid == null) {\r
-            jTextFieldPackageGuid = new JTextField();\r
-            jTextFieldPackageGuid.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jTextFieldPackageGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldPackageGuid.setEditable(false);\r
-        }\r
-        return jTextFieldPackageGuid;\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, 35, 65, 20));\r
-            jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
-            jButtonGenerateGuid.setText("GEN");\r
-            jButtonGenerateGuid.addActionListener(this);\r
-            jButtonGenerateGuid.setVisible(false);\r
-        }\r
-        return jButtonGenerateGuid;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldPackageVersion        \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldPackageVersion() {\r
-        if (jTextFieldPackageVersion == null) {\r
-            jTextFieldPackageVersion = new JTextField();\r
-            jTextFieldPackageVersion.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
-            jTextFieldPackageVersion.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldPackageVersion\r
-                                    .setToolTipText("If this module depends on a specific version of a package, enter the package version here.  If the module can use the latest version that does not break backward compatibility, leave this field blank");\r
-        }\r
-        return jTextFieldPackageVersion;\r
-    }\r
+    private IDefaultTableModel model = null;\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
-\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -228,7 +104,7 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     private JButton getJButtonAdd() {\r
         if (jButtonAdd == null) {\r
             jButtonAdd = new JButton();\r
     private JButton getJButtonAdd() {\r
         if (jButtonAdd == null) {\r
             jButtonAdd = new JButton();\r
-            jButtonAdd.setBounds(new java.awt.Rectangle(230, 195, 80, 20));\r
+            jButtonAdd.setBounds(new java.awt.Rectangle(230, 445, 80, 20));\r
             jButtonAdd.setText("Add");\r
             jButtonAdd.addActionListener(this);\r
             jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));\r
             jButtonAdd.setText("Add");\r
             jButtonAdd.addActionListener(this);\r
             jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));\r
@@ -245,7 +121,7 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     private JButton getJButtonRemove() {\r
         if (jButtonRemove == null) {\r
             jButtonRemove = new JButton();\r
     private JButton getJButtonRemove() {\r
         if (jButtonRemove == null) {\r
             jButtonRemove = new JButton();\r
-            jButtonRemove.setBounds(new java.awt.Rectangle(400, 195, 80, 20));\r
+            jButtonRemove.setBounds(new java.awt.Rectangle(400, 445, 80, 20));\r
             jButtonRemove.setText("Remove");\r
             jButtonRemove.addActionListener(this);\r
             jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));\r
             jButtonRemove.setText("Remove");\r
             jButtonRemove.addActionListener(this);\r
             jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));\r
@@ -262,29 +138,14 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     private JButton getJButtonUpdate() {\r
         if (jButtonUpdate == null) {\r
             jButtonUpdate = new JButton();\r
     private JButton getJButtonUpdate() {\r
         if (jButtonUpdate == null) {\r
             jButtonUpdate = new JButton();\r
-            jButtonUpdate.setBounds(new java.awt.Rectangle(315, 195, 80, 20));\r
+            jButtonUpdate.setBounds(new java.awt.Rectangle(315, 445, 80, 20));\r
             jButtonUpdate.setPreferredSize(new java.awt.Dimension(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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -299,50 +160,69 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     }\r
 \r
     /**\r
     }\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
+     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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jTable  \r
      \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JTable  \r
      **/\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("Packge Name");\r
+            model.addColumn("Package Version");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return iCheckBoxListArch;\r
+        return jTable;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \r
+     This is the default constructor\r
      \r
      **/\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
+    public ModulePackageDependencies() {\r
+        super();\r
+        init();\r
+        this.setVisible(true);\r
     }\r
 \r
     }\r
 \r
-    public static void main(String[] args) {\r
-\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param \r
+     \r
+     **/\r
+    public ModulePackageDependencies(OpeningModuleType inOmt) {\r
+        super();\r
+        this.omt = inOmt;\r
+        this.msa = omt.getXmlMsa();\r
+        init(msa.getPackageDependencies());\r
+        this.setVisible(true);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -352,9 +232,7 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     private void init() {\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
     private void init() {\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
-        this.setTitle("Includes");\r
-        initFrame();\r
-        this.setViewMode(false);\r
+        this.setTitle("Package Dependencies");\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -366,14 +244,14 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
      **/\r
     private void init(PackageDependencies inPackageDependencies) {\r
         init();\r
      **/\r
     private void init(PackageDependencies inPackageDependencies) {\r
         init();\r
-        this.packageDependencies = inPackageDependencies;\r
+        this.pd = inPackageDependencies;\r
 \r
 \r
-        if (this.packageDependencies != null) {\r
-            if (this.packageDependencies.getPackageList().size() > 0) {\r
-                for (int index = 0; index < this.packageDependencies.getPackageList().size(); index++) {\r
+        if (this.pd != null) {\r
+            if (this.pd.getPackageList().size() > 0) {\r
+                for (int index = 0; index < this.pd.getPackageList().size(); index++) {\r
                     String arg0 = "";\r
                     String arg0 = "";\r
-                    String arg1 = packageDependencies.getPackageList().get(index).getPackageVersion();\r
-                    String arg2 = packageDependencies.getPackageList().get(index).getPackageGuid();\r
+                    String arg1 = pd.getPackageList().get(index).getPackageVersion();\r
+                    String arg2 = pd.getPackageList().get(index).getPackageGuid();\r
                     //\r
                     // If no guid, skip current item\r
                     //\r
                     //\r
                     // If no guid, skip current item\r
                     //\r
@@ -385,56 +263,14 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
                             arg0 = vPackage.get(indexJ).getName();\r
                         }\r
                     }\r
                             arg0 = vPackage.get(indexJ).getName();\r
                         }\r
                     }\r
-                    String arg3 = packageDependencies.getPackageList().get(index).getFeatureFlag();\r
-                    Vector<String> arg4 = Tools.convertListToVector(packageDependencies.getPackageList().get(index)\r
-                                                                                       .getSupArchList());\r
-                    id = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
-                    vid.addPackageDependencies(id);\r
+                    String arg3 = pd.getPackageList().get(index).getFeatureFlag();\r
+                    Vector<String> arg4 = Tools.convertListToVector(pd.getPackageList().get(index).getSupArchList());\r
+                    pdid = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+                    vid.addPackageDependencies(pdid);\r
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getPackageDependenciesName());\r
-        reloadListArea();\r
-    }\r
-\r
-    /**\r
-     This is the default constructor\r
-     \r
-     **/\r
-    public ModulePackageDependencies() {\r
-        super();\r
-        init();\r
-        this.setVisible(true);\r
-    }\r
-\r
-    /**\r
-     This is the override constructor\r
-     \r
-     **/\r
-    public ModulePackageDependencies(OpeningModuleType inOmt) {\r
-        super();\r
-        this.omt = inOmt;\r
-        this.msa = omt.getXmlMsa();\r
-        init(msa.getPackageDependencies());\r
-        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.jComboBoxPackageName.setEnabled(!isView);\r
-            this.jButtonAdd.setEnabled(!isView);\r
-            this.jButtonUpdate.setEnabled(!isView);\r
-            this.jButtonRemove.setEnabled(!isView);\r
-        }\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -445,146 +281,96 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\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("Sup Arch List");\r
-            jLabelPackageVersion = new JLabel();\r
-            jLabelPackageVersion.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelPackageVersion.setText("Package Version");\r
-            jLabelPackageGuid = new JLabel();\r
-            jLabelPackageGuid.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelPackageGuid.setText("Package Guid");\r
-            jLabelPackageName = new JLabel();\r
-            jLabelPackageName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelPackageName.setText("Package Name");\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 470));\r
-\r
-            jContentPane.add(jLabelPackageName, null);\r
-            jStarLabel1 = new StarLabel();\r
-            jStarLabel1.setLocation(new java.awt.Point(0, 35));\r
-\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(getJComboBoxPackageName(), null);\r
-            jContentPane.add(jLabelPackageGuid, null);\r
-            jContentPane.add(getJTextFieldPackageGuid(), null);\r
-            jContentPane.add(getJButtonGenerateGuid(), null);\r
-            jContentPane.add(jLabelPackageVersion, null);\r
-            jContentPane.add(getJTextFieldPackageVersion(), null);\r
-\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), 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(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(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
         }\r
         return jContentPane;\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
+    private void showEdit(int index) {\r
+        PackageDepDlg pdd = new PackageDepDlg(vid.getPackageDependencies(index), new IFrame());\r
+        int result = pdd.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addPackageDependencies(pdd.getPdid());\r
+            } else {\r
+                this.vid.setPackageDependencies(pdd.getPdid(), index);\r
             }\r
             }\r
-            addToList();\r
+            this.showTable();\r
+            this.save();\r
+            pdd.dispose();\r
         }\r
         }\r
-        if (arg0.getSource() == jButtonRemove) {\r
-            removeFromList();\r
-        }\r
-        if (arg0.getSource() == jButtonUpdate) {\r
-            if (!checkAdd()) {\r
-                return;\r
-            }\r
-            updateForList();\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            pdd.dispose();\r
         }\r
     }\r
 \r
     /**\r
         }\r
     }\r
 \r
     /**\r
-     This method initializes Usage type, Package type and Arch type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        EnumerationData ed = new EnumerationData();\r
-\r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
-\r
-        for (int index = 0; index < vPackage.size(); index++) {\r
-            jComboBoxPackageName.addItem(vPackage.elementAt(index).getName());\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
-        //jComboBoxPackageName.addItemListener(this);\r
     }\r
 \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
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    public boolean check() {\r
-        return true;\r
-    }\r
+    private void showTable() {\r
+        clearAll();\r
 \r
 \r
-    /**\r
-     Data validation for all fields before add current item to Vector\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 PackageGuid \r
-        //\r
-        if (!isEmpty(this.jTextFieldPackageGuid.getText())) {\r
-            if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {\r
-                Log.err("Incorrect data type for Package Guid");\r
-                return false;\r
+        if (vid.size() > 0) {\r
+            for (int index = 0; index < vid.size(); index++) {\r
+                model.addRow(vid.toStringVector(index));\r
             }\r
         }\r
             }\r
         }\r
-        \r
-        //\r
-        // Check PackageVersion \r
-        //\r
-        if (!isEmpty(this.jTextFieldPackageVersion.getText())) {\r
-            if (!DataValidation.isVersion(this.jTextFieldPackageVersion.getText())) {\r
-                Log.err("Incorrect data type for Package Version");\r
-                return false;\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\r
+        //this.jScrollPane.setViewportView(this.jTable);\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
+            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
             }\r
+            showEdit(selectedRow);\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
+        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.removePackageDependencies(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-        \r
-        return true;\r
     }\r
     }\r
+\r
     /**\r
      Save all components of Includes\r
      if exists includes, set the value directly\r
     /**\r
      Save all components of Includes\r
      if exists includes, set the value directly\r
@@ -598,7 +384,7 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
             //\r
             int count = this.vid.size();\r
 \r
             //\r
             int count = this.vid.size();\r
 \r
-            this.packageDependencies = PackageDependencies.Factory.newInstance();\r
+            this.pd = PackageDependencies.Factory.newInstance();\r
             if (count > 0) {\r
                 for (int index = 0; index < count; index++) {\r
                     Package p = Package.Factory.newInstance();\r
             if (count > 0) {\r
                 for (int index = 0; index < count; index++) {\r
                     Package p = Package.Factory.newInstance();\r
@@ -617,11 +403,11 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
                         p.setSupArchList(vid.getPackageDependencies(index).getSupArchList());\r
                     }\r
 \r
                         p.setSupArchList(vid.getPackageDependencies(index).getSupArchList());\r
                     }\r
 \r
-                    this.packageDependencies.addNewPackage();\r
-                    this.packageDependencies.setPackageArray(index, p);\r
+                    this.pd.addNewPackage();\r
+                    this.pd.setPackageArray(index, p);\r
                 }\r
             }\r
                 }\r
             }\r
-            this.msa.setPackageDependencies(packageDependencies);\r
+            this.msa.setPackageDependencies(pd);\r
             this.omt.setSaved(false);\r
         } catch (Exception e) {\r
             e.printStackTrace();\r
             this.omt.setSaved(false);\r
         } catch (Exception e) {\r
             e.printStackTrace();\r
@@ -630,198 +416,52 @@ public class ModulePackageDependencies extends IInternalFrame implements ItemLis
     }\r
 \r
     /* (non-Javadoc)\r
     }\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
      */\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(this.jComboBoxPackageName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldPackageGuid, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldPackageVersion, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.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
-        relocateComponentX(this.jButtonGenerateGuid, intCurrentWidth, intPreferredWidth,\r
-                           DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
-    }\r
-\r
-    private PackageDependenciesIdentification getCurrentPackageDependencies() {\r
-        String arg0 = this.jComboBoxPackageName.getSelectedItem().toString();\r
-        String arg1 = this.jTextFieldPackageVersion.getText();\r
-        String arg2 = this.jTextFieldPackageGuid.getText();\r
-\r
-        String arg3 = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arg4 = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        id = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\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.addPackageDependencies(getCurrentPackageDependencies());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removePackageDependencies(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updatePackageDependencies(getCurrentPackageDependencies(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getPackageDependencies(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.jComboBoxPackageName.setSelectedItem(vid.getPackageDependencies(intSelectedItemId).getName());\r
-            this.jTextFieldPackageVersion.setText(vid.getPackageDependencies(intSelectedItemId).getVersion());\r
-            this.jTextFieldPackageGuid.setText(vid.getPackageDependencies(intSelectedItemId).getGuid());\r
-\r
-            jTextFieldFeatureFlag.setText(vid.getPackageDependencies(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getPackageDependencies(intSelectedItemId).getSupArchList());\r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\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.getPackageDependencies(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
-        }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      *\r
-     * Reflesh the frame when selected item changed\r
-     * \r
      */\r
      */\r
-    public void itemStateChanged(ItemEvent arg0) {\r
-        if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\r
-        }\r
-        if (arg0.getSource() == this.jComboBoxPackageName && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            for (int index = 0; index < vPackage.size(); index++) {\r
-                if (this.jComboBoxPackageName.getSelectedItem().toString().equals(vPackage.get(index).getName())) {\r
-                    this.jTextFieldPackageGuid.setText(vPackage.get(index).getGuid());\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
             }\r
         }\r
     }\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
+     */\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
 }\r
index c0e17aa4b4026f76aa90652399e962856127ed17..aef4addfd60b4f8ffaea8dce0e0eea118cc9826b 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.PPIsDocument;\r
 import org.tianocore.PpiNotifyUsage;\r
 \r
 import org.tianocore.PPIsDocument;\r
 import org.tianocore.PpiNotifyUsage;\r
@@ -35,17 +35,16 @@ import org.tianocore.PPIsDocument.PPIs;
 import org.tianocore.PPIsDocument.PPIs.Ppi;\r
 import org.tianocore.PPIsDocument.PPIs.PpiNotify;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.PPIsDocument.PPIs.Ppi;\r
 import org.tianocore.PPIsDocument.PPIs.PpiNotify;\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.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.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.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.Ppis.PpisIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Ppis.PpisVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Ppis.PpisIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Ppis.PpisVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.PpisDlg;\r
 \r
 /**\r
  The class is used to create, update Ppi of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update Ppi of MSA/MBD file\r
@@ -64,32 +63,6 @@ public class ModulePpis extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JComboBox jComboBoxCName = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JLabel jLabelUsage = null;\r
-\r
-    private JComboBox jComboBoxUsage = null;\r
-\r
-    private JLabel jLabelPpiType = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private StarLabel jStarLabel2 = null;\r
-\r
-    private JComboBox jComboBoxPpiType = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -98,20 +71,13 @@ public class ModulePpis extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-    \r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \r
     //\r
     // Not used by UI\r
     //\r
-    private int intSelectedItemId = 0;\r
 \r
     private OpeningModuleType omt = null;\r
 \r
 \r
     private OpeningModuleType omt = null;\r
 \r
@@ -123,86 +89,11 @@ public class ModulePpis extends IInternalFrame {
 \r
     private PpisVector vid = new PpisVector();\r
 \r
 \r
     private PpisVector vid = new PpisVector();\r
 \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
-\r
     private EnumerationData ed = new EnumerationData();\r
 \r
     private EnumerationData ed = new EnumerationData();\r
 \r
-    /**\r
-     This method initializes jTextFieldC_Name \r
-     \r
-     @return javax.swing.JTextField jTextFieldC_Name\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxCName() {\r
-        if (jComboBoxCName == null) {\r
-            jComboBoxCName = new JComboBox();\r
-            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxCName;\r
-    }\r
-\r
-    /**\r
-     This method initializes jTextFieldFeatureFlag \r
-     \r
-     @return javax.swing.JTextField jTextFieldFeatureFlag\r
-     \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 jComboBox\r
-     \r
-     @return javax.swing.JComboBox jComboBoxUsage\r
-     \r
-     **/\r
-    private JComboBox getJComboBox() {\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 jComboBoxPpiType        \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxPpiType() {\r
-        if (jComboBoxPpiType == null) {\r
-            jComboBoxPpiType = new JComboBox();\r
-            jComboBoxPpiType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxPpiType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxPpiType.addItemListener(this);\r
-        }\r
-        return jComboBoxPpiType;\r
-    }\r
+    private IDefaultTableModel model = null;\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -249,27 +140,12 @@ public class ModulePpis 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -284,135 +160,108 @@ public class ModulePpis extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jTable  \r
      \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JTable  \r
      **/\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
         }\r
-        return iCheckBoxListArch;\r
+        return jTable;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \r
+     This method initializes this\r
      \r
      **/\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("Ppis");\r
     }\r
     }\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, 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
 \r
-    public static void main(String[] args) {\r
+     **/\r
+    private void init(PPIs inPpis) {\r
+        init();\r
+        this.ppis = inPpis;\r
+\r
+        if (this.ppis != null) {\r
+            if (this.ppis.getPpiList().size() > 0) {\r
+                for (int index = 0; index < this.ppis.getPpiList().size(); index++) {\r
+                    String arg0 = ppis.getPpiList().get(index).getPpiCName();\r
+                    String arg1 = ed.getVPpiType().get(0);\r
+                    String arg2 = null;\r
+                    if (ppis.getPpiList().get(index).getUsage() != null) {\r
+                        arg2 = ppis.getPpiList().get(index).getUsage().toString();\r
+                    }\r
+\r
+                    String arg3 = ppis.getPpiList().get(index).getFeatureFlag();\r
+                    Vector<String> arg4 = Tools.convertListToVector(ppis.getPpiList().get(index).getSupArchList());\r
+                    String arg5 = ppis.getPpiList().get(index).getHelpText();\r
+\r
+                    id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+                    vid.addPpis(id);\r
+                }\r
+            }\r
+            if (this.ppis.getPpiNotifyList().size() > 0) {\r
+                for (int index = 0; index < this.ppis.getPpiNotifyList().size(); index++) {\r
+                    String arg0 = ppis.getPpiNotifyList().get(index).getPpiNotifyCName();\r
+                    String arg1 = ed.getVPpiType().get(1);\r
+                    String arg2 = null;\r
+                    if (ppis.getPpiNotifyList().get(index).getUsage() != null) {\r
+                        arg2 = ppis.getPpiNotifyList().get(index).getUsage().toString();\r
+                    }\r
+\r
+                    String arg3 = ppis.getPpiNotifyList().get(index).getFeatureFlag();\r
+                    Vector<String> arg4 = Tools\r
+                                               .convertListToVector(ppis.getPpiNotifyList().get(index).getSupArchList());\r
+                    String arg5 = ppis.getPpiNotifyList().get(index).getHelpText();\r
 \r
 \r
+                    id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+                    vid.addPpis(id);\r
+                }\r
+            }\r
+        }\r
+        showTable();\r
     }\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("Ppis");\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(PPIs inPpis) {\r
-       init();\r
-       this.ppis = inPpis;\r
-\r
-       if (this.ppis != null) {\r
-           if (this.ppis.getPpiList().size() > 0) {\r
-               for (int index = 0; index < this.ppis.getPpiList().size(); index++) {\r
-                   String arg0 = ppis.getPpiList().get(index).getPpiCName();\r
-                   String arg1 = ed.getVPpiType().get(0);\r
-                   String arg2 = null;\r
-                   if (ppis.getPpiList().get(index).getUsage() != null) {\r
-                       arg2 = ppis.getPpiList().get(index).getUsage().toString();    \r
-                   }\r
-                   \r
-                   String arg3 = ppis.getPpiList().get(index).getFeatureFlag();\r
-                   Vector<String> arg4 = Tools.convertListToVector(ppis.getPpiList().get(index)\r
-                                                                            .getSupArchList());\r
-                   String arg5 = ppis.getPpiList().get(index).getHelpText();\r
-                   \r
-                   id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-                   vid.addPpis(id);\r
-               }\r
-           }\r
-           if (this.ppis.getPpiNotifyList().size() > 0) {\r
-               for (int index = 0; index < this.ppis.getPpiNotifyList().size(); index++) {\r
-                   String arg0 = ppis.getPpiNotifyList().get(index).getPpiNotifyCName();\r
-                   String arg1 = ed.getVPpiType().get(1);\r
-                   String arg2 = null;\r
-                   if (ppis.getPpiNotifyList().get(index).getUsage() != null) {\r
-                       arg2 = ppis.getPpiNotifyList().get(index).getUsage().toString();    \r
-                   }\r
-\r
-                   String arg3 = ppis.getPpiNotifyList().get(index).getFeatureFlag();\r
-                   Vector<String> arg4 = Tools.convertListToVector(ppis.getPpiNotifyList().get(index)\r
-                                                                            .getSupArchList());\r
-                   String arg5 = ppis.getPpiNotifyList().get(index).getHelpText();\r
-                   \r
-                   id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-                   vid.addPpis(id);\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getPpisName());\r
-       reloadListArea();\r
-   }\r
 \r
     /**\r
      This is the default constructor\r
 \r
     /**\r
      This is the default constructor\r
@@ -438,20 +287,6 @@ public class ModulePpis extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jComboBoxCName.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-            this.jTextFieldFeatureFlag.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -460,70 +295,62 @@ public class ModulePpis extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
-            jLabelArch.setText("Arch");\r
-            jLabelPpiType = new JLabel();\r
-            jLabelPpiType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelPpiType.setText("Ppi Type");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("C_Name Type");\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 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 = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 495));\r
-\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(getJComboBoxCName(), null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBox(), null);\r
-            jContentPane.add(getJComboBoxPpiType(), null);\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(jLabelPpiType, 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
-\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(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
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        PpisDlg dlg = new PpisDlg(vid.getPpis(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addPpis(dlg.getId());\r
+            } else {\r
+                this.vid.setPpis(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
     /**\r
-     This method initializes Usage type\r
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        EnumerationData ed = new EnumerationData();\r
-\r
-        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPpiDeclarationsFromWorkspace());\r
-        Tools.generateComboBoxByVector(jComboBoxPpiType, ed.getVPpiType());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -534,55 +361,27 @@ public class ModulePpis extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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.jComboBoxCName.getSelectedItem().toString())) {\r
-            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
-                Log.err("Incorrect data type for Ppi/PpiNotify Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removePpis(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -651,6 +450,36 @@ public class ModulePpis extends IInternalFrame {
         }\r
     }\r
 \r
         }\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -662,189 +491,12 @@ public class ModulePpis extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jComboBoxPpiType, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jComboBoxCName, 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
+        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
-    private PpisIdentification getCurrentPpis() {\r
-        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
-        String arg1 = this.jComboBoxPpiType.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
-        \r
-        id = new PpisIdentification(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.addPpis(getCurrentPpis());\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.removePpis(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.updatePpis(getCurrentPpis(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getPpis(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.jComboBoxCName.setSelectedItem(vid.getPpis(intSelectedItemId).getName());\r
-           this.jComboBoxPpiType.setSelectedItem(vid.getPpis(intSelectedItemId).getType());\r
-           this.jComboBoxUsage.setSelectedItem(vid.getPpis(intSelectedItemId).getUsage());\r
-           this.jTextFieldHelpText.setText(vid.getPpis(intSelectedItemId).getHelp());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getPpis(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getPpis(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.getPpis(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
-       if (arg0.getSource() == this.jComboBoxPpiType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-           if (this.jComboBoxPpiType.getSelectedItem().toString().equals(ed.getVPpiType().get(0))) {\r
-               Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiUsage());\r
-           } else {\r
-               Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiNotifyUsage());\r
-           }\r
-       }\r
-   }\r
 }\r
 }\r
index 6c09aa19090b1fcfaa9c8ffdabe7914cb33a61aa..ed55f3ce73e62a1e16d3cf782027404ff6c57a89 100644 (file)
 \r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
 \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.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 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.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.ProtocolNotifyUsage;\r
 import org.tianocore.ProtocolUsage;\r
 \r
 import org.tianocore.ProtocolNotifyUsage;\r
 import org.tianocore.ProtocolUsage;\r
@@ -36,17 +36,16 @@ import org.tianocore.ProtocolsDocument.Protocols;
 import org.tianocore.ProtocolsDocument.Protocols.Protocol;\r
 import org.tianocore.ProtocolsDocument.Protocols.ProtocolNotify;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.ProtocolsDocument.Protocols.Protocol;\r
 import org.tianocore.ProtocolsDocument.Protocols.ProtocolNotify;\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.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.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.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.Protocols.ProtocolsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Protocols.ProtocolsVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Protocols.ProtocolsIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Protocols.ProtocolsVector;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.ProtocolsDlg;\r
 \r
 /**\r
  The class is used to create, update Protocol of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update Protocol of MSA/MBD file\r
@@ -67,28 +66,6 @@ public class ModuleProtocols extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelC_Name = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = 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 jLabelProtocolType = 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -97,25 +74,13 @@ public class ModuleProtocols extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JComboBox jComboBoxProtocolType = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JComboBox jComboBoxCName = 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
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -126,56 +91,11 @@ public class ModuleProtocols extends IInternalFrame {
 \r
     private ProtocolsVector vid = new ProtocolsVector();\r
 \r
 \r
     private ProtocolsVector vid = new ProtocolsVector();\r
 \r
-    private WorkspaceTools wt = new WorkspaceTools();\r
-\r
     private EnumerationData ed = new EnumerationData();\r
 \r
     private EnumerationData ed = new EnumerationData();\r
 \r
-    /**\r
-     This method initializes jTextFieldFeatureFlag \r
-     \r
-     @return javax.swing.JTextField jTextFieldFeatureFlag\r
-     \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 jComboBoxUsage \r
-     \r
-     @return javax.swing.JComboBox jComboBoxUsage\r
-     \r
-     **/\r
-    private JComboBox getJComboBoxProtocolUsage() {\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
+    private IDefaultTableModel model = null;\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -222,27 +142,12 @@ public class ModuleProtocols 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -257,94 +162,43 @@ public class ModuleProtocols extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jComboBoxProtocolType   \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxProtocolType() {\r
-        if (jComboBoxProtocolType == null) {\r
-            jComboBoxProtocolType = new JComboBox();\r
-            jComboBoxProtocolType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jComboBoxProtocolType.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jComboBoxProtocolType.addItemListener(this);\r
-            jComboBoxProtocolType.setToolTipText("Select Protocol Type");\r
-        }\r
-        return jComboBoxProtocolType;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jComboBoxCName  \r
-     *         \r
-     * @return javax.swing.JComboBox   \r
-     */\r
-    private JComboBox getJComboBoxCName() {\r
-        if (jComboBoxCName == null) {\r
-            jComboBoxCName = new JComboBox();\r
-            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-\r
-        }\r
-        return jComboBoxCName;\r
-    }\r
-\r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
+     This method initializes jScrollPaneTable    \r
      \r
      \r
-     @return ICheckBoxList   \r
+     @return javax.swing.JScrollPane \r
      **/\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 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
         }\r
-        return iCheckBoxListArch;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-     \r
-     @return javax.swing.JScrollPane \r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \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
+    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
         }\r
-        return jScrollPaneArch;\r
+        return jTable;\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, 85, 320, 20));\r
-           jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));\r
-       }\r
-       return jTextFieldHelpText;\r
-   }\r
 \r
     public static void main(String[] args) {\r
 \r
 \r
     public static void main(String[] args) {\r
 \r
@@ -358,8 +212,6 @@ public class ModuleProtocols extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Protocols");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Protocols");\r
-        initFrame();\r
-        this.setViewMode(false);\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -380,9 +232,9 @@ public class ModuleProtocols extends IInternalFrame {
                     String arg1 = ed.getVProtocolType().get(0);\r
                     String arg2 = null;\r
                     if (protocols.getProtocolList().get(index).getUsage() != null) {\r
                     String arg1 = ed.getVProtocolType().get(0);\r
                     String arg2 = null;\r
                     if (protocols.getProtocolList().get(index).getUsage() != null) {\r
-                        arg2 = protocols.getProtocolList().get(index).getUsage().toString();    \r
+                        arg2 = protocols.getProtocolList().get(index).getUsage().toString();\r
                     }\r
                     }\r
-                    \r
+\r
                     String arg3 = protocols.getProtocolList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(protocols.getProtocolList().get(index)\r
                                                                              .getSupArchList());\r
                     String arg3 = protocols.getProtocolList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(protocols.getProtocolList().get(index)\r
                                                                              .getSupArchList());\r
@@ -397,9 +249,9 @@ public class ModuleProtocols extends IInternalFrame {
                     String arg1 = ed.getVProtocolType().get(1);\r
                     String arg2 = null;\r
                     if (protocols.getProtocolNotifyList().get(index).getUsage() != null) {\r
                     String arg1 = ed.getVProtocolType().get(1);\r
                     String arg2 = null;\r
                     if (protocols.getProtocolNotifyList().get(index).getUsage() != null) {\r
-                        arg2 = protocols.getProtocolNotifyList().get(index).getUsage().toString();    \r
+                        arg2 = protocols.getProtocolNotifyList().get(index).getUsage().toString();\r
                     }\r
                     }\r
-                    \r
+\r
                     String arg3 = protocols.getProtocolNotifyList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(protocols.getProtocolNotifyList().get(index)\r
                                                                              .getSupArchList());\r
                     String arg3 = protocols.getProtocolNotifyList().get(index).getFeatureFlag();\r
                     Vector<String> arg4 = Tools.convertListToVector(protocols.getProtocolNotifyList().get(index)\r
                                                                              .getSupArchList());\r
@@ -409,11 +261,7 @@ public class ModuleProtocols extends IInternalFrame {
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vid.getProtocolsName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -440,19 +288,6 @@ public class ModuleProtocols extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jComboBoxUsage.setEnabled(!isView);\r
-            this.jTextFieldFeatureFlag.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -461,69 +296,62 @@ public class ModuleProtocols extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));\r
-            jLabelHelpText.setText("Help Text");\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
-            jLabelArch.setText("Arch Type");\r
-            jLabelProtocolType = new JLabel();\r
-            jLabelProtocolType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
-            jLabelProtocolType.setText("Protocol Type");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
-            jLabelC_Name = new JLabel();\r
-            jLabelC_Name.setText("C_Name Type");\r
-            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 495));\r
-\r
-            jContentPane.add(jLabelC_Name, null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelUsage, null);\r
-            jContentPane.add(getJComboBoxProtocolUsage(), null);\r
-            jContentPane.add(jLabelProtocolType, null);\r
-\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(jLabelArch, 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(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-\r
-            jContentPane.add(getJComboBoxProtocolType(), null);\r
-            jContentPane.add(getJComboBoxCName(), 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
         return jContentPane;\r
     }\r
+    \r
+    private void showEdit(int index) {\r
+        ProtocolsDlg dlg = new ProtocolsDlg(vid.getProtocols(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addProtocols(dlg.getId());\r
+            } else {\r
+                this.vid.setProtocols(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
 \r
     /**\r
-     This method initializes Usage type\r
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxProtocolType, ed.getVProtocolType());\r
-        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllProtocolDeclarationsFromWorkspace());\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVProtocolUsage());\r
+    private void showTable() {\r
+        clearAll();\r
 \r
 \r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -534,55 +362,27 @@ public class ModuleProtocols extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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.jComboBoxCName.getSelectedItem().toString())) {\r
-            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
-                Log.err("Incorrect data type for Protocol/ProtocolNotify Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeProtocols(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -650,204 +450,54 @@ public class ModuleProtocols extends IInternalFrame {
             Log.err("Update Protocols", e.getMessage());\r
         }\r
     }\r
             Log.err("Update Protocols", e.getMessage());\r
         }\r
     }\r
-\r
+    \r
     /* (non-Javadoc)\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
      */\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(this.jComboBoxProtocolType, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jComboBoxCName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jComboBoxUsage, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldHelpText, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jScrollPaneArch, intCurrentWidth, intPreferredWidth);\r
-\r
-        resizeComponentWidth(this.jComboBoxList, intCurrentWidth, intPreferredWidth);\r
-        resizeComponent(this.jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);\r
-\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
-    }\r
-\r
-    private ProtocolsIdentification getCurrentProtocols() {\r
-        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
-        String arg1 = this.jComboBoxProtocolType.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 ProtocolsIdentification(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.addProtocols(getCurrentProtocols());\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
             return;\r
         }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vid.removeProtocols(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
             return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vid.updateProtocols(getCurrentProtocols(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vid.size(); index++) {\r
-            jComboBoxList.addItem(vid.getProtocols(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.jComboBoxCName.setSelectedItem(vid.getProtocols(intSelectedItemId).getName());\r
-            this.jComboBoxProtocolType.setSelectedItem(vid.getProtocols(intSelectedItemId).getType());\r
-            this.jComboBoxUsage.setSelectedItem(vid.getProtocols(intSelectedItemId).getUsage());\r
-            this.jTextFieldHelpText.setText(vid.getProtocols(intSelectedItemId).getHelp());\r
-            \r
-            jTextFieldFeatureFlag.setText(vid.getProtocols(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vid.getProtocols(intSelectedItemId).getSupArchList());\r
-            \r
-\r
         } else {\r
         } else {\r
+            selectedRow = lsm.getMinSelectionIndex();\r
         }\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.getProtocols(index).getName() + DataType.UNIX_LINE_SEPARATOR;\r
-        }\r
-        this.jTextAreaList.setText(strListItem);\r
     }\r
 \r
     /* (non-Javadoc)\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
      *\r
-     * Reflesh the frame when selected item changed\r
-     * \r
      */\r
      */\r
-    public void itemStateChanged(ItemEvent arg0) {\r
-        if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\r
-        }\r
-        if (arg0.getSource() == this.jComboBoxProtocolType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
-            if (this.jComboBoxProtocolType.getSelectedItem().toString().equals(ed.getVProtocolType().get(0))) {\r
-                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVProtocolUsage());\r
+    public void mouseClicked(MouseEvent arg0) {\r
+        if (arg0.getClickCount() == 2) {\r
+            if (this.selectedRow < 0) {\r
+                return;\r
             } else {\r
             } else {\r
-                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVProtocolNotifyUsage());\r
+                showEdit(selectedRow);\r
             }\r
         }\r
     }\r
             }\r
         }\r
     }\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
+     */\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
 }\r
index ec3c3b6bb7c40bb5d6b7a48f90f9ed915f7a3318..515017349b30a6bcec19ee4666e68bf52c451409 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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.JCheckBox;\r
 import java.util.Vector;\r
 \r
 import javax.swing.JButton;\r
 import javax.swing.JCheckBox;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JFileChooser;\r
-import javax.swing.JLabel;\r
 import javax.swing.JPanel;\r
 import javax.swing.JScrollPane;\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.SourceFilesDocument;\r
 import org.tianocore.FilenameDocument.Filename;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.SourceFilesDocument.SourceFiles;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 \r
 import org.tianocore.SourceFilesDocument;\r
 import org.tianocore.FilenameDocument.Filename;\r
 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.SourceFilesDocument.SourceFiles;\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.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.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.SourceFiles.SourceFilesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesVector;\r
-import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.SourceFilesDlg;\r
 \r
 /**\r
  The class is used to create, update SourceFile of MSA/MBD file\r
  It extends IInternalFrame\r
  \r
 \r
 /**\r
  The class is used to create, update SourceFile of MSA/MBD file\r
  It extends IInternalFrame\r
  \r
-\r
-\r
  **/\r
 public class ModuleSourceFiles extends IInternalFrame {\r
 \r
  **/\r
 public class ModuleSourceFiles extends IInternalFrame {\r
 \r
@@ -65,22 +60,8 @@ public class ModuleSourceFiles extends IInternalFrame {
     //\r
     private SourceFilesDocument.SourceFiles sourceFiles = null;\r
 \r
     //\r
     private SourceFilesDocument.SourceFiles sourceFiles = null;\r
 \r
-    private int intSelectedItemId = 0;\r
-\r
     private JPanel jContentPane = null;\r
 \r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelFileName = null;\r
-\r
-    private JTextField jTextFieldFileName = null;\r
-\r
-    private JButton jButtonOpenFile = null;\r
-\r
-    private JLabel jLabelToolChainFamily = null;\r
-\r
-    private StarLabel jStarLabel1 = null;\r
-\r
-    private JComboBox jComboBoxList = null;\r
-\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -89,92 +70,24 @@ public class ModuleSourceFiles extends IInternalFrame {
 \r
     private JCheckBox jCheckBoxArch = null;\r
 \r
 \r
     private JCheckBox jCheckBoxArch = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JTextArea jTextAreaList = null;\r
-\r
-    private JLabel jLabelArch = null;\r
-\r
     private JScrollPane jScrollPane = null;\r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JLabel jLabelTagName = null;\r
-\r
-    private JTextField jTextFieldTagName = null;\r
-\r
-    private JLabel jLabelToolCode = null;\r
-\r
-    private JTextField jTextFieldToolCode = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JTextField jTextFieldToolChainFamily = null;\r
-\r
-    private JLabel jLabelFeatureFlag = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private ICheckBoxList iCheckBoxListArch = null;\r
-\r
-    private JScrollPane jScrollPaneArch = null;\r
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\r
     private OpeningModuleType omt = null;\r
 \r
     //\r
     // Not used by UI\r
     //\r
     private OpeningModuleType omt = null;\r
-    \r
-    private ModuleSurfaceArea msa = null;\r
 \r
 \r
-    private SourceFilesIdentification sfid = null;\r
+    private ModuleSurfaceArea msa = null;\r
 \r
     private SourceFilesVector vSourceFiles = new SourceFilesVector();\r
 \r
 \r
     private SourceFilesVector vSourceFiles = new SourceFilesVector();\r
 \r
-    /**\r
-     This method initializes jTextFieldFileName \r
-     \r
-     @return javax.swing.JTextField jTextFieldFileName\r
-     \r
-     **/\r
-    private JTextField getJTextFieldSourceFilesDirectory() {\r
-        if (jTextFieldFileName == null) {\r
-            jTextFieldFileName = new JTextField();\r
-            jTextFieldFileName.setBounds(new java.awt.Rectangle(140, 10, 250, 20));\r
-            jTextFieldFileName.setPreferredSize(new java.awt.Dimension(250, 20));\r
-            jTextFieldFileName.setToolTipText("Path is relative to the MSA file and must include the file name");\r
-        }\r
-        return jTextFieldFileName;\r
-    }\r
+    private IDefaultTableModel model = null;\r
 \r
 \r
-    /**\r
-     This method initializes jButtonOpenFile \r
-     \r
-     @return javax.swing.JButton jButtonOpenFile\r
-     \r
-     **/\r
-    private JButton getJButtonOpenFile() {\r
-        if (jButtonOpenFile == null) {\r
-            jButtonOpenFile = new JButton();\r
-            jButtonOpenFile.setText("Browse");\r
-            jButtonOpenFile.setBounds(new java.awt.Rectangle(395, 10, 85, 20));\r
-            jButtonOpenFile.setPreferredSize(new java.awt.Dimension(85, 20));\r
-            jButtonOpenFile.addActionListener(this);\r
-        }\r
-        return jButtonOpenFile;\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -221,41 +134,12 @@ public class ModuleSourceFiles 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 = 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
             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 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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
     /**\r
      This method initializes jScrollPane  \r
      \r
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -270,93 +154,40 @@ public class ModuleSourceFiles extends IInternalFrame {
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     * This method initializes jTextFieldTagName       \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldTagName() {\r
-        if (jTextFieldTagName == null) {\r
-            jTextFieldTagName = new JTextField();\r
-            jTextFieldTagName.setBounds(new java.awt.Rectangle(140, 35, 340, 20));\r
-            jTextFieldTagName.setPreferredSize(new java.awt.Dimension(340, 20));\r
-            jTextFieldTagName.setToolTipText("You may specify a specific tool chain tag name, such as BILL1");\r
-        }\r
-        return jTextFieldTagName;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldToolCode      \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldToolCode() {\r
-        if (jTextFieldToolCode == null) {\r
-            jTextFieldToolCode = new JTextField();\r
-            jTextFieldToolCode.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\r
-            jTextFieldToolCode.setPreferredSize(new java.awt.Dimension(340, 20));\r
-            jTextFieldToolCode.setToolTipText("You may specify a specific tool command, such as ASM");\r
-        }\r
-        return jTextFieldToolCode;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldToolChainFamily       \r
-     *         \r
-     * @return javax.swing.JTextField  \r
+     * This method initializes jScrollPaneTable \r
+     *  \r
+     * @return javax.swing.JScrollPane  \r
      */\r
      */\r
-    private JTextField getJTextFieldToolChainFamily() {\r
-        if (jTextFieldToolChainFamily == null) {\r
-            jTextFieldToolChainFamily = new JTextField();\r
-            jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\r
-            jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(340, 20));\r
-            jTextFieldToolChainFamily.setToolTipText("You may specify a specific tool chain family, such as GCC");\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
         }\r
-        return jTextFieldToolChainFamily;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     * This method initializes jTextFieldFeatureFlag   \r
-     *         \r
-     * @return javax.swing.JTextField  \r
+     * This method initializes jTable   \r
+     *  \r
+     * @return javax.swing.JTable   \r
      */\r
      */\r
-    private JTextField getJTextFieldFeatureFlag() {\r
-        if (jTextFieldFeatureFlag == null) {\r
-            jTextFieldFeatureFlag = new JTextField();\r
-            jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(140, 110, 340, 20));\r
-            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(340, 20));\r
-            jTextFieldFeatureFlag.setToolTipText("RESERVED FOR FUTURE USE");\r
-        }\r
-        return jTextFieldFeatureFlag;\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
-    /**\r
-     This method initializes iCheckBoxListArch   \r
-     \r
-     @return ICheckBoxList   \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
-        }\r
-        return iCheckBoxListArch;\r
-    }\r
+            model.addColumn("File Name");\r
 \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(140, 135, 340, 80));\r
-            jScrollPaneArch.setPreferredSize(new java.awt.Dimension(340, 80));\r
-            jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return jScrollPaneArch;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
     }\r
 \r
     public static void main(String[] args) {\r
@@ -382,7 +213,7 @@ public class ModuleSourceFiles extends IInternalFrame {
     public ModuleSourceFiles(OpeningModuleType inOmt) {\r
         super();\r
         this.omt = inOmt;\r
     public ModuleSourceFiles(OpeningModuleType inOmt) {\r
         super();\r
         this.omt = inOmt;\r
-        this.msa = inOmt.getXmlMsa();\r
+        this.msa = omt.getXmlMsa();\r
         init(msa.getSourceFiles());\r
         this.setVisible(true);\r
     }\r
         init(msa.getSourceFiles());\r
         this.setVisible(true);\r
     }\r
@@ -415,11 +246,7 @@ public class ModuleSourceFiles extends IInternalFrame {
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
-        //\r
-        // Update the list\r
-        //\r
-        Tools.generateComboBoxByVector(jComboBoxList, vSourceFiles.getSourceFilesName());\r
-        reloadListArea();\r
+        showTable();\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -430,7 +257,6 @@ public class ModuleSourceFiles extends IInternalFrame {
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Source Files");\r
         this.setSize(500, 515);\r
         this.setContentPane(getJScrollPane());\r
         this.setTitle("Source Files");\r
-        initFrame();\r
         this.setViewMode(false);\r
     }\r
 \r
         this.setViewMode(false);\r
     }\r
 \r
@@ -442,9 +268,6 @@ public class ModuleSourceFiles extends IInternalFrame {
      **/\r
     public void setViewMode(boolean isView) {\r
         if (isView) {\r
      **/\r
     public void setViewMode(boolean isView) {\r
         if (isView) {\r
-            this.jTextFieldFileName.setEnabled(!isView);\r
-            this.jButtonOpenFile.setEnabled(!isView);\r
-\r
             this.jButtonAdd.setEnabled(!isView);\r
             this.jButtonRemove.setEnabled(!isView);\r
             this.jButtonUpdate.setEnabled(!isView);\r
             this.jButtonAdd.setEnabled(!isView);\r
             this.jButtonRemove.setEnabled(!isView);\r
             this.jButtonUpdate.setEnabled(!isView);\r
@@ -460,317 +283,18 @@ public class ModuleSourceFiles extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelToolCode = new JLabel();\r
-            jLabelToolCode.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
-            jLabelToolCode.setText("Tool Code");\r
-            jLabelTagName = new JLabel();\r
-            jLabelTagName.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
-            jLabelTagName.setText("Tag Name");\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 120, 20));\r
-            jLabelArch.setText("Sup Arch List");\r
-            jLabelToolChainFamily = new JLabel();\r
-            jLabelToolChainFamily.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
-            jLabelToolChainFamily.setText("Tool Chain Family");\r
-            jLabelFileName = new JLabel();\r
-            jLabelFileName.setText("File Name");\r
-            jLabelFileName.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane.setPreferredSize(new java.awt.Dimension(490, 490));\r
 \r
-            jContentPane.add(jLabelFileName, null);\r
-            jContentPane.add(getJTextFieldSourceFilesDirectory(), null);\r
-            jContentPane.add(getJButtonOpenFile(), null);\r
-            jContentPane.add(jLabelToolChainFamily, null);\r
-            jStarLabel1 = new StarLabel();\r
-            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
-\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(getJComboBoxList(), null);\r
             jContentPane.add(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), 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(jLabelTagName, null);\r
-            jContentPane.add(getJTextFieldTagName(), null);\r
-            jContentPane.add(jLabelToolCode, null);\r
-            jContentPane.add(getJTextFieldToolCode(), null);\r
-            jContentPane.add(getJTextFieldToolChainFamily(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(getJScrollPaneArch(), null);\r
+            jContentPane.add(getJScrollPaneTable(), null);\r
         }\r
         return jContentPane;\r
     }\r
 \r
         }\r
         return jContentPane;\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() == jButtonOpenFile) {\r
-            selectFile();\r
-        }\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
-            if (!checkAdd()) {\r
-                return;\r
-            }\r
-            updateForList();\r
-        }\r
-    }\r
-\r
-    /**\r
-     This method initializes Usage type and Arch type\r
-     \r
-     **/\r
-    private void initFrame() {\r
-        EnumerationData ed = new EnumerationData();\r
-\r
-        this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());\r
-    }\r
-\r
-    private SourceFilesIdentification getCurrentSourceFiles() {\r
-        String name = this.jTextFieldFileName.getText();\r
-        String tagName = this.jTextFieldTagName.getText();\r
-        String toolCode = this.jTextFieldToolCode.getText();\r
-        String tcf = this.jTextFieldToolChainFamily.getText();\r
-        String featureFlag = this.jTextFieldFeatureFlag.getText();\r
-        Vector<String> arch = this.iCheckBoxListArch.getAllCheckedItemsString();\r
-        sfid = new SourceFilesIdentification(name, tagName, toolCode, tcf, featureFlag, arch);\r
-        return sfid;\r
-    }\r
-\r
-    /**\r
-     Add current item to Vector\r
-     \r
-     **/\r
-    private void addToList() {\r
-        intSelectedItemId = vSourceFiles.size();\r
-\r
-        vSourceFiles.addSourceFiles(getCurrentSourceFiles());\r
-\r
-        jComboBoxList.addItem(sfid.getFilename());\r
-        jComboBoxList.setSelectedItem(sfid.getFilename());\r
-\r
-        //\r
-        // Reset select item index\r
-        //\r
-        intSelectedItemId = vSourceFiles.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.vSourceFiles.size() < 1) {\r
-            return;\r
-        }\r
-\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        jComboBoxList.removeItemAt(intSelectedItemId);\r
-\r
-        vSourceFiles.removeSourceFiles(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.vSourceFiles.size() < 1) {\r
-            return;\r
-        }\r
-\r
-        //\r
-        // Backup selected item index\r
-        //\r
-        int intTempIndex = intSelectedItemId;\r
-\r
-        vSourceFiles.updateSourceFiles(getCurrentSourceFiles(), intTempIndex);\r
-\r
-        jComboBoxList.removeAllItems();\r
-        for (int index = 0; index < vSourceFiles.size(); index++) {\r
-            jComboBoxList.addItem(vSourceFiles.getSourceFiles(index).getFilename());\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 (vSourceFiles.size() > 0) {\r
-            //\r
-            // Get selected item index\r
-            //\r
-            intSelectedItemId = jComboBoxList.getSelectedIndex();\r
-\r
-            this.jTextFieldFileName.setText(vSourceFiles.getSourceFiles(intSelectedItemId).getFilename());\r
-            this.jTextFieldTagName.setText(vSourceFiles.getSourceFiles(intSelectedItemId).getTagName());\r
-            this.jTextFieldToolCode.setText(vSourceFiles.getSourceFiles(intSelectedItemId).getToolCode());\r
-            this.jTextFieldToolChainFamily.setText(vSourceFiles.getSourceFiles(intSelectedItemId).getToolChainFamily());\r
-            jTextFieldFeatureFlag.setText(vSourceFiles.getSourceFiles(intSelectedItemId).getFeatureFlag());\r
-            iCheckBoxListArch.setAllItemsUnchecked();\r
-            iCheckBoxListArch.initCheckedItem(true, vSourceFiles.getSourceFiles(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 < vSourceFiles.size(); index++) {\r
-            strListItem = strListItem + vSourceFiles.getSourceFiles(index).getFilename() + 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.getStateChange() == ItemEvent.SELECTED) {\r
-            reloadFromList();\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 Filename\r
-        //\r
-        if (isEmpty(this.jTextFieldFileName.getText())) {\r
-            Log.err("File Name couldn't be empty");\r
-            return false;\r
-        }\r
-        if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
-            Log.err("Incorrect data type for File Name");\r
-            return false;\r
-        }\r
-        \r
-        //\r
-        // Check TagName \r
-        //\r
-        if (!isEmpty(this.jTextFieldTagName.getText())) {\r
-            if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
-                Log.err("Incorrect data type for Tag Name");\r
-                return false;\r
-            }\r
-        }\r
-        \r
-        //\r
-        // Check ToolCode \r
-        //\r
-        if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
-            if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
-                Log.err("Incorrect data type for Tool Code");\r
-                return false;\r
-            }\r
-        }\r
-        \r
-        //\r
-        // Check ToolChainFamily \r
-        //\r
-        if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
-            if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
-                Log.err("Incorrect data type for Tool Chain Family");\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
-        return true;\r
-    }\r
-\r
     /**\r
      Save all components of SourceFiles\r
      if exists sourceFiles, set the value directly\r
     /**\r
      Save all components of SourceFiles\r
      if exists sourceFiles, set the value directly\r
@@ -815,21 +339,115 @@ public class ModuleSourceFiles extends IInternalFrame {
             this.msa.setSourceFiles(sourceFiles);\r
             this.omt.setSaved(false);\r
         } catch (Exception e) {\r
             this.msa.setSourceFiles(sourceFiles);\r
             this.omt.setSaved(false);\r
         } catch (Exception e) {\r
-            e.printStackTrace();\r
             Log.err("Update Source Files", e.getMessage());\r
         }\r
     }\r
 \r
             Log.err("Update Source Files", e.getMessage());\r
         }\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        SourceFilesDlg sfd = new SourceFilesDlg(this.vSourceFiles.getSourceFiles(index), new IFrame());\r
+        int result = sfd.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vSourceFiles.addSourceFiles(sfd.getSfid());\r
+            } else {\r
+                this.vSourceFiles.setSourceFiles(sfd.getSfid(), index);\r
+            }\r
+            this.showTable();\r
+            this.save();\r
+            sfd.dispose();\r
+        }\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            sfd.dispose();\r
+        }\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
+            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
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
+            }\r
+            if (selectedRow > -1) {\r
+                this.model.removeRow(selectedRow);\r
+                this.vSourceFiles.removeSourceFiles(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
+            }\r
+        }\r
+    }\r
+\r
     /**\r
     /**\r
-     Display a file open browser to let user select file\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void selectFile() {\r
-        JFileChooser fc = new JFileChooser(Workspace.getCurrentWorkspace());\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
-        int result = fc.showOpenDialog(new JPanel());\r
-        if (result == JFileChooser.APPROVE_OPTION) {\r
-            this.jTextFieldFileName.setText(fc.getSelectedFile().getName());\r
+    /**\r
+     Read content of vector and put then into table\r
+     \r
+     **/\r
+    private void showTable() {\r
+        clearAll();\r
+\r
+        if (vSourceFiles.size() > 0) {\r
+            for (int index = 0; index < vSourceFiles.size(); index++) {\r
+                model.addRow(vSourceFiles.toStringVector(index));\r
+            }\r
+        }\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\r
+        //this.jScrollPane.setViewportView(this.jTable);\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
         }\r
     }\r
 \r
@@ -844,21 +462,12 @@ public class ModuleSourceFiles extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(this.jTextFieldFileName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldTagName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldToolCode, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldToolChainFamily, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(this.jScrollPaneArch, intCurrentWidth, intPreferredWidth);\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.jButtonOpenFile, intCurrentWidth, intPreferredWidth,\r
-                           DataType.SPACE_TO_RIGHT_FOR_GENERATE_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
     }\r
 }\r
index 3a32326455c89c4f002392371db3efd1aed6fdf9..bf78fb5611b1a5a43bf7dd2dc87fb79dd1696ecf 100644 (file)
  **/\r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
  **/\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.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 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.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.SystemTableUsage;\r
 import org.tianocore.SystemTablesDocument;\r
 \r
 import org.tianocore.SystemTableUsage;\r
 import org.tianocore.SystemTablesDocument;\r
@@ -33,16 +33,15 @@ import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
 import org.tianocore.SystemTablesDocument.SystemTables;\r
 import org.tianocore.SystemTablesDocument.SystemTables.SystemTableCNames;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.SystemTablesDocument.SystemTables;\r
 import org.tianocore.SystemTablesDocument.SystemTables.SystemTableCNames;\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.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.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.SystemTables.SystemTablesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.SystemTables.SystemTablesVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.SystemTables.SystemTablesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.SystemTables.SystemTablesVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.SystemTablesDlg;\r
 \r
 /**\r
  The class is used to create, update SystemTable of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update SystemTable of MSA/MBD file\r
@@ -63,28 +62,6 @@ public class ModuleSystemTables extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelEntry = null;\r
-\r
-    private JTextField jTextFieldGuidC_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 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
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -93,21 +70,13 @@ public class ModuleSystemTables extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-    \r
-    private ICheckBoxList iCheckBoxListArch = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \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
 \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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -118,69 +87,9 @@ public class ModuleSystemTables extends IInternalFrame {
 \r
     private SystemTablesVector vid = new SystemTablesVector();\r
 \r
 \r
     private SystemTablesVector vid = new SystemTablesVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
-\r
-    /**\r
-     This method initializes jTextFieldEntry \r
-     \r
-     @return javax.swing.JTextField jTextFieldEntry\r
-     \r
-     **/\r
-    private JTextField getJTextFieldEntry() {\r
-        if (jTextFieldGuidC_Name == null) {\r
-            jTextFieldGuidC_Name = new JTextField();\r
-            jTextFieldGuidC_Name.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
-            jTextFieldGuidC_Name.setPreferredSize(new java.awt.Dimension(320,20));\r
-            jTextFieldGuidC_Name.setToolTipText("Enter the C Name of the System Table");\r
-        }\r
-        return jTextFieldGuidC_Name;\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
-    /**\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -227,27 +136,12 @@ public class ModuleSystemTables 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -262,115 +156,89 @@ public class ModuleSystemTables extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
         }\r
-        return jTextAreaList;\r
+        return jScrollPaneTable;\r
     }\r
     }\r
-    \r
+\r
     /**\r
     /**\r
-    This method initializes iCheckBoxListArch   \r
-\r
-    @return ICheckBoxList   \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
-       }\r
-       return iCheckBoxListArch;\r
-   }\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, 110, 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 jTextFieldHelpText  \r
-     \r
-     @return javax.swing.JTextField  \r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \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
+    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("Usage");\r
+\r
+            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+            jTable.getSelectionModel().addListSelectionListener(this);\r
+            jTable.getModel().addTableModelListener(this);\r
+            jTable.addMouseListener(this);\r
         }\r
         }\r
-        return jTextFieldHelpText;\r
+        return jTable;\r
     }\r
 \r
     public static void main(String[] args) {\r
 \r
     }\r
     }\r
 \r
     public static void main(String[] args) {\r
 \r
     }\r
-    \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("System Tables");\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(SystemTables inSystemTables) {\r
-       init();\r
-       this.systemTables = inSystemTables;\r
-\r
-       if (this.systemTables != null) {\r
-           if (this.systemTables.getSystemTableCNamesList().size() > 0) {\r
-               for (int index = 0; index < this.systemTables.getSystemTableCNamesList().size(); index++) {\r
-                   String arg0 = systemTables.getSystemTableCNamesList().get(index).getSystemTableCName();\r
-                   String arg1 = null;\r
-                   if (systemTables.getSystemTableCNamesList().get(index).getUsage() != null) {\r
-                       arg1 = systemTables.getSystemTableCNamesList().get(index).getUsage().toString();    \r
-                   }\r
-                   \r
-                   String arg2 = systemTables.getSystemTableCNamesList().get(index).getFeatureFlag();\r
-                   Vector<String> arg3 = Tools.convertListToVector(systemTables.getSystemTableCNamesList().get(index).getSupArchList());\r
-                   String arg4 = systemTables.getSystemTableCNamesList().get(index).getHelpText();\r
-                   \r
-                   id = new SystemTablesIdentification(arg0, arg1, arg2, arg3, arg4);\r
-                   vid.addSystemTables(id);\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getSystemTablesName());\r
-       reloadListArea();\r
-   }\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 515);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("System Tables");\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inSystemTables\r
+\r
+     **/\r
+    private void init(SystemTables inSystemTables) {\r
+        init();\r
+        this.systemTables = inSystemTables;\r
+\r
+        if (this.systemTables != null) {\r
+            if (this.systemTables.getSystemTableCNamesList().size() > 0) {\r
+                for (int index = 0; index < this.systemTables.getSystemTableCNamesList().size(); index++) {\r
+                    String arg0 = systemTables.getSystemTableCNamesList().get(index).getSystemTableCName();\r
+                    String arg1 = null;\r
+                    if (systemTables.getSystemTableCNamesList().get(index).getUsage() != null) {\r
+                        arg1 = systemTables.getSystemTableCNamesList().get(index).getUsage().toString();\r
+                    }\r
+\r
+                    String arg2 = systemTables.getSystemTableCNamesList().get(index).getFeatureFlag();\r
+                    Vector<String> arg3 = Tools.convertListToVector(systemTables.getSystemTableCNamesList().get(index)\r
+                                                                                .getSupArchList());\r
+                    String arg4 = systemTables.getSystemTableCNamesList().get(index).getHelpText();\r
+\r
+                    id = new SystemTablesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+                    vid.addSystemTables(id);\r
+                }\r
+            }\r
+        }\r
+        showTable();\r
+    }\r
 \r
     /**\r
      This is the default constructor\r
 \r
     /**\r
      This is the default constructor\r
@@ -396,19 +264,6 @@ public class ModuleSystemTables extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jTextFieldGuidC_Name.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -417,61 +272,63 @@ public class ModuleSystemTables extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\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
-            jLabelEntry = new JLabel();\r
-            jLabelEntry.setText("Guid C_Name");\r
-            jLabelEntry.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
+\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 475));\r
-            \r
-            jContentPane.add(jLabelEntry, null);\r
-            jContentPane.add(getJTextFieldEntry(), null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
-            jContentPane.add(jLabelArch, 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
-            \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(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
         }\r
         return jContentPane;\r
     }\r
 \r
+    private void showEdit(int index) {\r
+        SystemTablesDlg dlg = new SystemTablesDlg(vid.getSystemTables(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addSystemTables(dlg.getId());\r
+            } else {\r
+                this.vid.setSystemTables(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
     /**\r
-     This method initializes Usage type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVSystemTableUsage());\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
     }\r
 \r
     /* (non-Javadoc)\r
@@ -482,60 +339,27 @@ public class ModuleSystemTables extends IInternalFrame {
      */\r
     public void actionPerformed(ActionEvent arg0) {\r
         if (arg0.getSource() == jButtonAdd) {\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
+            showEdit(-1);\r
         }\r
         if (arg0.getSource() == jButtonUpdate) {\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
                 return;\r
             }\r
-            updateForList();\r
+            showEdit(selectedRow);\r
         }\r
         }\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 GuidC_Name \r
-        //\r
-        if (isEmpty(this.jTextFieldGuidC_Name.getText())) {\r
-            Log.err("Guid C_Name couldn't be empty");\r
-            return false;\r
-        }\r
-        \r
-        if (!isEmpty(this.jTextFieldGuidC_Name.getText())) {\r
-            if (!DataValidation.isC_NameType(this.jTextFieldGuidC_Name.getText())) {\r
-                Log.err("Incorrect data type for Guid C_Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonRemove) {\r
+            if (jTable.isEditing()) {\r
+                jTable.getCellEditor().stopCellEditing();\r
             }\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.removeSystemTables(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-        \r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -561,7 +385,8 @@ public class ModuleSystemTables extends IInternalFrame {
                     if (!isEmpty(vid.getSystemTables(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getSystemTables(index).getFeatureFlag());\r
                     }\r
                     if (!isEmpty(vid.getSystemTables(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getSystemTables(index).getFeatureFlag());\r
                     }\r
-                    if (vid.getSystemTables(index).getSupArchList() != null && vid.getSystemTables(index).getSupArchList().size() > 0) {\r
+                    if (vid.getSystemTables(index).getSupArchList() != null\r
+                        && vid.getSystemTables(index).getSupArchList().size() > 0) {\r
                         p.setSupArchList(vid.getSystemTables(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getSystemTables(index).getHelp())) {\r
                         p.setSupArchList(vid.getSystemTables(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getSystemTables(index).getHelp())) {\r
@@ -578,7 +403,37 @@ public class ModuleSystemTables extends IInternalFrame {
             Log.err("Update System Tables", e.getMessage());\r
         }\r
     }\r
             Log.err("Update System Tables", e.getMessage());\r
         }\r
     }\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -590,180 +445,12 @@ public class ModuleSystemTables extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jTextFieldGuidC_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
-        \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 SystemTablesIdentification getCurrentSystemTables() {\r
-        String arg0 = this.jTextFieldGuidC_Name.getText();\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
-        \r
-        id = new SystemTablesIdentification(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
-    /**\r
-    Add current item to Vector\r
-    \r
-    **/\r
-   private void addToList() {\r
-       intSelectedItemId = vid.size();\r
-\r
-       vid.addSystemTables(getCurrentSystemTables());\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.removeSystemTables(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.updateSystemTables(getCurrentSystemTables(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getSystemTables(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.jTextFieldGuidC_Name.setText(vid.getSystemTables(intSelectedItemId).getName());\r
-           this.jComboBoxUsage.setSelectedItem(vid.getSystemTables(intSelectedItemId).getUsage());\r
-           this.jTextFieldHelpText.setText(vid.getSystemTables(intSelectedItemId).getHelp());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getSystemTables(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getSystemTables(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.getSystemTables(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
 }\r
index 1335694fb8273d855ba7bff1c72b1e6f986fb88b..5dfbb1deef44490e54d7af7b9351304eaa892d7d 100644 (file)
 \r
 package org.tianocore.frameworkwizard.module.ui;\r
 \r
 \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.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 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.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.VariableUsage;\r
 import org.tianocore.VariablesDocument;\r
 \r
 import org.tianocore.VariableUsage;\r
 import org.tianocore.VariablesDocument;\r
@@ -34,16 +34,15 @@ import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
 import org.tianocore.VariablesDocument.Variables;\r
 import org.tianocore.VariablesDocument.Variables.Variable;\r
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.VariablesDocument.Variables;\r
 import org.tianocore.VariablesDocument.Variables.Variable;\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.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.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.Variables.VariablesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesVector;\r
 import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesIdentification;\r
 import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesVector;\r
+import org.tianocore.frameworkwizard.module.ui.dialog.VariablesDlg;\r
 \r
 /**\r
  The class is used to create, update Variable of MSA/MBD file\r
 \r
 /**\r
  The class is used to create, update Variable of MSA/MBD file\r
@@ -62,22 +61,6 @@ public class ModuleVariables extends IInternalFrame {
     //\r
     private JPanel jContentPane = null;\r
 \r
     //\r
     private JPanel jContentPane = null;\r
 \r
-    private JLabel jLabelVariableName = null;\r
-\r
-    private JTextField jTextFieldVariableName = 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 JTextArea jTextAreaList = null;\r
-\r
-    private JComboBox jComboBoxList = null;\r
-\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
     private JButton jButtonAdd = null;\r
 \r
     private JButton jButtonRemove = null;\r
@@ -86,31 +69,13 @@ public class ModuleVariables extends IInternalFrame {
 \r
     private JScrollPane jScrollPane = null;\r
 \r
 \r
     private JScrollPane jScrollPane = null;\r
 \r
-    private JScrollPane jScrollPaneList = null;\r
-\r
-    private JLabel jLabelGuidCName = null;\r
+    private JScrollPane jScrollPaneTable = null;\r
 \r
 \r
-    private JTextField jTextFieldGuidC_Name = null;\r
-\r
-    private JTextField jTextFieldFeatureFlag = null;\r
-\r
-    private JLabel jLabelFeatureFlag = 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
+    private JTable jTable = null;\r
 \r
     //\r
     // Not used by UI\r
     //\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
     private OpeningModuleType omt = null;\r
 \r
     private ModuleSurfaceArea msa = null;\r
@@ -121,56 +86,9 @@ public class ModuleVariables extends IInternalFrame {
 \r
     private VariablesVector vid = new VariablesVector();\r
 \r
 \r
     private VariablesVector vid = new VariablesVector();\r
 \r
-    private EnumerationData ed = new EnumerationData();\r
+    private IDefaultTableModel model = null;\r
 \r
 \r
-    /**\r
-     This method initializes jTextFieldString \r
-     \r
-     @return javax.swing.JTextField jTextFieldString\r
-     \r
-     **/\r
-    private JTextField getJTextFieldString() {\r
-        if (jTextFieldVariableName == null) {\r
-            jTextFieldVariableName = new JTextField();\r
-            jTextFieldVariableName.setSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldVariableName.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldVariableName.setLocation(new java.awt.Point(160, 10));\r
-            jTextFieldVariableName.setToolTipText("Enter a Hex Word Array, you must provide leading Zeros. 0x000a, 0x0010, ¡­");\r
-        }\r
-        return jTextFieldVariableName;\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, 60, 320, 20));\r
-            jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
-        }\r
-        return jComboBoxUsage;\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
 \r
     /**\r
      This method initializes jButtonAdd \r
@@ -217,27 +135,12 @@ public class ModuleVariables 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 = 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
             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
     /**\r
      This method initializes jScrollPane  \r
      \r
@@ -252,145 +155,90 @@ public class ModuleVariables extends IInternalFrame {
     }\r
 \r
     /**\r
     }\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
-        }\r
-        return jTextAreaList;\r
-    }\r
-\r
-    /**\r
-     * This method initializes jTextFieldGuidCName     \r
-     *         \r
-     * @return javax.swing.JTextField  \r
-     */\r
-    private JTextField getJTextFieldGuidC_Name() {\r
-        if (jTextFieldGuidC_Name == null) {\r
-            jTextFieldGuidC_Name = new JTextField();\r
-            jTextFieldGuidC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
-            jTextFieldGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
-            jTextFieldGuidC_Name.setToolTipText("Enter the C Name for the Variable Guid");\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
         }\r
-        return jTextFieldGuidC_Name;\r
+        return jScrollPaneTable;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jTextFieldFeatureFlag \r
-     \r
-     @return javax.swing.JTextField jTextFieldFeatureFlag\r
+     This method initializes jTable  \r
      \r
      \r
+     @return javax.swing.JTable  \r
      **/\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
+    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("Guid C_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
         }\r
-        return jTextFieldFeatureFlag;\r
+        return jTable;\r
     }\r
 \r
     }\r
 \r
-    /**\r
-     This method initializes iCheckBoxListArch   \r
+    public static void main(String[] args) {\r
 \r
 \r
-     @return ICheckBoxList   \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
-        }\r
-        return iCheckBoxListArch;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
-     This method initializes jScrollPaneArch \r
-\r
-     @return javax.swing.JScrollPane \r
-\r
+     This method initializes this\r
+     \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("Variables");\r
     }\r
     }\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, 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
 \r
-    public static void main(String[] args) {\r
+     **/\r
+    private void init(Variables inVariables) {\r
+        init();\r
+        this.variables = inVariables;\r
+\r
+        if (this.variables != null) {\r
+            if (this.variables.getVariableList().size() > 0) {\r
+                for (int index = 0; index < this.variables.getVariableList().size(); index++) {\r
+                    String arg0 = variables.getVariableList().get(index).getVariableName();\r
+                    String arg1 = variables.getVariableList().get(index).getGuidCName();\r
+                    String arg2 = null;\r
+                    if (variables.getVariableList().get(index).getUsage() != null) {\r
+                        arg2 = variables.getVariableList().get(index).getUsage().toString();\r
+                    }\r
 \r
 \r
+                    String arg3 = variables.getVariableList().get(index).getFeatureFlag();\r
+                    Vector<String> arg4 = Tools.convertListToVector(variables.getVariableList().get(index)\r
+                                                                             .getSupArchList());\r
+                    String arg5 = variables.getVariableList().get(index).getHelpText();\r
+                    id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+                    vid.addVariables(id);\r
+                }\r
+            }\r
+        }\r
+        showTable();\r
     }\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("Variables");\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(Variables inVariables) {\r
-       init();\r
-       this.variables = inVariables;\r
-\r
-       if (this.variables != null) {\r
-           if (this.variables.getVariableList().size() > 0) {\r
-               for (int index = 0; index < this.variables.getVariableList().size(); index++) {\r
-                   String arg0 = variables.getVariableList().get(index).getVariableName();\r
-                   String arg1 = variables.getVariableList().get(index).getGuidCName();\r
-                   String arg2 = null;\r
-                   if (variables.getVariableList().get(index).getUsage() != null) {\r
-                       arg2 = variables.getVariableList().get(index).getUsage().toString();    \r
-                   }\r
-                   \r
-                   String arg3 = variables.getVariableList().get(index).getFeatureFlag();\r
-                   Vector<String> arg4 = Tools.convertListToVector(variables.getVariableList().get(index).getSupArchList());\r
-                   String arg5 = variables.getVariableList().get(index).getHelpText();\r
-                   id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
-                   vid.addVariables(id);\r
-               }\r
-           }\r
-       }\r
-       //\r
-       // Update the list\r
-       //\r
-       Tools.generateComboBoxByVector(jComboBoxList, vid.getVariablesName());\r
-       reloadListArea();\r
-   }\r
 \r
     /**\r
      This is the default constructor\r
 \r
     /**\r
      This is the default constructor\r
@@ -416,19 +264,6 @@ public class ModuleVariables extends IInternalFrame {
         this.setVisible(true);\r
     }\r
 \r
         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.jTextFieldVariableName.setEnabled(!isView);\r
-            this.jComboBoxUsage.setEnabled(!isView);\r
-        }\r
-    }\r
-\r
     /**\r
      This method initializes jContentPane\r
      \r
     /**\r
      This method initializes jContentPane\r
      \r
@@ -437,146 +272,93 @@ public class ModuleVariables extends IInternalFrame {
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
      **/\r
     private JPanel getJContentPane() {\r
         if (jContentPane == null) {\r
-            jLabelGuidCName = new JLabel();\r
-            jLabelGuidCName.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
-            jLabelGuidCName.setText("Guid C_Name");\r
-            jLabelUsage = new JLabel();\r
-            jLabelUsage.setText("Usage");\r
-            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
-            jLabelVariableName = new JLabel();\r
-            jLabelVariableName.setText("Variable Name");\r
-            jLabelVariableName.setLocation(new java.awt.Point(15, 10));\r
-            jLabelVariableName.setSize(new java.awt.Dimension(140, 20));\r
-            jLabelArch = new JLabel();\r
-            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
-            jLabelArch.setText("Arch");\r
-            jLabelFeatureFlag = new JLabel();\r
-            jLabelFeatureFlag.setText("Feature Flag");\r
-            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
-\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
             jContentPane = new JPanel();\r
             jContentPane.setLayout(null);\r
-            jContentPane.setPreferredSize(new java.awt.Dimension(490, 495));\r
-\r
-            jContentPane.add(jLabelVariableName, null);\r
-            jContentPane.add(jLabelGuidCName, null);\r
-            jContentPane.add(getJTextFieldGuidC_Name(), null);\r
-            jContentPane.add(getJTextFieldString(), 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
-            jLabelHelpText = new JLabel();\r
-            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));\r
-            jLabelHelpText.setText("Help Text");\r
-\r
-            jContentPane.add(jStarLabel1, null);\r
-            jContentPane.add(jStarLabel2, 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(getJButtonAdd(), null);\r
             jContentPane.add(getJButtonRemove(), null);\r
             jContentPane.add(getJButtonUpdate(), null);\r
-            jContentPane.add(getJScrollPaneList(), null);\r
-\r
-            jContentPane.add(jLabelArch, null);\r
-            jContentPane.add(jLabelFeatureFlag, null);\r
-            jContentPane.add(getJTextFieldFeatureFlag(), 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
         }\r
         return jContentPane;\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
+    private void showEdit(int index) {\r
+        VariablesDlg dlg = new VariablesDlg(vid.getVariables(index), new IFrame());\r
+        int result = dlg.showDialog();\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+            if (index == -1) {\r
+                this.vid.addVariables(dlg.getId());\r
+            } else {\r
+                this.vid.setVariables(dlg.getId(), index);\r
             }\r
             }\r
-            addToList();\r
-        }\r
-        if (arg0.getSource() == jButtonRemove) {\r
-            removeFromList();\r
+            this.showTable();\r
+            this.save();\r
+            dlg.dispose();\r
         }\r
         }\r
-        if (arg0.getSource() == jButtonUpdate) {\r
-            if (!checkAdd()) {\r
-                return;\r
-            }\r
-            updateForList();\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            dlg.dispose();\r
         }\r
     }\r
 \r
     /**\r
         }\r
     }\r
 \r
     /**\r
-     This method initializes Usage type\r
+     Clear all table rows\r
      \r
      **/\r
      \r
      **/\r
-    private void initFrame() {\r
-        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\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
     }\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
+     Read content of vector and put then into table\r
      \r
      **/\r
      \r
      **/\r
-    public boolean checkAdd() {\r
-        //\r
-        // Check if all fields have correct data types \r
-        //\r
-\r
-        //\r
-        // Check VariableName \r
-        //\r
-        if (isEmpty(this.jTextFieldVariableName.getText())) {\r
-            Log.err("Variable Name couldn't be empty");\r
-            return false;\r
-        }\r
-        \r
-        if (!isEmpty(this.jTextFieldVariableName.getText())) {\r
-            if (!DataValidation.isHexWordArrayType(this.jTextFieldVariableName.getText())) {\r
-                Log.err("Incorrect data type for Variable Name");\r
-                return false;\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
             }\r
         }\r
-        \r
-        //\r
-        // Check GuidC_Name \r
-        //\r
-        if (isEmpty(this.jTextFieldGuidC_Name.getText())) {\r
-            Log.err("Guid C_Name couldn't be empty");\r
-            return false;\r
+        this.jTable.repaint();\r
+        this.jTable.updateUI();\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
+            showEdit(-1);\r
         }\r
         }\r
-        \r
-        if (!isEmpty(this.jTextFieldGuidC_Name.getText())) {\r
-            if (!DataValidation.isC_NameType(this.jTextFieldGuidC_Name.getText())) {\r
-                Log.err("Incorrect data type for Guid C_Name");\r
-                return false;\r
+        if (arg0.getSource() == jButtonUpdate) {\r
+            if (this.selectedRow < 0) {\r
+                Log.err("Please select one record first.");\r
+                return;\r
             }\r
             }\r
+            showEdit(selectedRow);\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
+        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.removeVariables(selectedRow);\r
+                selectedRow = -1;\r
+                this.save();\r
             }\r
         }\r
             }\r
         }\r
-\r
-        return true;\r
     }\r
 \r
     /**\r
     }\r
 \r
     /**\r
@@ -605,7 +387,8 @@ public class ModuleVariables extends IInternalFrame {
                     if (!isEmpty(vid.getVariables(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getVariables(index).getFeatureFlag());\r
                     }\r
                     if (!isEmpty(vid.getVariables(index).getFeatureFlag())) {\r
                         p.setFeatureFlag(vid.getVariables(index).getFeatureFlag());\r
                     }\r
-                    if (vid.getVariables(index).getSupArchList() != null && vid.getVariables(index).getSupArchList().size() > 0) {\r
+                    if (vid.getVariables(index).getSupArchList() != null\r
+                        && vid.getVariables(index).getSupArchList().size() > 0) {\r
                         p.setSupArchList(vid.getVariables(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getVariables(index).getHelp())) {\r
                         p.setSupArchList(vid.getVariables(index).getSupArchList());\r
                     }\r
                     if (!isEmpty(vid.getVariables(index).getHelp())) {\r
@@ -623,6 +406,36 @@ public class ModuleVariables extends IInternalFrame {
         }\r
     }\r
 \r
         }\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
     /* (non-Javadoc)\r
      * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)\r
      * \r
@@ -634,182 +447,12 @@ public class ModuleVariables extends IInternalFrame {
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
         int intPreferredWidth = this.getJContentPane().getPreferredSize().width;\r
         int intPreferredHeight = this.getJContentPane().getPreferredSize().height;\r
 \r
-        resizeComponentWidth(jTextFieldVariableName, intCurrentWidth, intPreferredWidth);\r
-        resizeComponentWidth(jTextFieldGuidC_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
+        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
-    private VariablesIdentification getCurrentVariables() {\r
-        String arg0 = this.jTextFieldVariableName.getText();\r
-        String arg1 = this.jTextFieldGuidC_Name.getText();\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
-        \r
-        id = new VariablesIdentification(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.addVariables(getCurrentVariables());\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.removeVariables(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.updateVariables(getCurrentVariables(), intTempIndex);\r
-\r
-       jComboBoxList.removeAllItems();\r
-       for (int index = 0; index < vid.size(); index++) {\r
-           jComboBoxList.addItem(vid.getVariables(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.jTextFieldVariableName.setText(vid.getVariables(intSelectedItemId).getName());\r
-           this.jTextFieldGuidC_Name.setText(vid.getVariables(intSelectedItemId).getGuid());\r
-           this.jComboBoxUsage.setSelectedItem(vid.getVariables(intSelectedItemId).getUsage());\r
-           this.jTextFieldHelpText.setText(vid.getVariables(intSelectedItemId).getHelp());\r
-\r
-           jTextFieldFeatureFlag.setText(vid.getVariables(intSelectedItemId).getFeatureFlag());\r
-           iCheckBoxListArch.setAllItemsUnchecked();\r
-           iCheckBoxListArch.initCheckedItem(true, vid.getVariables(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.getVariables(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
 }\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/BootModesDlg.java
new file mode 100644 (file)
index 0000000..8a5b4b8
--- /dev/null
@@ -0,0 +1,389 @@
+/** @file\r
\r
+ The file is used to create, update BootModes of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.BootModes.BootModesIdentification;\r
+\r
+/**\r
+ The class is used to create, update BootModes of MSA/MBD file\r
+ It extends IDialog\r
\r
+\r
+\r
+ **/\r
+public class BootModesDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -3888558623432442561L;\r
+\r
+    //\r
+    //Define class members\r
+    //\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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private BootModesIdentification id = null;\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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 140, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 140, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Boot Modes");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inBootModesId\r
+\r
+     **/\r
+    private void init(BootModesIdentification inBootModesId) {\r
+        init();\r
+        this.id = inBootModesId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxBootModeName.setSelectedItem(id.getName());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inBootModesIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public BootModesDlg(BootModesIdentification inBootModesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inBootModesIdentification);\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
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\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, 165));\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(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes BootModeName groups and Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxBootModeName, ed.getVBootModeNames());\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentBootModes();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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
+            }\r
+        }\r
+\r
+        return true;\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.jArchCheckBox.getSelectedItemsVector();\r
+        String arg4 = this.jTextFieldHelpText.getText();\r
+        id = new BootModesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return id;\r
+    }\r
+\r
+    public BootModesIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(BootModesIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/DataHubsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/DataHubsDlg.java
new file mode 100644 (file)
index 0000000..a10d8eb
--- /dev/null
@@ -0,0 +1,407 @@
+/** @file\r
\r
+ The file is used to create, update DataHub of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.DataHubs.DataHubsIdentification;\r
+\r
+/**\r
+ The class is used to create, update DataHub of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class DataHubsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -3667906991966638892L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelUsage = null;\r
+\r
+    private JComboBox jComboBoxUsage = null;\r
+\r
+    private JLabel jLabelDataHubRecord = null;\r
+\r
+    private JTextField jTextFieldDataHubRecord = 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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private DataHubsIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\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 jTextFieldDataHubRecord \r
+     \r
+     @return javax.swing.JTextField jTextFieldDataHubRecord\r
+     \r
+     **/\r
+    private JTextField getJTextFieldDataHubRecord() {\r
+        if (jTextFieldDataHubRecord == null) {\r
+            jTextFieldDataHubRecord = new JTextField();\r
+            jTextFieldDataHubRecord.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jTextFieldDataHubRecord.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldDataHubRecord.setToolTipText("Enter the C Name of the Data Hub Record");\r
+        }\r
+        return jTextFieldDataHubRecord;\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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 140, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 140, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Data Hubs");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inDataHubsId\r
+\r
+     **/\r
+    private void init(DataHubsIdentification inDataHubsId) {\r
+        init();\r
+        this.id = inDataHubsId;\r
+\r
+        if (this.id != null) {\r
+            this.jTextFieldDataHubRecord.setText(id.getName());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inDataHubsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public DataHubsDlg(DataHubsIdentification inDataHubsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inDataHubsIdentification);\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.jTextFieldDataHubRecord.setEnabled(!isView);\r
+            this.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelDataHubRecord = new JLabel();\r
+            jLabelDataHubRecord.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelDataHubRecord.setText("Data Hub Record");\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\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
+            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, 165));\r
+\r
+            jContentPane.add(jLabelDataHubRecord, null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(jLabelArch, null);\r
+\r
+            jContentPane.add(getJTextFieldDataHubRecord(), null);\r
+            jContentPane.add(getJComboBoxUsage(), null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\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
+\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVDataHubUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentDataHubs();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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 DataHubRecord \r
+        //\r
+        if (isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
+            Log.err("Data Hub Record couldn't be empty");\r
+            return false;\r
+        }\r
+\r
+        if (!isEmpty(this.jTextFieldDataHubRecord.getText())) {\r
+            if (!DataValidation.isC_NameType(this.jTextFieldDataHubRecord.getText())) {\r
+                Log.err("Incorrect data type for Data Hub Record");\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
+        return true;\r
+    }\r
+\r
+    private DataHubsIdentification getCurrentDataHubs() {\r
+        String arg0 = this.jTextFieldDataHubRecord.getText();\r
+        String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg4 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new DataHubsIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return id;\r
+    }\r
+\r
+    public DataHubsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(DataHubsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/EventsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/EventsDlg.java
new file mode 100644 (file)
index 0000000..11510fd
--- /dev/null
@@ -0,0 +1,436 @@
+/** @file\r
\r
+ The file is used to create, update Event of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Events.EventsIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Event of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+ @since ModuleEditor 1.0\r
+\r
+ **/\r
+public class EventsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -4396143706422842331L;\r
+\r
+    //\r
+    //Define class members\r
+    //\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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelArch = 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
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private EventsIdentification id = null;\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
+\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\r
+                               .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 jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Events");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inEventsId\r
+\r
+     **/\r
+    private void init(EventsIdentification inEventsId) {\r
+        init();\r
+        this.id = inEventsId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
+            this.jComboBoxEventsType.setSelectedItem(id.getType());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+\r
+            jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inEventsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public EventsDlg(EventsIdentification inEventsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inEventsIdentification);\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
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\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, 190));\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(jLabelArch, null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes events groups and usage type\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
+\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentEvents();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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
+            }\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
+        return true;\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.jArchCheckBox.getSelectedItemsVector();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+        id = new EventsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+        return id;\r
+    }\r
+\r
+    public EventsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(EventsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ExternsDlg.java
new file mode 100644 (file)
index 0000000..c85a223
--- /dev/null
@@ -0,0 +1,419 @@
+/** @file\r
\r
+ The file is used to create, update DataHub of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.module.Identifications.Externs.ExternsIdentification;\r
+\r
+/**\r
+ The class is used to create, update DataHub of MSA/MBD file \r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class ExternsDlg extends IDialog implements ItemListener {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -7382008402932047191L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelName = null;\r
+\r
+    private JComboBox jComboBoxType = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JComboBox jComboBoxPcdIsDriver = null;\r
+\r
+    private JLabel jLabelC_Name = null;\r
+\r
+    private JTextField jTextFieldC_Name = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private ExternsIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    /**\r
+     This method initializes jComboBoxType \r
+     \r
+     @return javax.swing.JComboBox jComboBoxType\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxType() {\r
+        if (jComboBoxType == null) {\r
+            jComboBoxType = new JComboBox();\r
+            jComboBoxType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxType.addItemListener(this);\r
+        }\r
+        return jComboBoxType;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jComboBoxPcdIsDriver    \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxPcdIsDriver() {\r
+        if (jComboBoxPcdIsDriver == null) {\r
+            jComboBoxPcdIsDriver = new JComboBox();\r
+            jComboBoxPcdIsDriver.setLocation(new java.awt.Point(160, 35));\r
+            jComboBoxPcdIsDriver.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxPcdIsDriver.setSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxPcdIsDriver.addItemListener(this);\r
+        }\r
+        return jComboBoxPcdIsDriver;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldC_Name  \r
+     \r
+     @return javax.swing.JTextField    \r
+     \r
+     **/\r
+    private JTextField getJTextFieldC_Name() {\r
+        if (jTextFieldC_Name == null) {\r
+            jTextFieldC_Name = new JTextField();\r
+            jTextFieldC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jTextFieldC_Name;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldFeatureFlag    \r
+     \r
+     @return javax.swing.JTextField   \r
+     \r
+     **/\r
+    private JTextField getJTextFieldFeatureFlag() {\r
+        if (jTextFieldFeatureFlag == null) {\r
+            jTextFieldFeatureFlag = new JTextField();\r
+            jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
+            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jTextFieldFeatureFlag;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 120, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 120, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 180);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Externs");\r
+        initFrame();\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inExternsId\r
+\r
+     **/\r
+    private void init(ExternsIdentification inExternsId) {\r
+        init();\r
+        this.id = inExternsId;\r
+\r
+        if (this.id != null) {\r
+            if (id.getType().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+                this.jComboBoxPcdIsDriver.setSelectedItem(id.getName());\r
+            } else {\r
+                this.jTextFieldC_Name.setText(id.getName());    \r
+            }\r
+            this.jComboBoxType.setSelectedItem(id.getType());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inBootModesIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public ExternsDlg(ExternsIdentification inExternsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inExternsIdentification);\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelC_Name = new JLabel();\r
+            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelC_Name.setText("Value");\r
+            jLabelName = new JLabel();\r
+            jLabelName.setText("Choose Type");\r
+            jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+            jLabelArch.setText("Arch");\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 145));\r
+\r
+            jContentPane.add(jLabelName, null);\r
+            jContentPane.add(getJComboBoxType(), null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\r
+            jContentPane.add(getJComboBoxPcdIsDriver(), null);\r
+            jContentPane.add(jLabelC_Name, null);\r
+            jContentPane.add(getJTextFieldC_Name(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type and Externs type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(this.jComboBoxType, ed.getVExternTypes());\r
+        Tools.generateComboBoxByVector(this.jComboBoxPcdIsDriver, ed.getVPcdDriverTypes());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentExterns();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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
+        // When and only When type is not "Pcd Is Driver"\r
+        //\r
+        if (!this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+            //\r
+            // Check CName \r
+            //\r
+            if (isEmpty(this.jTextFieldC_Name.getText())) {\r
+                Log.err("Value couldn't be empty");\r
+                return false;\r
+            }\r
+\r
+            if (!isEmpty(this.jTextFieldC_Name.getText())) {\r
+                if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_SPECIFICATION)) {\r
+                    if (!DataValidation.isSentence(this.jTextFieldC_Name.getText())) {\r
+                        Log.err("Incorrect data type for Specification");\r
+                        return false;\r
+                    }\r
+                } else {\r
+                    if (!DataValidation.isC_NameType(this.jTextFieldC_Name.getText())) {\r
+                        Log.err("Incorrect data type for C_Name");\r
+                        return false;\r
+                    }\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
+        } else {\r
+            if (this.jComboBoxPcdIsDriver.getSelectedItem().toString().equals(DataType.EMPTY_SELECT_ITEM)) {\r
+                Log.err("You must select one PCD DRIVER type");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        return true;\r
+    }\r
+\r
+    private ExternsIdentification getCurrentExterns() {\r
+        String arg0 = "";\r
+        if (this.jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+            arg0 = this.jComboBoxPcdIsDriver.getSelectedItem().toString();\r
+        } else {\r
+            arg0 = this.jTextFieldC_Name.getText();    \r
+        }\r
+        String arg1 = this.jComboBoxType.getSelectedItem().toString();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+\r
+        id = new ExternsIdentification(arg0, arg1, arg2, arg3);\r
+        return id;\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() == jComboBoxType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
+            if (jComboBoxType.getSelectedItem().toString().equals(EnumerationData.EXTERNS_PCD_IS_DRIVER)) {\r
+                this.jComboBoxPcdIsDriver.setVisible(true);\r
+                this.jTextFieldC_Name.setVisible(false);\r
+            } else {\r
+                this.jComboBoxPcdIsDriver.setVisible(false);\r
+                this.jTextFieldC_Name.setVisible(true);\r
+            }\r
+        }\r
+    }\r
+\r
+    public ExternsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(ExternsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/GuidsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/GuidsDlg.java
new file mode 100644 (file)
index 0000000..04f5232
--- /dev/null
@@ -0,0 +1,403 @@
+/** @file\r
\r
+ The file is used to create, update Guids of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Guids.GuidsIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Guids of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class GuidsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = 6710858997766979803L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelC_Name = null;\r
+\r
+    private JComboBox jComboBoxCName = 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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private GuidsIdentification id = null;\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 getJComboBoxCName() {\r
+        if (jComboBoxCName == null) {\r
+            jComboBoxCName = new JComboBox();\r
+            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxCName;\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
+     **/\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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 140, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 140, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Guids");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inGuidsId\r
+\r
+     **/\r
+    private void init(GuidsIdentification inGuidsId) {\r
+        init();\r
+        this.id = inGuidsId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxCName.setSelectedItem(id.getName());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inGuidsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public GuidsDlg(GuidsIdentification inGuidsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inGuidsIdentification);\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.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelC_Name = new JLabel();\r
+            jLabelC_Name.setText("C_Name");\r
+            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\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
+            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, 165));\r
+\r
+            jContentPane.add(jLabelC_Name, null);\r
+            jContentPane.add(getJComboBoxCName(), null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(getJComboBoxUsage(), null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\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
+\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllGuidDeclarationsFromWorkspace());\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVGuidUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentGuids();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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.jComboBoxCName.getSelectedItem().toString())) {\r
+            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
+                Log.err("Incorrect data type for Guid Name");\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
+        return true;\r
+    }\r
+\r
+    private GuidsIdentification getCurrentGuids() {\r
+        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
+        String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg4 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new GuidsIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return id;\r
+    }\r
+\r
+    public GuidsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(GuidsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HiiPackagesDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HiiPackagesDlg.java
new file mode 100644 (file)
index 0000000..e3cf02b
--- /dev/null
@@ -0,0 +1,406 @@
+/** @file\r
\r
+ The file is used to create, update Formset of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.HiiPackages.HiiPackagesIdentification;\r
+\r
+/**\r
+ The class is used to create, update Formset of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class HiiPackagesDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -6851574146786158116L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelName = null;\r
+\r
+    private JTextField jTextFieldName = 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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private HiiPackagesIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    /**\r
+     This method initializes jTextFieldName \r
+     \r
+     @return javax.swing.JTextField jTextFieldName\r
+     \r
+     **/\r
+    private JTextField getJTextFieldName() {\r
+        if (jTextFieldName == null) {\r
+            jTextFieldName = new JTextField();\r
+            jTextFieldName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jTextFieldName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldName.setToolTipText("Enter the C Name of the HII Package");\r
+        }\r
+        return jTextFieldName;\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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 140, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 140, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Hii Packages");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inHiiPackagesId\r
+\r
+     **/\r
+    private void init(HiiPackagesIdentification inHiiPackagesId) {\r
+        init();\r
+        this.id = inHiiPackagesId;\r
+\r
+        if (this.id != null) {\r
+            this.jTextFieldName.setText(id.getName());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inHiiPackagesIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public HiiPackagesDlg(HiiPackagesIdentification inHiiPackagesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inHiiPackagesIdentification);\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.jTextFieldName.setEnabled(!isView);\r
+            this.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelName = new JLabel();\r
+            jLabelName.setText("Name");\r
+            jLabelName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\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
+            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, 165));\r
+\r
+            jContentPane.add(jLabelName, null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(getJTextFieldName(), null);\r
+            jContentPane.add(getJComboBoxUsage(), null);\r
+\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\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
+\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVHiiPackageUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentHiiPackages();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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 Hii Package Name \r
+        //\r
+        if (isEmpty(this.jTextFieldName.getText())) {\r
+            Log.err("Hii Package Name Record couldn't be empty");\r
+            return false;\r
+        }\r
+\r
+        if (!isEmpty(this.jTextFieldName.getText())) {\r
+            if (!DataValidation.isC_NameType(this.jTextFieldName.getText())) {\r
+                Log.err("Incorrect data type for Hii Package Name");\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
+        return true;\r
+    }\r
+\r
+    private HiiPackagesIdentification getCurrentHiiPackages() {\r
+        String arg0 = this.jTextFieldName.getText();\r
+        String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg4 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new HiiPackagesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return id;\r
+    }\r
+\r
+    public HiiPackagesIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(HiiPackagesIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HobsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/HobsDlg.java
new file mode 100644 (file)
index 0000000..d128414
--- /dev/null
@@ -0,0 +1,428 @@
+/** @file\r
\r
+ The file is used to create, update Hob of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Hobs.HobsIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Hob of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+ **/\r
+public class HobsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -553473437579358325L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabel = null;\r
+\r
+    private JComboBox jComboBoxGuidC_Name = null;\r
+\r
+    private JLabel jLabelUsage = null;\r
+\r
+    private JLabel jLabelHobType = null;\r
+\r
+    private JComboBox jComboBoxUsage = null;\r
+\r
+    private JComboBox jComboBoxHobType = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private HobsIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    /**\r
+     This method initializes jTextField \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, 10, 320, 20));\r
+            jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Hob");\r
+        }\r
+        return jComboBoxGuidC_Name;\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, 60, 320, 20));\r
+            jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxUsage;\r
+    }\r
+\r
+    /**\r
+     This method initializes jComboBoxHobType \r
+     \r
+     @return javax.swing.JComboBox jComboBoxHobType\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxHobType() {\r
+        if (jComboBoxHobType == null) {\r
+            jComboBoxHobType = new JComboBox();\r
+            jComboBoxHobType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jComboBoxHobType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxHobType;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Hobs");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inHobsId\r
+\r
+     **/\r
+    private void init(HobsIdentification inHobsId) {\r
+        init();\r
+        this.id = inHobsId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
+            this.jComboBoxHobType.setSelectedItem(id.getType());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inHobsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public HobsDlg(HobsIdentification inHobsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inHobsIdentification);\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
+            this.jComboBoxHobType.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    public JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\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
+            jLabelHobType = new JLabel();\r
+            jLabelHobType.setText("Hob Type");\r
+            jLabelHobType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabel = new JLabel();\r
+            jLabel.setText("Guid C_Name");\r
+            jLabel.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, 190));\r
+\r
+            jContentPane.add(jLabel, null);\r
+            jContentPane.add(getJComboBoxGuidC_Name(), null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(jLabelHobType, null);\r
+            jContentPane.add(getJComboBoxUsage(), null);\r
+            jContentPane.add(getJComboBoxHobType(), null);\r
+            jStarLabel1 = new StarLabel();\r
+            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
+            jContentPane.add(jStarLabel1, null);\r
+\r
+            jContentPane.add(jLabelArch, null);\r
+\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type and Hob type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVHobUsage());\r
+        Tools.generateComboBoxByVector(jComboBoxHobType, ed.getVHobType());\r
+        Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentHobs();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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("Hob 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 Hob Name");\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
+        return true;\r
+    }\r
+\r
+    private HobsIdentification getCurrentHobs() {\r
+        String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
+        String arg1 = this.jComboBoxHobType.getSelectedItem().toString();\r
+        String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg3 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+        id = new HobsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+        return id;\r
+    }\r
+\r
+    public HobsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(HobsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/LibraryClassDefsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/LibraryClassDefsDlg.java
new file mode 100644 (file)
index 0000000..00fe724
--- /dev/null
@@ -0,0 +1,532 @@
+/** @file\r
\r
+ The file is used to create, update Library Class Definition of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\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.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Library Class Definition of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+ **/\r
+public class LibraryClassDefsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -1743248695411382857L;\r
+\r
+    //\r
+    //Define class members\r
+    //\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 JLabel jLabelLibraryClassName = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private StarLabel jStarLabel2 = 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
+\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
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+    \r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not for UI\r
+    //\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private LibraryClassIdentification lcid = 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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+            jTextFieldRecommendedInstanceVersion.setVisible(false);\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
+            jTextFieldRecommendedInstanceGuid.setVisible(false);\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.setVisible(false);\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, 85, 320, 20));\r
+            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jTextFieldFeatureFlag;\r
+    }\r
+\r
+    /**\r
+     This method initializes iCheckBoxListArch   \r
+     \r
+     @return ICheckBoxList   \r
+     **/\r
+    private ICheckBoxList getICheckBoxListSupModuleList() {\r
+        if (iCheckBoxListModule == null) {\r
+            iCheckBoxListModule = new ICheckBoxList();\r
+        }\r
+        return iCheckBoxListModule;\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, 135, 320, 80));\r
+            jScrollPaneModuleList.setPreferredSize(new java.awt.Dimension(320, 80));\r
+            jScrollPaneModuleList.setViewportView(getICheckBoxListSupModuleList());\r
+        }\r
+        return jScrollPaneModuleList;\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
+\r
+    /**\r
+     This method initializes jButtonOk \r
+     \r
+     @return javax.swing.JButton       \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 225, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel     \r
+     \r
+     @return javax.swing.JButton       \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 225, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public LibraryClassDefsDlg(LibraryClassIdentification inLibraryClassIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inLibraryClassIdentification);\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Library Class Definitions");\r
+        this.setBounds(new java.awt.Rectangle(0, 0, 500, 295));\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init(LibraryClassIdentification inLibraryClassIdentification) {\r
+        init();\r
+        this.lcid = inLibraryClassIdentification;\r
+        if (lcid != null) {\r
+            this.jComboBoxLibraryClassName.setSelectedItem(lcid.getLibraryClassName());\r
+            this.jComboBoxUsage.setSelectedItem(lcid.getUsage());\r
+            this.jTextFieldRecommendedInstanceVersion.setText(lcid.getRecommendedInstanceVersion());\r
+            this.jTextFieldRecommendedInstanceGuid.setText(lcid.getRecommendedInstanceGuid());\r
+            this.jTextFieldFeatureFlag.setText(lcid.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(lcid.getSupArchList());\r
+            this.iCheckBoxListModule.setAllItemsUnchecked();\r
+            this.iCheckBoxListModule.initCheckedItem(true, lcid.getSupModuleList());\r
+            this.jTextFieldHelpText.setText(lcid.getHelp());\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.jComboBoxLibraryClassName.setEnabled(!isView);\r
+            this.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\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, 135, 140, 20));\r
+            jLabelModuleList.setText("Sup Module List");\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+            jLabelArch.setText("Sup Arch List");\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 85, 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
+            jLabelRecommendedInstanceGuid.setVisible(false);\r
+            jLabelRecommendedInstanceVersion = new JLabel();\r
+            jLabelRecommendedInstanceVersion.setBounds(new java.awt.Rectangle(15, 85, 200, 20));\r
+            jLabelRecommendedInstanceVersion.setText("Recommended Instance Version");\r
+            jLabelRecommendedInstanceVersion.setVisible(false);\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, 245));\r
+\r
+            jContentPane.add(getJComboBoxLibraryClassName(), null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(getJComboBoxUsage(), null);\r
+            jContentPane.add(jLabelLibraryClassName, 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
+            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(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), 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, wt.getAllLibraryClassDefinitionsFromWorkspace());\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVLibraryUsage());\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() == jButtonGenerateGuid) {\r
+            this.jTextFieldRecommendedInstanceGuid.setText(Tools.generateUuidString());\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentLibraryClass();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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
+        return true;\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.jArchCheckBox.getSelectedItemsVector();\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
+    public LibraryClassIdentification getLcid() {\r
+        return lcid;\r
+    }\r
+\r
+    public void setLcid(LibraryClassIdentification lcid) {\r
+        this.lcid = lcid;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PCDsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PCDsDlg.java
new file mode 100644 (file)
index 0000000..7972926
--- /dev/null
@@ -0,0 +1,486 @@
+/** @file\r
\r
+ The file is used to create, update PCD of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdCodedIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update PCD of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class PCDsDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = 2227717658188438696L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelItemType = null;\r
+\r
+    private JLabel jLabelC_Name = null;\r
+\r
+    private JComboBox jComboBoxItemType = null;\r
+\r
+    private JComboBox jComboBoxCName = null;\r
+\r
+    private JLabel jLabelDefaultValue = null;\r
+\r
+    private JTextField jTextFieldDefaultValue = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private StarLabel jStarLabel2 = null;\r
+\r
+    private StarLabel jStarLabel3 = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelTokenSpaceGuid = null;\r
+\r
+    private JTextField jTextFieldTokenSpaceGuid = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private PcdCodedIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    /**\r
+     This method initializes jComboBoxItemType \r
+     \r
+     @return javax.swing.JComboBox jComboBoxItemType\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxItemType() {\r
+        if (jComboBoxItemType == null) {\r
+            jComboBoxItemType = new JComboBox();\r
+            jComboBoxItemType.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jComboBoxItemType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxItemType;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldC_Name \r
+     \r
+     @return javax.swing.JTextField jTextFieldC_Name\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxCName() {\r
+        if (jComboBoxCName == null) {\r
+            jComboBoxCName = new JComboBox();\r
+            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxCName;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldDefaultValue \r
+     \r
+     @return javax.swing.JTextField jTextFieldDefaultValue\r
+     \r
+     **/\r
+    private JTextField getJTextFieldDefaultValue() {\r
+        if (jTextFieldDefaultValue == null) {\r
+            jTextFieldDefaultValue = new JTextField();\r
+            jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
+            jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jTextFieldDefaultValue;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldHelpText      \r
+     *         \r
+     * @return javax.swing.JTextField  \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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldTokenSpaceGuid        \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldTokenSpaceGuid() {\r
+        if (jTextFieldTokenSpaceGuid == null) {\r
+            jTextFieldTokenSpaceGuid = new JTextField();\r
+            jTextFieldTokenSpaceGuid.setBounds(new java.awt.Rectangle(160, 60, 320, 20));\r
+            jTextFieldTokenSpaceGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldTokenSpaceGuid.setVisible(false);\r
+        }\r
+        return jTextFieldTokenSpaceGuid;\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 jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Pcd Coded");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inPcdCodedId\r
+\r
+     **/\r
+    private void init(PcdCodedIdentification inPcdCodedId) {\r
+        init();\r
+        this.id = inPcdCodedId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxCName.setSelectedItem(id.getName());\r
+            this.jTextFieldTokenSpaceGuid.setText(id.getGuid());\r
+            this.jTextFieldDefaultValue.setText(id.getValue());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jComboBoxItemType.setSelectedItem(id.getType());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inPcdCodedId\r
+     @param iFrame\r
+     \r
+     **/\r
+    public PCDsDlg(PcdCodedIdentification inPcdCodedId, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inPcdCodedId);\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.jTextFieldDefaultValue.setEnabled(!isView);\r
+            this.jComboBoxItemType.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+            jLabelArch.setText("Sup Arch List");\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jLabelTokenSpaceGuid = new JLabel();\r
+            jLabelTokenSpaceGuid.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelTokenSpaceGuid.setText("Token Space C_Name");\r
+            jLabelTokenSpaceGuid.setVisible(false);\r
+            jLabelHelpText = new JLabel();\r
+            jLabelHelpText.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+            jLabelHelpText.setText("Help Text");\r
+            jLabelC_Name = new JLabel();\r
+            jLabelC_Name.setText("C_Name");\r
+            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelDefaultValue = new JLabel();\r
+            jLabelDefaultValue.setText("Default Value");\r
+            jLabelDefaultValue.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelItemType = new JLabel();\r
+            jLabelItemType.setText("Item Type");\r
+            jLabelItemType.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 190));\r
+\r
+            jContentPane.add(jLabelItemType, null);\r
+            jContentPane.add(jLabelC_Name, null);\r
+            jContentPane.add(getJComboBoxCName(), null);\r
+            jContentPane.add(jLabelDefaultValue, null);\r
+            jContentPane.add(getJTextFieldDefaultValue(), null);\r
+            jContentPane.add(getJComboBoxItemType(), 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
+            jStarLabel3 = new StarLabel();\r
+            jStarLabel3.setLocation(new java.awt.Point(0, 85));\r
+            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.add(jStarLabel2, null);\r
+            jContentPane.add(jStarLabel3, null);\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+\r
+            jContentPane.add(jLabelTokenSpaceGuid, null);\r
+            jContentPane.add(getJTextFieldTokenSpaceGuid(), null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type, Item type and Datum type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPcdDeclarationsFromWorkspace());\r
+        Tools.generateComboBoxByVector(jComboBoxItemType, ed.getVPcdItemTypes());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentPcdCoded();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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 C_Name \r
+        //\r
+        if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
+            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
+                Log.err("Incorrect data type for C_Name");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check TokenSpaceGuid\r
+        //\r
+        //        if (!isEmpty(this.jTextFieldTokenSpaceGuid.getText())) {\r
+        //            if (!DataValidation.isC_NameType(this.jTextFieldTokenSpaceGuid.getText())) {\r
+        //                Log.err("Incorrect data type for Token Space C_Name");\r
+        //                return false;\r
+        //            }\r
+        //        }\r
+\r
+        //\r
+        // Check DefaultValue\r
+        //\r
+        if (!isEmpty(this.jTextFieldDefaultValue.getText())) {\r
+            if (!DataValidation.isDefaultValueType(this.jTextFieldDefaultValue.getText())) {\r
+                Log.err("Incorrect data type for Default Value");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check HelpText\r
+        //\r
+        if (isEmpty(this.jTextFieldHelpText.getText())) {\r
+            Log.err("Help Text couldn't be empty");\r
+            return false;\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
+        return true;\r
+    }\r
+\r
+    private PcdCodedIdentification getCurrentPcdCoded() {\r
+        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
+        String arg1 = this.jTextFieldTokenSpaceGuid.getText();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+\r
+        String arg4 = this.jTextFieldDefaultValue.getText();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+        String arg6 = this.jComboBoxItemType.getSelectedItem().toString();\r
+        id = new PcdCodedIdentification(arg0, arg1, arg2, arg3, arg4, arg5, arg6);\r
+        return id;\r
+    }\r
+\r
+    public PcdCodedIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(PcdCodedIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PackageDepDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PackageDepDlg.java
new file mode 100644 (file)
index 0000000..0f96bdf
--- /dev/null
@@ -0,0 +1,443 @@
+/** @file\r
\r
+ The file is used to create, update Include of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\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.JTextField;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.PackageDependencies.PackageDependenciesIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Include of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class PackageDepDlg extends IDialog implements ItemListener {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = 3465193035145152131L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelPackageName = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private JComboBox jComboBoxPackageName = null;\r
+\r
+    private JLabel jLabelPackageGuid = null;\r
+\r
+    private JTextField jTextFieldPackageGuid = null;\r
+\r
+    private JButton jButtonGenerateGuid = null;\r
+\r
+    private JLabel jLabelPackageVersion = null;\r
+\r
+    private JTextField jTextFieldPackageVersion = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private PackageDependenciesIdentification pdid = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private Vector<PackageIdentification> vPackage = wt.getAllPackages();\r
+\r
+    /**\r
+     * This method initializes jComboBoxPackageName    \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxPackageName() {\r
+        if (jComboBoxPackageName == null) {\r
+            jComboBoxPackageName = new JComboBox();\r
+            jComboBoxPackageName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxPackageName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxPackageName.setToolTipText("If your Module requires a package list that here.");\r
+            jComboBoxPackageName.addItemListener(this);\r
+        }\r
+        return jComboBoxPackageName;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldPackageGuid   \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldPackageGuid() {\r
+        if (jTextFieldPackageGuid == null) {\r
+            jTextFieldPackageGuid = new JTextField();\r
+            jTextFieldPackageGuid.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jTextFieldPackageGuid.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldPackageGuid.setEditable(false);\r
+            jTextFieldPackageGuid.setVisible(false);\r
+        }\r
+        return jTextFieldPackageGuid;\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, 35, 65, 20));\r
+            jButtonGenerateGuid.setPreferredSize(new java.awt.Dimension(65, 20));\r
+            jButtonGenerateGuid.setText("GEN");\r
+            jButtonGenerateGuid.addActionListener(this);\r
+            jButtonGenerateGuid.setVisible(false);\r
+        }\r
+        return jButtonGenerateGuid;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldPackageVersion        \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldPackageVersion() {\r
+        if (jTextFieldPackageVersion == null) {\r
+            jTextFieldPackageVersion = new JTextField();\r
+            jTextFieldPackageVersion.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jTextFieldPackageVersion.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldPackageVersion\r
+                                    .setToolTipText("If this module depends on a specific version of a package, enter the package version here.  If the module can use the latest version that does not break backward compatibility, leave this field blank");\r
+        }\r
+        return jTextFieldPackageVersion;\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, 60, 320, 20));\r
+            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jTextFieldFeatureFlag;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOk   \r
+     \r
+     @return javax.swing.JButton \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 115, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel   \r
+     \r
+     @return javax.swing.JButton \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 115, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 175);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Package Dependencies");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init(PackageDependenciesIdentification inPackageDependenciesIdentification) {\r
+        init();\r
+        this.pdid = inPackageDependenciesIdentification;\r
+        if (pdid != null) {\r
+            this.jComboBoxPackageName.setSelectedItem(pdid.getName());\r
+            this.jTextFieldPackageVersion.setText(pdid.getVersion());\r
+            this.jTextFieldPackageGuid.setText(pdid.getGuid());\r
+            jTextFieldFeatureFlag.setText(pdid.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(pdid.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public PackageDepDlg(PackageDependenciesIdentification inPackageDependenciesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inPackageDependenciesIdentification);\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.jComboBoxPackageName.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+            jLabelArch.setText("Sup Arch List");\r
+            jLabelPackageVersion = new JLabel();\r
+            jLabelPackageVersion.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelPackageVersion.setText("Package Version");\r
+            jLabelPackageGuid = new JLabel();\r
+            jLabelPackageGuid.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelPackageGuid.setText("Package Guid");\r
+            jLabelPackageGuid.setVisible(false);\r
+            jLabelPackageName = new JLabel();\r
+            jLabelPackageName.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelPackageName.setText("Package Name");\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 140));\r
+\r
+            jContentPane.add(jLabelPackageName, null);\r
+            jStarLabel1 = new StarLabel();\r
+            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
+\r
+            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.add(getJComboBoxPackageName(), null);\r
+            jContentPane.add(jLabelPackageGuid, null);\r
+            jContentPane.add(getJTextFieldPackageGuid(), null);\r
+            jContentPane.add(getJButtonGenerateGuid(), null);\r
+            jContentPane.add(jLabelPackageVersion, null);\r
+            jContentPane.add(getJTextFieldPackageVersion(), null);\r
+\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentPackageDependencies();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type, Package type and Arch type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        for (int index = 0; index < vPackage.size(); index++) {\r
+            jComboBoxPackageName.addItem(vPackage.elementAt(index).getName());\r
+        }\r
+    }\r
+\r
+    /**\r
+     Data validation for all fields before add current item to Vector\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 PackageGuid \r
+        //\r
+//        if (!isEmpty(this.jTextFieldPackageGuid.getText())) {\r
+//            if (!DataValidation.isGuid(this.jTextFieldPackageGuid.getText())) {\r
+//                Log.err("Incorrect data type for Package Guid");\r
+//                return false;\r
+//            }\r
+//        }\r
+\r
+        //\r
+        // Check PackageVersion \r
+        //\r
+        if (!isEmpty(this.jTextFieldPackageVersion.getText())) {\r
+            if (!DataValidation.isVersion(this.jTextFieldPackageVersion.getText())) {\r
+                Log.err("Incorrect data type for Package Version");\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
+        return true;\r
+    }\r
+    \r
+\r
+    private PackageDependenciesIdentification getCurrentPackageDependencies() {\r
+        String arg0 = this.jComboBoxPackageName.getSelectedItem().toString();\r
+        String arg1 = this.jTextFieldPackageVersion.getText();\r
+        String arg2 = this.jTextFieldPackageGuid.getText();\r
+\r
+        String arg3 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
+        pdid = new PackageDependenciesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return pdid;\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.jComboBoxPackageName && arg0.getStateChange() == ItemEvent.SELECTED) {\r
+            for (int index = 0; index < vPackage.size(); index++) {\r
+                if (this.jComboBoxPackageName.getSelectedItem().toString().equals(vPackage.get(index).getName())) {\r
+                    this.jTextFieldPackageGuid.setText(vPackage.get(index).getGuid());\r
+                }\r
+            }\r
+        }\r
+    }\r
+\r
+    public PackageDependenciesIdentification getPdid() {\r
+        return pdid;\r
+    }\r
+\r
+    public void setPdid(PackageDependenciesIdentification pdid) {\r
+        this.pdid = pdid;\r
+    }\r
+\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PpisDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/PpisDlg.java
new file mode 100644 (file)
index 0000000..f7f5001
--- /dev/null
@@ -0,0 +1,432 @@
+/** @file\r
\r
+ The file is used to create, update Ppi of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Ppis.PpisIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Ppi of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+ **/\r
+public class PpisDlg extends IDialog implements ItemListener {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -4284901202357037724L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelC_Name = null;\r
+\r
+    private JComboBox jComboBoxCName = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JLabel jLabelUsage = null;\r
+\r
+    private JComboBox jComboBoxUsage = null;\r
+\r
+    private JLabel jLabelPpiType = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private StarLabel jStarLabel2 = null;\r
+\r
+    private JComboBox jComboBoxPpiType = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private PpisIdentification id = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    /**\r
+     This method initializes jTextFieldC_Name \r
+     \r
+     @return javax.swing.JTextField jTextFieldC_Name\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxCName() {\r
+        if (jComboBoxCName == null) {\r
+            jComboBoxCName = new JComboBox();\r
+            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxCName;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldFeatureFlag \r
+     \r
+     @return javax.swing.JTextField jTextFieldFeatureFlag\r
+     \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 jComboBox\r
+     \r
+     @return javax.swing.JComboBox jComboBoxUsage\r
+     \r
+     **/\r
+    private JComboBox getJComboBox() {\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 jComboBoxPpiType        \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxPpiType() {\r
+        if (jComboBoxPpiType == null) {\r
+            jComboBoxPpiType = new JComboBox();\r
+            jComboBoxPpiType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxPpiType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxPpiType.addItemListener(this);\r
+        }\r
+        return jComboBoxPpiType;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Ppis");\r
+        initFrame();\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inProtocolsId\r
+\r
+     **/\r
+    private void init(PpisIdentification inPpisId) {\r
+        init();\r
+        this.id = inPpisId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxCName.setSelectedItem(id.getName());\r
+            this.jComboBoxPpiType.setSelectedItem(id.getType());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inProtocolsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public PpisDlg(PpisIdentification inPpisIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inPpisIdentification);\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+            jLabelArch.setText("Arch");\r
+            jLabelPpiType = new JLabel();\r
+            jLabelPpiType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelPpiType.setText("Ppi Type");\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+            jLabelC_Name = new JLabel();\r
+            jLabelC_Name.setText("C_Name Type");\r
+            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 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, 190));\r
+\r
+            jContentPane.add(jLabelC_Name, null);\r
+            jContentPane.add(getJComboBoxCName(), null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(getJComboBox(), null);\r
+            jContentPane.add(getJComboBoxPpiType(), null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(jLabelPpiType, 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
+\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllPpiDeclarationsFromWorkspace());\r
+        Tools.generateComboBoxByVector(jComboBoxPpiType, ed.getVPpiType());\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentPpis();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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.jComboBoxCName.getSelectedItem().toString())) {\r
+            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
+                Log.err("Incorrect data type for Ppi/PpiNotify Name");\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
+        return true;\r
+    }\r
+\r
+    private PpisIdentification getCurrentPpis() {\r
+        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
+        String arg1 = this.jComboBoxPpiType.getSelectedItem().toString();\r
+        String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg3 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new PpisIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+        return id;\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.jComboBoxPpiType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
+            if (this.jComboBoxPpiType.getSelectedItem().toString().equals(ed.getVPpiType().get(0))) {\r
+                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiUsage());\r
+            } else {\r
+                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVPpiNotifyUsage());\r
+            }\r
+        }\r
+    }\r
+\r
+    public PpisIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(PpisIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ProtocolsDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/ProtocolsDlg.java
new file mode 100644 (file)
index 0000000..0f4970c
--- /dev/null
@@ -0,0 +1,450 @@
+/** @file\r
\r
+ The file is used to create, update Protocol of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Protocols.ProtocolsIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Protocol of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class ProtocolsDlg extends IDialog implements ItemListener {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -9084913640747858848L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelC_Name = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = 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 jLabelProtocolType = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JComboBox jComboBoxProtocolType = null;\r
+\r
+    private JComboBox jComboBoxCName = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+    \r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private ProtocolsIdentification id = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    /**\r
+     This method initializes jTextFieldFeatureFlag \r
+     \r
+     @return javax.swing.JTextField jTextFieldFeatureFlag\r
+     \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 jComboBoxUsage \r
+     \r
+     @return javax.swing.JComboBox jComboBoxUsage\r
+     \r
+     **/\r
+    private JComboBox getJComboBoxProtocolUsage() {\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 jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jComboBoxProtocolType   \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxProtocolType() {\r
+        if (jComboBoxProtocolType == null) {\r
+            jComboBoxProtocolType = new JComboBox();\r
+            jComboBoxProtocolType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jComboBoxProtocolType.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxProtocolType.addItemListener(this);\r
+            jComboBoxProtocolType.setToolTipText("Select Protocol Type");\r
+        }\r
+        return jComboBoxProtocolType;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jComboBoxCName  \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxCName() {\r
+        if (jComboBoxCName == null) {\r
+            jComboBoxCName = new JComboBox();\r
+            jComboBoxCName.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+\r
+        }\r
+        return jComboBoxCName;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Protocols");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inProtocolsId\r
+\r
+     **/\r
+    private void init(ProtocolsIdentification inProtocolsId) {\r
+        init();\r
+        this.id = inProtocolsId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxCName.setSelectedItem(id.getName());\r
+            this.jComboBoxProtocolType.setSelectedItem(id.getType());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+\r
+            jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inProtocolsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public ProtocolsDlg(ProtocolsIdentification inProtocolsIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inProtocolsIdentification);\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.jComboBoxUsage.setEnabled(!isView);\r
+            this.jTextFieldFeatureFlag.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelHelpText = new JLabel();\r
+            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));\r
+            jLabelHelpText.setText("Help Text");\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+            jLabelArch.setText("Arch Type");\r
+            jLabelProtocolType = new JLabel();\r
+            jLabelProtocolType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelProtocolType.setText("Protocol Type");\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+            jLabelC_Name = new JLabel();\r
+            jLabelC_Name.setText("C_Name Type");\r
+            jLabelC_Name.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 190));\r
+\r
+            jContentPane.add(jLabelC_Name, null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelUsage, null);\r
+            jContentPane.add(getJComboBoxProtocolUsage(), null);\r
+            jContentPane.add(jLabelProtocolType, null);\r
+\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(jLabelArch, null);\r
+            jContentPane.add(getJComboBoxProtocolType(), null);\r
+            jContentPane.add(getJComboBoxCName(), null);\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxProtocolType, ed.getVProtocolType());\r
+        Tools.generateComboBoxByVector(jComboBoxCName, wt.getAllProtocolDeclarationsFromWorkspace());\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVProtocolUsage());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentProtocols();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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.jComboBoxCName.getSelectedItem().toString())) {\r
+            if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem().toString())) {\r
+                Log.err("Incorrect data type for Protocol/ProtocolNotify Name");\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
+        return true;\r
+    }\r
+\r
+    private ProtocolsIdentification getCurrentProtocols() {\r
+        String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
+        String arg1 = this.jComboBoxProtocolType.getSelectedItem().toString();\r
+        String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg3 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+        id = new ProtocolsIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+        return id;\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.jComboBoxProtocolType && arg0.getStateChange() == ItemEvent.SELECTED) {\r
+            if (this.jComboBoxProtocolType.getSelectedItem().toString().equals(ed.getVProtocolType().get(0))) {\r
+                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVProtocolUsage());\r
+            } else {\r
+                Tools.generateComboBoxByVector(this.jComboBoxUsage, ed.getVProtocolNotifyUsage());\r
+            }\r
+        }\r
+    }\r
+\r
+    public ProtocolsIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(ProtocolsIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SourceFilesDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SourceFilesDlg.java
new file mode 100644 (file)
index 0000000..3c86849
--- /dev/null
@@ -0,0 +1,469 @@
+/** @file\r
\r
+ The file is used to create, update SourceFile of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextField;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+\r
+/**\r
+ The class is used to create, update SourceFile of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class SourceFilesDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -6765742852142775378L;\r
+\r
+    //\r
+    // Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelFileName = null;\r
+\r
+    private JTextField jTextFieldFileName = null;\r
+\r
+    private JButton jButtonOpenFile = null;\r
+\r
+    private JLabel jLabelToolChainFamily = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelTagName = null;\r
+\r
+    private JTextField jTextFieldTagName = null;\r
+\r
+    private JLabel jLabelToolCode = null;\r
+\r
+    private JTextField jTextFieldToolCode = null;\r
+\r
+    private JTextField jTextFieldToolChainFamily = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private SourceFilesIdentification sfid = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    /**\r
+     This method initializes jTextFieldFileName \r
+     \r
+     @return javax.swing.JTextField jTextFieldFileName\r
+     \r
+     **/\r
+    private JTextField getJTextFieldSourceFilesDirectory() {\r
+        if (jTextFieldFileName == null) {\r
+            jTextFieldFileName = new JTextField();\r
+            jTextFieldFileName.setBounds(new java.awt.Rectangle(140, 10, 250, 20));\r
+            jTextFieldFileName.setPreferredSize(new java.awt.Dimension(250, 20));\r
+            jTextFieldFileName.setToolTipText("Path is relative to the MSA file and must include the file name");\r
+        }\r
+        return jTextFieldFileName;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOpenFile \r
+     \r
+     @return javax.swing.JButton jButtonOpenFile\r
+     \r
+     **/\r
+    private JButton getJButtonOpenFile() {\r
+        if (jButtonOpenFile == null) {\r
+            jButtonOpenFile = new JButton();\r
+            jButtonOpenFile.setText("Browse");\r
+            jButtonOpenFile.setBounds(new java.awt.Rectangle(395, 10, 85, 20));\r
+            jButtonOpenFile.setPreferredSize(new java.awt.Dimension(85, 20));\r
+            jButtonOpenFile.addActionListener(this);\r
+        }\r
+        return jButtonOpenFile;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldTagName       \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldTagName() {\r
+        if (jTextFieldTagName == null) {\r
+            jTextFieldTagName = new JTextField();\r
+            jTextFieldTagName.setBounds(new java.awt.Rectangle(140, 35, 340, 20));\r
+            jTextFieldTagName.setPreferredSize(new java.awt.Dimension(340, 20));\r
+            jTextFieldTagName.setToolTipText("You may specify a specific tool chain tag name, such as BILL1");\r
+        }\r
+        return jTextFieldTagName;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldToolCode      \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldToolCode() {\r
+        if (jTextFieldToolCode == null) {\r
+            jTextFieldToolCode = new JTextField();\r
+            jTextFieldToolCode.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\r
+            jTextFieldToolCode.setPreferredSize(new java.awt.Dimension(340, 20));\r
+            jTextFieldToolCode.setToolTipText("You may specify a specific tool command, such as ASM");\r
+        }\r
+        return jTextFieldToolCode;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldToolChainFamily       \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldToolChainFamily() {\r
+        if (jTextFieldToolChainFamily == null) {\r
+            jTextFieldToolChainFamily = new JTextField();\r
+            jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\r
+            jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(340, 20));\r
+            jTextFieldToolChainFamily.setToolTipText("You may specify a specific tool chain family, such as GCC");\r
+        }\r
+        return jTextFieldToolChainFamily;\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(140, 110, 340, 20));\r
+            jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(340, 20));\r
+            jTextFieldFeatureFlag.setToolTipText("RESERVED FOR FUTURE USE");\r
+        }\r
+        return jTextFieldFeatureFlag;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public SourceFilesDlg(SourceFilesIdentification inSourceFilesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inSourceFilesIdentification);\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 235);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Source Files");\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**         \r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     \r
+     @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
+     \r
+     **/\r
+    private void init(SourceFilesIdentification inSourceFilesIdentifications) {\r
+        init();\r
+        this.sfid = inSourceFilesIdentifications;\r
+\r
+        if (this.sfid != null) {\r
+            this.jTextFieldFileName.setText(sfid.getFilename());\r
+            this.jTextFieldTagName.setText(sfid.getTagName());\r
+            this.jTextFieldToolCode.setText(sfid.getToolCode());\r
+            this.jTextFieldToolChainFamily.setText(sfid.getToolChainFamily());\r
+            jTextFieldFeatureFlag.setText(sfid.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(sfid.getSupArchList());\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.jTextFieldFileName.setEnabled(!isView);\r
+            this.jButtonOpenFile.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(140, 135, 340, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(340, 20));\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jLabelToolCode = new JLabel();\r
+            jLabelToolCode.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
+            jLabelToolCode.setText("Tool Code");\r
+            jLabelTagName = new JLabel();\r
+            jLabelTagName.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
+            jLabelTagName.setText("Tag Name");\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 120, 20));\r
+            jLabelArch.setText("Sup Arch List");\r
+            jLabelToolChainFamily = new JLabel();\r
+            jLabelToolChainFamily.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
+            jLabelToolChainFamily.setText("Tool Chain Family");\r
+            jLabelFileName = new JLabel();\r
+            jLabelFileName.setText("File Name");\r
+            jLabelFileName.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 185));\r
+\r
+            jContentPane.add(jLabelFileName, null);\r
+            jContentPane.add(getJTextFieldSourceFilesDirectory(), null);\r
+            jContentPane.add(getJButtonOpenFile(), null);\r
+            jContentPane.add(jLabelToolChainFamily, null);\r
+            jStarLabel1 = new StarLabel();\r
+            jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
+\r
+            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(jLabelTagName, null);\r
+            jContentPane.add(getJTextFieldTagName(), null);\r
+            jContentPane.add(jLabelToolCode, null);\r
+            jContentPane.add(getJTextFieldToolCode(), null);\r
+            jContentPane.add(getJTextFieldToolChainFamily(), null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\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() == jButtonOpenFile) {\r
+            selectFile();\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentSourceFiles();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\r
+        }\r
+    }\r
+\r
+    private SourceFilesIdentification getCurrentSourceFiles() {\r
+        String name = this.jTextFieldFileName.getText();\r
+        String tagName = this.jTextFieldTagName.getText();\r
+        String toolCode = this.jTextFieldToolCode.getText();\r
+        String tcf = this.jTextFieldToolChainFamily.getText();\r
+        String featureFlag = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
+        sfid = new SourceFilesIdentification(name, tagName, toolCode, tcf, featureFlag, arch);\r
+        return sfid;\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 Filename\r
+        //\r
+        if (isEmpty(this.jTextFieldFileName.getText())) {\r
+            Log.err("File Name couldn't be empty");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
+            Log.err("Incorrect data type for File Name");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Check TagName \r
+        //\r
+        if (!isEmpty(this.jTextFieldTagName.getText())) {\r
+            if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
+                Log.err("Incorrect data type for Tag Name");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check ToolCode \r
+        //\r
+        if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
+            if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
+                Log.err("Incorrect data type for Tool Code");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check ToolChainFamily \r
+        //\r
+        if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
+            if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
+                Log.err("Incorrect data type for Tool Chain Family");\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
+        return true;\r
+    }\r
+\r
+    /**\r
+     Display a file open browser to let user select file\r
+     \r
+     **/\r
+    private void selectFile() {\r
+        JFileChooser fc = new JFileChooser(Workspace.getCurrentWorkspace());\r
+\r
+        int result = fc.showOpenDialog(new JPanel());\r
+        if (result == JFileChooser.APPROVE_OPTION) {\r
+            this.jTextFieldFileName.setText(fc.getSelectedFile().getName());\r
+        }\r
+    }\r
+\r
+    public SourceFilesIdentification getSfid() {\r
+        return sfid;\r
+    }\r
+\r
+    public void setSfid(SourceFilesIdentification sfid) {\r
+        this.sfid = sfid;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SystemTablesDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SystemTablesDlg.java
new file mode 100644 (file)
index 0000000..d866e01
--- /dev/null
@@ -0,0 +1,392 @@
+/** @file\r
+\r
+ The file is used to create, update SystemTable of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.SystemTables.SystemTablesIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update SystemTable of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+\r
+\r
+ **/\r
+public class SystemTablesDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = 7488769180379442276L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelEntry = 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 jComboBoxGuidC_Name = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private SystemTablesIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\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 jTextField \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, 10, 320, 20));\r
+            jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the Hob");\r
+        }\r
+        return jComboBoxGuidC_Name;\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
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\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
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 140, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 140, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("System Tables");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inSystemTablesId\r
+\r
+     **/\r
+    private void init(SystemTablesIdentification inSystemTablesId) {\r
+        init();\r
+        this.id = inSystemTablesId;\r
+\r
+        if (this.id != null) {\r
+            this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inBootModesIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public SystemTablesDlg(SystemTablesIdentification inSystemTablesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inSystemTablesIdentification);\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.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\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
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\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
+            jLabelEntry = new JLabel();\r
+            jLabelEntry.setText("Guid C_Name");\r
+            jLabelEntry.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, 165));\r
+\r
+            jContentPane.add(jLabelEntry, null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(getJComboBoxGuidC_Name(), null);\r
+            jContentPane.add(jLabelArch, 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
+\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVSystemTableUsage());\r
+        Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentSystemTables();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\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
+            }\r
+        }\r
+\r
+        return true;\r
+    }\r
+\r
+    private SystemTablesIdentification getCurrentSystemTables() {\r
+        String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
+        String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg2 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg4 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new SystemTablesIdentification(arg0, arg1, arg2, arg3, arg4);\r
+        return id;\r
+    }\r
+\r
+    public SystemTablesIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(SystemTablesIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/VariablesDlg.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/VariablesDlg.java
new file mode 100644 (file)
index 0000000..1a215ce
--- /dev/null
@@ -0,0 +1,438 @@
+/** @file\r
\r
+ The file is used to create, update Variable of MSA/MBD file\r
\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution.  The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.module.ui.dialog;\r
+\r
+import java.awt.event.ActionEvent;\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.JTextField;\r
+\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.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+/**\r
+ The class is used to create, update Variable of MSA/MBD file\r
+ It extends IInternalFrame\r
\r
+ **/\r
+public class VariablesDlg extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -6998982978030439446L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelVariableName = null;\r
+\r
+    private JTextField jTextFieldVariableName = 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 JScrollPane jScrollPane = null;\r
+\r
+    private JLabel jLabelGuidCName = null;\r
+\r
+    private JComboBox jComboBoxGuidC_Name = null;\r
+\r
+    private JTextField jTextFieldFeatureFlag = null;\r
+\r
+    private JLabel jLabelFeatureFlag = null;\r
+\r
+    private JLabel jLabelArch = null;\r
+\r
+    private JLabel jLabelHelpText = null;\r
+\r
+    private JTextField jTextFieldHelpText = null;\r
+\r
+    private ArchCheckBox jArchCheckBox = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    //\r
+    // Not used by UI\r
+    //\r
+    private VariablesIdentification id = null;\r
+\r
+    private EnumerationData ed = new EnumerationData();\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    /**\r
+     This method initializes jTextFieldString \r
+     \r
+     @return javax.swing.JTextField jTextFieldString\r
+     \r
+     **/\r
+    private JTextField getJTextFieldString() {\r
+        if (jTextFieldVariableName == null) {\r
+            jTextFieldVariableName = new JTextField();\r
+            jTextFieldVariableName.setSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldVariableName.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jTextFieldVariableName.setLocation(new java.awt.Point(160, 10));\r
+            jTextFieldVariableName\r
+                                  .setToolTipText("Enter a Hex Word Array, you must provide leading Zeros. 0x000a, 0x0010, ¡­");\r
+        }\r
+        return jTextFieldVariableName;\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, 60, 320, 20));\r
+            jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
+        }\r
+        return jComboBoxUsage;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPane  \r
+     \r
+     @return javax.swing.JScrollPane  \r
+     */\r
+    private JScrollPane getJScrollPane() {\r
+        if (jScrollPane == null) {\r
+            jScrollPane = new JScrollPane();\r
+            jScrollPane.setViewportView(getJContentPane());\r
+        }\r
+        return jScrollPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTextFieldFeatureFlag \r
+     \r
+     @return javax.swing.JTextField jTextFieldFeatureFlag\r
+     \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
+\r
+    /**\r
+     This method initializes jTextField \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 Hob");\r
+        }\r
+        return jComboBoxGuidC_Name;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOk    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel    \r
+     \r
+     @return javax.swing.JButton  \r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(500, 225);\r
+        this.setContentPane(getJScrollPane());\r
+        this.setTitle("Variables");\r
+        initFrame();\r
+        this.setViewMode(false);\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     Fill values to all fields if these values are not empty\r
+     \r
+     @param inVariablesId\r
+\r
+     **/\r
+    private void init(VariablesIdentification inVariablesId) {\r
+        init();\r
+        this.id = inVariablesId;\r
+\r
+        if (this.id != null) {\r
+            this.jTextFieldVariableName.setText(id.getName());\r
+            this.jComboBoxGuidC_Name.setSelectedItem(id.getGuid());\r
+            this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
+            this.jTextFieldHelpText.setText(id.getHelp());\r
+            this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
+            this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
+        }\r
+    }\r
+\r
+    /**\r
+     This is the override edit constructor\r
+     \r
+     @param inHobsIdentification\r
+     @param iFrame\r
+     \r
+     **/\r
+    public VariablesDlg(VariablesIdentification inVariablesIdentification, IFrame iFrame) {\r
+        super(iFrame, true);\r
+        init(inVariablesIdentification);\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.jTextFieldVariableName.setEnabled(!isView);\r
+            this.jComboBoxUsage.setEnabled(!isView);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes jContentPane\r
+     \r
+     @return javax.swing.JPanel jContentPane\r
+     \r
+     **/\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jArchCheckBox = new ArchCheckBox();\r
+            jArchCheckBox.setBounds(new java.awt.Rectangle(160, 135, 320, 20));\r
+            jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
+            jLabelGuidCName = new JLabel();\r
+            jLabelGuidCName.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelGuidCName.setText("Guid C_Name");\r
+            jLabelUsage = new JLabel();\r
+            jLabelUsage.setText("Usage");\r
+            jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelVariableName = new JLabel();\r
+            jLabelVariableName.setText("Variable Name");\r
+            jLabelVariableName.setLocation(new java.awt.Point(15, 10));\r
+            jLabelVariableName.setSize(new java.awt.Dimension(140, 20));\r
+            jLabelArch = new JLabel();\r
+            jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+            jLabelArch.setText("Arch");\r
+            jLabelFeatureFlag = new JLabel();\r
+            jLabelFeatureFlag.setText("Feature Flag");\r
+            jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setPreferredSize(new java.awt.Dimension(490, 190));\r
+\r
+            jContentPane.add(jLabelVariableName, null);\r
+            jContentPane.add(jLabelGuidCName, null);\r
+            jContentPane.add(getJComboBoxGuidC_Name(), null);\r
+            jContentPane.add(getJTextFieldString(), 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
+            jLabelHelpText = new JLabel();\r
+            jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));\r
+            jLabelHelpText.setText("Help Text");\r
+\r
+            jContentPane.add(jStarLabel1, null);\r
+            jContentPane.add(jStarLabel2, null);\r
+\r
+            jContentPane.add(jLabelArch, null);\r
+            jContentPane.add(jLabelFeatureFlag, null);\r
+            jContentPane.add(getJTextFieldFeatureFlag(), null);\r
+            jContentPane.add(jLabelHelpText, null);\r
+            jContentPane.add(getJTextFieldHelpText(), null);\r
+            jContentPane.add(jArchCheckBox, null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+        }\r
+        return jContentPane;\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() == jButtonOk) {\r
+            if (checkAdd()) {\r
+                getCurrentVariables();\r
+                this.returnType = DataType.RETURN_TYPE_OK;\r
+                this.setVisible(false);\r
+            }\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+            this.setVisible(false);\r
+        }\r
+    }\r
+\r
+    /**\r
+     This method initializes Usage type\r
+     \r
+     **/\r
+    private void initFrame() {\r
+        Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());\r
+        Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\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 VariableName \r
+        //\r
+        if (isEmpty(this.jTextFieldVariableName.getText())) {\r
+            Log.err("Variable Name couldn't be empty");\r
+            return false;\r
+        }\r
+\r
+        if (!isEmpty(this.jTextFieldVariableName.getText())) {\r
+            if (!DataValidation.isHexWordArrayType(this.jTextFieldVariableName.getText())) {\r
+                Log.err("Incorrect data type for Variable Name");\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
+        return true;\r
+    }\r
+\r
+    private VariablesIdentification getCurrentVariables() {\r
+        String arg0 = this.jTextFieldVariableName.getText();\r
+        String arg1 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
+        String arg2 = this.jComboBoxUsage.getSelectedItem().toString();\r
+\r
+        String arg3 = this.jTextFieldFeatureFlag.getText();\r
+        Vector<String> arg4 = this.jArchCheckBox.getSelectedItemsVector();\r
+        String arg5 = this.jTextFieldHelpText.getText();\r
+\r
+        id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);\r
+        return id;\r
+    }\r
+\r
+    public VariablesIdentification getId() {\r
+        return id;\r
+    }\r
+\r
+    public void setId(VariablesIdentification id) {\r
+        this.id = id;\r
+    }\r
+}\r