git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@671 6f19259b...
authorhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 30 Jun 2006 09:59:54 +0000 (09:59 +0000)
committerhche10x <hche10x@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 30 Jun 2006 09:59:54 +0000 (09:59 +0000)
114 files changed:
Tools/Source/FrameworkWizard/MANIFEST.MF [new file with mode: 0644]
Tools/Source/FrameworkWizard/build.xml [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/About.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/Clone.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/NewFileChooser.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/SelectModuleBelong.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataValidation.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/FileOperation.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/IFileFilter.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Log.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/SaveFile.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/XmlConfig.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/ExitConfirm.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IComboBox.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDefaultMutableTreeNode.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDesktopManager.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IDialog.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IFrame.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IInternalFrame.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/ITree.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/StarLabel.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/iCheckBoxList/ICheckBoxList.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/iCheckBoxList/ICheckBoxListCellRenderer.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/iCheckBoxList/ICheckBoxListItem.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/iCheckBoxList/ICheckBoxListModel.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/iCheckBoxList/ICheckBoxListener.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/BootModes/BootModesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/BootModes/BootModesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/DataHubs/DataHubsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/DataHubs/DataHubsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Events/EventsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Events/EventsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Externs/ExternsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Externs/ExternsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Guids/GuidsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Guids/GuidsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/HiiPackages/HiiPackagesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/HiiPackages/HiiPackagesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Hobs/HobsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Hobs/HobsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/LibraryClass/LibraryClassIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/LibraryClass/LibraryClassVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/ModuleIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/PackageDependencies/PackageDependenciesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/PackageDependencies/PackageDependenciesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/PcdCoded/PcdCodedIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/PcdCoded/PcdCodedVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Ppis/PpisIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Ppis/PpisVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Protocols/ProtocolsIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Protocols/ProtocolsVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/SourceFiles/SourceFilesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/SourceFiles/SourceFilesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/SystemTables/SystemTablesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/SystemTables/SystemTablesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Variables/VariablesIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/Identification/Variables/VariablesVector.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleBootModes.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleDataHubs.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleDefinitions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleEvents.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleExterns.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleGuids.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleHiiPackages.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleHobs.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleLibraryClassDefinitions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePCDs.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePackageDependencies.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModulePpis.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleProtocols.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleSourceFiles.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleSystemTables.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleVariables.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/MsaHeader.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/PackageIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GenGuidDialog.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/GuidEditor.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdFileContents.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdGuidDecls.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdHeader.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdLibClassDecls.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdMsaFiles.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageDefinitions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPackageHeaders.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPpiDecls.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdProtocolDecls.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/PlatformIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/DynamicTree.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdBuildOptions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdDynamicPcdBuildDefinitions.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFileContents.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdHeader.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/global/GlobalData.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/global/Spd.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/global/SurfaceAreaQuery.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/id/FpdModuleIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/id/Identification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/id/ModuleIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/id/PackageIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/id/PlatformIdentification.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/workspace/Workspace.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/workspace/WorkspaceTools.java [new file with mode: 0644]
Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/workspace/ui/SwitchWorkspace.java [new file with mode: 0644]
Tools/bin/FrameworkWizard.bat [new file with mode: 0644]
Tools/bin/PackageEditor.bat [deleted file]

diff --git a/Tools/Source/FrameworkWizard/MANIFEST.MF b/Tools/Source/FrameworkWizard/MANIFEST.MF
new file mode 100644 (file)
index 0000000..cfce7f7
--- /dev/null
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0\r
+Main-Class: org.tianocore.frameworkwizard.FrameworkWizardUI\r
diff --git a/Tools/Source/FrameworkWizard/build.xml b/Tools/Source/FrameworkWizard/build.xml
new file mode 100644 (file)
index 0000000..a9b00a3
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>\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
+<project name="FrameworkWizard" default="all" basedir=".">\r
+  <taskdef resource="net/sf/antcontrib/antlib.xml"/>\r
+  <property environment="env"/>\r
+  <property name="WORKSPACE" value="${env.WORKSPACE}"/>\r
+  <path id="classpath">\r
+    <fileset dir="${WORKSPACE}/Tools/Jars" includes="*.jar"/>\r
+    <fileset dir="${env.XMLBEANS_HOME}/lib" includes="*.jar"/>\r
+  </path>\r
+  <property name="buildDir" value="build"/>\r
+  <property name="installLocation" value="${WORKSPACE}/Tools/bin"/>\r
+  <target name="all" depends="install"/>\r
+  <target name="source">\r
+    <mkdir dir="${buildDir}"/>\r
+    <javac srcdir="src" destdir="${buildDir}">\r
+      <classpath refid="classpath"/>\r
+      <!-- <compilerarg value="-Xlint"/> -->\r
+    </javac>\r
+  </target>\r
+  <target name="clean">\r
+    <delete dir="${buildDir}"/>\r
+  </target>\r
+  <target name="cleanall">\r
+    <delete dir="${buildDir}"/>\r
+    <delete file="${installLocation}/FrameworkWizard.jar"/>\r
+  </target>\r
+  <target name="install" depends="source">\r
+    <jar destfile="${installLocation}/FrameworkWizard.jar"\r
+      basedir="${buildDir}"\r
+      includes="**"\r
+      manifest="MANIFEST.MF"\r
+    />\r
+  </target>\r
+</project>\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/About.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/About.java
new file mode 100644 (file)
index 0000000..0e4cfd2
--- /dev/null
@@ -0,0 +1,157 @@
+/** @file\r
\r
+ To show a about window with copyright information\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;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.WindowEvent;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+\r
+/**\r
+ The class is used to show a about window with copyright information\r
+ It extends IDialog\r
+\r
+ **/\r
+public class About extends IDialog {\r
+\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = 2958136136667310962L;\r
+\r
+    //\r
+    //Define class members\r
+    //\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabel = null;\r
+\r
+    private JLabel jLabel1 = null;\r
+\r
+    private JLabel jLabel2 = null;\r
+\r
+    private JButton jButtonOK = null;\r
+\r
+    /**\r
+     This method initializes jButtonOK \r
+     \r
+     @return javax.swing.JButton jButtonOK\r
+     \r
+     **/\r
+    private JButton getJButtonOK() {\r
+        if (jButtonOK == null) {\r
+            jButtonOK = new JButton();\r
+            jButtonOK.setBounds(new java.awt.Rectangle(105, 120, 90, 20));\r
+            jButtonOK.setText("OK");\r
+            jButtonOK.addActionListener(this);\r
+        }\r
+        return jButtonOK;\r
+    }\r
+\r
+    public static void main(String[] args) {\r
+        About a = new About();\r
+        a.setVisible(true);\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public About() {\r
+        super();\r
+        init();\r
+    }\r
+    \r
+    /**\r
+    This is the default constructor\r
+    \r
+    **/\r
+   public About(IFrame parentFrame, boolean modal) {\r
+       super(parentFrame, modal);\r
+       init();\r
+   }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     **/\r
+    private void init() {\r
+        this.setSize(300, 200);\r
+        this.setContentPane(getJContentPane());\r
+        this.setTitle("About");\r
+        this.getRootPane().setDefaultButton(jButtonOK);\r
+        this.centerWindow();\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
+            jLabel2 = new JLabel();\r
+            jLabel2.setBounds(new java.awt.Rectangle(15, 80, 270, 20));\r
+            jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);\r
+            jLabel2.setText("All rights reserved");\r
+            jLabel1 = new JLabel();\r
+            jLabel1.setBounds(new java.awt.Rectangle(15, 50, 270, 20));\r
+            jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);\r
+            jLabel1.setText("Copyright (c) 2006, Intel Corporation");\r
+            jLabel = new JLabel();\r
+            jLabel.setToolTipText("");\r
+            jLabel.setBounds(new java.awt.Rectangle(15, 20, 270, 20));\r
+            jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);\r
+            jLabel.setText("Framework Development Package System 1.0");\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.add(jLabel, null);\r
+            jContentPane.add(jLabel1, null);\r
+            jContentPane.add(jLabel2, null);\r
+            jContentPane.add(getJButtonOK(), 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
+    public void actionPerformed(ActionEvent arg0) {\r
+        if (arg0.getSource() == jButtonOK) {\r
+            returnType = DataType.RETURN_TYPE_OK;\r
+            this.setVisible(false);\r
+        }\r
+    }\r
+\r
+    /**\r
+     Dispose when windows is closing\r
+     \r
+     @param arg0\r
+     \r
+     **/\r
+    public void windowClosing(WindowEvent arg0) {\r
+        this.dispose();\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/Clone.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/Clone.java
new file mode 100644 (file)
index 0000000..baf0379
--- /dev/null
@@ -0,0 +1,981 @@
+/** @file\r
\r
+ The file is used to clone workspace, module, package and platform\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;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JPanel;\r
+import javax.swing.JLabel;\r
+import javax.swing.JTextField;\r
+import javax.swing.JButton;\r
+\r
+import org.apache.xmlbeans.XmlException;\r
+import org.tianocore.ModuleDefinitionsDocument.ModuleDefinitions;\r
+import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
+import org.tianocore.PackageDefinitionsDocument.PackageDefinitions;\r
+import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
+import org.tianocore.PlatformDefinitionsDocument.PlatformDefinitions;\r
+import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.FileOperation;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Identification;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.OpenFile;\r
+import org.tianocore.frameworkwizard.common.SaveFile;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.module.Identification.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import javax.swing.JComboBox;\r
+\r
+public class Clone extends IDialog {\r
+\r
+    /**\r
+     Define class members\r
+     \r
+     **/\r
+    private static final long serialVersionUID = -5469299324965727137L;\r
+\r
+    private JPanel jContentPane = null;\r
+\r
+    private JLabel jLabelType = null;\r
+\r
+    private JTextField jTextFieldType = null;\r
+\r
+    private JLabel jLabelSource = null;\r
+\r
+    private JTextField jTextFieldSource = null;\r
+\r
+    private JButton jButtonBrowse = null;\r
+\r
+    private JLabel jLabelDestinationFile = null;\r
+\r
+    private JTextField jTextFieldFilePath = null;\r
+\r
+    private JLabel jLabelBaseName = null;\r
+\r
+    private JTextField jTextFieldBaseName = null;\r
+\r
+    private JLabel jLabelGuid = null;\r
+\r
+    private JTextField jTextFieldGuid = null;\r
+\r
+    private JLabel jLabelVersion = null;\r
+\r
+    private JTextField jTextFieldVersion = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    private JButton jButtonGenerateGuid = null;\r
+\r
+    private int mode = -1;\r
+\r
+    private Vector<PackageIdentification> packages = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private JLabel jLabelBelong = null;\r
+\r
+    private JComboBox jComboBoxExistingPackage = null;\r
+\r
+    private Identification oldId = null;\r
+\r
+    private Identification newId = null;\r
+\r
+    private ModuleIdentification mid = null;\r
+\r
+    private PackageIdentification pid = null;\r
+\r
+    private PlatformIdentification fid = null;\r
+\r
+    /**\r
+     * This method initializes jTextFieldType  \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldType() {\r
+        if (jTextFieldType == null) {\r
+            jTextFieldType = new JTextField();\r
+            jTextFieldType.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
+            jTextFieldType.setEditable(false);\r
+        }\r
+        return jTextFieldType;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldSource        \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldSource() {\r
+        if (jTextFieldSource == null) {\r
+            jTextFieldSource = new JTextField();\r
+            jTextFieldSource.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
+            jTextFieldSource.setEditable(false);\r
+        }\r
+        return jTextFieldSource;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonBrowse   \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonBrowse() {\r
+        if (jButtonBrowse == null) {\r
+            jButtonBrowse = new JButton();\r
+            jButtonBrowse.setBounds(new java.awt.Rectangle(395, 60, 85, 20));\r
+            jButtonBrowse.setText("Browse");\r
+            jButtonBrowse.addActionListener(this);\r
+        }\r
+        return jButtonBrowse;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldDestinationFile       \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldFilePath() {\r
+        if (jTextFieldFilePath == null) {\r
+            jTextFieldFilePath = new JTextField();\r
+            jTextFieldFilePath.setBounds(new java.awt.Rectangle(160, 60, 230, 20));\r
+        }\r
+        return jTextFieldFilePath;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldBaseName      \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldBaseName() {\r
+        if (jTextFieldBaseName == null) {\r
+            jTextFieldBaseName = new JTextField();\r
+            jTextFieldBaseName.setBounds(new java.awt.Rectangle(160, 110, 320, 20));\r
+        }\r
+        return jTextFieldBaseName;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldGuid  \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldGuid() {\r
+        if (jTextFieldGuid == null) {\r
+            jTextFieldGuid = new JTextField();\r
+            jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 135, 230, 20));\r
+        }\r
+        return jTextFieldGuid;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldVersion       \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldVersion() {\r
+        if (jTextFieldVersion == null) {\r
+            jTextFieldVersion = new JTextField();\r
+            jTextFieldVersion.setBounds(new java.awt.Rectangle(160, 160, 320, 20));\r
+        }\r
+        return jTextFieldVersion;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonOk       \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(235, 200, 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
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(355, 200, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\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(395, 135, 85, 20));\r
+            jButtonGenerateGuid.setText("Gen");\r
+            jButtonGenerateGuid.addActionListener(this);\r
+        }\r
+        return jButtonGenerateGuid;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jComboBoxExistingPackage        \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxExistingPackage() {\r
+        if (jComboBoxExistingPackage == null) {\r
+            jComboBoxExistingPackage = new JComboBox();\r
+            jComboBoxExistingPackage.setBounds(new java.awt.Rectangle(160, 85, 320, 20));\r
+        }\r
+        return jComboBoxExistingPackage;\r
+    }\r
+\r
+    /**\r
+     \r
+     @param args\r
+     \r
+     **/\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    /**\r
+     * This is the default constructor\r
+     */\r
+    public Clone() {\r
+        super();\r
+        init();\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public Clone(IFrame parentFrame, boolean modal, int fileType, Identification identification) {\r
+        super(parentFrame, modal);\r
+        this.mode = fileType;\r
+        if (identification != null) {\r
+            this.oldId = new Identification(identification.getName(), identification.getGuid(),\r
+                                            identification.getVersion(), identification.getPath());\r
+            this.newId = new Identification(identification.getName(), identification.getGuid(),\r
+                                            identification.getVersion(), identification.getPath());\r
+        }\r
+        init(mode);\r
+    }\r
+\r
+    /**\r
+     Query all existing packages and fill them into combox\r
+     \r
+     **/\r
+    private void initExistingPackage() {\r
+        packages = wt.getAllPackages();\r
+        for (int index = 0; index < packages.size(); index++) {\r
+            this.jComboBoxExistingPackage.addItem(packages.elementAt(index).getName());\r
+        }\r
+    }\r
+\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void init() {\r
+        this.setSize(493, 260);\r
+        this.setContentPane(getJContentPane());\r
+        this.setTitle("Clone");\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void init(int mode) {\r
+        init();\r
+        if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            this.jTextFieldType.setText(DataType.MODULE_SURFACE_AREA);\r
+            this.jTextFieldSource.setText(oldId.getPath());\r
+            initExistingPackage();\r
+            this.jButtonBrowse.setEnabled(false);\r
+            this.jTextFieldFilePath.setToolTipText("Input module name here. For example, Application\\HelloWorld\\HelloWorld.msa");\r
+            this.jLabelDestinationFile.setText("Module Path\\Name");\r
+        }\r
+        if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            this.jTextFieldType.setText(DataType.PACKAGE_SURFACE_AREA);\r
+            this.jTextFieldSource.setText(oldId.getPath());\r
+            this.jLabelBelong.setEnabled(false);\r
+            this.jComboBoxExistingPackage.setEnabled(false);\r
+            this.jButtonBrowse.setEnabled(false);\r
+            this.jTextFieldFilePath.setToolTipText("Input package name here. For example, MdePkg\\MdePkg.fpd");\r
+            this.jLabelDestinationFile.setText("Package Path\\Name");\r
+        }\r
+        if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            this.jTextFieldType.setText(DataType.PLATFORM_SURFACE_AREA);\r
+            this.jTextFieldSource.setText(oldId.getPath());\r
+            this.jLabelBelong.setEnabled(false);\r
+            this.jComboBoxExistingPackage.setEnabled(false);\r
+            this.jTextFieldFilePath.setToolTipText("Select platform path here. For example, C:\\MyWorkspace\\EdkNt32Pkg\\Nt32.fpd");\r
+            this.jLabelDestinationFile.setText("New Platform path");\r
+        }\r
+        if (mode == DataType.RETURN_TYPE_WORKSPACE) {\r
+            this.jTextFieldType.setText(DataType.WORKSPACE);\r
+            this.jTextFieldSource.setText(Workspace.getCurrentWorkspace());\r
+            this.jLabelBelong.setEnabled(false);\r
+            this.jComboBoxExistingPackage.setEnabled(false);\r
+            this.jLabelBaseName.setEnabled(false);\r
+            this.jTextFieldBaseName.setEditable(false);\r
+            this.jLabelGuid.setEnabled(false);\r
+            this.jTextFieldGuid.setEnabled(false);\r
+            this.jButtonGenerateGuid.setEnabled(false);\r
+            this.jLabelVersion.setEnabled(false);\r
+            this.jTextFieldVersion.setEnabled(false);\r
+            this.jTextFieldFilePath.setToolTipText("Input workspace path here. For example, C:\\MyWorkspace");\r
+            this.jLabelDestinationFile.setText("New Workspace path");\r
+        }\r
+    }\r
+\r
+    /**\r
+     * This method initializes jContentPane\r
+     * \r
+     * @return javax.swing.JPanel\r
+     */\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jLabelBelong = new JLabel();\r
+            jLabelBelong.setBounds(new java.awt.Rectangle(15, 85, 140, 20));\r
+            jLabelBelong.setText("Clone to Package");\r
+            jLabelVersion = new JLabel();\r
+            jLabelVersion.setBounds(new java.awt.Rectangle(15, 160, 140, 20));\r
+            jLabelVersion.setText("Version");\r
+            jLabelGuid = new JLabel();\r
+            jLabelGuid.setBounds(new java.awt.Rectangle(15, 135, 140, 20));\r
+            jLabelGuid.setText("Guid");\r
+            jLabelBaseName = new JLabel();\r
+            jLabelBaseName.setBounds(new java.awt.Rectangle(15, 110, 140, 20));\r
+            jLabelBaseName.setText("Base Name");\r
+            jLabelDestinationFile = new JLabel();\r
+            jLabelDestinationFile.setBounds(new java.awt.Rectangle(15, 60, 140, 20));\r
+            jLabelDestinationFile.setText("Destination File Name");\r
+            jLabelSource = new JLabel();\r
+            jLabelSource.setBounds(new java.awt.Rectangle(15, 35, 140, 20));\r
+            jLabelSource.setText("Source");\r
+            jLabelType = new JLabel();\r
+            jLabelType.setBounds(new java.awt.Rectangle(15, 10, 140, 20));\r
+            jLabelType.setText("Type");\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setSize(new java.awt.Dimension(490, 227));\r
+            jContentPane.add(jLabelType, null);\r
+            jContentPane.add(getJTextFieldType(), null);\r
+            jContentPane.add(jLabelSource, null);\r
+            jContentPane.add(getJTextFieldSource(), null);\r
+            jContentPane.add(jLabelDestinationFile, null);\r
+            jContentPane.add(getJTextFieldFilePath(), null);\r
+            jContentPane.add(jLabelBaseName, null);\r
+            jContentPane.add(getJTextFieldBaseName(), null);\r
+            jContentPane.add(jLabelGuid, null);\r
+            jContentPane.add(getJTextFieldGuid(), null);\r
+            jContentPane.add(jLabelVersion, null);\r
+            jContentPane.add(getJTextFieldVersion(), null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+            jContentPane.add(getJButtonBrowse(), null);\r
+            jContentPane.add(getJButtonGenerateGuid(), null);\r
+            jContentPane.add(jLabelBelong, null);\r
+            jContentPane.add(getJComboBoxExistingPackage(), 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
+    public void actionPerformed(ActionEvent arg0) {\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.setVisible(false);\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonOk) {\r
+            if (this.check()) {\r
+                try {\r
+                    this.save();\r
+                } catch (IOException e) {\r
+                    Log.err("Clone", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                } catch (XmlException e) {\r
+                    Log.err("Clone", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                } catch (Exception e) {\r
+                    Log.err("Clone", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                }\r
+            } else {\r
+                return;\r
+            }\r
+            this.setVisible(false);\r
+        }\r
+\r
+        if (arg0.getSource() == this.jButtonGenerateGuid) {\r
+            this.jTextFieldGuid.setText(Tools.generateUuidString());\r
+        }\r
+\r
+        //\r
+        // Use different file ext\r
+        //\r
+        if (arg0.getSource() == this.jButtonBrowse) {\r
+            JFileChooser fc = new JFileChooser();\r
+            fc.setAcceptAllFileFilterUsed(false);\r
+\r
+            if (mode == DataType.RETURN_TYPE_WORKSPACE) {\r
+                fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+                fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);\r
+            }\r
+            if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex())\r
+                                                        .getPath()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.MODULE_SURFACE_AREA_EXT));\r
+            }\r
+            if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.PACKAGE_SURFACE_AREA_EXT));\r
+            }\r
+            if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.PLATFORM_SURFACE_AREA_EXT));\r
+            }\r
+            int result = fc.showSaveDialog(new JPanel());\r
+            if (result == JFileChooser.APPROVE_OPTION) {\r
+                this.jTextFieldFilePath.setText(Tools.addPathExt(fc.getSelectedFile().getPath(), mode));\r
+            }\r
+        }\r
+    }\r
+\r
+    //\r
+    // Check name, guid and version\r
+    //\r
+    private boolean checkId() {\r
+        //\r
+        // Check Basename\r
+        //\r
+        if (isEmpty(this.jTextFieldBaseName.getText())) {\r
+            Log.err("Base Name couldn't be empty!");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) {\r
+            Log.err("Incorrect data type for Base Name");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Check Guid\r
+        //\r
+        if (isEmpty(this.jTextFieldGuid.getText())) {\r
+            Log.err("Guid couldn't be empty!");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isGuid(this.jTextFieldGuid.getText())) {\r
+            Log.err("Incorrect data type for Guid");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Check Version\r
+        //\r
+        if (isEmpty(this.jTextFieldVersion.getText())) {\r
+            Log.err("Version couldn't be empty!");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isVersion(this.jTextFieldVersion.getText())) {\r
+            Log.err("Incorrect data type for Version");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Save information to id\r
+        //\r
+        newId.setName(this.jTextFieldBaseName.getText());\r
+        newId.setGuid(this.jTextFieldGuid.getText());\r
+        newId.setVersion(this.jTextFieldVersion.getText());\r
+        newId.setPath(this.jTextFieldFilePath.getText());\r
+\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     Check before save\r
+     \r
+     @return\r
+     \r
+     **/\r
+    private boolean check() {\r
+        String src = this.jTextFieldSource.getText();\r
+        String trg = this.jTextFieldFilePath.getText();\r
+        File srcFile = new File(src);\r
+        File trgFile = new File(trg);\r
+\r
+        //\r
+        // Common Check\r
+        //\r
+        if (!srcFile.exists()) {\r
+            Log.err("The source doesn't exist");\r
+            return false;\r
+        }\r
+        if (isEmpty(trg)) {\r
+            Log.err("The destination file path couldn't be empty");\r
+            return false;\r
+        }\r
+        if (src.equals(trg)) {\r
+            Log.err("The source and destination couldn't be same");\r
+            return false;\r
+        }\r
+        if (trgFile.exists()) {\r
+            Log.err("The destination already exists");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Check for workspace\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_WORKSPACE) {\r
+            if (trg.indexOf(src + DataType.FILE_SEPARATOR) == 0) {\r
+                Log.err("The new workspace couldn't be in current workspace!");\r
+                return false;\r
+            }\r
+        }\r
+\r
+        //\r
+        // Check for Module\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            return checkId();\r
+        }\r
+\r
+        //\r
+        // Check for Package\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            if (trg.indexOf(DataType.DOS_FILE_SEPARATOR) == -1 && trg.indexOf(DataType.UNIX_FILE_SEPARATOR) == -1) {\r
+                Log.err("The package name must include a path");\r
+                return false;\r
+            }\r
+            trg = this.getPackagePath();\r
+            if (Tools.getFilePathOnly(src).equals(Tools.getFilePathOnly(trg))) {\r
+                Log.err("The source and destination couldn't be same");\r
+                return false;\r
+            }\r
+            trgFile = new File(trg);\r
+            if (trgFile.exists()) {\r
+                Log.err("The target package already exists");\r
+                return false;\r
+            }\r
+            return checkId();\r
+        }\r
+\r
+        //\r
+        // Check for Platform\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            if (trg.indexOf(Workspace.getCurrentWorkspace()) != 0) {\r
+                Log.err("The target platform must be in current workspace");\r
+                return false;\r
+            }\r
+            trgFile = new File(trg);\r
+            if (trgFile.exists()) {\r
+                Log.err("The target platform already exists");\r
+                return false;\r
+            }\r
+            return checkId();\r
+        }\r
+\r
+        return true;\r
+    }\r
+\r
+    private void save() throws IOException, XmlException, Exception {\r
+        String src = this.jTextFieldSource.getText();\r
+        String trg = this.jTextFieldFilePath.getText();\r
+        \r
+        //\r
+        // Clone Workspace\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_WORKSPACE) {\r
+            try {\r
+                FileOperation.copyFolder(src, trg);\r
+            } catch (Exception e) {\r
+                this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+                Log.err("Clone Workspace", e.getMessage());\r
+                e.printStackTrace();\r
+            }\r
+            this.returnType = DataType.RETURN_TYPE_WORKSPACE;\r
+        }\r
+\r
+        //\r
+        // Clone Module Surface Area\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            //\r
+            // Get target path from source path\r
+            //\r
+            trg = getModulePath();\r
+            newId.setPath(trg);\r
+            \r
+            //\r
+            // First copy all files to new directory\r
+            //\r
+            FileOperation.copyFolder(Tools.getFilePathOnly(src), Tools.getFilePathOnly(trg));\r
+\r
+            //\r
+            // Delete old spd file\r
+            //\r
+            FileOperation.delFile(Tools.getFilePathOnly(trg) + DataType.FILE_SEPARATOR + Tools.getFileNameOnly(src));\r
+\r
+            //\r
+            // Create new msa file\r
+            //\r
+            ModuleSurfaceArea msa = null;\r
+            msa = OpenFile.openMsaFile(src);\r
+\r
+            //\r
+            // Update to memory\r
+            //\r
+            msa.getMsaHeader().setModuleName(newId.getName());\r
+            msa.getMsaHeader().setGuidValue(newId.getGuid());\r
+            msa.getMsaHeader().setVersion(newId.getVersion());\r
+\r
+            //\r
+            // Update Cloned From element\r
+            //\r
+            updateModuleClonedId(msa, oldId);\r
+            \r
+            //\r
+            // Save to file\r
+            //\r
+            SaveFile.saveMsaFile(trg, msa);\r
+\r
+            //\r
+            // Update to platformId\r
+            //\r
+            this.setMid(new ModuleIdentification(newId, packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex())));\r
+\r
+            //\r
+            // Open belonging package\r
+            //\r
+            PackageSurfaceArea psa = PackageSurfaceArea.Factory.newInstance();\r
+            psa = OpenFile.openSpdFile(mid.getPackageId().getPath());\r
+            \r
+            //\r
+            // Update the db file\r
+            //\r
+            wt.addModuleToPackage(mid, psa);\r
+\r
+            this.returnType = DataType.RETURN_TYPE_MODULE_SURFACE_AREA;\r
+        }\r
+\r
+        //\r
+        // Clone Package Surface Area\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            //\r
+            // Get target path from source path\r
+            //\r
+            trg = this.getPackagePath();\r
+            newId.setPath(trg);\r
+            \r
+            //\r
+            // First copy all files to new directory\r
+            //\r
+            FileOperation.copyFolder(Tools.getFilePathOnly(src), Tools.getFilePathOnly(trg));\r
+\r
+            //\r
+            // Delete old spd file\r
+            //\r
+            FileOperation.delFile(Tools.getFilePathOnly(trg) + DataType.FILE_SEPARATOR + Tools.getFileNameOnly(src));\r
+\r
+            //\r
+            // Create new spd file\r
+            //\r
+            PackageSurfaceArea spd = null;\r
+            spd = OpenFile.openSpdFile(src);\r
+\r
+            //\r
+            // Update to memory\r
+            //\r
+            spd.getSpdHeader().setPackageName(newId.getName());\r
+            spd.getSpdHeader().setGuidValue(newId.getGuid());\r
+            spd.getSpdHeader().setVersion(newId.getVersion());\r
+\r
+            //\r
+            // Update Cloned From element\r
+            //\r
+            updatePackageClonedId(spd, oldId);\r
+            \r
+            //\r
+            // Save to file\r
+            //\r
+            SaveFile.saveSpdFile(trg, spd);\r
+\r
+            //\r
+            // Update to platformId\r
+            //\r
+            this.setPid(new PackageIdentification(newId));\r
+\r
+            //\r
+            // Update the db file\r
+            //\r
+            wt.addPackageToDatabase(pid);\r
+\r
+            this.returnType = DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA;\r
+        }\r
+\r
+        //\r
+        // Clone Platform Surface Area\r
+        //\r
+        if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            PlatformSurfaceArea fpd = null;\r
+            fpd = OpenFile.openFpdFile(src);\r
+\r
+            //\r
+            // Update to memory\r
+            //\r
+            fpd.getPlatformHeader().setPlatformName(newId.getName());\r
+            fpd.getPlatformHeader().setGuidValue(newId.getGuid());\r
+            fpd.getPlatformHeader().setVersion(newId.getVersion());\r
+\r
+            //\r
+            // Update Cloned From element\r
+            //\r
+            updatePlatformClonedId(fpd, oldId);\r
+\r
+            //\r
+            // Save to file\r
+            //\r
+            SaveFile.saveFpdFile(trg, fpd);\r
+\r
+            //\r
+            // Update to platformId\r
+            //\r
+            this.setFid(new PlatformIdentification(newId));\r
+\r
+            //\r
+            // Update the db file\r
+            //\r
+            wt.addPlatformToDatabase(fid);\r
+\r
+            this.returnType = DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA;\r
+        }\r
+    }\r
+    \r
+    private String getSelectPackagePath() {\r
+        return Tools.getFilePathOnly(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()).getPath());\r
+    }\r
+\r
+    private String getModulePath() {\r
+        String trg = this.jTextFieldFilePath.getText();\r
+        trg = Tools.addPathExt(trg, mode);\r
+        trg = getSelectPackagePath() + DataType.FILE_SEPARATOR + trg;\r
+        Tools.convertPathToCurrentOsType(trg);\r
+        return trg;\r
+    }\r
+    \r
+    private String getPackagePath() {\r
+        String trg = this.jTextFieldFilePath.getText();\r
+        trg = Tools.addPathExt(trg, mode);\r
+        trg = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR + trg;\r
+        trg = Tools.convertPathToCurrentOsType(trg);\r
+        return trg;\r
+    }\r
+    \r
+    /**\r
+     Set target item's Cloned From element\r
+\r
+     @param id\r
+     @return\r
+\r
+     **/\r
+    private void updateModuleClonedId(ModuleSurfaceArea msa, Identification id) {\r
+        //\r
+        // Get PlatformDefinitions First\r
+        //\r
+        ModuleDefinitions pd = null;\r
+        if (msa.getModuleDefinitions() == null) {\r
+            pd = ModuleDefinitions.Factory.newInstance();\r
+            msa.addNewModuleDefinitions();\r
+        } else {\r
+            pd = msa.getModuleDefinitions();\r
+        }\r
+\r
+        //\r
+        // Get ClonedFrom then\r
+        //\r
+        ModuleDefinitions.ClonedFrom cf = null;\r
+        if (pd.getClonedFrom() == null) {\r
+            cf = ModuleDefinitions.ClonedFrom.Factory.newInstance();\r
+        } else {\r
+            cf = pd.getClonedFrom();\r
+        }\r
+\r
+        //\r
+        // Set new Cloned item\r
+        //\r
+        ModuleDefinitions.ClonedFrom.Cloned c = ModuleDefinitions.ClonedFrom.Cloned.Factory.newInstance();\r
+        c.setModuleGuid(id.getGuid());\r
+        c.setModuleVersion(id.getVersion());\r
+\r
+        cf.addNewCloned();\r
+        cf.setClonedArray(cf.getClonedList().size() - 1, c);\r
+        pd.addNewClonedFrom();\r
+        pd.setClonedFrom(cf);\r
+        msa.setModuleDefinitions(pd);\r
+    }\r
+\r
+    /**\r
+     Set target item's Cloned From element\r
+     \r
+     @param id\r
+     @return\r
+     \r
+     **/\r
+    private void updatePackageClonedId(PackageSurfaceArea spd, Identification id) {\r
+        //\r
+        // Get PlatformDefinitions First\r
+        //\r
+        PackageDefinitions pd = null;\r
+        if (spd.getPackageDefinitions() == null) {\r
+            pd = PackageDefinitions.Factory.newInstance();\r
+            spd.addNewPackageDefinitions();\r
+        } else {\r
+            pd = spd.getPackageDefinitions();\r
+        }\r
+\r
+        //\r
+        // Get ClonedFrom then\r
+        //\r
+        PackageDefinitions.ClonedFrom cf = null;\r
+        if (pd.getClonedFrom() == null) {\r
+            cf = PackageDefinitions.ClonedFrom.Factory.newInstance();\r
+        } else {\r
+            cf = pd.getClonedFrom();\r
+        }\r
+\r
+        //\r
+        // Set new Cloned item\r
+        //\r
+        PackageDefinitions.ClonedFrom.Cloned c = PackageDefinitions.ClonedFrom.Cloned.Factory.newInstance();\r
+        c.setPackageGuid(id.getGuid());\r
+        c.setPackageVersion(id.getVersion());\r
+\r
+        cf.addNewCloned();\r
+        cf.setClonedArray(cf.getClonedList().size() - 1, c);\r
+        pd.addNewClonedFrom();\r
+        pd.setClonedFrom(cf);\r
+        spd.setPackageDefinitions(pd);\r
+    }\r
+\r
+    /**\r
+     Set target item's Cloned From element\r
+     \r
+     @param id\r
+     @return\r
+     \r
+     **/\r
+    private void updatePlatformClonedId(PlatformSurfaceArea fpd, Identification id) {\r
+        //\r
+        // Get PlatformDefinitions First\r
+        //\r
+        PlatformDefinitions pd = null;\r
+        if (fpd.getPlatformDefinitions() == null) {\r
+            pd = PlatformDefinitions.Factory.newInstance();\r
+            fpd.addNewPlatformDefinitions();\r
+        } else {\r
+            pd = fpd.getPlatformDefinitions();\r
+        }\r
+\r
+        //\r
+        // Get ClonedFrom then\r
+        //\r
+        PlatformDefinitions.ClonedFrom cf = null;\r
+        if (pd.getClonedFrom() == null) {\r
+            cf = PlatformDefinitions.ClonedFrom.Factory.newInstance();\r
+        } else {\r
+            cf = pd.getClonedFrom();\r
+        }\r
+\r
+        //\r
+        // Set new Cloned item\r
+        //\r
+        PlatformDefinitions.ClonedFrom.Cloned c = PlatformDefinitions.ClonedFrom.Cloned.Factory.newInstance();\r
+        c.setPlatformGuid(id.getGuid());\r
+        c.setPlatformVersion(id.getVersion());\r
+\r
+        cf.addNewCloned();\r
+        cf.setClonedArray(cf.getClonedList().size() - 1, c);\r
+        pd.addNewClonedFrom();\r
+        pd.setClonedFrom(cf);\r
+        fpd.setPlatformDefinitions(pd);\r
+    }\r
+\r
+    public PlatformIdentification getFid() {\r
+        return fid;\r
+    }\r
+\r
+    public void setFid(PlatformIdentification fid) {\r
+        this.fid = fid;\r
+    }\r
+\r
+    public ModuleIdentification getMid() {\r
+        return mid;\r
+    }\r
+\r
+    public void setMid(ModuleIdentification mid) {\r
+        this.mid = mid;\r
+    }\r
+\r
+    public PackageIdentification getPid() {\r
+        return pid;\r
+    }\r
+\r
+    public void setPid(PackageIdentification pid) {\r
+        this.pid = pid;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
new file mode 100644 (file)
index 0000000..6b33cd6
--- /dev/null
@@ -0,0 +1,3016 @@
+/** @file\r
\r
+ The main GUI for module editor. \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;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ComponentEvent;\r
+import java.awt.event.ComponentListener;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.awt.event.WindowEvent;\r
+import java.io.IOException;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JCheckBoxMenuItem;\r
+import javax.swing.JDesktopPane;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JFrame;\r
+import javax.swing.JInternalFrame;\r
+import javax.swing.JMenu;\r
+import javax.swing.JMenuBar;\r
+import javax.swing.JMenuItem;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JSplitPane;\r
+import javax.swing.JTabbedPane;\r
+import javax.swing.event.MenuEvent;\r
+import javax.swing.event.MenuListener;\r
+import javax.swing.event.TreeSelectionEvent;\r
+import javax.swing.event.TreeSelectionListener;\r
+\r
+import org.apache.xmlbeans.XmlException;\r
+import org.tianocore.ModuleSurfaceAreaDocument;\r
+import org.tianocore.PackageSurfaceAreaDocument;\r
+import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Identification;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.OpenFile;\r
+import org.tianocore.frameworkwizard.common.OpeningModuleList;\r
+import org.tianocore.frameworkwizard.common.OpeningModuleType;\r
+import org.tianocore.frameworkwizard.common.OpeningPackageList;\r
+import org.tianocore.frameworkwizard.common.OpeningPackageType;\r
+import org.tianocore.frameworkwizard.common.OpeningPlatformList;\r
+import org.tianocore.frameworkwizard.common.OpeningPlatformType;\r
+import org.tianocore.frameworkwizard.common.SaveFile;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDefaultMutableTreeNode;\r
+import org.tianocore.frameworkwizard.common.ui.IDesktopManager;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.ITree;\r
+import org.tianocore.frameworkwizard.module.Identification.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleBootModes;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleDataHubs;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleDefinitions;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleEvents;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleExterns;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleGuids;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleHiiPackages;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleHobs;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleLibraryClassDefinitions;\r
+import org.tianocore.frameworkwizard.module.ui.ModulePCDs;\r
+import org.tianocore.frameworkwizard.module.ui.ModulePackageDependencies;\r
+import org.tianocore.frameworkwizard.module.ui.ModulePpis;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleProtocols;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleSourceFiles;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleSystemTables;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleVariables;\r
+import org.tianocore.frameworkwizard.module.ui.MsaHeader;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdGuidDecls;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdHeader;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdLibClassDecls;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdMsaFiles;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdPackageDefinitions;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdPackageHeaders;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdPcdDefs;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdPpiDecls;\r
+import org.tianocore.frameworkwizard.packaging.ui.SpdProtocolDecls;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdBuildOptions;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdDynamicPcdBuildDefinitions;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdFlash;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdHeader;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdPlatformDefs;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+import org.tianocore.frameworkwizard.workspace.ui.SwitchWorkspace;\r
+\r
+/**\r
+ The class is used to show main GUI of ModuleEditor\r
+ It extends IFrame implements MouseListener, TreeSelectionListener\r
+\r
+ **/\r
+public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSelectionListener, ComponentListener,\r
+                                             MenuListener {\r
+    ///\r
+    /// Define class Serial Version UID\r
+    ///\r
+    private static final long serialVersionUID = -7103240960573031772L;\r
+    \r
+    //\r
+    // To save information of all files\r
+    //\r
+    private Vector<ModuleIdentification> vModuleList = new Vector<ModuleIdentification>();\r
+\r
+    private Vector<PackageIdentification> vPackageList = new Vector<PackageIdentification>();\r
+\r
+    private Vector<PlatformIdentification> vPlatformList = new Vector<PlatformIdentification>();\r
+\r
+    private OpeningModuleList openingModuleList = new OpeningModuleList();\r
+\r
+    private OpeningPackageList openingPackageList = new OpeningPackageList();\r
+\r
+    private OpeningPlatformList openingPlatformList = new OpeningPlatformList();\r
+\r
+    private int currentOpeningModuleIndex = -1;\r
+\r
+    private int currentOpeningPackageIndex = -1;\r
+\r
+    private int currentOpeningPlatformIndex = -1;\r
+\r
+    private String windowTitle = "FrameworkWizard 1.0 ";\r
+\r
+    private IDefaultMutableTreeNode dmtnRoot = null;\r
+\r
+    private IDefaultMutableTreeNode dmtnModuleDescription = null;\r
+\r
+    private IDefaultMutableTreeNode dmtnPackageDescription = null;\r
+\r
+    private IDefaultMutableTreeNode dmtnPlatformDescription = null;\r
+\r
+    private JPanel jContentPane = null;\r
+\r
+    private JMenuBar jMenuBar = null;\r
+\r
+    private JMenu jMenuFile = null;\r
+\r
+    private JMenuItem jMenuItemFileNew = null;\r
+\r
+    private JMenuItem jMenuItemFileSaveAs = null;\r
+\r
+    private JMenuItem jMenuItemFileExit = null;\r
+\r
+    private JMenu jMenuEdit = null;\r
+\r
+    private JDesktopPane jDesktopPaneModule = null;\r
+\r
+    private JDesktopPane jDesktopPanePackage = null;\r
+\r
+    private JDesktopPane jDesktopPanePlatform = null;\r
+\r
+    private JTabbedPane jTabbedPaneTree = null;\r
+\r
+    private JTabbedPane jTabbedPaneEditor = null;\r
+\r
+    private IDesktopManager iDesktopManager = new IDesktopManager();\r
+\r
+    private JScrollPane jScrollPaneTree = null;\r
+\r
+    private ITree iTree = null;\r
+\r
+    private JMenu jMenuHelp = null;\r
+\r
+    private JMenuItem jMenuItemHelpAbout = null;\r
+\r
+    private JMenuItem jMenuItemEditDelete = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private JMenuItem jMenuItemFileSave = null;\r
+\r
+    private JMenuItem jMenuItemFileClose = null;\r
+\r
+    private JMenu jMenuTools = null;\r
+\r
+    private JMenu jMenuWindow = null;\r
+\r
+    private JPanel jPanelOperation = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    private JMenuItem jMenuItemFileOpen = null;\r
+\r
+    private JMenuItem jMenuItemFileCloseAll = null;\r
+\r
+    private JMenuItem jMenuItemFileSaveAll = null;\r
+\r
+    private JMenuItem jMenuItemFilePageSetup = null;\r
+\r
+    private JMenuItem jMenuItemFilePrint = null;\r
+\r
+    private JMenuItem jMenuItemFileImport = null;\r
+\r
+    private JMenuItem jMenuItemFileProperties = null;\r
+\r
+    private JMenu jMenuFileRecentFiles = null;\r
+\r
+    private JSplitPane jSplitPane = null;\r
+\r
+    private JMenuItem jMenuItemEditUndo = null;\r
+\r
+    private JMenuItem jMenuItemEditRedo = null;\r
+\r
+    private JMenuItem jMenuItemEditCut = null;\r
+\r
+    private JMenuItem jMenuItemEditCopy = null;\r
+\r
+    private JMenuItem jMenuItemEditPaste = null;\r
+\r
+    private JMenuItem jMenuItemEditSelectAll = null;\r
+\r
+    private JMenuItem jMenuItemEditFind = null;\r
+\r
+    private JMenuItem jMenuItemEditFindNext = null;\r
+\r
+    private JMenu jMenuView = null;\r
+\r
+    private JMenu jMenuViewToolbars = null;\r
+\r
+    private JCheckBoxMenuItem jCheckBoxMenuItemViewToolbarsFile = null;\r
+\r
+    private JCheckBoxMenuItem jCheckBoxMenuItemViewToolbarsEdit = null;\r
+\r
+    private JCheckBoxMenuItem jCheckBoxMenuItemViewToolbarsWindow = null;\r
+\r
+    private JMenuItem jMenuItemViewStandard = null;\r
+\r
+    private JMenuItem jMenuItemViewAdvanced = null;\r
+\r
+    private JMenu jMenuProject = null;\r
+\r
+    private JMenuItem jMenuItemProjectAdmin = null;\r
+\r
+    private JMenuItem jMenuItemProjectChangeWorkspace = null;\r
+\r
+    private JMenu jMenuProjectBuildTargets = null;\r
+\r
+    private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsDebug = null;\r
+\r
+    private JCheckBoxMenuItem jCheckBoxMenuItemProjectBuildTargetsRelease = null;\r
+\r
+    private JMenuItem jMenuItemToolsToolChainConfiguration = null;\r
+\r
+    private JMenuItem jMenuItemToolsClone = null;\r
+\r
+    private JMenuItem jMenuItemToolsCodeScan = null;\r
+\r
+    private JMenuItem jMenuItemWindowDisplaySide = null;\r
+\r
+    private JMenuItem jMenuItemWindowDisplayTopBottom = null;\r
+\r
+    private JMenuItem jMenuItemViewXML = null;\r
+\r
+    private JMenuItem jMenuItemWindowTabView = null;\r
+\r
+    private JMenuItem jMenuItemWindowSource = null;\r
+\r
+    private JMenuItem jMenuItemWindowXML = null;\r
+\r
+    private JMenuItem jMenuItemWindowPreferences = null;\r
+\r
+    private JMenuItem jMenuItemHelpContents = null;\r
+\r
+    private JMenuItem jMenuItemHelpIndex = null;\r
+\r
+    private JMenuItem jMenuItemHelpSearch = null;\r
+\r
+    private JMenuItem jMenuItemProjectInstallPackage = null;\r
+\r
+    private JMenuItem jMenuItemProjectUpdatePackage = null;\r
+\r
+    private JMenuItem jMenuItemProjectRemovePackage = null;\r
+\r
+    //private JToolBar jToolBarFile = null;\r
+\r
+    //private JToolBar jToolBarEdit = null;\r
+\r
+    //private JToolBar jToolBarWindow = null;\r
+\r
+    /**\r
+     This method initializes jMenuBar \r
+     \r
+     @return javax.swing.JMenuBar Main menu bar for the entire GUI\r
+     \r
+     **/\r
+    private JMenuBar getjJMenuBar() {\r
+        if (jMenuBar == null) {\r
+            jMenuBar = new JMenuBar();\r
+            jMenuBar.setPreferredSize(new java.awt.Dimension(0, 18));\r
+            jMenuBar.add(getJMenuFile());\r
+            jMenuBar.add(getJMenuEdit());\r
+            jMenuBar.add(getJMenuView());\r
+            jMenuBar.add(getJMenuProject());\r
+            jMenuBar.add(getJMenuTools());\r
+            jMenuBar.add(getJMenuWindow());\r
+            jMenuBar.add(getJMenuHelp());\r
+        }\r
+        return jMenuBar;\r
+    }\r
+\r
+    /**\r
+     This method initializes jSplitPane\r
+     \r
+     @return javax.swing.JSplitPane\r
+     \r
+     **/\r
+    private JSplitPane getJSplitPane() {\r
+        if (jSplitPane == null) {\r
+            jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, getJTabbedPaneTree(), getJTabbedPaneEditor());\r
+            jSplitPane.setBounds(new java.awt.Rectangle(0, 1, DataType.MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                        DataType.MAIN_FRAME_SPLIT_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jSplitPane.addComponentListener(this);\r
+        }\r
+        return jSplitPane;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTabbedPaneEditor \r
+     \r
+     @return javax.swing.JTabbedPane   \r
+     \r
+     */\r
+    private JTabbedPane getJTabbedPaneEditor() {\r
+        if (jTabbedPaneEditor == null) {\r
+            jTabbedPaneEditor = new JTabbedPane();\r
+            jTabbedPaneEditor.setBounds(new java.awt.Rectangle(DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_X,\r
+                                                               DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_Y,\r
+                                                               DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                               DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jTabbedPaneEditor\r
+                             .setMinimumSize(new java.awt.Dimension(\r
+                                                                    DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                    DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            //jTabbedPaneEditor.addChangeListener(this);\r
+            jTabbedPaneEditor.addTab("Module", null, getJDesktopPaneModule(), null);\r
+            jTabbedPaneEditor.addTab("Package", null, getJDesktopPanePackage(), null);\r
+            jTabbedPaneEditor.addTab("Platform", null, getJDesktopPanePlatform(), null);\r
+        }\r
+        return jTabbedPaneEditor;\r
+    }\r
+\r
+    /**\r
+     This method initializes jTabbedPaneTree\r
+     \r
+     @return javax.swing.JTabbedPane   \r
+     \r
+     */\r
+    private JTabbedPane getJTabbedPaneTree() {\r
+        if (jTabbedPaneTree == null) {\r
+            jTabbedPaneTree = new JTabbedPane();\r
+            jTabbedPaneTree\r
+                           .setPreferredSize(new java.awt.Dimension(\r
+                                                                    DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                    DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jTabbedPaneTree\r
+                           .setMinimumSize(new java.awt.Dimension(DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                  DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jTabbedPaneTree.addTab("Workspace Explorer", null, getJScrollPaneTree(), null);\r
+        }\r
+        return jTabbedPaneTree;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuFile \r
+     \r
+     @return javax.swing.JMenu jMenuModule\r
+     \r
+     **/\r
+    private JMenu getJMenuFile() {\r
+        if (jMenuFile == null) {\r
+            jMenuFile = new JMenu();\r
+            jMenuFile.setText("File");\r
+            jMenuFile.setMnemonic('F');\r
+            jMenuFile.add(getJMenuItemFileNew());\r
+            jMenuFile.add(getJMenuItemFileOpen());\r
+            jMenuFile.add(getJMenuItemFileClose());\r
+            jMenuFile.add(getJMenuItemFileCloseAll());\r
+            jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuFileRecentFiles());\r
+            //jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuItemFileSave());\r
+            jMenuFile.add(getJMenuItemFileSaveAs());\r
+            jMenuFile.add(getJMenuItemFileSaveAll());\r
+            jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuItemFilePageSetup());\r
+            jMenuFile.add(getJMenuItemFilePrint());\r
+            //jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuItemFileImport());\r
+            //jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuItemFileProperties());\r
+            //jMenuFile.addSeparator();\r
+            jMenuFile.add(getJMenuItemFileExit());\r
+            jMenuFile.addMenuListener(this);\r
+        }\r
+        return jMenuFile;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileSaveAs \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemFileSaveAs\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileSaveAs() {\r
+        if (jMenuItemFileSaveAs == null) {\r
+            jMenuItemFileSaveAs = new JMenuItem();\r
+            jMenuItemFileSaveAs.setText("Save As...");\r
+            jMenuItemFileSaveAs.setMnemonic('a');\r
+            jMenuItemFileSaveAs.addActionListener(this);\r
+            jMenuItemFileSaveAs.setEnabled(false);\r
+            jMenuItemFileSaveAs.setVisible(false);\r
+        }\r
+        return jMenuItemFileSaveAs;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemModuleExit \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemModuleExit\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileExit() {\r
+        if (jMenuItemFileExit == null) {\r
+            jMenuItemFileExit = new JMenuItem();\r
+            jMenuItemFileExit.setText("Exit");\r
+            jMenuItemFileExit.setMnemonic('x');\r
+            jMenuItemFileExit.addActionListener(this);\r
+        }\r
+        return jMenuItemFileExit;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuEdit \r
+     \r
+     @return javax.swing.JMenu jMenuEdit\r
+     \r
+     **/\r
+    private JMenu getJMenuEdit() {\r
+        if (jMenuEdit == null) {\r
+            jMenuEdit = new JMenu();\r
+            jMenuEdit.setText("Edit");\r
+            jMenuEdit.setMnemonic('E');\r
+            jMenuEdit.add(getJMenuItemEditUndo());\r
+            jMenuEdit.add(getJMenuItemEditRedo());\r
+            jMenuEdit.addSeparator();\r
+            jMenuEdit.add(getJMenuItemEditCut());\r
+            jMenuEdit.add(getJMenuItemEditCopy());\r
+            jMenuEdit.add(getJMenuItemEditPaste());\r
+            jMenuEdit.add(getJMenuItemEditDelete());\r
+            jMenuEdit.addSeparator();\r
+            jMenuEdit.add(getJMenuItemEditSelectAll());\r
+            jMenuEdit.add(getJMenuItemEditFind());\r
+            jMenuEdit.add(getJMenuItemEditFindNext());\r
+            jMenuEdit.addSeparator();\r
+            jMenuEdit.setVisible(false);\r
+        }\r
+        return jMenuEdit;\r
+    }\r
+\r
+    /**\r
+     This method initializes jDesktopPane \r
+     \r
+     @return javax.swing.JDesktopPane jDesktopPane\r
+     \r
+     **/\r
+    private JDesktopPane getJDesktopPaneModule() {\r
+        if (jDesktopPaneModule == null) {\r
+            jDesktopPaneModule = new JDesktopPane();\r
+            jDesktopPaneModule\r
+                              .setBounds(new java.awt.Rectangle(DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_X,\r
+                                                                DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_Y,\r
+                                                                DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPaneModule\r
+                              .setMinimumSize(new java.awt.Dimension(\r
+                                                                     DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                     DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPaneModule.setDesktopManager(iDesktopManager);\r
+            jDesktopPaneModule.addComponentListener(this);\r
+        }\r
+        return jDesktopPaneModule;\r
+    }\r
+\r
+    /**\r
+     This method initializes jDesktopPane \r
+     \r
+     @return javax.swing.JDesktopPane jDesktopPane\r
+     \r
+     **/\r
+    private JDesktopPane getJDesktopPanePackage() {\r
+        if (jDesktopPanePackage == null) {\r
+            jDesktopPanePackage = new JDesktopPane();\r
+            jDesktopPanePackage\r
+                               .setBounds(new java.awt.Rectangle(DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_X,\r
+                                                                 DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_Y,\r
+                                                                 DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                 DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPanePackage\r
+                               .setMinimumSize(new java.awt.Dimension(\r
+                                                                      DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                      DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPanePackage.setDesktopManager(iDesktopManager);\r
+            jDesktopPanePackage.addComponentListener(this);\r
+        }\r
+        return jDesktopPanePackage;\r
+    }\r
+\r
+    /**\r
+     This method initializes jDesktopPane \r
+     \r
+     @return javax.swing.JDesktopPane jDesktopPane\r
+     \r
+     **/\r
+    private JDesktopPane getJDesktopPanePlatform() {\r
+        if (jDesktopPanePlatform == null) {\r
+            jDesktopPanePlatform = new JDesktopPane();\r
+            jDesktopPanePlatform\r
+                                .setBounds(new java.awt.Rectangle(\r
+                                                                  DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_X,\r
+                                                                  DataType.MAIN_FRAME_EDITOR_PANEL_LOCATION_Y,\r
+                                                                  DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                  DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPanePlatform\r
+                                .setMinimumSize(new java.awt.Dimension(\r
+                                                                       DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                       DataType.MAIN_FRAME_EDITOR_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jDesktopPanePlatform.setDesktopManager(iDesktopManager);\r
+            jDesktopPanePlatform.addComponentListener(this);\r
+        }\r
+        return jDesktopPanePlatform;\r
+    }\r
+\r
+    /**\r
+     This method initializes jScrollPaneTree \r
+     \r
+     @return javax.swing.JScrollPane jScrollPaneTree\r
+     \r
+     **/\r
+    private JScrollPane getJScrollPaneTree() {\r
+        if (jScrollPaneTree == null) {\r
+            jScrollPaneTree = new JScrollPane();\r
+            //jScrollPaneTree.setBounds(new java.awt.Rectangle(0, 1, 290, 545));\r
+            jScrollPaneTree\r
+                           .setPreferredSize(new java.awt.Dimension(\r
+                                                                    DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH,\r
+                                                                    DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jScrollPaneTree\r
+                           .setMinimumSize(new java.awt.Dimension(\r
+                                                                  DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH / 2,\r
+                                                                  DataType.MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT));\r
+            jScrollPaneTree.setViewportView(getITree());\r
+        }\r
+        return jScrollPaneTree;\r
+    }\r
+\r
+    /**\r
+     This method initializes iTree \r
+     \r
+     @return org.tianocore.packaging.common.ui.ITree iTree\r
+     \r
+     **/\r
+    private ITree getITree() {\r
+        //\r
+        //Before open a real module, use an empty root node for the tree\r
+        //\r
+        makeEmptyTree();\r
+        return iTree;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuHelp \r
+     \r
+     @return javax.swing.JMenu jMenuHelp\r
+     \r
+     **/\r
+    private JMenu getJMenuHelp() {\r
+        if (jMenuHelp == null) {\r
+            jMenuHelp = new JMenu();\r
+            jMenuHelp.setText("Help");\r
+            jMenuHelp.add(getJMenuItemHelpContents());\r
+            jMenuHelp.add(getJMenuItemHelpIndex());\r
+            jMenuHelp.add(getJMenuItemHelpSearch());\r
+            //jMenuHelp.addSeparator();\r
+            jMenuHelp.add(getJMenuItemHelpAbout());\r
+        }\r
+        return jMenuHelp;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemHelpAbout \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemHelpAbout\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemHelpAbout() {\r
+        if (jMenuItemHelpAbout == null) {\r
+            jMenuItemHelpAbout = new JMenuItem();\r
+            jMenuItemHelpAbout.setText("About...");\r
+            jMenuItemHelpAbout.addActionListener(this);\r
+        }\r
+        return jMenuItemHelpAbout;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditDelete \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemEditDelete\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemEditDelete() {\r
+        if (jMenuItemEditDelete == null) {\r
+            jMenuItemEditDelete = new JMenuItem();\r
+            jMenuItemEditDelete.setText("Delete");\r
+            jMenuItemEditDelete.setMnemonic('D');\r
+            jMenuItemEditDelete.addActionListener(this);\r
+            //\r
+            //Disabled when no module is open\r
+            //\r
+            jMenuItemEditDelete.setEnabled(false);\r
+        }\r
+        return jMenuItemEditDelete;\r
+    }\r
+\r
+    //    /**\r
+    //     This method initializes jPopupMenu \r
+    //     \r
+    //     @return javax.swing.JPopupMenu jPopupMenu\r
+    //     \r
+    //     **/\r
+    //    private JPopupMenu getJPopupMenu() {\r
+    //        if (jPopupMenu == null) {\r
+    //            jPopupMenu = new JPopupMenu();\r
+    //            //\r
+    //            //Add menu items of popup menu\r
+    //            //\r
+    //            jPopupMenu.add(getJMenuItemPopupAdd());\r
+    //            jPopupMenu.add(getJMenuItemPopupUpdate());\r
+    //            jPopupMenu.add(getJMenuItemPopupDelete());\r
+    //            jPopupMenu.setBorder(new BevelBorder(BevelBorder.RAISED));\r
+    //            jPopupMenu.addMouseListener(this);\r
+    //        }\r
+    //        return jPopupMenu;\r
+    //    }\r
+    //\r
+    //    /**\r
+    //     This method initializes jMenuItemPopupAdd \r
+    //     \r
+    //     @return javax.swing.JMenuItem jMenuItemPopupAdd\r
+    //     \r
+    //     **/\r
+    //    private JMenuItem getJMenuItemPopupAdd() {\r
+    //        if (jMenuItemPopupAdd == null) {\r
+    //            jMenuItemPopupAdd = new JMenuItem();\r
+    //            jMenuItemPopupAdd.setText("Add");\r
+    //            jMenuItemPopupAdd.addActionListener(this);\r
+    //            jMenuItemPopupAdd.setEnabled(false);\r
+    //        }\r
+    //        return jMenuItemPopupAdd;\r
+    //    }\r
+    //\r
+    //    /**\r
+    //     This method initializes jMenuItemPopupUpdate \r
+    //     \r
+    //     @return javax.swing.JMenuItem jMenuItemPopupUpdate\r
+    //     \r
+    //     **/\r
+    //    private JMenuItem getJMenuItemPopupUpdate() {\r
+    //        if (jMenuItemPopupUpdate == null) {\r
+    //            jMenuItemPopupUpdate = new JMenuItem();\r
+    //            jMenuItemPopupUpdate.setText("Update");\r
+    //            jMenuItemPopupUpdate.addActionListener(this);\r
+    //            jMenuItemPopupUpdate.setEnabled(false);\r
+    //        }\r
+    //        return jMenuItemPopupUpdate;\r
+    //    }\r
+    //\r
+    //    /**\r
+    //     This method initializes jMenuItemPopupDelete \r
+    //     \r
+    //     @return javax.swing.JMenuItem jMenuItemPopupDelete\r
+    //     \r
+    //     **/\r
+    //    private JMenuItem getJMenuItemPopupDelete() {\r
+    //        if (jMenuItemPopupDelete == null) {\r
+    //            jMenuItemPopupDelete = new JMenuItem();\r
+    //            jMenuItemPopupDelete.setText("Delete");\r
+    //            jMenuItemPopupDelete.addActionListener(this);\r
+    //            jMenuItemPopupDelete.setEnabled(false);\r
+    //        }\r
+    //        return jMenuItemPopupDelete;\r
+    //    }\r
+\r
+    /**\r
+     This method initializes jMenuFileNew \r
+     \r
+     @return javax.swing.JMenuItem jMenuFileNew\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileNew() {\r
+        if (jMenuItemFileNew == null) {\r
+            jMenuItemFileNew = new JMenuItem();\r
+            jMenuItemFileNew.setText("New...");\r
+            jMenuItemFileNew.setMnemonic('N');\r
+            jMenuItemFileNew.addActionListener(this);\r
+        }\r
+        return jMenuItemFileNew;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileSave \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemModuleSave\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileSave() {\r
+        if (jMenuItemFileSave == null) {\r
+            jMenuItemFileSave = new JMenuItem();\r
+            jMenuItemFileSave.setText("Save");\r
+            jMenuItemFileSave.setMnemonic('S');\r
+            jMenuItemFileSave.addActionListener(this);\r
+            jMenuItemFileSave.setEnabled(true);\r
+        }\r
+        return jMenuItemFileSave;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemModuleClose \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemModuleClose\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileClose() {\r
+        if (jMenuItemFileClose == null) {\r
+            jMenuItemFileClose = new JMenuItem();\r
+            jMenuItemFileClose.setText("Close");\r
+            jMenuItemFileClose.setMnemonic('C');\r
+            jMenuItemFileClose.setEnabled(true);\r
+            jMenuItemFileClose.addActionListener(this);\r
+        }\r
+        return jMenuItemFileClose;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuTools\r
+     Reserved \r
+     \r
+     @return javax.swing.JMenu jMenuTools\r
+     \r
+     **/\r
+    private JMenu getJMenuTools() {\r
+        if (jMenuTools == null) {\r
+            jMenuTools = new JMenu();\r
+            jMenuTools.setText("Tools");\r
+            jMenuTools.setMnemonic('T');\r
+            jMenuTools.add(getJMenuItemToolsToolChainConfiguration());\r
+            //jMenuTools.addSeparator();\r
+            jMenuTools.add(getJMenuItemToolsClone());\r
+            //jMenuTools.addSeparator();\r
+            jMenuTools.add(getJMenuItemToolsCodeScan());\r
+            jMenuTools.addMenuListener(this);\r
+        }\r
+        return jMenuTools;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuWindow \r
+     Reserved\r
+     \r
+     @return javax.swing.JMenu jMenuWindow\r
+     \r
+     **/\r
+    private JMenu getJMenuWindow() {\r
+        if (jMenuWindow == null) {\r
+            jMenuWindow = new JMenu();\r
+            jMenuWindow.setText("Window");\r
+            jMenuWindow.setMnemonic('W');\r
+            jMenuWindow.add(getJMenuItemWindowDisplaySide());\r
+            jMenuWindow.add(getJMenuItemWindowDisplayTopBottom());\r
+            jMenuWindow.addSeparator();\r
+            jMenuWindow.add(getJMenuItemWindowTabView());\r
+            jMenuWindow.addSeparator();\r
+            jMenuWindow.add(getJMenuItemWindowSource());\r
+            jMenuWindow.add(getJMenuItemWindowXML());\r
+            jMenuWindow.addSeparator();\r
+            jMenuWindow.add(getJMenuItemWindowPreferences());\r
+            jMenuWindow.setVisible(false);\r
+        }\r
+        return jMenuWindow;\r
+    }\r
+\r
+    /**\r
+     This method initializes jPanelOperation \r
+     \r
+     @return javax.swing.JPanel jPanelOperation\r
+     \r
+     **/\r
+    private JPanel getJPanelOperation() {\r
+        if (jPanelOperation == null) {\r
+            jPanelOperation = new JPanel();\r
+            jPanelOperation.setLayout(null);\r
+            jPanelOperation.setBounds(new java.awt.Rectangle(295, 520, 500, 25));\r
+            jPanelOperation.add(getJButtonOk(), null);\r
+            jPanelOperation.add(getJButtonCancel(), null);\r
+            jPanelOperation.setVisible(false);\r
+        }\r
+        return jPanelOperation;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonOk \r
+     \r
+     @return javax.swing.JButton jButtonOk\r
+     \r
+     **/\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(395, 2, 90, 20));\r
+            jButtonOk.setText("Ok");\r
+            jButtonOk.setEnabled(false);\r
+            jButtonOk.addActionListener(this);\r
+        }\r
+        return jButtonOk;\r
+    }\r
+\r
+    /**\r
+     This method initializes jButtonCancel \r
+     \r
+     @return javax.swing.JButton jButtonCancel\r
+     \r
+     **/\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(395, 2, 90, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.setEnabled(false);\r
+            jButtonCancel.addActionListener(this);\r
+            jButtonCancel.setVisible(false);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileOpen \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemFileOpen\r
+     */\r
+    private JMenuItem getJMenuItemFileOpen() {\r
+        if (jMenuItemFileOpen == null) {\r
+            jMenuItemFileOpen = new JMenuItem();\r
+            jMenuItemFileOpen.setText("Open...");\r
+            jMenuItemFileOpen.setMnemonic('O');\r
+            jMenuItemFileOpen.addActionListener(this);\r
+        }\r
+        return jMenuItemFileOpen;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileCloseAll     \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemFileOpen\r
+     */\r
+    private JMenuItem getJMenuItemFileCloseAll() {\r
+        if (jMenuItemFileCloseAll == null) {\r
+            jMenuItemFileCloseAll = new JMenuItem();\r
+            jMenuItemFileCloseAll.setText("Close All");\r
+            jMenuItemFileCloseAll.setEnabled(true);\r
+            jMenuItemFileCloseAll.addActionListener(this);\r
+        }\r
+        return jMenuItemFileCloseAll;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileSaveAll      \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemFileSaveAll\r
+     */\r
+    private JMenuItem getJMenuItemFileSaveAll() {\r
+        if (jMenuItemFileSaveAll == null) {\r
+            jMenuItemFileSaveAll = new JMenuItem();\r
+            jMenuItemFileSaveAll.setText("Save All");\r
+            jMenuItemFileSaveAll.setMnemonic('v');\r
+            jMenuItemFileSaveAll.setEnabled(true);\r
+            jMenuItemFileSaveAll.addActionListener(this);\r
+        }\r
+        return jMenuItemFileSaveAll;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFilePageSetup    \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemFilePageSetup() {\r
+        if (jMenuItemFilePageSetup == null) {\r
+            jMenuItemFilePageSetup = new JMenuItem();\r
+            jMenuItemFilePageSetup.setText("Page Setup");\r
+            jMenuItemFilePageSetup.setMnemonic('u');\r
+            jMenuItemFilePageSetup.setEnabled(false);\r
+            jMenuItemFilePageSetup.addActionListener(this);\r
+            jMenuItemFilePageSetup.setVisible(false);\r
+        }\r
+        return jMenuItemFilePageSetup;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFilePrint        \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemFilePrint() {\r
+        if (jMenuItemFilePrint == null) {\r
+            jMenuItemFilePrint = new JMenuItem();\r
+            jMenuItemFilePrint.setText("Print");\r
+            jMenuItemFilePrint.setMnemonic('P');\r
+            jMenuItemFilePrint.setEnabled(false);\r
+            jMenuItemFilePrint.addActionListener(this);\r
+            jMenuItemFilePrint.setVisible(false);\r
+        }\r
+        return jMenuItemFilePrint;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemFileImport       \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemFileImport() {\r
+        if (jMenuItemFileImport == null) {\r
+            jMenuItemFileImport = new JMenuItem();\r
+            jMenuItemFileImport.setText("Import");\r
+            jMenuItemFileImport.setMnemonic('I');\r
+            jMenuItemFileImport.setEnabled(false);\r
+            jMenuItemFileImport.addActionListener(this);\r
+            jMenuItemFileImport.setVisible(false);\r
+        }\r
+        return jMenuItemFileImport;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jMenuItemFileProperties \r
+     *         \r
+     * @return javax.swing.JMenuItem   \r
+     */\r
+    private JMenuItem getJMenuItemFileProperties() {\r
+        if (jMenuItemFileProperties == null) {\r
+            jMenuItemFileProperties = new JMenuItem();\r
+            jMenuItemFileProperties.setText("Properties");\r
+            jMenuItemFileProperties.setMnemonic('t');\r
+            jMenuItemFileProperties.setEnabled(false);\r
+            jMenuItemFileProperties.addActionListener(this);\r
+            jMenuItemFileProperties.setVisible(false);\r
+        }\r
+        return jMenuItemFileProperties;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jMenuFileRecentFiles    \r
+     *         \r
+     * @return javax.swing.JMenu       \r
+     */\r
+    private JMenu getJMenuFileRecentFiles() {\r
+        if (jMenuFileRecentFiles == null) {\r
+            jMenuFileRecentFiles = new JMenu();\r
+            jMenuFileRecentFiles.setText("Recent Files");\r
+            jMenuFileRecentFiles.setMnemonic('F');\r
+            jMenuFileRecentFiles.setEnabled(false);\r
+            jMenuFileRecentFiles.addActionListener(this);\r
+            jMenuFileRecentFiles.setVisible(false);\r
+        }\r
+        return jMenuFileRecentFiles;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditUndo \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditUndo() {\r
+        if (jMenuItemEditUndo == null) {\r
+            jMenuItemEditUndo = new JMenuItem();\r
+            jMenuItemEditUndo.setText("Undo");\r
+            jMenuItemEditUndo.setMnemonic('U');\r
+            jMenuItemEditUndo.setEnabled(false);\r
+            jMenuItemEditUndo.addActionListener(this);\r
+        }\r
+        return jMenuItemEditUndo;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditRedo \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditRedo() {\r
+        if (jMenuItemEditRedo == null) {\r
+            jMenuItemEditRedo = new JMenuItem();\r
+            jMenuItemEditRedo.setText("Redo");\r
+            jMenuItemEditRedo.setMnemonic('R');\r
+            jMenuItemEditRedo.setEnabled(false);\r
+            jMenuItemEditRedo.addActionListener(this);\r
+        }\r
+        return jMenuItemEditRedo;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditCut  \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditCut() {\r
+        if (jMenuItemEditCut == null) {\r
+            jMenuItemEditCut = new JMenuItem();\r
+            jMenuItemEditCut.setText("Cut");\r
+            jMenuItemEditCut.setMnemonic('t');\r
+            jMenuItemEditCut.setEnabled(false);\r
+            jMenuItemEditCut.addActionListener(this);\r
+        }\r
+        return jMenuItemEditCut;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditCopy \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditCopy() {\r
+        if (jMenuItemEditCopy == null) {\r
+            jMenuItemEditCopy = new JMenuItem();\r
+            jMenuItemEditCopy.setText("Copy");\r
+            jMenuItemEditCopy.setMnemonic('C');\r
+            jMenuItemEditCopy.setEnabled(false);\r
+            jMenuItemEditCopy.addActionListener(this);\r
+        }\r
+        return jMenuItemEditCopy;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditPaste        \r
+     \r
+     return javax.swing.JMenuItem      \r
+     */\r
+    private JMenuItem getJMenuItemEditPaste() {\r
+        if (jMenuItemEditPaste == null) {\r
+            jMenuItemEditPaste = new JMenuItem();\r
+            jMenuItemEditPaste.setText("Paste");\r
+            jMenuItemEditPaste.setMnemonic('P');\r
+            jMenuItemEditPaste.setEnabled(false);\r
+            jMenuItemEditPaste.addActionListener(this);\r
+        }\r
+        return jMenuItemEditPaste;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItem \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditSelectAll() {\r
+        if (jMenuItemEditSelectAll == null) {\r
+            jMenuItemEditSelectAll = new JMenuItem();\r
+            jMenuItemEditSelectAll.setText("Select All");\r
+            jMenuItemEditSelectAll.setMnemonic('A');\r
+            jMenuItemEditSelectAll.setEnabled(false);\r
+            jMenuItemEditSelectAll.addActionListener(this);\r
+        }\r
+        return jMenuItemEditSelectAll;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditFind \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     */\r
+    private JMenuItem getJMenuItemEditFind() {\r
+        if (jMenuItemEditFind == null) {\r
+            jMenuItemEditFind = new JMenuItem();\r
+            jMenuItemEditFind.setText("Find");\r
+            jMenuItemEditFind.setMnemonic('F');\r
+            jMenuItemEditFind.setEnabled(false);\r
+            jMenuItemEditFind.addActionListener(this);\r
+        }\r
+        return jMenuItemEditFind;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemEditFindNext     \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemEditFindNext() {\r
+        if (jMenuItemEditFindNext == null) {\r
+            jMenuItemEditFindNext = new JMenuItem();\r
+            jMenuItemEditFindNext.setText("Find Next");\r
+            jMenuItemEditFindNext.setMnemonic('n');\r
+            jMenuItemEditFindNext.setEnabled(false);\r
+            jMenuItemEditFindNext.addActionListener(this);\r
+        }\r
+        return jMenuItemEditFindNext;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuView \r
+     \r
+     @return javax.swing.JMenu \r
+     \r
+     */\r
+    private JMenu getJMenuView() {\r
+        if (jMenuView == null) {\r
+            jMenuView = new JMenu();\r
+            jMenuView.setText("View");\r
+            jMenuView.setMnemonic('V');\r
+            jMenuView.add(getJMenuViewToolbars());\r
+            jMenuView.add(getJMenuItemViewAdvanced());\r
+            jMenuView.add(getJMenuItemViewStandard());\r
+            jMenuView.add(getJMenuItemViewXML());\r
+            jMenuView.setVisible(false);\r
+        }\r
+        return jMenuView;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuViewToolbars \r
+     \r
+     @return javax.swing.JMenu \r
+     \r
+     */\r
+    private JMenu getJMenuViewToolbars() {\r
+        if (jMenuViewToolbars == null) {\r
+            jMenuViewToolbars = new JMenu();\r
+            jMenuViewToolbars.setText("Toolbars");\r
+            jMenuViewToolbars.setMnemonic('T');\r
+            jMenuViewToolbars.add(getJCheckBoxMenuItemViewToolbarsFile());\r
+            jMenuViewToolbars.add(getJCheckBoxMenuItemViewToolbarsEdit());\r
+            jMenuViewToolbars.add(getJCheckBoxMenuItemViewToolbarsWindow());\r
+        }\r
+        return jMenuViewToolbars;\r
+    }\r
+\r
+    /**\r
+     This method initializes jCheckBoxMenuItemViewToolbarsFile \r
+     \r
+     @return javax.swing.JCheckBoxMenuItem     \r
+     \r
+     */\r
+    private JCheckBoxMenuItem getJCheckBoxMenuItemViewToolbarsFile() {\r
+        if (jCheckBoxMenuItemViewToolbarsFile == null) {\r
+            jCheckBoxMenuItemViewToolbarsFile = new JCheckBoxMenuItem();\r
+            jCheckBoxMenuItemViewToolbarsFile.setText("File");\r
+            jCheckBoxMenuItemViewToolbarsFile.setEnabled(false);\r
+            jCheckBoxMenuItemViewToolbarsFile.addActionListener(this);\r
+        }\r
+        return jCheckBoxMenuItemViewToolbarsFile;\r
+    }\r
+\r
+    /**\r
+     This method initializes jCheckBoxMenuItemViewToolbarsEdit \r
+     \r
+     @return javax.swing.JCheckBoxMenuItem     \r
+     \r
+     */\r
+    private JCheckBoxMenuItem getJCheckBoxMenuItemViewToolbarsEdit() {\r
+        if (jCheckBoxMenuItemViewToolbarsEdit == null) {\r
+            jCheckBoxMenuItemViewToolbarsEdit = new JCheckBoxMenuItem();\r
+            jCheckBoxMenuItemViewToolbarsEdit.setText("Edit");\r
+            jCheckBoxMenuItemViewToolbarsEdit.setEnabled(false);\r
+            jCheckBoxMenuItemViewToolbarsEdit.addActionListener(this);\r
+        }\r
+        return jCheckBoxMenuItemViewToolbarsEdit;\r
+    }\r
+\r
+    /**\r
+     This method initializes jCheckBoxMenuItemViewToolbarsWindow       \r
+     \r
+     @return javax.swing.JCheckBoxMenuItem     \r
+     \r
+     */\r
+    private JCheckBoxMenuItem getJCheckBoxMenuItemViewToolbarsWindow() {\r
+        if (jCheckBoxMenuItemViewToolbarsWindow == null) {\r
+            jCheckBoxMenuItemViewToolbarsWindow = new JCheckBoxMenuItem();\r
+            jCheckBoxMenuItemViewToolbarsWindow.setText("Window");\r
+            jCheckBoxMenuItemViewToolbarsWindow.setEnabled(false);\r
+            jCheckBoxMenuItemViewToolbarsWindow.addActionListener(this);\r
+        }\r
+        return jCheckBoxMenuItemViewToolbarsWindow;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemStandard \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemViewStandard() {\r
+        if (jMenuItemViewStandard == null) {\r
+            jMenuItemViewStandard = new JMenuItem();\r
+            jMenuItemViewStandard.setText("Standard");\r
+            jMenuItemViewStandard.setMnemonic('S');\r
+            jMenuItemViewStandard.setEnabled(false);\r
+            jMenuItemViewStandard.addActionListener(this);\r
+        }\r
+        return jMenuItemViewStandard;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemAdvanced \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemViewAdvanced() {\r
+        if (jMenuItemViewAdvanced == null) {\r
+            jMenuItemViewAdvanced = new JMenuItem();\r
+            jMenuItemViewAdvanced.setText("Advanced");\r
+            jMenuItemViewAdvanced.setMnemonic('A');\r
+            jMenuItemViewAdvanced.setEnabled(false);\r
+            jMenuItemViewAdvanced.addActionListener(this);\r
+        }\r
+        return jMenuItemViewAdvanced;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuProject      \r
+     \r
+     @return javax.swing.JMenu \r
+     \r
+     */\r
+    private JMenu getJMenuProject() {\r
+        if (jMenuProject == null) {\r
+            jMenuProject = new JMenu();\r
+            jMenuProject.setText("Project");\r
+            jMenuProject.setMnemonic('P');\r
+            jMenuProject.add(getJMenuItemProjectAdmin());\r
+            //jMenuProject.addSeparator();\r
+            jMenuProject.add(getJMenuItemProjectChangeWorkspace());\r
+            jMenuProject.addSeparator();\r
+            jMenuProject.add(getJMenuItemProjectInstallPackage());\r
+            jMenuProject.add(getJMenuItemProjectUpdatePackage());\r
+            jMenuProject.add(getJMenuItemProjectRemovePackage());\r
+            //jMenuProject.addSeparator();\r
+            jMenuProject.add(getJMenuProjectBuildTargets());\r
+        }\r
+        return jMenuProject;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemProjectAdmin     \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemProjectAdmin() {\r
+        if (jMenuItemProjectAdmin == null) {\r
+            jMenuItemProjectAdmin = new JMenuItem();\r
+            jMenuItemProjectAdmin.setText("Admin...");\r
+            jMenuItemProjectAdmin.setMnemonic('A');\r
+            jMenuItemProjectAdmin.setEnabled(false);\r
+            jMenuItemProjectAdmin.addActionListener(this);\r
+            jMenuItemProjectAdmin.setVisible(false);\r
+        }\r
+        return jMenuItemProjectAdmin;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemProjectChangeWorkspace   \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemProjectChangeWorkspace() {\r
+        if (jMenuItemProjectChangeWorkspace == null) {\r
+            jMenuItemProjectChangeWorkspace = new JMenuItem();\r
+            jMenuItemProjectChangeWorkspace.setText("Change WORKSPACE...");\r
+            jMenuItemProjectChangeWorkspace.setMnemonic('W');\r
+            jMenuItemProjectChangeWorkspace.setEnabled(true);\r
+            jMenuItemProjectChangeWorkspace.addActionListener(this);\r
+        }\r
+        return jMenuItemProjectChangeWorkspace;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuProjectBuildTargets  \r
+     \r
+     @return javax.swing.JMenu \r
+     \r
+     */\r
+    private JMenu getJMenuProjectBuildTargets() {\r
+        if (jMenuProjectBuildTargets == null) {\r
+            jMenuProjectBuildTargets = new JMenu();\r
+            jMenuProjectBuildTargets.setText("Build Targets");\r
+            jMenuProjectBuildTargets.setMnemonic('T');\r
+            jMenuProjectBuildTargets.add(getJCheckBoxMenuItemProjectBuildTargetsDebug());\r
+            jMenuProjectBuildTargets.add(getJCheckBoxMenuItemProjectBuildTargetsRelease());\r
+            jMenuProjectBuildTargets.setVisible(false);\r
+        }\r
+        return jMenuProjectBuildTargets;\r
+    }\r
+\r
+    /**\r
+     This method initializes jCheckBoxMenuItemProjectBuildTargetsDebug \r
+     \r
+     @return javax.swing.JCheckBoxMenuItem     \r
+     \r
+     */\r
+    private JCheckBoxMenuItem getJCheckBoxMenuItemProjectBuildTargetsDebug() {\r
+        if (jCheckBoxMenuItemProjectBuildTargetsDebug == null) {\r
+            jCheckBoxMenuItemProjectBuildTargetsDebug = new JCheckBoxMenuItem();\r
+            jCheckBoxMenuItemProjectBuildTargetsDebug.setText("Debug");\r
+            jCheckBoxMenuItemProjectBuildTargetsDebug.setEnabled(false);\r
+        }\r
+        return jCheckBoxMenuItemProjectBuildTargetsDebug;\r
+    }\r
+\r
+    /**\r
+     This method initializes jCheckBoxMenuItemProjectBuildTargetsRelease       \r
+     \r
+     @return javax.swing.JCheckBoxMenuItem     \r
+     \r
+     */\r
+    private JCheckBoxMenuItem getJCheckBoxMenuItemProjectBuildTargetsRelease() {\r
+        if (jCheckBoxMenuItemProjectBuildTargetsRelease == null) {\r
+            jCheckBoxMenuItemProjectBuildTargetsRelease = new JCheckBoxMenuItem();\r
+            jCheckBoxMenuItemProjectBuildTargetsRelease.setText("Release");\r
+            jCheckBoxMenuItemProjectBuildTargetsRelease.setEnabled(false);\r
+        }\r
+        return jCheckBoxMenuItemProjectBuildTargetsRelease;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemToolsToolChainConfiguration      \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemToolsToolChainConfiguration() {\r
+        if (jMenuItemToolsToolChainConfiguration == null) {\r
+            jMenuItemToolsToolChainConfiguration = new JMenuItem();\r
+            jMenuItemToolsToolChainConfiguration.setText("Tool Chain Configuration...");\r
+            jMenuItemToolsToolChainConfiguration.setMnemonic('C');\r
+            jMenuItemToolsToolChainConfiguration.addActionListener(this);\r
+            jMenuItemToolsToolChainConfiguration.setVisible(false);\r
+        }\r
+        return jMenuItemToolsToolChainConfiguration;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemToolsClone       \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemToolsClone() {\r
+        if (jMenuItemToolsClone == null) {\r
+            jMenuItemToolsClone = new JMenuItem();\r
+            jMenuItemToolsClone.setText("Clone...");\r
+            jMenuItemToolsClone.setMnemonic('l');\r
+            jMenuItemToolsClone.setEnabled(true);\r
+            jMenuItemToolsClone.addActionListener(this);\r
+        }\r
+        return jMenuItemToolsClone;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemToolsCodeScan    \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemToolsCodeScan() {\r
+        if (jMenuItemToolsCodeScan == null) {\r
+            jMenuItemToolsCodeScan = new JMenuItem();\r
+            jMenuItemToolsCodeScan.setText("Code Scan...");\r
+            jMenuItemToolsCodeScan.setMnemonic('S');\r
+            jMenuItemToolsCodeScan.setEnabled(false);\r
+            jMenuItemToolsCodeScan.addActionListener(this);\r
+            jMenuItemToolsCodeScan.setVisible(false);\r
+        }\r
+        return jMenuItemToolsCodeScan;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowSplitVertical      \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowDisplaySide() {\r
+        if (jMenuItemWindowDisplaySide == null) {\r
+            jMenuItemWindowDisplaySide = new JMenuItem();\r
+            jMenuItemWindowDisplaySide.setText("Display Side by Side");\r
+            jMenuItemWindowDisplaySide.setMnemonic('S');\r
+            jMenuItemWindowDisplaySide.setEnabled(false);\r
+            jMenuItemWindowDisplaySide.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowDisplaySide;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowSplitHorizontal    \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowDisplayTopBottom() {\r
+        if (jMenuItemWindowDisplayTopBottom == null) {\r
+            jMenuItemWindowDisplayTopBottom = new JMenuItem();\r
+            jMenuItemWindowDisplayTopBottom.setText("Display Top and Bottom");\r
+            jMenuItemWindowDisplayTopBottom.setMnemonic('B');\r
+            jMenuItemWindowDisplayTopBottom.setEnabled(false);\r
+            jMenuItemWindowDisplayTopBottom.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowDisplayTopBottom;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemViewXML  \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemViewXML() {\r
+        if (jMenuItemViewXML == null) {\r
+            jMenuItemViewXML = new JMenuItem();\r
+            jMenuItemViewXML.setText("XML");\r
+            jMenuItemViewXML.setMnemonic('X');\r
+            jMenuItemViewXML.setEnabled(false);\r
+            jMenuItemViewXML.addActionListener(this);\r
+        }\r
+        return jMenuItemViewXML;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowTabView    \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowTabView() {\r
+        if (jMenuItemWindowTabView == null) {\r
+            jMenuItemWindowTabView = new JMenuItem();\r
+            jMenuItemWindowTabView.setText("Tab View");\r
+            jMenuItemWindowTabView.setMnemonic('T');\r
+            jMenuItemWindowTabView.setEnabled(false);\r
+            jMenuItemWindowTabView.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowTabView;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowSource     \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowSource() {\r
+        if (jMenuItemWindowSource == null) {\r
+            jMenuItemWindowSource = new JMenuItem();\r
+            jMenuItemWindowSource.setText("Source");\r
+            jMenuItemWindowSource.setMnemonic('S');\r
+            jMenuItemWindowSource.setEnabled(false);\r
+            jMenuItemWindowSource.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowSource;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowXML        \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowXML() {\r
+        if (jMenuItemWindowXML == null) {\r
+            jMenuItemWindowXML = new JMenuItem();\r
+            jMenuItemWindowXML.setText("XML");\r
+            jMenuItemWindowXML.setMnemonic('X');\r
+            jMenuItemWindowXML.setEnabled(false);\r
+            jMenuItemWindowXML.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowXML;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemWindowPreferences        \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemWindowPreferences() {\r
+        if (jMenuItemWindowPreferences == null) {\r
+            jMenuItemWindowPreferences = new JMenuItem();\r
+            jMenuItemWindowPreferences.setText("Preferences");\r
+            jMenuItemWindowPreferences.setMnemonic('P');\r
+            jMenuItemWindowPreferences.setEnabled(false);\r
+            jMenuItemWindowPreferences.addActionListener(this);\r
+        }\r
+        return jMenuItemWindowPreferences;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemHelpContents     \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemHelpContents() {\r
+        if (jMenuItemHelpContents == null) {\r
+            jMenuItemHelpContents = new JMenuItem();\r
+            jMenuItemHelpContents.setText("Contents");\r
+            jMenuItemHelpContents.setMnemonic('C');\r
+            jMenuItemHelpContents.setEnabled(false);\r
+            jMenuItemHelpContents.addActionListener(this);\r
+            jMenuItemHelpContents.setVisible(false);\r
+        }\r
+        return jMenuItemHelpContents;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemHelpIndex        \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemHelpIndex() {\r
+        if (jMenuItemHelpIndex == null) {\r
+            jMenuItemHelpIndex = new JMenuItem();\r
+            jMenuItemHelpIndex.setText("Index");\r
+            jMenuItemHelpIndex.setMnemonic('I');\r
+            jMenuItemHelpIndex.setEnabled(false);\r
+            jMenuItemHelpIndex.addActionListener(this);\r
+            jMenuItemHelpIndex.setVisible(false);\r
+        }\r
+        return jMenuItemHelpIndex;\r
+    }\r
+\r
+    /**\r
+     This method initializes jMenuItemHelpSearch       \r
+     \r
+     @return javax.swing.JMenuItem     \r
+     \r
+     */\r
+    private JMenuItem getJMenuItemHelpSearch() {\r
+        if (jMenuItemHelpSearch == null) {\r
+            jMenuItemHelpSearch = new JMenuItem();\r
+            jMenuItemHelpSearch.setText("Search");\r
+            jMenuItemHelpSearch.setMnemonic('S');\r
+            jMenuItemHelpSearch.setEnabled(false);\r
+            jMenuItemHelpSearch.addActionListener(this);\r
+            jMenuItemHelpSearch.setVisible(false);\r
+        }\r
+        return jMenuItemHelpSearch;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jToolBar        \r
+     *         \r
+     * @return javax.swing.JToolBar    \r
+     */\r
+    // private JToolBar getJToolBarFile() {\r
+    //         if (jToolBarFile == null) {\r
+    //                 jToolBarFile = new JToolBar();\r
+    //                 jToolBarFile.setFloatable(false);\r
+    //         }\r
+    //         return jToolBarFile;\r
+    // }\r
+    /**\r
+     * This method initializes jToolBarEdit    \r
+     *         \r
+     * @return javax.swing.JToolBar    \r
+     */\r
+    // private JToolBar getJToolBarEdit() {\r
+    //         if (jToolBarEdit == null) {\r
+    //                 jToolBarEdit = new JToolBar();\r
+    //                 jToolBarEdit.setFloatable(false);\r
+    //         }\r
+    //         return jToolBarEdit;\r
+    // }\r
+    /**\r
+     * This method initializes jMenuItemToolsInstallPackage    \r
+     *         \r
+     * @return javax.swing.JMenuItem   \r
+     */\r
+    private JMenuItem getJMenuItemProjectInstallPackage() {\r
+        if (jMenuItemProjectInstallPackage == null) {\r
+            jMenuItemProjectInstallPackage = new JMenuItem();\r
+            jMenuItemProjectInstallPackage.setText("Install Distribution Package");\r
+            jMenuItemProjectInstallPackage.setMnemonic('I');\r
+            jMenuItemProjectInstallPackage.setEnabled(false);\r
+            jMenuItemProjectInstallPackage.addActionListener(this);\r
+        }\r
+        return jMenuItemProjectInstallPackage;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jMenuItemToolsUpdatePackage     \r
+     *         \r
+     * @return javax.swing.JMenuItem   \r
+     */\r
+    private JMenuItem getJMenuItemProjectUpdatePackage() {\r
+        if (jMenuItemProjectUpdatePackage == null) {\r
+            jMenuItemProjectUpdatePackage = new JMenuItem();\r
+            jMenuItemProjectUpdatePackage.setText("Update Disstribution Package");\r
+            jMenuItemProjectUpdatePackage.setMnemonic('U');\r
+            jMenuItemProjectUpdatePackage.setEnabled(false);\r
+            jMenuItemProjectUpdatePackage.addActionListener(this);\r
+        }\r
+        return jMenuItemProjectUpdatePackage;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jMenuItemRemovePackage  \r
+     *         \r
+     * @return javax.swing.JMenuItem   \r
+     */\r
+    private JMenuItem getJMenuItemProjectRemovePackage() {\r
+        if (jMenuItemProjectRemovePackage == null) {\r
+            jMenuItemProjectRemovePackage = new JMenuItem();\r
+            jMenuItemProjectRemovePackage.setText("Remove Distribution Package");\r
+            jMenuItemProjectRemovePackage.setMnemonic('R');\r
+            jMenuItemProjectRemovePackage.setEnabled(false);\r
+            jMenuItemProjectRemovePackage.addActionListener(this);\r
+        }\r
+        return jMenuItemProjectRemovePackage;\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see org.tianocore.packaging.common.ui.IFrame#main(java.lang.String[])\r
+     *\r
+     * Main class, start the GUI\r
+     * \r
+     */\r
+    public static void main(String[] args) {\r
+        FrameworkWizardUI module = new FrameworkWizardUI();\r
+        module.setVisible(true);\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public FrameworkWizardUI() {\r
+        super();\r
+        init();\r
+    }\r
+\r
+    /**\r
+     This method initializes this\r
+     \r
+     \r
+     **/\r
+    private void init() {\r
+        //\r
+        // Set current workspace and check\r
+        // Check if exists WORKSPACE\r
+        // \r
+        //\r
+        Workspace.setCurrentWorkspace(System.getenv("WORKSPACE"));\r
+        if (!Workspace.checkCurrentWorkspace()) {\r
+            JOptionPane.showConfirmDialog(null, "Workspace is not setup correctly. Please setup first.", "Warning",\r
+                                          JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);\r
+            this.dispose();\r
+            System.exit(0);\r
+        }\r
+\r
+        this.setSize(DataType.MAIN_FRAME_PREFERRED_SIZE_WIDTH, DataType.MAIN_FRAME_PREFERRED_SIZE_HEIGHT);\r
+        this.setResizable(true);\r
+        this.setJMenuBar(getjJMenuBar());\r
+        this.addComponentListener(this);\r
+        this.getCompontentsFromFrameworkDatabase();\r
+        this.setContentPane(getJContentPane());\r
+        this.setTitle(windowTitle + "- [" + Workspace.getCurrentWorkspace() + "]");\r
+        this.setExitType(1);\r
+        //\r
+        // max the window\r
+        //\r
+        this.setExtendedState(JFrame.MAXIMIZED_BOTH);\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
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.add(getJPanelOperation(), null);\r
+            jContentPane.add(getJSplitPane(), 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
+        //\r
+        // Operations of Menu\r
+        //\r
+        if (arg0.getSource() == jMenuItemFileNew) {\r
+            this.fileNew();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileOpen) {\r
+            this.open();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileClose) {\r
+            this.close();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileCloseAll) {\r
+            this.closeAll();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileSave) {\r
+            this.save();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileSaveAs) {\r
+            this.saveAs();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileSaveAll) {\r
+            this.saveAll();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemFileExit) {\r
+            this.exit();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemProjectChangeWorkspace) {\r
+            changeWorkspace();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemToolsClone) {\r
+            cloneItem();\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuItemHelpAbout) {\r
+            About a = new About(this, true);\r
+            int result = a.showDialog();\r
+            if (result == DataType.RETURN_TYPE_OK) {\r
+                a.dispose();\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Create an empty tree if no file is open\r
+     \r
+     **/\r
+    private void makeEmptyTree() {\r
+        // Make root\r
+        dmtnRoot = new IDefaultMutableTreeNode("WORKSPACE", IDefaultMutableTreeNode.WORKSPACE, -1);\r
+\r
+        // Make Module Description\r
+        dmtnModuleDescription = new IDefaultMutableTreeNode("ModuleDescription", IDefaultMutableTreeNode.MODULE, -1);\r
+\r
+        if (this.vModuleList.size() > 0) {\r
+            for (int index = 0; index < this.vModuleList.size(); index++) {\r
+                dmtnModuleDescription.add(new IDefaultMutableTreeNode(this.vModuleList.elementAt(index).getName(),\r
+                                                                      IDefaultMutableTreeNode.MSA_HEADER, false,\r
+                                                                      this.vModuleList.elementAt(index)));\r
+            }\r
+        }\r
+\r
+        // Make Package Description\r
+        dmtnPackageDescription = new IDefaultMutableTreeNode("PackageDescription", IDefaultMutableTreeNode.PACKAGE, -1);\r
+        if (this.vPackageList.size() > 0) {\r
+            for (int index = 0; index < this.vPackageList.size(); index++) {\r
+                dmtnPackageDescription.add(new IDefaultMutableTreeNode(this.vPackageList.elementAt(index).getName(),\r
+                                                                       IDefaultMutableTreeNode.SPD_HEADER, false,\r
+                                                                       this.vPackageList.elementAt(index)));\r
+            }\r
+        }\r
+\r
+        // Make Platform Description\r
+        dmtnPlatformDescription = new IDefaultMutableTreeNode("PlatformDescription", IDefaultMutableTreeNode.PLATFORM,\r
+                                                              -1);\r
+        if (this.vPlatformList.size() > 0) {\r
+            for (int index = 0; index < this.vPlatformList.size(); index++) {\r
+                dmtnPlatformDescription.add(new IDefaultMutableTreeNode(this.vPlatformList.elementAt(index).getName(),\r
+                                                                        IDefaultMutableTreeNode.FPD_PLATFORMHEADER,\r
+                                                                        false, this.vPlatformList.elementAt(index)));\r
+            }\r
+        }\r
+\r
+        dmtnRoot.add(dmtnModuleDescription);\r
+        dmtnRoot.add(dmtnPackageDescription);\r
+        dmtnRoot.add(dmtnPlatformDescription);\r
+        iTree = new ITree(dmtnRoot);\r
+        iTree.addMouseListener(this);\r
+        jScrollPaneTree.setViewportView(iTree);\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see java.awt.event.WindowListener#windowClosing(java.awt.event.WindowEvent)\r
+     *\r
+     * Override windowClosing to popup warning message to confirm quit\r
+     * \r
+     */\r
+    public void windowClosing(WindowEvent arg0) {\r
+        this.exit();\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
+     * \r
+     * Override mouseClicked to check if need display popup menu\r
+     * \r
+     */\r
+    public void mouseClicked(MouseEvent arg0) {\r
+        if (arg0.getButton() == MouseEvent.BUTTON1) {\r
+        }\r
+        if (arg0.getButton() == MouseEvent.BUTTON3) {\r
+        }\r
+        //\r
+        // When double click\r
+        //\r
+        if (arg0.getClickCount() == 2) {\r
+            doubleClickModuleTreeNode();\r
+        }\r
+    }\r
+\r
+    public void mouseEntered(MouseEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+    }\r
+\r
+    public void mouseExited(MouseEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+    }\r
+\r
+    public void mousePressed(MouseEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+    }\r
+\r
+    public void mouseReleased(MouseEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+    }\r
+\r
+    /**\r
+     Remove all Internal Frame of Module Desktop Pane\r
+     \r
+     **/\r
+    private void cleanDesktopPaneModule() {\r
+        if (jDesktopPaneModule != null) {\r
+            JInternalFrame[] iif = this.jDesktopPaneModule.getAllFrames();\r
+            for (int index = 0; index < iif.length; index++) {\r
+                iif[index].dispose();\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Remove all Internal Frame of package Desktop Pane\r
+     \r
+     **/\r
+    private void cleanDesktopPanePackage() {\r
+        if (jDesktopPanePlatform != null) {\r
+            JInternalFrame[] iif = this.jDesktopPanePackage.getAllFrames();\r
+            for (int index = 0; index < iif.length; index++) {\r
+                iif[index].dispose();\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Remove all Internal Frame of platform Desktop Pane\r
+     \r
+     **/\r
+    private void cleanDesktopPanePlatform() {\r
+        if (jDesktopPanePlatform != null) {\r
+            JInternalFrame[] iif = this.jDesktopPanePlatform.getAllFrames();\r
+            for (int index = 0; index < iif.length; index++) {\r
+                iif[index].dispose();\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Remove all Internal Frame of all Desktop Panes\r
+     \r
+     **/\r
+    private void cleanDesktopPane() {\r
+        cleanDesktopPaneModule();\r
+        cleanDesktopPanePackage();\r
+        cleanDesktopPanePlatform();\r
+    }\r
+\r
+    /**\r
+     Set file filter as input ext\r
+     \r
+     @param ext\r
+     @return\r
+     \r
+     **/\r
+    private int getNewFilePath(String ext) {\r
+        JFileChooser fc = new JFileChooser(Workspace.getCurrentWorkspace());\r
+        fc.setAcceptAllFileFilterUsed(false);\r
+        fc.addChoosableFileFilter(new IFileFilter(ext));\r
+        return fc.showSaveDialog(new JPanel());\r
+    }\r
+\r
+    /**\r
+     Open Module\r
+\r
+     @param path input file path\r
+     \r
+     **/\r
+    private void openModule(String path) {\r
+        ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;\r
+        try {\r
+            msa = OpenFile.openMsaFile(path);\r
+        } catch (IOException e) {\r
+            Log.err("Open Module Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (XmlException e) {\r
+            Log.err("Open Module Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (Exception e) {\r
+            Log.err("Open Module Surface Area " + path, "Invalid file type");\r
+            return;\r
+        }\r
+        Identification id = new Identification(msa.getMsaHeader().getModuleName(), msa.getMsaHeader().getGuidValue(),\r
+                                               msa.getMsaHeader().getVersion(), path);\r
+        //\r
+        // Generate module id\r
+        //\r
+        PackageIdentification pid = wt.getPackageIdByModuleId(id);\r
+        if (pid != null) {\r
+            //\r
+            // To judge if the module existed in vModuleList\r
+            // If not, add it to vModuleList\r
+            //\r
+            boolean isFind = false;\r
+            for (int index = 0; index < vModuleList.size(); index++) {\r
+                if (vModuleList.elementAt(index).equals(id)) {\r
+                    isFind = true;\r
+                    break;\r
+                }\r
+            }\r
+            if (!isFind) {\r
+                vModuleList.addElement(new ModuleIdentification(id, pid));\r
+                //\r
+                // Add new MsaHeader node to the tree\r
+                //\r
+                IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vModuleList.lastElement().getName(),\r
+                                                                           IDefaultMutableTreeNode.MSA_HEADER, true,\r
+                                                                           vModuleList.lastElement());\r
+                iTree.addNode(dmtnModuleDescription, node);\r
+            }\r
+        } else {\r
+            //\r
+            // The module is not in existing packages\r
+            //\r
+            Log.err("The module hasn't been added to any package of current workspace!");\r
+            return;\r
+        }\r
+\r
+        // Make the node selected\r
+        //\r
+        iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(this.dmtnModuleDescription, id,\r
+                                                                     IDefaultMutableTreeNode.MSA_HEADER)));\r
+        //\r
+        // Update opening Module list information\r
+        //\r
+        if (!openingModuleList.existsModule(id)) {\r
+            //\r
+            // Insert sub node of module\r
+            //\r
+            insertModuleTreeNode(id);\r
+            iTree.getSelectNode().setOpening(true);\r
+\r
+            //\r
+            // Update opening module list\r
+            //\r
+            openingModuleList.insertToOpeningModuleList(id, msa);\r
+            openingModuleList.setTreePathById(id, iTree.getSelectionPath());\r
+        }\r
+        //\r
+        // Show msa header in editor panel\r
+        //\r
+        showModuleElement(IDefaultMutableTreeNode.MSA_HEADER, openingModuleList.getOpeningModuleById(id));\r
+        this.currentOpeningModuleIndex = openingModuleList.findIndexOfListById(id);\r
+    }\r
+\r
+    /**\r
+     Open Package\r
+\r
+     @param path input file path\r
+     \r
+     **/\r
+    private void openPackage(String path) {\r
+        PackageSurfaceAreaDocument.PackageSurfaceArea spd = null;\r
+        try {\r
+            spd = OpenFile.openSpdFile(path);\r
+        } catch (IOException e) {\r
+            Log.err("Open Package Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (XmlException e) {\r
+            Log.err("Open Package Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (Exception e) {\r
+            Log.err("Open Package Surface Area " + path, "Invalid file type");\r
+            return;\r
+        }\r
+        Identification id = new Identification(spd.getSpdHeader().getPackageName(), spd.getSpdHeader().getGuidValue(),\r
+                                               spd.getSpdHeader().getVersion(), path);\r
+        //\r
+        // To judge if the package existed in vPackageList\r
+        // If not, add it to vPackageList\r
+        //\r
+        boolean isFind = false;\r
+        for (int index = 0; index < vPackageList.size(); index++) {\r
+            if (vPackageList.elementAt(index).equals(id)) {\r
+                isFind = true;\r
+                break;\r
+            }\r
+        }\r
+        if (!isFind) {\r
+            //\r
+            // The module is not in existing packages\r
+            //\r
+            Log.err("The package hasn't been added to current workspace!");\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Make the node selected\r
+        //\r
+        iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(this.dmtnPackageDescription, id,\r
+                                                                     IDefaultMutableTreeNode.SPD_HEADER)));\r
+        //\r
+        // Update opening package list information\r
+        //\r
+        if (!openingPackageList.existsPackage(id)) {\r
+            //\r
+            // Insert sub node of module\r
+            //\r
+            insertPackageTreeNode(id);\r
+            iTree.getSelectNode().setOpening(true);\r
+\r
+            //\r
+            // Update opening module list\r
+            //\r
+            openingPackageList.insertToOpeningPackageList(id, spd);\r
+            openingPackageList.setTreePathById(id, iTree.getSelectionPath());\r
+        }\r
+        //\r
+        // Show spd header in editor panel\r
+        //\r
+        showPackageElement(IDefaultMutableTreeNode.SPD_HEADER, openingPackageList.getOpeningPackageById(id));\r
+        this.currentOpeningPackageIndex = openingPackageList.findIndexOfListById(id);\r
+    }\r
+\r
+    /**\r
+     Open Package\r
+\r
+     @param path input file path\r
+     \r
+     **/\r
+    private void openPlatform(String path) {\r
+        PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd = null;\r
+        try {\r
+            fpd = OpenFile.openFpdFile(path);\r
+        } catch (IOException e) {\r
+            Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (XmlException e) {\r
+            Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (Exception e) {\r
+            Log.err("Open Platform Surface Area " + path, "Invalid file type");\r
+            return;\r
+        }\r
+        Identification id = new Identification(fpd.getPlatformHeader().getPlatformName(), fpd.getPlatformHeader()\r
+                                                                                             .getGuidValue(),\r
+                                               fpd.getPlatformHeader().getVersion(), path);\r
+        //\r
+        // To judge if the platform existed in vPlatformList\r
+        // If not, add it to vPlatformList\r
+        //\r
+        boolean isFind = false;\r
+        for (int index = 0; index < vPlatformList.size(); index++) {\r
+            if (vPlatformList.elementAt(index).equals(id)) {\r
+                isFind = true;\r
+                break;\r
+            }\r
+        }\r
+        if (!isFind) {\r
+            //\r
+            // The module is not in existing packages\r
+            //\r
+            Log.err("The platform hasn't been added to current workspace!");\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Make the node selected\r
+        //\r
+        iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(this.dmtnPlatformDescription, id,\r
+                                                                     IDefaultMutableTreeNode.FPD_PLATFORMHEADER)));\r
+        //\r
+        // Update opening package list information\r
+        //\r
+        if (!openingPlatformList.existsPlatform(id)) {\r
+            //\r
+            // Insert sub node of module\r
+            //\r
+            insertPlatformTreeNode(id);\r
+            iTree.getSelectNode().setOpening(true);\r
+\r
+            //\r
+            // Update opening module list\r
+            //\r
+            openingPlatformList.insertToOpeningPlatformList(id, fpd);\r
+            openingPlatformList.setTreePathById(id, iTree.getSelectionPath());\r
+        }\r
+        //\r
+        // Show fpd header in editor panel\r
+        //\r
+        showPlatformElement(IDefaultMutableTreeNode.FPD_PLATFORMHEADER, openingPlatformList.getOpeningPlatformById(id));\r
+        this.currentOpeningPlatformIndex = openingPlatformList.findIndexOfListById(id);\r
+    }\r
+\r
+    /**\r
+     Save module \r
+     \r
+     **/\r
+    private void saveModule(int index) {\r
+        OpeningModuleType omt = openingModuleList.getOpeningModuleByIndex(index);\r
+        if (omt.isNew()) {\r
+            if (getNewFilePath(DataType.MODULE_SURFACE_AREA_EXT) != JFileChooser.APPROVE_OPTION) {\r
+                return;\r
+            }\r
+        }\r
+        try {\r
+            SaveFile.saveMsaFile(omt.getId().getPath(), omt.getXmlMsa());\r
+            openingModuleList.setNew(omt.getId(), false);\r
+            openingModuleList.setModuleSaved(omt.getId(), true);\r
+        } catch (Exception e) {\r
+            Log.err("Save Module", e.getMessage());\r
+        }\r
+    }\r
+\r
+    /**\r
+     Save package \r
+     \r
+     **/\r
+    private void savePackage(int index) {\r
+        OpeningPackageType opt = openingPackageList.getOpeningPackageByIndex(index);\r
+        if (opt.isNew()) {\r
+            if (getNewFilePath(DataType.PACKAGE_SURFACE_AREA_EXT) != JFileChooser.APPROVE_OPTION) {\r
+                return;\r
+            }\r
+        }\r
+        try {\r
+            SaveFile.saveSpdFile(opt.getId().getPath(), opt.getXmlSpd());\r
+            openingPackageList.setNew(opt.getId(), false);\r
+            openingPackageList.setPackageSaved(opt.getId(), true);\r
+        } catch (Exception e) {\r
+            Log.err("Save Package", e.getMessage());\r
+        }\r
+    }\r
+\r
+    /**\r
+     Save platform \r
+     \r
+     **/\r
+    private void savePlatform(int index) {\r
+        OpeningPlatformType opt = openingPlatformList.getOpeningPlatformByIndex(index);\r
+        if (opt.isNew()) {\r
+            if (getNewFilePath(DataType.PACKAGE_SURFACE_AREA_EXT) != JFileChooser.APPROVE_OPTION) {\r
+                return;\r
+            }\r
+        }\r
+        try {\r
+            SaveFile.saveFpdFile(opt.getId().getPath(), opt.getXmlFpd());\r
+            openingPlatformList.setNew(opt.getId(), false);\r
+            openingPlatformList.setPlatformSaved(opt.getId(), true);\r
+        } catch (Exception e) {\r
+            Log.err("Save Package", e.getMessage());\r
+        }\r
+    }\r
+\r
+    public void componentHidden(ComponentEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    public void componentMoved(ComponentEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    public void componentResized(ComponentEvent arg0) {\r
+        this.jSplitPane.setSize(this.getWidth() - DataType.MAIN_FRAME_WIDTH_SPACING,\r
+                                this.getHeight() - DataType.MAIN_FRAME_HEIGHT_SPACING);\r
+        this.jSplitPane.validate();\r
+        resizeDesktopPanel();\r
+    }\r
+\r
+    public void componentShown(ComponentEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    /**\r
+     Resize JDesktopPanel\r
+     \r
+     */\r
+    private void resizeDesktopPanel() {\r
+        resizeDesktopPanel(this.jDesktopPaneModule);\r
+        resizeDesktopPanel(this.jDesktopPanePackage);\r
+        resizeDesktopPanel(this.jDesktopPanePlatform);\r
+    }\r
+\r
+    /**\r
+     Resize JDesktopPanel\r
+     \r
+     */\r
+    private void resizeDesktopPanel(JDesktopPane jdk) {\r
+        JInternalFrame[] iif = jdk.getAllFrames();\r
+        for (int index = 0; index < iif.length; index++) {\r
+            iif[index].setSize(jdk.getWidth(), jdk.getHeight());\r
+        }\r
+    }\r
+\r
+    private void getCompontentsFromFrameworkDatabase() {\r
+        this.vModuleList = wt.getAllModules();\r
+        this.vPackageList = wt.getAllPackages();\r
+        this.vPlatformList = wt.getAllPlatforms();\r
+    }\r
+\r
+    private void insertModuleTreeNode(Identification id) {\r
+        iTree.addNode(new IDefaultMutableTreeNode("Module Definitions", IDefaultMutableTreeNode.MSA_MODULEDEFINITIONS,\r
+                                                  true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Library Class Definitions",\r
+                                                  IDefaultMutableTreeNode.MSA_LIBRARYCLASSDEFINITIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Source Files", IDefaultMutableTreeNode.MSA_SOURCEFILES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Package Dependencies",\r
+                                                  IDefaultMutableTreeNode.MSA_PACKAGEDEPENDENCIES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Protocols", IDefaultMutableTreeNode.MSA_PROTOCOLS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Events", IDefaultMutableTreeNode.MSA_EVENTS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Hobs", IDefaultMutableTreeNode.MSA_HOBS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Ppis", IDefaultMutableTreeNode.MSA_PPIS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Variables", IDefaultMutableTreeNode.MSA_VARIABLES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Boot Modes", IDefaultMutableTreeNode.MSA_BOOTMODES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("System Tables", IDefaultMutableTreeNode.MSA_SYSTEMTABLES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Data Hubs", IDefaultMutableTreeNode.MSA_DATAHUBS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Hii Packages", IDefaultMutableTreeNode.MSA_HIIPACKAGES, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Guids", IDefaultMutableTreeNode.MSA_GUIDS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Externs", IDefaultMutableTreeNode.MSA_EXTERNS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("PcdCoded", IDefaultMutableTreeNode.MSA_PCDS, true, id));\r
+    }\r
+\r
+    private void insertPackageTreeNode(Identification id) {\r
+        iTree.addNode(new IDefaultMutableTreeNode("Package Definitions",\r
+                                                  IDefaultMutableTreeNode.SPD_PACKAGEDEFINITIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Library Class Declarations",\r
+                                                  IDefaultMutableTreeNode.SPD_LIBRARYCLASSDECLARATIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Msa Files", IDefaultMutableTreeNode.SPD_MSAFILES, false, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Package Headers", IDefaultMutableTreeNode.SPD_PACKAGEHEADERS, true,\r
+                                                  id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Guid Declarations", IDefaultMutableTreeNode.SPD_GUIDDECLARATIONS,\r
+                                                  true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Protocol Declarations",\r
+                                                  IDefaultMutableTreeNode.SPD_PROTOCOLDECLARATIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Ppi Declarations", IDefaultMutableTreeNode.SPD_PPIDECLARATIONS,\r
+                                                  true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Pcd Declarations", IDefaultMutableTreeNode.SPD_PCDDECLARATIONS,\r
+                                                  true, id));\r
+    }\r
+\r
+    private void insertPlatformTreeNode(Identification id) {\r
+        iTree.addNode(new IDefaultMutableTreeNode("Platform Definitions", IDefaultMutableTreeNode.FPD_PLATFORMDEFINITIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Flash", IDefaultMutableTreeNode.FPD_FLASH, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Framework Modules", IDefaultMutableTreeNode.FPD_FRAMEWORKMODULES,\r
+                                                  true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Pcd Dynamic Build Declarations",\r
+                                                  IDefaultMutableTreeNode.FPD_PCDDYNAMICBUILDDECLARATIONS, true, id));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Build Options", IDefaultMutableTreeNode.FPD_BUILDOPTIONS, true, id));\r
+    }\r
+\r
+    /**\r
+     Operate when double click a tree node\r
+     \r
+     **/\r
+    private void doubleClickModuleTreeNode() {\r
+        Identification id = iTree.getSelectNode().getId();\r
+        int intCategory = iTree.getSelectCategory();\r
+        String path = null;\r
+        //          \r
+        // If the node is not opened yet\r
+        // Insert top level elements first\r
+        //\r
+        //if (intCategory == IDefaultMutableTreeNode.MSA_HEADER || intCategory == IDefaultMutableTreeNode.SPD_MSAFILES) {\r
+        if (intCategory == IDefaultMutableTreeNode.MSA_HEADER) {\r
+\r
+            if (intCategory == IDefaultMutableTreeNode.MSA_HEADER) {\r
+                path = iTree.getSelectNode().getId().getPath();\r
+            }\r
+            if (intCategory == IDefaultMutableTreeNode.SPD_MSAFILES) {\r
+                path = iTree.getSelectNode().getId().getPath();\r
+            }\r
+            openModule(path);\r
+            return;\r
+        }\r
+        if (intCategory == IDefaultMutableTreeNode.SPD_HEADER) {\r
+            path = iTree.getSelectNode().getId().getPath();\r
+            openPackage(path);\r
+            return;\r
+        }\r
+        if (intCategory == IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
+            path = iTree.getSelectNode().getId().getPath();\r
+            openPlatform(path);\r
+            return;\r
+        }\r
+        //\r
+        // Show editor panel\r
+        //\r
+        if (intCategory >= IDefaultMutableTreeNode.MSA_HEADER && intCategory < IDefaultMutableTreeNode.SPD_HEADER) {\r
+            showModuleElement(intCategory, openingModuleList.getOpeningModuleById(id));\r
+            this.currentOpeningModuleIndex = openingModuleList.findIndexOfListById(id);\r
+        }\r
+        if (intCategory >= IDefaultMutableTreeNode.SPD_HEADER\r
+            && intCategory < IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
+            showPackageElement(intCategory, openingPackageList.getOpeningPackageById(id));\r
+            this.currentOpeningPackageIndex = openingPackageList.findIndexOfListById(id);\r
+        }\r
+        if (intCategory >= IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
+            showPlatformElement(intCategory, openingPlatformList.getOpeningPlatformById(id));\r
+            this.currentOpeningPlatformIndex = openingPlatformList.findIndexOfListById(id);\r
+        }\r
+    }\r
+\r
+    /**\r
+     Show content of editor panel via selected element\r
+     \r
+     @param elementType\r
+     @param fpd\r
+     \r
+    **/\r
+    private void showPlatformElement(int elementType, OpeningPlatformType fpd) {\r
+        this.cleanDesktopPanePlatform();\r
+        switch (elementType) {\r
+        case IDefaultMutableTreeNode.FPD_PLATFORMDEFINITIONS:\r
+            FpdPlatformDefs frmFpdPlatformDefs = new FpdPlatformDefs(fpd.getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdPlatformDefs, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.FPD_PLATFORMHEADER:\r
+            FpdHeader frmFpdHeader = new FpdHeader(fpd.getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdHeader, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.FPD_FLASH:\r
+            FpdFlash frmFpdFlash = new FpdFlash(fpd.getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdFlash, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.FPD_FRAMEWORKMODULES:\r
+            FpdFrameworkModules frmFpdFrameworkModules = new FpdFrameworkModules(fpd.getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdFrameworkModules, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.FPD_PCDDYNAMICBUILDDECLARATIONS:\r
+            FpdDynamicPcdBuildDefinitions frmFpdDynamicPcdBuildDefinitions = new FpdDynamicPcdBuildDefinitions(\r
+                                                                                                               fpd\r
+                                                                                                                  .getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdDynamicPcdBuildDefinitions, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.FPD_BUILDOPTIONS:\r
+            FpdBuildOptions frmFpdBuildOptions = new FpdBuildOptions(fpd.getXmlFpd());\r
+            getJDesktopPanePlatform().add(frmFpdBuildOptions, 1);\r
+            break;\r
+        }\r
+        this.jTabbedPaneEditor.setSelectedIndex(2);\r
+        resizeDesktopPanel();\r
+    }\r
+\r
+    /**\r
+     Show content of editor panel via selected element\r
+     \r
+     @param elementType\r
+     @param spd\r
+     \r
+     */\r
+    private void showPackageElement(int elementType, OpeningPackageType spd) {\r
+        this.cleanDesktopPanePackage();\r
+        Tools.dirForNewSpd = spd.getId().getPath();\r
+        switch (elementType) {\r
+        case IDefaultMutableTreeNode.SPD_HEADER:\r
+            SpdHeader frmSpdHeader = new SpdHeader(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSpdHeader, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_PACKAGEDEFINITIONS:\r
+            SpdPackageDefinitions frmSpdPackageDefinitions = new SpdPackageDefinitions(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSpdPackageDefinitions, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_LIBRARYCLASSDECLARATIONS:\r
+            SpdLibClassDecls frmSlcd = new SpdLibClassDecls(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSlcd, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_MSAFILES:\r
+            SpdMsaFiles frmSmf = new SpdMsaFiles(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSmf, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_PACKAGEHEADERS:\r
+            SpdPackageHeaders frmSph = new SpdPackageHeaders(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSph, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_GUIDDECLARATIONS:\r
+            SpdGuidDecls frmSgd = new SpdGuidDecls(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSgd, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_PROTOCOLDECLARATIONS:\r
+            SpdProtocolDecls frmSprod = new SpdProtocolDecls(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSprod, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_PPIDECLARATIONS:\r
+            SpdPpiDecls frmSppid = new SpdPpiDecls(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSppid, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.SPD_PCDDECLARATIONS:\r
+            SpdPcdDefs frmSpcdd = new SpdPcdDefs(spd.getXmlSpd());\r
+            getJDesktopPanePackage().add(frmSpcdd, 1);\r
+            break;\r
+        }\r
+        this.jTabbedPaneEditor.setSelectedIndex(1);\r
+        resizeDesktopPanel();\r
+    }\r
+\r
+    /**\r
+     Show content of editor panel via selected element\r
+     \r
+     @param elementType\r
+     @param msa\r
+     \r
+     */\r
+    private void showModuleElement(int elementType, OpeningModuleType msa) {\r
+        this.cleanDesktopPaneModule();\r
+        switch (elementType) {\r
+        case IDefaultMutableTreeNode.MSA_HEADER:\r
+            MsaHeader frmMsaHeader = new MsaHeader(msa);\r
+            getJDesktopPaneModule().add(frmMsaHeader, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_MODULEDEFINITIONS:\r
+            ModuleDefinitions frmMd = new ModuleDefinitions(msa);\r
+            getJDesktopPaneModule().add(frmMd, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_LIBRARYCLASSDEFINITIONS:\r
+            ModuleLibraryClassDefinitions frmMlcd = new ModuleLibraryClassDefinitions(msa);\r
+            getJDesktopPaneModule().add(frmMlcd, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_PACKAGEDEPENDENCIES:\r
+            ModulePackageDependencies frmMpd = new ModulePackageDependencies(msa);\r
+            getJDesktopPaneModule().add(frmMpd, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_SOURCEFILES:\r
+            ModuleSourceFiles frmMsf = new ModuleSourceFiles(msa);\r
+            getJDesktopPaneModule().add(frmMsf, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_PROTOCOLS:\r
+            ModuleProtocols frmMp = new ModuleProtocols(msa);\r
+            getJDesktopPaneModule().add(frmMp, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_EVENTS:\r
+            ModuleEvents frmMe = new ModuleEvents(msa);\r
+            getJDesktopPaneModule().add(frmMe, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_HOBS:\r
+            ModuleHobs frmMh = new ModuleHobs(msa);\r
+            getJDesktopPaneModule().add(frmMh, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_PPIS:\r
+            ModulePpis frmMpp = new ModulePpis(msa);\r
+            getJDesktopPaneModule().add(frmMpp, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_VARIABLES:\r
+            ModuleVariables frmMv = new ModuleVariables(msa);\r
+            getJDesktopPaneModule().add(frmMv, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_BOOTMODES:\r
+            ModuleBootModes frmMbm = new ModuleBootModes(msa);\r
+            getJDesktopPaneModule().add(frmMbm, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_SYSTEMTABLES:\r
+            ModuleSystemTables frmMst = new ModuleSystemTables(msa);\r
+            getJDesktopPaneModule().add(frmMst, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_DATAHUBS:\r
+            ModuleDataHubs frmMdh = new ModuleDataHubs(msa);\r
+            getJDesktopPaneModule().add(frmMdh, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_HIIPACKAGES:\r
+            ModuleHiiPackages frmMf = new ModuleHiiPackages(msa);\r
+            getJDesktopPaneModule().add(frmMf, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_GUIDS:\r
+            ModuleGuids frmGuid = new ModuleGuids(msa);\r
+            getJDesktopPaneModule().add(frmGuid, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_EXTERNS:\r
+            ModuleExterns frmMex = new ModuleExterns(msa);\r
+            getJDesktopPaneModule().add(frmMex, 1);\r
+            break;\r
+        case IDefaultMutableTreeNode.MSA_PCDS:\r
+            ModulePCDs frmPcd = new ModulePCDs(msa);\r
+            getJDesktopPaneModule().add(frmPcd, 1);\r
+            break;\r
+        }\r
+        this.jTabbedPaneEditor.setSelectedIndex(0);\r
+        resizeDesktopPanel();\r
+    }\r
+\r
+    //\r
+    // Define operations of menu\r
+    //\r
+    /**\r
+     New a file\r
+     \r
+     **/\r
+    private void fileNew() {\r
+        int result = -1;\r
+        //\r
+        // Selece new file type\r
+        //\r
+        NewFileChooser nfc = new NewFileChooser(this, true);\r
+        result = nfc.showDialog();\r
+\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            nfc.dispose();\r
+            return;\r
+        } else if (result == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            //\r
+            // To new a module\r
+            //\r
+            SelectModuleBelong smb = new SelectModuleBelong(this, true, result);\r
+            result = smb.showDialog();\r
+\r
+            if (result == DataType.RETURN_TYPE_CANCEL) {\r
+                nfc.dispose();\r
+                smb.dispose();\r
+                return;\r
+            } else if (result == DataType.RETURN_TYPE_OK) {\r
+                PackageSurfaceAreaDocument.PackageSurfaceArea psa = null;\r
+                if (this.openingPackageList.existsPackage(smb.getMid().getPackageId())) {\r
+                    psa = openingPackageList.getPackageSurfaceAreaFromId(smb.getMid().getPackageId());\r
+                }\r
+                try {\r
+                    wt.addModuleToPackage(smb.getMid(), psa);\r
+                } catch (IOException e) {\r
+                    Log.err("Upddate MsaFiles of Package", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                } catch (XmlException e) {\r
+                    Log.err("Upddate MsaFiles of Package", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                } catch (Exception e) {\r
+                    Log.err("Upddate MsaFiles of Package", e.getMessage());\r
+                    e.printStackTrace();\r
+                    return;\r
+                }\r
+                this.openModule(smb.getMid().getPath());\r
+            }\r
+        } else if (result == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            //\r
+            // To new a package\r
+            //\r
+            SelectModuleBelong smb = new SelectModuleBelong(this, true, result);\r
+            result = smb.showDialog();\r
+\r
+            if (result == DataType.RETURN_TYPE_CANCEL) {\r
+                nfc.dispose();\r
+                smb.dispose();\r
+                return;\r
+            } else if (result == DataType.RETURN_TYPE_OK) {\r
+                try {\r
+                    wt.addPackageToDatabase(smb.getPid());\r
+                } catch (Exception e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+                vPackageList.addElement(smb.getPid());\r
+                //\r
+                // Add new SpdHeader node to the tree\r
+                //\r
+                IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vPackageList.lastElement().getName(),\r
+                                                                           IDefaultMutableTreeNode.SPD_HEADER, true,\r
+                                                                           vPackageList.lastElement());\r
+                iTree.addNode(dmtnPackageDescription, node);\r
+                this.openPackage(smb.getPid().getPath());\r
+            }\r
+        } else if (result == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            //\r
+            // To new a platform\r
+            //\r
+            SelectModuleBelong smb = new SelectModuleBelong(this, true, result);\r
+            result = smb.showDialog();\r
+\r
+            if (result == DataType.RETURN_TYPE_CANCEL) {\r
+                nfc.dispose();\r
+                smb.dispose();\r
+                return;\r
+            } else if (result == DataType.RETURN_TYPE_OK) {\r
+                try {\r
+                    wt.addPlatformToDatabase(smb.getFid());\r
+                } catch (Exception e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+                vPlatformList.addElement(smb.getFid());\r
+                //\r
+                // Add new SpdHeader node to the tree\r
+                //\r
+                IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vPlatformList.lastElement().getName(),\r
+                                                                           IDefaultMutableTreeNode.FPD_PLATFORMHEADER,\r
+                                                                           true, vPlatformList.lastElement());\r
+                iTree.addNode(dmtnPlatformDescription, node);\r
+                this.openPlatform(smb.getFid().getPath());\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Open a file\r
+     \r
+     **/\r
+    private void open() {\r
+        JFileChooser fc = new JFileChooser(Workspace.getCurrentWorkspace());\r
+        fc.setAcceptAllFileFilterUsed(false);\r
+        IFileFilter iffM = new IFileFilter(DataType.MODULE_SURFACE_AREA_EXT);\r
+        IFileFilter iffP = new IFileFilter(DataType.PACKAGE_SURFACE_AREA_EXT);\r
+        IFileFilter iffF = new IFileFilter(DataType.PLATFORM_SURFACE_AREA_EXT);\r
+        fc.addChoosableFileFilter(iffM);\r
+        fc.addChoosableFileFilter(iffP);\r
+        fc.addChoosableFileFilter(iffF);\r
+        fc.setFileFilter(iffM);\r
+\r
+        int result = fc.showOpenDialog(new JPanel());\r
+\r
+        if (result == JFileChooser.APPROVE_OPTION) {\r
+            String path = fc.getSelectedFile().getPath();\r
+            String match = path.substring(path.length() - 4);\r
+            if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.MODULE_SURFACE_AREA_EXT)) {\r
+                openModule(path);\r
+            } else if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.PACKAGE_SURFACE_AREA_EXT)) {\r
+                openPackage(path);\r
+            } else if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.PLATFORM_SURFACE_AREA_EXT)) {\r
+                openPlatform(path);\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     Close files\r
+     \r
+     **/\r
+    private void close() {\r
+        switch (this.jTabbedPaneEditor.getSelectedIndex()) {\r
+        //\r
+        // Current is module\r
+        //\r
+        case 0:\r
+            if (this.currentOpeningModuleIndex > -1) {\r
+                if (!openingModuleList.getModuleSaved(currentOpeningModuleIndex)) {\r
+                    int result = showSaveDialog();\r
+                    if (result == JOptionPane.YES_OPTION) {\r
+                        this.saveAll();\r
+                    }\r
+                    if (result == JOptionPane.NO_OPTION) {\r
+                        // Do nothing\r
+                    }\r
+                    if (result == JOptionPane.CANCEL_OPTION) {\r
+                        return;\r
+                    }\r
+                }\r
+                iTree.removeNodeChildrenByPath(openingModuleList.getTreePathByIndex(currentOpeningModuleIndex));\r
+                this.openingModuleList.removeFromOpeningModuleListByIndex(this.currentOpeningModuleIndex);\r
+                this.cleanDesktopPaneModule();\r
+                this.currentOpeningModuleIndex = -1;\r
+            }\r
+            break;\r
+        //\r
+        // Current is package\r
+        //    \r
+        case 1:\r
+            if (this.currentOpeningPackageIndex > -1) {\r
+                if (!openingPackageList.getPackageSaved(currentOpeningPackageIndex)) {\r
+                    int result = showSaveDialog();\r
+                    if (result == JOptionPane.YES_OPTION) {\r
+                        this.saveAll();\r
+                    }\r
+                    if (result == JOptionPane.NO_OPTION) {\r
+                        // Do nothing\r
+                    }\r
+                    if (result == JOptionPane.CANCEL_OPTION) {\r
+                        return;\r
+                    }\r
+                }\r
+                iTree.removeNodeChildrenByPath(openingPackageList.getTreePathByIndex(currentOpeningPackageIndex));\r
+                this.openingPackageList.removeFromOpeningPackageListByIndex(this.currentOpeningPackageIndex);\r
+                this.cleanDesktopPanePackage();\r
+                this.currentOpeningPackageIndex = -1;\r
+            }\r
+            break;\r
+        //\r
+        // Current is platform\r
+        //\r
+        case 2:\r
+            if (this.currentOpeningPlatformIndex > -1) {\r
+                if (!openingPlatformList.getPlatformSaved(currentOpeningPlatformIndex)) {\r
+                    int result = showSaveDialog();\r
+                    if (result == JOptionPane.YES_OPTION) {\r
+                        this.saveAll();\r
+                    }\r
+                    if (result == JOptionPane.NO_OPTION) {\r
+                        // Do nothing\r
+                    }\r
+                    if (result == JOptionPane.CANCEL_OPTION) {\r
+                        return;\r
+                    }\r
+                }\r
+                iTree.removeNodeChildrenByPath(openingPlatformList.getTreePathByIndex(currentOpeningPlatformIndex));\r
+                this.openingPlatformList.removeFromOpeningPlatformListByIndex(this.currentOpeningPlatformIndex);\r
+                this.cleanDesktopPanePlatform();\r
+                this.currentOpeningPlatformIndex = -1;\r
+            }\r
+            break;\r
+        }\r
+    }\r
+\r
+    /**\r
+     Close all opening files and clean all showing internal frame\r
+     \r
+     **/\r
+    private void closeAll() {\r
+        int result = -1;\r
+        if (!openingModuleList.isSaved() || !openingPackageList.isSaved() || !openingPlatformList.isSaved()) {\r
+            result = showSaveDialog();\r
+        }\r
+        if (result == JOptionPane.YES_OPTION) {\r
+            this.saveAll();\r
+        }\r
+        if (result == JOptionPane.NO_OPTION) {\r
+            // Do nothing\r
+        }\r
+        if (result == JOptionPane.CANCEL_OPTION) {\r
+            return;\r
+        }\r
+        this.cleanDesktopPane();\r
+        this.getCompontentsFromFrameworkDatabase();\r
+        openingModuleList.removeAllFromOpeningModuleList();\r
+        openingPackageList.removeAllFromOpeningPackageList();\r
+        openingPlatformList.removeAllFromOpeningPlatformList();\r
+        this.makeEmptyTree();\r
+    }\r
+\r
+    /**\r
+     Save currentModule when press button OK\r
+     \r
+     **/\r
+    private void save() {\r
+        switch (this.jTabbedPaneEditor.getSelectedIndex()) {\r
+        case 0:\r
+            if (this.currentOpeningModuleIndex > -1) {\r
+                saveModule(this.currentOpeningModuleIndex);\r
+            }\r
+            break;\r
+        case 1:\r
+            if (this.currentOpeningPackageIndex > -1) {\r
+                savePackage(this.currentOpeningPackageIndex);\r
+            }\r
+            break;\r
+        case 2:\r
+            if (this.currentOpeningPlatformIndex > -1) {\r
+                savePlatform(this.currentOpeningPlatformIndex);\r
+            }\r
+            break;\r
+        }\r
+    }\r
+\r
+    private void saveAs() {\r
+\r
+    }\r
+\r
+    private void saveAll() {\r
+        //\r
+        // Save all modules\r
+        //\r
+        for (int index = 0; index < openingModuleList.size(); index++) {\r
+            if (!openingModuleList.getModuleSaved(index)) {\r
+                saveModule(index);\r
+            }\r
+        }\r
+\r
+        //\r
+        // Save all packages\r
+        //\r
+        for (int index = 0; index < openingPackageList.size(); index++) {\r
+            if (!openingPackageList.getPackageSaved(index)) {\r
+                savePackage(index);\r
+            }\r
+        }\r
+\r
+        //\r
+        // Save all platforms\r
+        //\r
+        for (int index = 0; index < openingPlatformList.size(); index++) {\r
+            if (!openingPlatformList.getPlatformSaved(index)) {\r
+                savePlatform(index);\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     To save changed items before exit.\r
+     \r
+     **/\r
+    private void exit() {\r
+        int result = -1;\r
+        if (!openingModuleList.isSaved() || !openingPackageList.isSaved() || !openingPlatformList.isSaved()) {\r
+            result = showSaveDialog();\r
+        }\r
+        if (result == JOptionPane.YES_OPTION) {\r
+            this.saveAll();\r
+        }\r
+        if (result == JOptionPane.NO_OPTION) {\r
+            // Do nothing\r
+        }\r
+        if (result == JOptionPane.CANCEL_OPTION) {\r
+            return;\r
+        }\r
+        this.dispose();\r
+        System.exit(0);\r
+    }\r
+\r
+    /**\r
+     Switch current workspace to others\r
+     \r
+     **/\r
+    private void changeWorkspace() {\r
+        SwitchWorkspace sw = new SwitchWorkspace(this, true);\r
+        int result = sw.showDialog();\r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            return;\r
+        } else if (result == DataType.RETURN_TYPE_OK) {\r
+            //\r
+            // Reinit whole window\r
+            //\r
+            closeAll();\r
+            this.setTitle(windowTitle + "- [" + Workspace.getCurrentWorkspace() + "]");\r
+        }\r
+        sw.dispose();\r
+    }\r
+\r
+    /**\r
+     Clone selected item\r
+     \r
+     **/\r
+    private void cloneItem() {\r
+        int mode = -1;\r
+        \r
+        //\r
+        // Check if there is any item can be cloned\r
+        //\r
+        if (iTree.getSelectionPath() == null) {\r
+            Log.err("Please select a target to clone!");\r
+            return;\r
+        }\r
+        int category = iTree.getSelectCategory();\r
+        Identification id = iTree.getSelectNode().getId();\r
+        if (category == IDefaultMutableTreeNode.MODULE || category == IDefaultMutableTreeNode.PACKAGE\r
+            || category == IDefaultMutableTreeNode.PLATFORM) {\r
+            Log.err("Please select a target to clone!");\r
+            return;\r
+        }\r
+        \r
+        if (category == IDefaultMutableTreeNode.WORKSPACE) {\r
+            mode = DataType.RETURN_TYPE_WORKSPACE;\r
+            id = null;\r
+        }\r
+        if (category >= IDefaultMutableTreeNode.MSA_HEADER && category < IDefaultMutableTreeNode.SPD_HEADER) {\r
+            mode = DataType.RETURN_TYPE_MODULE_SURFACE_AREA;\r
+        }\r
+        if (category >= IDefaultMutableTreeNode.SPD_HEADER && category < IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
+            mode = DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA;\r
+        }\r
+        if (category >= IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
+            mode = DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA;\r
+        }\r
+        Clone c = new Clone(this, true, mode, id);\r
+        int result = c.showDialog();\r
+        \r
+        if (result == DataType.RETURN_TYPE_CANCEL) {\r
+            c.dispose();\r
+        }\r
+        if (result == DataType.RETURN_TYPE_WORKSPACE) {\r
+            Tools.showInformationMessage("Workspace Clone Finished");\r
+        }\r
+        if (result == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            Tools.showInformationMessage("Module Surface Area Clone Finished");\r
+            vModuleList.addElement(c.getMid());\r
+            //\r
+            // Add new MsaHeader node to the tree\r
+            //\r
+            IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vModuleList.lastElement().getName(),\r
+                                                                       IDefaultMutableTreeNode.MSA_HEADER, true,\r
+                                                                       vModuleList.lastElement());\r
+            iTree.addNode(dmtnModuleDescription, node);\r
+        }\r
+        if (result == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            Tools.showInformationMessage("Package Surface Area Clone Finished");\r
+            vPackageList.addElement(c.getPid());\r
+            //\r
+            // Add new SpdHeader node to the tree\r
+            //\r
+            IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vPackageList.lastElement().getName(),\r
+                                                                       IDefaultMutableTreeNode.SPD_HEADER, true,\r
+                                                                       vPackageList.lastElement());\r
+            iTree.addNode(dmtnPackageDescription, node);\r
+        }\r
+        if (result == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            Tools.showInformationMessage("Platform Surface Area Clone Finished");\r
+            vPlatformList.addElement(c.getFid());\r
+            //\r
+            // Add new SpdHeader node to the tree\r
+            //\r
+            IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vPlatformList.lastElement().getName(),\r
+                                                                       IDefaultMutableTreeNode.FPD_PLATFORMHEADER,\r
+                                                                       true, vPlatformList.lastElement());\r
+            iTree.addNode(dmtnPlatformDescription, node);\r
+            //this.openPlatform(c.getFid().getPath());\r
+        }\r
+        if (result == DataType.RETURN_TYPE_OK) {\r
+\r
+        }\r
+    }\r
+\r
+    public void valueChanged(TreeSelectionEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    public void menuCanceled(MenuEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    public void menuDeselected(MenuEvent arg0) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+    public void menuSelected(MenuEvent arg0) {\r
+        if (arg0.getSource() == jMenuFile) {\r
+            //\r
+            // Enable close/close all if some files are opened\r
+            //\r
+            jMenuItemFileClose.setEnabled(openingModuleList.isOpend() || openingPackageList.isOpend()\r
+                                          || openingPlatformList.isOpend());\r
+            jMenuItemFileCloseAll.setEnabled(openingModuleList.isOpend() || openingPackageList.isOpend()\r
+                                             || openingPlatformList.isOpend());\r
+\r
+            //\r
+            // Enable save/save all if some files are changed\r
+            //\r
+            jMenuItemFileSave.setEnabled(!openingModuleList.isSaved() || !openingPackageList.isSaved()\r
+                                         || !openingPlatformList.isSaved());\r
+            jMenuItemFileSaveAll.setEnabled(!openingModuleList.isSaved() || !openingPackageList.isSaved()\r
+                                            || !openingPlatformList.isSaved());\r
+        }\r
+\r
+        if (arg0.getSource() == jMenuTools) {\r
+            //\r
+            // Enable clone when select some items\r
+            //\r
+            if (iTree.getSelectionPath() == null) {\r
+                jMenuItemToolsClone.setEnabled(false);\r
+            } else {\r
+                int category = iTree.getSelectCategory();\r
+                if (category == IDefaultMutableTreeNode.MODULE || category == IDefaultMutableTreeNode.PACKAGE\r
+                    || category == IDefaultMutableTreeNode.PLATFORM) {\r
+                    jMenuItemToolsClone.setEnabled(false);\r
+                } else {\r
+                    jMenuItemToolsClone.setEnabled(true);\r
+                }\r
+            }\r
+        }\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/NewFileChooser.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/NewFileChooser.java
new file mode 100644 (file)
index 0000000..9924d56
--- /dev/null
@@ -0,0 +1,228 @@
+/** @file\r
\r
+ The file is used to show a new file chooser dialog\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;\r
+\r
+import java.awt.event.ActionEvent;\r
+\r
+import javax.swing.ButtonGroup;\r
+import javax.swing.JPanel;\r
+import javax.swing.JButton;\r
+import javax.swing.JRadioButton;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+\r
+public class NewFileChooser extends IDialog {\r
+\r
+    /**\r
+     Define class members\r
+     \r
+     **/\r
+    private static final long serialVersionUID = -3657926400683618281L;\r
+\r
+    private JPanel jContentPane = null;\r
+\r
+    private JButton jButtonNext = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    private JRadioButton jRadioButtonModule = null;\r
+\r
+    private JRadioButton jRadioButtonPackage = null;\r
+\r
+    private JRadioButton jRadioButtonPlatform = null;\r
+\r
+    private JRadioButton jRadioButtonBuildXml = null;\r
+\r
+    private final ButtonGroup buttonGroup = new ButtonGroup();\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public NewFileChooser() {\r
+        super();\r
+        init();\r
+    }\r
+\r
+    /**\r
+     This is the default constructor\r
+     \r
+     **/\r
+    public NewFileChooser(IFrame parentFrame, boolean modal) {\r
+        super(parentFrame, modal);\r
+        init();\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonOk       \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonOk() {\r
+        if (jButtonNext == null) {\r
+            jButtonNext = new JButton();\r
+            jButtonNext.setBounds(new java.awt.Rectangle(90, 150, 80, 20));\r
+            jButtonNext.setText("Next");\r
+            jButtonNext.addActionListener(this);\r
+        }\r
+        return jButtonNext;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonCancel   \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(180, 150, 80, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jRadioButtonModule      \r
+     *         \r
+     * @return javax.swing.JRadioButton        \r
+     */\r
+    private JRadioButton getJRadioButtonModule() {\r
+        if (jRadioButtonModule == null) {\r
+            jRadioButtonModule = new JRadioButton();\r
+            jRadioButtonModule.setText(DataType.MODULE_SURFACE_AREA);\r
+            jRadioButtonModule.setBounds(new java.awt.Rectangle(20, 20, 240, 20));\r
+            jRadioButtonModule.setSelected(true);\r
+        }\r
+        return jRadioButtonModule;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jRadioButtonPackage     \r
+     *         \r
+     * @return javax.swing.JRadioButton        \r
+     */\r
+    private JRadioButton getJRadioButtonPackage() {\r
+        if (jRadioButtonPackage == null) {\r
+            jRadioButtonPackage = new JRadioButton();\r
+            jRadioButtonPackage.setText(DataType.PACKAGE_SURFACE_AREA);\r
+            jRadioButtonPackage.setBounds(new java.awt.Rectangle(20, 50, 240, 20));\r
+        }\r
+        return jRadioButtonPackage;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jRadioButtonPlatform    \r
+     *         \r
+     * @return javax.swing.JRadioButton        \r
+     */\r
+    private JRadioButton getJRadioButtonPlatform() {\r
+        if (jRadioButtonPlatform == null) {\r
+            jRadioButtonPlatform = new JRadioButton();\r
+            jRadioButtonPlatform.setText(DataType.PACKAGE_SURFACE_AREA);\r
+            jRadioButtonPlatform.setBounds(new java.awt.Rectangle(20, 80, 240, 20));\r
+        }\r
+        return jRadioButtonPlatform;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jRadioButtonBuildXml    \r
+     *         \r
+     * @return javax.swing.JRadioButton        \r
+     */\r
+    private JRadioButton getJRadioButtonBuildXml() {\r
+        if (jRadioButtonBuildXml == null) {\r
+            jRadioButtonBuildXml = new JRadioButton();\r
+            jRadioButtonBuildXml.setText(DataType.ANT_BUILD_FILE);\r
+            jRadioButtonBuildXml.setBounds(new java.awt.Rectangle(20, 110, 240, 20));\r
+            jRadioButtonBuildXml.setVisible(false);\r
+        }\r
+        return jRadioButtonBuildXml;\r
+    }\r
+\r
+    /**\r
+     * @param args\r
+     */\r
+    public static void main(String[] args) {\r
+        NewFileChooser nfc = new NewFileChooser();\r
+        nfc.setVisible(true);\r
+    }\r
+\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void init() {\r
+        this.setSize(310, 220);\r
+        this.setContentPane(getJContentPane());\r
+        this.setTitle("New Framework File");\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     * This method initializes jContentPane\r
+     * \r
+     * @return javax.swing.JPanel\r
+     */\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+            jContentPane.add(getJRadioButtonModule(), null);\r
+            jContentPane.add(getJRadioButtonPackage(), null);\r
+            jContentPane.add(getJRadioButtonPlatform(), null);\r
+            jContentPane.add(getJRadioButtonBuildXml(), null);\r
+            buttonGroup.add(this.getJRadioButtonModule());\r
+            buttonGroup.add(this.getJRadioButtonPackage());\r
+            buttonGroup.add(this.getJRadioButtonPlatform());\r
+            buttonGroup.add(this.getJRadioButtonBuildXml());\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
+    public void actionPerformed(ActionEvent arg0) {\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.setVisible(false);\r
+            returnType = DataType.RETURN_TYPE_CANCEL;\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonNext) {\r
+            this.setVisible(false);\r
+            if (this.jRadioButtonModule.isSelected()) {\r
+                returnType = DataType.RETURN_TYPE_MODULE_SURFACE_AREA;\r
+            }\r
+            if (this.jRadioButtonPackage.isSelected()) {\r
+                returnType = DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA;\r
+            }\r
+            if (this.jRadioButtonPlatform.isSelected()) {\r
+                returnType = DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA;\r
+            }\r
+            if (this.jRadioButtonBuildXml.isSelected()) {\r
+                returnType = DataType.RETURN_TYPE_BUILD_XML;\r
+            }\r
+        }\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/SelectModuleBelong.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/SelectModuleBelong.java
new file mode 100644 (file)
index 0000000..c33e8eb
--- /dev/null
@@ -0,0 +1,665 @@
+/** @file\r
\r
+ The file is used to let user choose to create module in an existing package\r
+ or to create a new package first.\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;\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.io.File;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JComboBox;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextField;\r
+\r
+import org.tianocore.ModuleSurfaceAreaDocument;\r
+import org.tianocore.MsaHeaderDocument;\r
+import org.tianocore.SpdHeaderDocument;\r
+import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
+import org.tianocore.PlatformHeaderDocument.PlatformHeader;\r
+import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.SaveFile;\r
+import org.tianocore.frameworkwizard.common.Tools;\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.Identification.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class SelectModuleBelong extends IDialog {\r
+\r
+    /**\r
+     Define class members\r
+     \r
+     **/\r
+    private static final long serialVersionUID = 4171355136991448972L;\r
+\r
+    private JPanel jContentPane = null;\r
+\r
+    private JComboBox jComboBoxExistingPackage = null;\r
+\r
+    private JButton jButtonOk = null;\r
+\r
+    private JButton jButtonCancel = null;\r
+\r
+    private Vector<PackageIdentification> packages = null;\r
+\r
+    private JLabel jLabelPackage = null;\r
+\r
+    private JLabel jLabelFilePath = null;\r
+\r
+    private JTextField jTextFieldFilePath = null;\r
+\r
+    private JButton jButtonBrowse = null;\r
+\r
+    private JLabel jLabelName = null;\r
+\r
+    private JTextField jTextFieldName = null;\r
+\r
+    private JLabel jLabelGuid = null;\r
+\r
+    private JTextField jTextFieldGuid = null;\r
+\r
+    private JButton jButtonGen = null;\r
+\r
+    private JLabel jLabelVersion = null;\r
+\r
+    private JTextField jTextFieldVersion = null;\r
+\r
+    private StarLabel jStarLabel1 = null;\r
+\r
+    private StarLabel jStarLabel2 = null;\r
+\r
+    private StarLabel jStarLabel3 = null;\r
+\r
+    private StarLabel jStarLabel4 = null;\r
+\r
+    private StarLabel jStarLabel5 = null;\r
+\r
+    private WorkspaceTools wt = new WorkspaceTools();\r
+\r
+    private ModuleIdentification mid = null;\r
+\r
+    private PackageIdentification pid = null;\r
+\r
+    private PlatformIdentification fid = null;\r
+\r
+    private int mode = -1;\r
+\r
+    /**\r
+     * This method initializes jComboBoxExistingPackage        \r
+     *         \r
+     * @return javax.swing.JComboBox   \r
+     */\r
+    private JComboBox getJComboBoxExistingPackage() {\r
+        if (jComboBoxExistingPackage == null) {\r
+            jComboBoxExistingPackage = new JComboBox();\r
+            jComboBoxExistingPackage.setBounds(new java.awt.Rectangle(140, 10, 340, 20));\r
+        }\r
+        return jComboBoxExistingPackage;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonNext     \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonOk() {\r
+        if (jButtonOk == null) {\r
+            jButtonOk = new JButton();\r
+            jButtonOk.setBounds(new java.awt.Rectangle(310, 140, 80, 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
+    private JButton getJButtonCancel() {\r
+        if (jButtonCancel == null) {\r
+            jButtonCancel = new JButton();\r
+            jButtonCancel.setBounds(new java.awt.Rectangle(395, 140, 80, 20));\r
+            jButtonCancel.setText("Cancel");\r
+            jButtonCancel.addActionListener(this);\r
+        }\r
+        return jButtonCancel;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldFilePath      \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldFilePath() {\r
+        if (jTextFieldFilePath == null) {\r
+            jTextFieldFilePath = new JTextField();\r
+            jTextFieldFilePath.setBounds(new java.awt.Rectangle(140, 35, 250, 20));\r
+        }\r
+        return jTextFieldFilePath;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonBrowse   \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonBrowse() {\r
+        if (jButtonBrowse == null) {\r
+            jButtonBrowse = new JButton();\r
+            jButtonBrowse.setBounds(new java.awt.Rectangle(395, 35, 85, 20));\r
+            jButtonBrowse.setText("Browse");\r
+            jButtonBrowse.addActionListener(this);\r
+        }\r
+        return jButtonBrowse;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldModuleName    \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldName() {\r
+        if (jTextFieldName == null) {\r
+            jTextFieldName = new JTextField();\r
+            jTextFieldName.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\r
+        }\r
+        return jTextFieldName;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldGuid  \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldGuid() {\r
+        if (jTextFieldGuid == null) {\r
+            jTextFieldGuid = new JTextField();\r
+            jTextFieldGuid.setBounds(new java.awt.Rectangle(140, 85, 250, 20));\r
+        }\r
+        return jTextFieldGuid;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jButtonGen      \r
+     *         \r
+     * @return javax.swing.JButton     \r
+     */\r
+    private JButton getJButtonGen() {\r
+        if (jButtonGen == null) {\r
+            jButtonGen = new JButton();\r
+            jButtonGen.setBounds(new java.awt.Rectangle(395, 85, 85, 20));\r
+            jButtonGen.setText("GEN");\r
+            jButtonGen.addActionListener(this);\r
+        }\r
+        return jButtonGen;\r
+    }\r
+\r
+    /**\r
+     * This method initializes jTextFieldVersion       \r
+     *         \r
+     * @return javax.swing.JTextField  \r
+     */\r
+    private JTextField getJTextFieldVersion() {\r
+        if (jTextFieldVersion == null) {\r
+            jTextFieldVersion = new JTextField();\r
+            jTextFieldVersion.setBounds(new java.awt.Rectangle(140, 110, 340, 20));\r
+        }\r
+        return jTextFieldVersion;\r
+    }\r
+\r
+    /**\r
+     * @param args\r
+     */\r
+    public static void main(String[] args) {\r
+        SelectModuleBelong smb = new SelectModuleBelong();\r
+        smb.setVisible(true);\r
+    }\r
+\r
+    /**\r
+     * This is the default constructor\r
+     */\r
+    public SelectModuleBelong() {\r
+        super();\r
+        init();\r
+    }\r
+\r
+    /**\r
+     * This is the default constructor\r
+     */\r
+    public SelectModuleBelong(IFrame parentFrame, boolean modal, int fileType) {\r
+        super(parentFrame, modal);\r
+        this.mode = fileType;\r
+        init();\r
+        initExistingPackage();\r
+        if (mode != DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            this.jStarLabel1.setVisible(false);\r
+            this.jLabelPackage.setVisible(false);\r
+            this.jComboBoxExistingPackage.setVisible(false);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * This method initializes this\r
+     * \r
+     * @return void\r
+     */\r
+    private void init() {\r
+        this.setSize(500, 200);\r
+        this.setContentPane(getJContentPane());\r
+        this.setTitle("New Module");\r
+        this.centerWindow();\r
+    }\r
+\r
+    /**\r
+     * This method initializes jContentPane\r
+     * \r
+     * @return javax.swing.JPanel\r
+     */\r
+    private JPanel getJContentPane() {\r
+        if (jContentPane == null) {\r
+            jLabelVersion = new JLabel();\r
+            jLabelVersion.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
+            jLabelVersion.setText("Version");\r
+            jLabelGuid = new JLabel();\r
+            jLabelGuid.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
+            jLabelGuid.setText("Guid");\r
+            jLabelName = new JLabel();\r
+            jLabelName.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
+            jLabelName.setText("Name");\r
+            jLabelFilePath = new JLabel();\r
+            jLabelFilePath.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
+            jLabelFilePath.setText("File Path");\r
+            jLabelPackage = new JLabel();\r
+            jLabelPackage.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
+            jLabelPackage.setText("Choose Package");\r
+            jContentPane = new JPanel();\r
+            jContentPane.setLayout(null);\r
+            jContentPane.setSize(new java.awt.Dimension(490, 175));\r
+            jContentPane.add(getJComboBoxExistingPackage(), null);\r
+            jContentPane.add(getJButtonOk(), null);\r
+            jContentPane.add(getJButtonCancel(), null);\r
+            jContentPane.add(jLabelPackage, null);\r
+            jContentPane.add(jLabelFilePath, null);\r
+            jContentPane.add(getJTextFieldFilePath(), null);\r
+            jContentPane.add(getJButtonBrowse(), null);\r
+            jContentPane.add(jLabelName, null);\r
+            jContentPane.add(getJTextFieldName(), null);\r
+            jContentPane.add(jLabelGuid, null);\r
+            jContentPane.add(getJTextFieldGuid(), null);\r
+            jContentPane.add(getJButtonGen(), null);\r
+            jContentPane.add(jLabelVersion, null);\r
+            jContentPane.add(getJTextFieldVersion(), 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
+            jStarLabel3 = new StarLabel();\r
+            jStarLabel3.setLocation(new java.awt.Point(0, 60));\r
+            jStarLabel4 = new StarLabel();\r
+            jStarLabel4.setLocation(new java.awt.Point(0, 85));\r
+            jStarLabel5 = new StarLabel();\r
+            jStarLabel5.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(jStarLabel4, null);\r
+            jContentPane.add(jStarLabel5, null);\r
+        }\r
+        return jContentPane;\r
+    }\r
+\r
+    /**\r
+     Query all existing packages and fill them into combox\r
+     \r
+     **/\r
+    private void initExistingPackage() {\r
+        packages = wt.getAllPackages();\r
+        for (int index = 0; index < packages.size(); index++) {\r
+            this.jComboBoxExistingPackage.addItem(packages.elementAt(index).getName());\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
+    public void actionPerformed(ActionEvent arg0) {\r
+        if (arg0.getSource() == jButtonCancel) {\r
+            this.setVisible(false);\r
+            this.returnType = DataType.RETURN_TYPE_CANCEL;\r
+        }\r
+\r
+        if (arg0.getSource() == jButtonOk) {\r
+            if (this.check()) {\r
+                this.save();\r
+            } else {\r
+                return;\r
+            }\r
+            this.setVisible(false);\r
+            this.returnType = DataType.RETURN_TYPE_OK;\r
+        }\r
+\r
+        if (arg0.getSource() == this.jButtonGen) {\r
+            this.jTextFieldGuid.setText(Tools.generateUuidString());\r
+        }\r
+\r
+        if (arg0.getSource() == this.jButtonBrowse) {\r
+            JFileChooser fc = new JFileChooser();\r
+            fc.setAcceptAllFileFilterUsed(false);\r
+\r
+            if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex())\r
+                                                        .getPath()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.MODULE_SURFACE_AREA_EXT));\r
+            }\r
+            if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.PACKAGE_SURFACE_AREA_EXT));\r
+            }\r
+            if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+                fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+                fc.addChoosableFileFilter(new IFileFilter(DataType.PLATFORM_SURFACE_AREA_EXT));\r
+            }\r
+            int result = fc.showSaveDialog(new JPanel());\r
+            if (result == JFileChooser.APPROVE_OPTION) {\r
+                this.jTextFieldFilePath.setText(Tools.addPathExt(fc.getSelectedFile().getPath(), mode));\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 check() {\r
+        //\r
+        // Check if all required fields are not empty\r
+        //\r
+        if (isEmpty(this.jTextFieldFilePath.getText())) {\r
+            Log.err("File Path couldn't be empty");\r
+            return false;\r
+        }\r
+        if (isEmpty(this.jTextFieldName.getText())) {\r
+            Log.err("Name couldn't be empty");\r
+            return false;\r
+        }\r
+        if (isEmpty(this.jTextFieldGuid.getText())) {\r
+            Log.err("Guid Value couldn't be empty");\r
+            return false;\r
+        }\r
+        if (isEmpty(this.jTextFieldVersion.getText())) {\r
+            Log.err("Version couldn't be empty");\r
+            return false;\r
+        }\r
+\r
+        //\r
+        // Check if all fields have correct data types \r
+        //\r
+        if (!DataValidation.isBaseName(this.jTextFieldName.getText())) {\r
+            Log.err("Incorrect data type for Base Name");\r
+            return false;\r
+        }\r
+        if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) {\r
+            Log.err("Incorrect data type for Guid");\r
+            return false;\r
+        }\r
+\r
+        if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            //\r
+            // Check if the module is already existed in current package\r
+            //\r
+            String packagePath = packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()).getPath();\r
+            String modulePath = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+            Vector<String> msaFile = wt.getAllModulesOfPackage(packagePath);\r
+            packagePath = packagePath.substring(0, packagePath.lastIndexOf(DataType.FILE_SEPARATOR));\r
+            String path = Tools.getRelativePath(modulePath, packagePath);\r
+\r
+            for (int index = 0; index < msaFile.size(); index++) {\r
+                if (msaFile.elementAt(index).equals(path)) {\r
+                    Log.err("This module is already existing in selected package");\r
+                    return false;\r
+                }\r
+            }\r
+        }\r
+\r
+        if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            //\r
+            // Check if the package is already existed in database\r
+            //\r
+            String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+            Vector<PackageIdentification> vPackageList = wt.getAllPackages();\r
+            if (vPackageList != null && vPackageList.size() > 0) {\r
+                for (int index = 0; index < vPackageList.size(); index++) {\r
+                    if (vPackageList.get(index).getPath().equals(path)) {\r
+                        Log.err("This package is already existing in database");\r
+                        return false;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            //\r
+            // Check if the platform is already existed in database\r
+            //\r
+            String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+            Vector<PlatformIdentification> vPlatfromList = wt.getAllPlatforms();\r
+            if (vPlatfromList != null && vPlatfromList.size() > 0) {\r
+                for (int index = 0; index < vPlatfromList.size(); index++) {\r
+                    if (vPlatfromList.get(index).getPath().equals(path)) {\r
+                        Log.err("This platform is already existing in database");\r
+                        return false;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     Save file\r
+     \r
+     **/\r
+    public void save() {\r
+        if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
+            this.saveModule();\r
+        }\r
+        if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
+            this.savePackage();\r
+        }\r
+        if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
+            this.savePlatform();\r
+        }\r
+    }\r
+\r
+    /**\r
+     Save all components of Msa Header\r
+     \r
+     **/\r
+    private void saveModule() {\r
+        ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;\r
+        String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+\r
+        //\r
+        // Save to memory\r
+        //\r
+        try {\r
+            MsaHeaderDocument.MsaHeader msaHeader = null;\r
+\r
+            msa = ModuleSurfaceAreaDocument.ModuleSurfaceArea.Factory.newInstance();\r
+            msaHeader = MsaHeaderDocument.MsaHeader.Factory.newInstance();\r
+\r
+            msaHeader.setModuleName(this.jTextFieldName.getText());\r
+            msaHeader.setGuidValue(this.jTextFieldGuid.getText());\r
+            msaHeader.setVersion(this.jTextFieldVersion.getText());\r
+\r
+            msa.setMsaHeader(msaHeader);\r
+        } catch (Exception e) {\r
+            Log.err("Save ModuleSurfaceArea Document", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to real file\r
+        //\r
+        try {\r
+            SaveFile.saveMsaFile(path, msa);\r
+\r
+        } catch (Exception e) {\r
+            Log.err("Save Module to file system", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to identification\r
+        //\r
+        mid = new ModuleIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
+                                       this.jTextFieldVersion.getText(), path);\r
+        mid.setPackageId(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()));\r
+    }\r
+\r
+    /**\r
+     Save all components of Spd Header\r
+     \r
+     **/\r
+    private void savePackage() {\r
+        PackageSurfaceArea spd = null;\r
+        String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+\r
+        //\r
+        // Save to memory\r
+        //\r
+        try {\r
+            SpdHeaderDocument.SpdHeader spdHeader = null;\r
+\r
+            spd = PackageSurfaceArea.Factory.newInstance();\r
+            spdHeader = SpdHeaderDocument.SpdHeader.Factory.newInstance();\r
+\r
+            spdHeader.setPackageName(this.jTextFieldName.getText());\r
+            spdHeader.setGuidValue(this.jTextFieldGuid.getText());\r
+            spdHeader.setVersion(this.jTextFieldVersion.getText());\r
+\r
+            spd.setSpdHeader(spdHeader);\r
+        } catch (Exception e) {\r
+            Log.err("Save PackageSurfaceArea Document", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to real file\r
+        //\r
+        try {\r
+            SaveFile.saveSpdFile(path, spd);\r
+\r
+        } catch (Exception e) {\r
+            Log.err("Save Package to file system", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to identification\r
+        //\r
+        pid = new PackageIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
+                                        this.jTextFieldVersion.getText(), path);\r
+    }\r
+\r
+    /**\r
+     Save all components of Fpd Header\r
+     \r
+     **/\r
+    private void savePlatform() {\r
+        PlatformSurfaceArea fpd = null;\r
+        String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
+\r
+        //\r
+        // Save to memory\r
+        //\r
+        try {\r
+            PlatformHeader fpdHeader = null;\r
+\r
+            fpd = PlatformSurfaceArea.Factory.newInstance();\r
+            fpdHeader = PlatformHeader.Factory.newInstance();\r
+\r
+            fpdHeader.setPlatformName(this.jTextFieldName.getText());\r
+            fpdHeader.setGuidValue(this.jTextFieldGuid.getText());\r
+            fpdHeader.setVersion(this.jTextFieldVersion.getText());\r
+\r
+            fpd.setPlatformHeader(fpdHeader);\r
+        } catch (Exception e) {\r
+            Log.err("Save FrameworkPlatformDescription Document", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to real file\r
+        //\r
+        try {\r
+            SaveFile.saveFpdFile(path, fpd);\r
+\r
+        } catch (Exception e) {\r
+            Log.err("Save Platform to file system", e.getMessage());\r
+            return;\r
+        }\r
+\r
+        //\r
+        // Save to identification\r
+        //\r
+        fid = new PlatformIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
+                                         this.jTextFieldVersion.getText(), path);\r
+    }\r
+\r
+    public ModuleIdentification getMid() {\r
+        return mid;\r
+    }\r
+\r
+    public void setMid(ModuleIdentification mid) {\r
+        this.mid = mid;\r
+    }\r
+\r
+    public PlatformIdentification getFid() {\r
+        return fid;\r
+    }\r
+\r
+    public void setFid(PlatformIdentification fid) {\r
+        this.fid = fid;\r
+    }\r
+\r
+    public PackageIdentification getPid() {\r
+        return pid;\r
+    }\r
+\r
+    public void setPid(PackageIdentification pid) {\r
+        this.pid = pid;\r
+    }\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataType.java
new file mode 100644 (file)
index 0000000..c096b72
--- /dev/null
@@ -0,0 +1,166 @@
+/** @file\r
\r
+ The file is used to define all used final variables\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.common;\r
+\r
+/**\r
+ The class is used to define all used final variables\r
+\r
+**/\r
+public class DataType {\r
+\r
+    /**\r
+     \r
+     @param args\r
+     \r
+     **/\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+    \r
+    //\r
+    // Define all return types\r
+    //\r
+    public static final int RETURN_TYPE_OK = 1;\r
+    \r
+    public static final int RETURN_TYPE_CANCEL = 2;\r
+    \r
+    public static final int RETURN_TYPE_NEXT = 3;\r
+    \r
+    public static final int RETURN_TYPE_BACK = 4;\r
+    \r
+    public static final int RETURN_TYPE_MODULE_SURFACE_AREA = 11;\r
+    \r
+    public static final int RETURN_TYPE_PACKAGE_SURFACE_AREA = 12;\r
+    \r
+    public static final int RETURN_TYPE_PLATFORM_SURFACE_AREA = 13;\r
+    \r
+    public static final int RETURN_TYPE_BUILD_XML = 14;\r
+    \r
+    public static final int RETURN_TYPE_WORKSPACE = 15;\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
+    public static final String EMPTY_SELECT_ITEM = "----";\r
+    \r
+    public static final String DOS_FILE_SEPARATOR = "\\";\r
+    \r
+    public static final String UNIX_FILE_SEPARATOR = "/";\r
+    \r
+    //\r
+    // Define xml files ext\r
+    //\r
+    public static final String COPY_OF = "Copy of ";\r
+    \r
+    public static final String FILE_EXT_SEPARATOR = ".";\r
+    \r
+    public static final String WORKSPACE = "Workspace";\r
+    \r
+    public static final String MODULE_SURFACE_AREA = "Module Surface Area Description";\r
+    \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
+    public static final String PACKAGE_SURFACE_AREA = "Package Surface Area Description";\r
+    \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
+    public static final String PLATFORM_SURFACE_AREA = "Platform Surface Area Description";\r
+    \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
+    public static final String ANT_BUILD_FILE = "ANT Build File";\r
+    \r
+    public static final String ANT_BUILD_FILE_EXT = "xml";\r
+    \r
+    public static final String ANT_BUILD_FILE_EXT_DESCRIPTION = ANT_BUILD_FILE + " (*." + ANT_BUILD_FILE_EXT + ")";\r
+    \r
+    //\r
+    // Define file separator for current OS\r
+    //\r
+    public static String FILE_SEPARATOR = System.getProperty("file.separator");\r
+            \r
+    //\r
+    // Defien all used frame, container component's sizes\r
+    //\r
+    public static final int MAIN_FRAME_PREFERRED_SIZE_WIDTH = 800;\r
+    public static final int MAIN_FRAME_PREFERRED_SIZE_HEIGHT = 600;\r
+    public static final int MAIN_FRAME_MAX_SIZE_WIDTH = 1920;\r
+    public static final int MAIN_FRAME_MAX_SIZE_HEIGHT = 1200;\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_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
+    public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_WIDTH = 273;\r
+    public static final int MAIN_FRAME_TREE_PANEL_PREFERRED_SIZE_HEIGHT = 545;\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_HEIGHT = 545;\r
+    public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_X = 260;\r
+    public static final int MAIN_FRAME_EDITOR_PANEL_LOCATION_Y = 1;\r
+    \r
+    public static final int SPACE_TO_RIGHT_FOR_GENERATE_BUTTON = 10;\r
+    public static final int SPACE_TO_RIGHT_FOR_OK_BUTTON = 10;\r
+    public static final int SPACE_TO_RIGHT_FOR_ADD_BUTTON = 180;\r
+    public static final int SPACE_TO_RIGHT_FOR_REMOVE_BUTTON = 95;\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
+    public static final int LEFT_WIDTH = 160;\r
+    public static final int LEFT_HEIGHT = 20;\r
+    \r
+    public static final int RIGHT_WIDTH = 320;\r
+    public static final int RIGHT_HEIGHT = 20;\r
+    \r
+    public static final int RIGHT_MULTIPLE_HEIGHT = 4 * RIGHT_HEIGHT;\r
+    \r
+    public static final int BUTTON_GEN_WIDTH = 65;\r
+    public static final int BUTTON_GEN_HEIGHT = 20;\r
+    \r
+    public static final int BUTTON_BROWSE_WIDTH = 65;\r
+    public static final int BUTTON_BROWSE_HEIGHT = 20;\r
+    \r
+    public static final int BUTTON_ADD_WIDTH = 80;\r
+    public static final int BUTTON_ADD_HEIGHT = 20;\r
+    \r
+    public static final int BUTTON_UPDATE_WIDTH = 80;\r
+    public static final int BUTTON_UPDATE_HEIGHT = 20;\r
+    \r
+    public static final int BUTTON_REMOVE_WIDTH = 80;\r
+    public static final int BUTTON_REMOVE_HEIGHT = 20;\r
+    \r
+    public static final int SCROLLBAR_WIDTH = 18;\r
+    public static final int SCROLLBAR_HEIGHT = 18;\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
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataValidation.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/DataValidation.java
new file mode 100644 (file)
index 0000000..db568a6
--- /dev/null
@@ -0,0 +1,712 @@
+/** @file\r
\r
+ The file is used to provides all kinds of Data Validation interface \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;\r
+\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+/**\r
+ The class is used to provides all kinds of data validation interface\r
+\r
+ <p>All provided interfaces are in static mode</p>\r
\r
+ **/\r
+public class DataValidation {\r
+\r
+    /**\r
+     Reserved for test\r
+     \r
+     @param args\r
+     \r
+     **/\r
+    public static void main(String[] args) {\r
+\r
+    }\r
+\r
+    //\r
+    // The below is used to check common data types\r
+    //\r
+\r
+    /**\r
+     Check if the imput data is int\r
+     \r
+     @param strInt The input string which needs validation\r
+     \r
+     @retval true - The input is Int\r
+     @retval false - The input is not Int\r
+     \r
+     **/\r
+    public static boolean isInt(String strInt) {\r
+        return isMatch("^-?[0-9]\\d*$", strInt);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is int and it is in the valid scope\r
+     The scope is provided by String\r
+     \r
+     @param strNumber The input string which needs validation\r
+     @param BeginNumber The left boundary of the scope\r
+     @param EndNumber The right boundary of the scope\r
+     \r
+     @retval true - The input is Int and in the scope;\r
+     @retval false - The input is not Int or not in the scope\r
+     \r
+     **/\r
+    public static boolean isInt(String strNumber, int BeginNumber, int EndNumber) {\r
+        //\r
+        //Check if the input data is int first\r
+        //\r
+        if (!isInt(strNumber)) {\r
+            return false;\r
+        }\r
+        //\r
+        //And then check if the data is between the scope\r
+        //\r
+        Integer intTemp = new Integer(strNumber);\r
+        if ((intTemp.intValue() < BeginNumber) || (intTemp.intValue() > EndNumber)) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     Check if the input data is int and it is in the valid scope\r
+     The scope is provided by String\r
+     \r
+     @param strNumber The input string which needs validation\r
+     @param strBeginNumber The left boundary of the scope\r
+     @param strEndNumber The right boundary of the scope\r
+     \r
+     @retval true - The input is Int and in the scope;\r
+     @retval false - The input is not Int or not in the scope\r
+     \r
+     **/\r
+    public static boolean isInt(String strNumber, String strBeginNumber, String strEndNumber) {\r
+        //\r
+        //Check if all input data are int\r
+        //\r
+        if (!isInt(strNumber)) {\r
+            return false;\r
+        }\r
+        if (!isInt(strBeginNumber)) {\r
+            return false;\r
+        }\r
+        if (!isInt(strEndNumber)) {\r
+            return false;\r
+        }\r
+        //\r
+        //And then check if the data is between the scope\r
+        //\r
+        Integer intI = new Integer(strNumber);\r
+        Integer intJ = new Integer(strBeginNumber);\r
+        Integer intK = new Integer(strEndNumber);\r
+        if ((intI.intValue() < intJ.intValue()) || (intI.intValue() > intK.intValue())) {\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    /**\r
+     Use regex to check if the input data is in valid format\r
+     \r
+     @param strPattern The input regex\r
+     @param strMatcher The input data need be checked\r
+     \r
+     @retval true - The data matches the regex\r
+     @retval false - The data doesn't match the regex\r
+     \r
+     **/\r
+    public static boolean isMatch(String strPattern, String strMatcher) {\r
+        Pattern pattern = Pattern.compile(strPattern);\r
+        Matcher matcher = pattern.matcher(strMatcher);\r
+\r
+        return matcher.find();\r
+    }\r
+\r
+    //\r
+    // The below is used to check common customized data types\r
+    //\r
+\r
+    /**\r
+     Check if the input data is UiNameType\r
+     \r
+     @param arg0 The input string need be checked\r
+     \r
+     @retval true - The input is UiNameType\r
+     @retval false - The input is not UiNameType\r
+     \r
+     **/\r
+    public static boolean isUiNameType(String arg0) {\r
+        if (arg0.length() < 1) {\r
+            return false;\r
+        }\r
+        return isMatch("[^ ].*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is GuidType2\r
+     \r
+     @param arg0 The input string need be checked\r
+     \r
+     @retval true - The input is GuidType2\r
+     @retval false - The input is not GuidType2\r
+     \r
+     **/\r
+    public static boolean isGuidType2(String arg0) {\r
+        return isMatch("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Guid \r
+     \r
+     @param strGuid The input string need be checked\r
+     \r
+     @retval true - The input is Guid\r
+     @retval false - The input is not Guid\r
+     \r
+     **/\r
+    public static boolean isGuid(String arg0) {\r
+        return isGuidType2(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Version \r
+     \r
+     @param arg0 The input string need be checked\r
+     \r
+     @retval true - The input is Version\r
+     @retval false - The input is not Version\r
+     \r
+     **/\r
+    public static boolean isVersionDataType(String arg0) {\r
+        return isMatch("(\\d)+(.)?(\\d)+", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Sentence\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is Sentence\r
+     @retval false - The input is not Sentence\r
+     \r
+     **/\r
+    public static boolean isSentence(String arg0) {\r
+        return isMatch("(\\w+\\W*)+( )+(\\W*\\w*\\W*\\s*)*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is FileNameConventio\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is FileNameConventio\r
+     @retval false - The input is not FileNameConventio\r
+     \r
+     **/\r
+    public static boolean isFileNameConvention(String arg0) {\r
+        return isMatch("[a-zA-Z][a-zA-Z0-9]*((_)*(-)*(.)*[a-zA-Z0-9]*)*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is KeywordType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is KeywordType\r
+     @retval false - The input is not KeywordType\r
+     \r
+     **/\r
+    public static boolean isKeywordType(String arg0) {\r
+        return isMatch("[a-zA-Z]+(_*[a-zA-Z0-9]*)*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is FeatureFlagExpressionType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is FeatureFlagExpressionType\r
+     @retval false - The input is not FeatureFlagExpressionType\r
+     \r
+     **/\r
+    public static boolean isFeatureFlagExpressionType(String arg0) {\r
+        return (arg0.length() >= 1);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is FeatureFlag\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is FeatureFlag\r
+     @retval false - The input is not FeatureFlag\r
+     \r
+     **/\r
+    public static boolean isFeatureFlag(String arg0) {\r
+        return isFeatureFlagExpressionType(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is PathAndFilename\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is PathAndFilename\r
+     @retval false - The input is not PathAndFilename\r
+     \r
+     **/\r
+    public static boolean isPathAndFilename(String arg0) {\r
+        return !arg0.equals("");\r
+    }\r
+\r
+    /**\r
+     Check if the input data is ToolsNameConvention\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is ToolsNameConvention\r
+     @retval false - The input is not ToolsNameConvention\r
+     \r
+     **/\r
+    public static boolean isToolsNameConvention(String arg0) {\r
+        return isMatch("[a-zA-Z][a-zA-Z0-9]*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is C_NameType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is C_NameType\r
+     @retval false - The input is not C_NameType\r
+     \r
+     **/\r
+    public static boolean isC_NameType(String arg0) {\r
+        return isMatch("(_)*[a-zA-Z]+((_)*[a-zA-Z0-9]*)*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is HexWordArrayType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is HexWordArrayType\r
+     @retval false - The input is not HexWordArrayType\r
+     \r
+     **/\r
+    public static boolean isHexWordArrayType(String arg0) {\r
+        return isMatch("((\\s)*0x([a-fA-F0-9]){4}(,)?(\\s)*)+", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Hex64BitDataType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is Hex64BitDataType\r
+     @retval false - The input is not Hex64BitDataType\r
+     \r
+     **/\r
+    public static boolean isHex64BitDataType(String arg0) {\r
+        return isMatch("(0x)?[a-fA-F0-9]{1,16}", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is UnicodeString\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is UnicodeString\r
+     @retval false - The input is not UnicodeString\r
+     \r
+     **/\r
+    public static boolean isUnicodeString(String arg0) {\r
+        return arg0.length() >= 3 && isMatch("(\\s)*L(\\:)?\"[^\"]*\"(\\s)*", arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is HexByteArrayType\r
+     \r
+     @param strSentence The input string need be checked\r
+     \r
+     @retval true - The input is HexByteArrayType\r
+     @retval false - The input is not HexByteArrayType\r
+     \r
+     **/\r
+    public static boolean isHexByteArrayType(String arg0) {\r
+        return arg0.length() >= 4 && isMatch("((\\s)*0x([a-fA-F0-9]){2}(,)?(\\s)*)+", arg0);\r
+    }\r
+    \r
+\r
+    /**\r
+     Check if the input data is DateType\r
+     \r
+     @param strDateType The input string need be checked\r
+     \r
+     @retval true - The input is DateType\r
+     @retval false - The input is not DateType\r
+     \r
+     **/\r
+    public static boolean isDateType(String strDateType) {\r
+        return isMatch("[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]", strDateType);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is DosPath\r
+     \r
+     @param strDosPath The input string need be checked\r
+     \r
+     @retval true - The input is DosPath\r
+     @retval false - The input is not DosPath\r
+     \r
+     **/\r
+    public static boolean isDosPath(String strDosPath) {\r
+        return isMatch("([a-zA-Z]:\\\\)?(((\\\\?_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\\\)?)*", strDosPath);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is UnixPath\r
+     \r
+     @param strUnixPath The input string need be checked\r
+     \r
+     @retval true - The input is UnixPath\r
+     @retval false - The input is not UnixPath\r
+     \r
+     **/\r
+    public static boolean isUnixPath(String strUnixPath) {\r
+        return isMatch("(\\/)?(((_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\/)?)*", strUnixPath);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is DirectoryNamingConvention\r
+     \r
+     @param strDirectoryNamingConvention The input string need be checked\r
+     \r
+     @retval true - The input is DirectoryNamingConvention\r
+     @retval false - The input is not DirectoryNamingConvention\r
+     \r
+     **/\r
+    public static boolean isDirectoryNamingConvention(String strDirectoryNamingConvention) {\r
+        return (isDosPath(strDirectoryNamingConvention) || isUnixPath(strDirectoryNamingConvention));\r
+    }\r
+\r
+    /**\r
+     Check if the input data is HexDoubleWordDataType\r
+     \r
+     @param strHexDoubleWordDataType  The input string need be checked\r
+     \r
+     @retval true - The input is HexDoubleWordDataType\r
+     @retval false - The input is not HexDoubleWordDataType\r
+     \r
+     **/\r
+    public static boolean isHexDoubleWordDataType(String strHexDoubleWordDataType) {\r
+        return isMatch("0x[a-fA-F0-9]{1,8}", strHexDoubleWordDataType);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is V1\r
+     \r
+     @param strV1 The input string need be checked\r
+     \r
+     @retval true - The input is V1\r
+     @retval false - The input is not V1\r
+     \r
+     **/\r
+    public static boolean isV1(String strV1) {\r
+        return isMatch("((%[A-Z](_*[A-Z0-9]*)*%)+((((\\\\)?_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\\\)?)*)", strV1);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is V2\r
+     \r
+     @param strV2 The input string need be checked\r
+     \r
+     @retval true - The input is V2\r
+     @retval false - The input is not V2\r
+     \r
+     **/\r
+    public static boolean isV2(String strV2) {\r
+        return isMatch(\r
+                       "(($[A-Z](_*[A-Z0-9]*)*)+||($\\([A-Z](_*[A-Z0-9]*)*\\))+||($\\{[A-Z](_*[A-Z0-9]*)*\\})+)+(\\/)?(((((_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\/)?)*)*)",\r
+                       strV2);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is VariableConvention\r
+     \r
+     @param strVariableConvention The input string need be checked\r
+     \r
+     @retval true - The input is VariableConvention\r
+     @retval false - The input is not VariableConvention\r
+     \r
+     **/\r
+    public static boolean isVariableConvention(String strVariableConvention) {\r
+        return (isV1(strVariableConvention) || isV2(strVariableConvention));\r
+    }\r
+\r
+    /**\r
+     Check if the input data is UCName\r
+     \r
+     @param strUCName The input string need be checked\r
+     \r
+     @retval true - The input is UCName\r
+     @retval false - The input is not UCName\r
+     \r
+     **/\r
+    public static boolean isUCName(String strUCName) {\r
+        return isMatch("[A-Z]+(_*[A-Z0-9]*( )*)*", strUCName);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is HexByteDataType\r
+     \r
+     @param strHex64BitDataType The input string need be checked \r
+     \r
+     @retval true - The input is HexByteDataType\r
+     @retval false - The input is not HexByteDataType\r
+     \r
+     **/\r
+    public static boolean isHexByteDataType(String strHex64BitDataType) {\r
+        return isMatch("(0x)?[a-fA-F0-9]{1,2}", strHex64BitDataType);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is HexWordDataType\r
+     \r
+     @param strHexWordDataType The input string need be checked\r
+     \r
+     @retval true - The input is HexWordDataType\r
+     @retval false - The input is not HexWordDataType\r
+     \r
+     **/\r
+    public static boolean isHexWordDataType(String strHexWordDataType) {\r
+        return isMatch("0x[a-fA-F0-9]{1,4}", strHexWordDataType);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is OverrideID\r
+     \r
+     @param strOverrideID The input string need be checked\r
+     \r
+     @retval true - The input is OverrideID\r
+     @retval false - The input is not OverrideID\r
+     \r
+     **/\r
+    public static boolean isOverrideID(String strOverrideID) {\r
+        return isInt(strOverrideID);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Supported Architectures\r
+     \r
+     @param strSupportedArchitectures\r
+     @retval true - The input is Supported Architectures\r
+     @retval false - The input isn't Supported Architectures\r
+     \r
+     */\r
+    public static boolean isSupportedArchitectures(String strSupportedArchitectures) {\r
+        return isMatch("(ALL){1}|(((IA32)|((X64)|(IPF)|(EBC)){1}((,((IA32)|(X64)|(IPF)|(EBC)){1} ){0,2}))){1}",\r
+                       strSupportedArchitectures);\r
+    }\r
+\r
+    //\r
+    //The below is used to check msaheader data type\r
+    //\r
+\r
+    /**\r
+     Check if the input data is BaseName\r
+     \r
+     @param strBaseName The input string need be checked\r
+     \r
+     @retval true - The input is BaseName\r
+     @retval false - The input is not BaseName\r
+     \r
+     **/\r
+    public static boolean isBaseName(String arg0) {\r
+        return isUiNameType(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Version\r
+     \r
+     @param arg0 The input string need be checked\r
+\r
+     @retval true - The input is Version\r
+     @retval false - The input is not Version\r
+     \r
+     **/\r
+    public static boolean isVersion(String arg0) {\r
+        return isVersionDataType(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Abstract\r
+     \r
+     @param strAbstract The input string need be checked\r
+     \r
+     @retval true - The input is Abstract\r
+     @retval false - The input is not Abstract\r
+     \r
+     **/\r
+    public static boolean isAbstract(String arg0) {\r
+        return isSentence(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Copyright\r
+     \r
+     @param strCopyright The input string need be checked\r
+     \r
+     @retval true - The input is Copyright\r
+     @retval false - The input is not Copyright\r
+     \r
+     **/\r
+    public static boolean isCopyright(String arg0) {\r
+        return !arg0.equals("");\r
+    }\r
+\r
+    /**\r
+     Check if the input data is Specification\r
+     \r
+     @param strCopyright The input string need be checked\r
+     \r
+     @retval true - The input is Specification\r
+     @retval false - The input is not Specification\r
+     \r
+     **/\r
+    public static boolean isSpecification(String arg0) {\r
+        return isSentence(arg0);\r
+    }\r
+\r
+    //\r
+    // The below is used to check ModuleDefinitions data types\r
+    //\r
+    /**\r
+     Check if the input data is OutputFileBasename\r
+     \r
+     @param strCopyright The input string need be checked\r
+     \r
+     @retval true - The input is OutputFileBasename\r
+     @retval false - The input is not OutputFileBasename\r
+     \r
+     **/\r
+    public static boolean isOutputFileBasename(String arg0) {\r
+        return isFileNameConvention(arg0);\r
+    }\r
+\r
+    //\r
+    // The below is used to check LibraryClass data types\r
+    //\r
+    /**\r
+     Check if the input data is LibraryClass\r
+     \r
+     @param strCopyright The input string need be checked\r
+     \r
+     @retval true - The input is LibraryClass\r
+     @retval false - The input is not LibraryClass\r
+     \r
+     **/\r
+    public static boolean isLibraryClass(String arg0) {\r
+        return isKeywordType(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is RecommendedInstanceVersion\r
+     \r
+     @param strCopyright The input string need be checked\r
+     \r
+     @retval true - The input is RecommendedInstanceVersion\r
+     @retval false - The input is not RecommendedInstanceVersion\r
+     \r
+     **/\r
+    public static boolean isRecommendedInstanceVersion(String arg0) {\r
+        return isVersionDataType(arg0);\r
+    }\r
+\r
+    //\r
+    // The below is used to check sourcefiles data types\r
+    //\r
+\r
+    /**\r
+     Check if the input data is Filename\r
+     \r
+     @param strPath The input string need be checked\r
+     \r
+     @retval true - The input is Filename\r
+     @retval false - The input is not Filename\r
+     \r
+     **/\r
+    public static boolean isFilename(String arg0) {\r
+        return isPathAndFilename(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is TagName\r
+     \r
+     @param strPath The input string need be checked\r
+     \r
+     @retval true - The input is TagName\r
+     @retval false - The input is not TagName\r
+     \r
+     **/\r
+    public static boolean isTagName(String arg0) {\r
+        return isToolsNameConvention(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is ToolCode\r
+     \r
+     @param strPath The input string need be checked\r
+     \r
+     @retval true - The input is ToolCode\r
+     @retval false - The input is not ToolCode\r
+     \r
+     **/\r
+    public static boolean isToolCode(String arg0) {\r
+        return isToolsNameConvention(arg0);\r
+    }\r
+\r
+    /**\r
+     Check if the input data is ToolChainFamily\r
+     \r
+     @param strPath The input string need be checked\r
+     \r
+     @retval true - The input is ToolChainFamily\r
+     @retval false - The input is not ToolChainFamily\r
+     \r
+     **/\r
+    public static boolean isToolChainFamily(String arg0) {\r
+        return isToolsNameConvention(arg0);\r
+    }\r
+\r
+    //\r
+    // The below is used to check pcdcoded data types\r
+    //\r
+    /**\r
+    Check if the input data is DefaultValueType\r
+    \r
+    @param strPath The input string need be checked\r
+    \r
+    @retval true - The input is DefaultValueType\r
+    @retval false - The input is not DefaultValueType\r
+    \r
+    **/\r
+   public static boolean isDefaultValueType(String arg0) {\r
+       return isHex64BitDataType(arg0) || isUnicodeString(arg0) || isHexByteArrayType(arg0);\r
+   }\r
+\r
+}\r
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/EnumerationData.java
new file mode 100644 (file)
index 0000000..2fc8b02
--- /dev/null
@@ -0,0 +1,1006 @@
+/** @file\r
\r
+ The file is used to init all JComboBox items\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.common;\r
+\r
+import java.util.Vector;\r
+\r
+public class EnumerationData {\r
+    //\r
+    // Static data\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_MODULE_UNLOAD_IMAGE = "ModuleUnloadImage";\r
+    \r
+    public final static String EXTERNS_CONSTRUCTOR = "Constructor";\r
+    public final static String EXTERNS_DESTRUCTOR = "Destructor";\r
+    \r
+    public final static String EXTERNS_DRIVER_BINDING = "DriverBinding";\r
+    public final static String EXTERNS_COMPONENT_NAME = "ComponentName";\r
+    public final static String EXTERNS_DRIVER_CONFIG = "DriverConfig";\r
+    public final static String EXTERNS_DRIVER_DIAG = "DriverDiag";\r
+    \r
+    public final static String EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK = "SetVirtualAddressMapCallBack";\r
+    public final static String EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK = "ExitBootServicesCallBack";\r
+    \r
+    //\r
+    // Common data\r
+    //\r
+    public Vector<String> vSupportedArchitectures = new Vector<String>();\r
+    \r
+    public Vector<String> vEnabled = new Vector<String>();\r
+    \r
+    public Vector<String> vBoolean = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Msa Header\r
+    //\r
+    public Vector<String> vModuleType = new Vector<String>();\r
+    \r
+    public Vector<String> vCompontentType = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Library Class Definitions\r
+    //\r
+    public Vector<String> vLibraryUsage = new Vector<String>();\r
+    \r
+    public Vector<String> vFrameworkModuleTypes = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDef = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefBase = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefPei = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefPeim = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefDxeCore = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefDxeDriver = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefDxeSmmDriver = new Vector<String>();\r
+    \r
+    public Vector<String> vLibClassDefUefiDriver = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Source Files\r
+    //\r
+    public Vector<String> vSourceFilesToolChainFamily = new Vector<String>();\r
+    \r
+    public Vector<String> vSourceFilesFileType = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Package Dependencies\r
+    //\r
+    public Vector<String> vPackageUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Protocols\r
+    //\r
+    public Vector<String> vProtocolUsage = new Vector<String>();\r
+    \r
+    public Vector<String> vProtocolNotifyUsage = new Vector<String>();\r
+    \r
+    public Vector<String> vProtocolType = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Events\r
+    //\r
+    public Vector<String> vEventType = new Vector<String>();\r
+    \r
+    public Vector<String> vEventUsage = new Vector<String>();\r
+    \r
+    public Vector<String> vEventGroup = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Hobs\r
+    //\r
+    public Vector<String> vHobType = new Vector<String>();\r
+    \r
+    public Vector<String> vHobUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Ppis\r
+    //\r
+    public Vector<String> vPpiType = new Vector<String>();\r
+    \r
+    public Vector<String> vPpiUsage = new Vector<String>();\r
+    \r
+    public Vector<String> vPpiNotifyUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Variable\r
+    //\r
+    public Vector<String> vVariableUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Boot Mode\r
+    //\r
+    public Vector<String> vBootModeNames = new Vector<String>();\r
+    \r
+    public Vector<String> vBootModeUsage = new Vector<String>();\r
+   \r
+    //\r
+    // Used by System Tables\r
+    //\r
+    public Vector<String> vSystemTableUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Data Hubs\r
+    //\r
+    public Vector<String> vDataHubUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Hii Packages\r
+    //\r
+    public Vector<String> vHiiPackageUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Guid\r
+    //\r
+    public Vector<String> vGuidUsage = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Externs\r
+    //\r
+    public Vector<String> vExternTypes = new Vector<String>();\r
+    \r
+    public Vector<String> vPcdDriverTypes = new Vector<String>();\r
+    \r
+    //\r
+    // Used by Pcd\r
+    //\r
+    public Vector<String> vPcdItemTypes = new Vector<String>();\r
+\r
+    public EnumerationData() {\r
+        init();\r
+    }\r
+    \r
+    private void init() {\r
+        //\r
+        // Init common data first\r
+        //\r
+        initSupportedArchitectures();\r
+        initEnabled();\r
+        initBoolean();\r
+        \r
+        //\r
+        // Used by Msa header\r
+        //\r
+        initModuleType();\r
+        \r
+        //\r
+        // Used by Library Class Definitions\r
+        //\r
+        initLibraryUsage();\r
+        initFrameworkModuleTypes();\r
+        initLibClassDefBase();\r
+        initLibClassDefPei();\r
+        initLibClassDefPeim();\r
+        initLibClassDefDxeCore();\r
+        initLibClassDefDxeDriver();\r
+        initLibClassDefDxeSmmDriver();\r
+        initLibClassDefUefiDriver();\r
+        initLibClassDef();\r
+\r
+        //\r
+        // Used by Library Class Definitions\r
+        //\r
+        initSourceFilesToolChainFamily();\r
+        initSourceFilesFileType();\r
+        \r
+        //\r
+        // Used by Package Dependencies\r
+        //\r
+        initPackageUsage();\r
+        \r
+        //\r
+        // Used by Protocols\r
+        //\r
+        initProtocolType();\r
+        initProtocolUsage();\r
+        initProtocolNotifyUsage();\r
+        \r
+        //\r
+        // Used by Events\r
+        //\r
+        initEventType();\r
+        initEventUsage();\r
+        initEventGroup();\r
+        \r
+        //\r
+        // Used by Hobs\r
+        //\r
+        initHobType();\r
+        initHobUsage();\r
+        \r
+        //\r
+        // Used by Ppis\r
+        //\r
+        initPpiType();\r
+        initPpiUsage();\r
+        initPpiNotifyUsage();\r
+        \r
+        //\r
+        // Used by Variable\r
+        //\r
+        initVariableUsage();\r
+        \r
+        //\r
+        // Used by Boot Mode\r
+        //\r
+        initBootModeNames();\r
+        initBootModeUsage();\r
+        \r
+        //\r
+        // Used by System Tables\r
+        //\r
+        initSystemTableUsage();\r
+        \r
+        //\r
+        // Used by Data Hubs\r
+        //\r
+        initDataHubUsage();\r
+        \r
+        //\r
+        // Used by Hii Packages\r
+        //\r
+        initHiiPackages();\r
+        \r
+        //\r
+        // Used by Guid\r
+        //\r
+        initGuidUsage();\r
+        \r
+        //\r
+        // Used by Externs\r
+        //\r
+        initExternTypes();\r
+        initPcdDriverTypes();\r
+        \r
+        //\r
+        // Used by Pcd\r
+        //\r
+        initPcdItemTypes();\r
+        \r
+    }\r
+    \r
+    private void initEnabled() {\r
+        vEnabled.removeAllElements();\r
+        vEnabled.addElement("Disabled");\r
+        vEnabled.addElement("Enabled");\r
+    }\r
+    \r
+    private void initBoolean() {\r
+        vBoolean.removeAllElements();\r
+        vBoolean.addElement("False");\r
+        vBoolean.addElement("True");\r
+    }\r
+    \r
+    private void initModuleType() {\r
+        vModuleType.removeAllElements();\r
+        vModuleType.addElement("BASE");\r
+        vModuleType.addElement("SEC");\r
+        vModuleType.addElement("PEI_CORE");\r
+        vModuleType.addElement("PEIM");\r
+        vModuleType.addElement("DXE_CORE");\r
+        vModuleType.addElement("DXE_DRIVER");\r
+        vModuleType.addElement("DXE_RUNTIME_DRIVER");\r
+        vModuleType.addElement("DXE_SAL_DRIVER");\r
+        vModuleType.addElement("DXE_SMM_DRIVER");\r
+        vModuleType.addElement("TOOLS");\r
+        vModuleType.addElement("UEFI_DRIVER");\r
+        vModuleType.addElement("UEFI_APPLICATION");\r
+        vModuleType.addElement("USER_DEFINED");\r
+    }\r
+    \r
+//    private void initComponentType() {\r
+//        vCompontentType.removeAllElements();\r
+//        vCompontentType.addElement("APRIORI");\r
+//        vCompontentType.addElement("LIBRARY");\r
+//        vCompontentType.addElement("FV_IMAGE_FILE");\r
+//        vCompontentType.addElement("BS_DRIVER");\r
+//        vCompontentType.addElement("RT_DRIVER");\r
+//        vCompontentType.addElement("SAL_RT_DRIVER");\r
+//        vCompontentType.addElement("PE32_PEIM");\r
+//        vCompontentType.addElement("PIC_PEIM");\r
+//        vCompontentType.addElement("COMBINED_PEIM_DRIVER");\r
+//        vCompontentType.addElement("PEI_CORE");\r
+//        vCompontentType.addElement("DXE_CORE");\r
+//        vCompontentType.addElement("APPLICATION");\r
+//        vCompontentType.addElement("BS_DRIVER_EFI");\r
+//        vCompontentType.addElement("SHELLAPP");\r
+//    }\r
+    \r
+    private void initSupportedArchitectures() {\r
+        vSupportedArchitectures.removeAllElements();\r
+        vSupportedArchitectures.addElement("EBC");\r
+        vSupportedArchitectures.addElement("IA32");\r
+        vSupportedArchitectures.addElement("X64");\r
+        vSupportedArchitectures.addElement("IPF");\r
+        vSupportedArchitectures.addElement("ARM");\r
+        vSupportedArchitectures.addElement("PPC");\r
+    }\r
+    \r
+    private void initLibraryUsage() {\r
+        vLibraryUsage.removeAllElements();\r
+        vLibraryUsage.addElement("ALWAYS_CONSUMED");\r
+        vLibraryUsage.addElement("SOMETIMES_CONSUMED");\r
+        vLibraryUsage.addElement("ALWAYS_PRODUCED");\r
+        vLibraryUsage.addElement("SOMETIMES_PRODUCED");\r
+        vLibraryUsage.addElement("DEFAULT");\r
+        vLibraryUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initFrameworkModuleTypes() {\r
+        vFrameworkModuleTypes.removeAllElements();\r
+        vFrameworkModuleTypes.addElement("BASE");\r
+        vFrameworkModuleTypes.addElement("SEC");\r
+        vFrameworkModuleTypes.addElement("PEI_CORE");\r
+        vFrameworkModuleTypes.addElement("PEIM");\r
+        vFrameworkModuleTypes.addElement("DXE_CORE");\r
+        vFrameworkModuleTypes.addElement("DXE_DRIVER");\r
+        vFrameworkModuleTypes.addElement("DXE_RUNTIME_DRIVER");\r
+        vFrameworkModuleTypes.addElement("DXE_SAL_DRIVER");\r
+        vFrameworkModuleTypes.addElement("DXE_SMM_DRIVER");\r
+        vFrameworkModuleTypes.addElement("TOOLS");\r
+        vFrameworkModuleTypes.addElement("UEFI_DRIVER");\r
+        vFrameworkModuleTypes.addElement("UEFI_APPLICATION");\r
+        vFrameworkModuleTypes.addElement("USER_DEFINED");\r
+    }\r
+\r
+    private void initLibClassDef() {\r
+        vLibClassDef.removeAllElements();\r
+        for (int index = 0; index < vLibClassDefBase.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefBase.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefPei.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefPei.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefPeim.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefPeim.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefDxeCore.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefDxeCore.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefDxeDriver.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefDxeDriver.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefDxeSmmDriver.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefDxeSmmDriver.elementAt(index));\r
+        }\r
+        for (int index = 0; index < vLibClassDefUefiDriver.size(); index++) {\r
+            vLibClassDef.addElement(vLibClassDefUefiDriver.elementAt(index));\r
+        }\r
+    }\r
+    \r
+    private void initLibClassDefBase() {\r
+        vLibClassDefBase.removeAllElements();\r
+        vLibClassDefBase.addElement("BaseLib");\r
+        vLibClassDefBase.addElement("BaseMemoryLib");\r
+        vLibClassDefBase.addElement("CacheMaintenanceLib");\r
+        vLibClassDefBase.addElement("DebugLib");\r
+        vLibClassDefBase.addElement("IoLib");\r
+        vLibClassDefBase.addElement("PcdLib");\r
+        vLibClassDefBase.addElement("PciCf8Lib");\r
+        vLibClassDefBase.addElement("PciExpressLib");\r
+        vLibClassDefBase.addElement("PciLib");\r
+        vLibClassDefBase.addElement("PeCoffGetEntryPointLib");\r
+        vLibClassDefBase.addElement("PeCoffLib");\r
+        vLibClassDefBase.addElement("PerformanceLib");\r
+        vLibClassDefBase.addElement("PrintLib");\r
+        vLibClassDefBase.addElement("SmbusLib");\r
+        vLibClassDefBase.addElement("TimerLib");\r
+    }\r
+    \r
+    private void initLibClassDefPei() {\r
+        vLibClassDefPei.removeAllElements();\r
+        vLibClassDefPei.addElement("PeiCoreEntryPoint");\r
+    }\r
+    \r
+    private void initLibClassDefPeim() {\r
+        vLibClassDefPeim.removeAllElements();\r
+        vLibClassDefPeim.addElement("BaseMemoryLib");\r
+        vLibClassDefPeim.addElement("DebugLib");\r
+        vLibClassDefPeim.addElement("HobLib");\r
+        vLibClassDefPeim.addElement("IoLib");\r
+        vLibClassDefPeim.addElement("MemoryAllocationLib");\r
+        vLibClassDefPeim.addElement("PcdLib");\r
+        vLibClassDefPeim.addElement("PeiCoreLib");\r
+        vLibClassDefPeim.addElement("PeiServicesTablePointerLib");\r
+        vLibClassDefPeim.addElement("PeimEntryPoint");\r
+        vLibClassDefPeim.addElement("ReportStatusCodeLib");\r
+        vLibClassDefPeim.addElement("ResourcePublicationLib");\r
+        vLibClassDefPeim.addElement("SmbusLib");\r
+    }\r
+    \r
+    private void initLibClassDefDxeCore() {\r
+        vLibClassDefDxeCore.removeAllElements();\r
+        vLibClassDefDxeCore.addElement("DxeCoreEntryPoint");\r
+        vLibClassDefDxeCore.addElement("HobLib");\r
+    }\r
+    \r
+    private void initLibClassDefDxeDriver() {\r
+        vLibClassDefDxeDriver.removeAllElements();\r
+        vLibClassDefDxeDriver.addElement("DxeServicesTableLib");\r
+        vLibClassDefDxeDriver.addElement("HiiLib");\r
+        vLibClassDefDxeDriver.addElement("HobLib");\r
+        vLibClassDefDxeDriver.addElement("IoLib");\r
+        vLibClassDefDxeDriver.addElement("MemoryAllocationLib");\r
+        vLibClassDefDxeDriver.addElement("PcdLib");\r
+        vLibClassDefDxeDriver.addElement("ReportStatusCodeLib");\r
+        vLibClassDefDxeDriver.addElement("SmbusLib");\r
+        vLibClassDefDxeDriver.addElement("UefiBootServicesTableLib");\r
+        vLibClassDefDxeDriver.addElement("UefiDecompressLib");\r
+        vLibClassDefDxeDriver.addElement("UefiRuntimeServicesTableLib");\r
+    }\r
+    \r
+    private void initLibClassDefDxeSmmDriver() {\r
+        vLibClassDefDxeSmmDriver.removeAllElements();\r
+        vLibClassDefDxeSmmDriver.addElement("DxeSmmDriverEntryPoint");\r
+    }\r
+    \r
+    private void initLibClassDefUefiDriver() {\r
+        vLibClassDefUefiDriver.removeAllElements();\r
+        vLibClassDefUefiDriver.addElement("BaseMemoryLib");\r
+        vLibClassDefUefiDriver.addElement("DebugLib");\r
+        vLibClassDefUefiDriver.addElement("DevicePathLib");\r
+        vLibClassDefUefiDriver.addElement("UefiDriverEntryPoint");\r
+        vLibClassDefUefiDriver.addElement("UefiDriverModelLib");\r
+        vLibClassDefUefiDriver.addElement("UefiLib");\r
+    }\r
+    \r
+    private void initSourceFilesToolChainFamily() {\r
+        vSourceFilesToolChainFamily.removeAllElements();\r
+        vSourceFilesToolChainFamily.addElement("MSFT");\r
+        vSourceFilesToolChainFamily.addElement("INTC");\r
+        vSourceFilesToolChainFamily.addElement("GCC");\r
+    }\r
+    \r
+    private void initSourceFilesFileType() {\r
+        vSourceFilesFileType.removeAllElements();\r
+        vSourceFilesFileType.addElement("CCODE");\r
+        vSourceFilesFileType.addElement("CHEADER");\r
+        vSourceFilesFileType.addElement("ASMHEADER");\r
+        vSourceFilesFileType.addElement("ASM");\r
+        vSourceFilesFileType.addElement("UNI");\r
+        vSourceFilesFileType.addElement("TXT");\r
+        vSourceFilesFileType.addElement("DXS");\r
+        vSourceFilesFileType.addElement("BMP");\r
+        vSourceFilesFileType.addElement("VFR");\r
+        vSourceFilesFileType.addElement("BINARY");\r
+        vSourceFilesFileType.addElement("FV");\r
+        vSourceFilesFileType.addElement("FFS");\r
+        vSourceFilesFileType.addElement("EFI");\r
+    }\r
+    \r
+    private void initPackageUsage() {\r
+        vPackageUsage.removeAllElements();\r
+        vPackageUsage.addElement("ALWAYS_CONSUMED");\r
+        vPackageUsage.addElement("ALWAYS_PRODUCED");\r
+        vPackageUsage.addElement("DEFAULT");\r
+    }\r
+    \r
+    private void initProtocolUsage() {\r
+        vProtocolUsage.removeAllElements();\r
+        vProtocolUsage.addElement("ALWAYS_CONSUMED");\r
+        vProtocolUsage.addElement("SOMETIMES_CONSUMED");\r
+        vProtocolUsage.addElement("ALWAYS_PRODUCED");\r
+        vProtocolUsage.addElement("SOMETIMES_PRODUCED");\r
+        vProtocolUsage.addElement("TO_START");\r
+        vProtocolUsage.addElement("BY_START");\r
+        vProtocolUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initProtocolType() {\r
+        vProtocolType.removeAllElements();\r
+        vProtocolType.addElement("Protocol");\r
+        vProtocolType.addElement("Protocol Notify");\r
+    }\r
+    \r
+    private void initEventType() {\r
+        vEventType.removeAllElements();\r
+        vEventType.addElement("CreateEvents");\r
+        vEventType.addElement("SignalEvents");\r
+    }\r
+    \r
+    private void initEventUsage() {\r
+        vEventUsage.removeAllElements();\r
+        vEventUsage.addElement("ALWAYS_CONSUMED");\r
+        vEventUsage.addElement("SOMETIMES_CONSUMED");\r
+        vEventUsage.addElement("ALWAYS_PRODUCED");\r
+        vEventUsage.addElement("SOMETIMES_PRODUCED");\r
+        vEventUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initEventGroup() {\r
+        vEventGroup.removeAllElements();\r
+        vEventGroup.addElement("EVENT_GROUP_GUID");\r
+        vEventGroup.addElement("EVENT_TYPE_PERIODIC_TIMER");\r
+        vEventGroup.addElement("EVENT_TYPE_RELATIVE_TIMER");\r
+    }\r
+    \r
+    private void initHobType() {\r
+        vHobType.removeAllElements();\r
+        vHobType.addElement("PHIT");\r
+        vHobType.addElement("MEMORY_ALLOCATION");\r
+        vHobType.addElement("RESOURCE_DESCRIPTOR");\r
+        vHobType.addElement("GUID_EXTENSION");\r
+        vHobType.addElement("FIRMWARE_VOLUME");\r
+        vHobType.addElement("CPU");\r
+        vHobType.addElement("POOL");\r
+        vHobType.addElement("CAPSULE_VOLUME");\r
+    }\r
+    \r
+    private void initHobUsage() {\r
+        vHobUsage.removeAllElements();\r
+        vHobUsage.addElement("ALWAYS_CONSUMED");\r
+        vHobUsage.addElement("SOMETIMES_CONSUMED");\r
+        vHobUsage.addElement("ALWAYS_PRODUCED");\r
+        vHobUsage.addElement("SOMETIMES_PRODUCED");\r
+        vHobUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initPpiType() {\r
+        vPpiType.removeAllElements();\r
+        vPpiType.addElement("Ppi");\r
+        vPpiType.addElement("Ppi Notify");\r
+    }\r
+    \r
+    private void initPpiUsage() {\r
+        vPpiUsage.removeAllElements();\r
+        vPpiUsage.addElement("ALWAYS_CONSUMED");\r
+        vPpiUsage.addElement("SOMETIMES_CONSUMED");\r
+        vPpiUsage.addElement("ALWAYS_PRODUCED");\r
+        vPpiUsage.addElement("SOMETIMES_PRODUCED");\r
+        vPpiUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initPpiNotifyUsage() {\r
+        vPpiNotifyUsage.removeAllElements();\r
+        vPpiNotifyUsage.addElement("SOMETIMES_CONSUMED");\r
+    }\r
+    \r
+    private void initProtocolNotifyUsage() {\r
+        vProtocolNotifyUsage.addElement("SOMETIMES_CONSUMED");\r
+    }\r
+    \r
+    private void initVariableUsage() {\r
+        vVariableUsage.removeAllElements();\r
+        vVariableUsage.addElement("ALWAYS_CONSUMED");\r
+        vVariableUsage.addElement("SOMETIMES_CONSUMED");\r
+        vVariableUsage.addElement("ALWAYS_PRODUCED");\r
+        vVariableUsage.addElement("SOMETIMES_PRODUCED");\r
+        vVariableUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initBootModeNames() {\r
+        vBootModeNames.removeAllElements();\r
+        vBootModeNames.addElement("FULL");\r
+        vBootModeNames.addElement("MINIMAL");\r
+        vBootModeNames.addElement("NO_CHANGE");\r
+        vBootModeNames.addElement("DIAGNOSTICS");\r
+        vBootModeNames.addElement("DEFAULT");\r
+        vBootModeNames.addElement("S2_RESUME");\r
+        vBootModeNames.addElement("S3_RESUME");\r
+        vBootModeNames.addElement("S4_RESUME");\r
+        vBootModeNames.addElement("S5_RESUME");\r
+        vBootModeNames.addElement("FLASH_UPDATE");\r
+        vBootModeNames.addElement("RECOVERY");\r
+    }\r
+    \r
+    private void initBootModeUsage() {\r
+        vBootModeUsage.removeAllElements();\r
+        vBootModeUsage.addElement("ALWAYS_CONSUMED");\r
+        vBootModeUsage.addElement("SOMETIMES_CONSUMED");\r
+        vBootModeUsage.addElement("ALWAYS_PRODUCED");\r
+        vBootModeUsage.addElement("SOMETIMES_PRODUCED");\r
+    }\r
+    \r
+    private void initSystemTableUsage() {\r
+        vSystemTableUsage.removeAllElements();\r
+        vSystemTableUsage.addElement("ALWAYS_CONSUMED");\r
+        vSystemTableUsage.addElement("SOMETIMES_CONSUMED");\r
+        vSystemTableUsage.addElement("ALWAYS_PRODUCED");\r
+        vSystemTableUsage.addElement("SOMETIMES_PRODUCED");\r
+        vSystemTableUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initDataHubUsage() {\r
+        vDataHubUsage.removeAllElements();\r
+        vDataHubUsage.addElement("ALWAYS_CONSUMED");\r
+        vDataHubUsage.addElement("SOMETIMES_CONSUMED");\r
+        vDataHubUsage.addElement("ALWAYS_PRODUCED");\r
+        vDataHubUsage.addElement("SOMETIMES_PRODUCED");\r
+        vDataHubUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initHiiPackages() {\r
+        vHiiPackageUsage.removeAllElements();\r
+        vHiiPackageUsage.addElement("ALWAYS_PRODUCED");\r
+        vHiiPackageUsage.addElement("SOMETIMES_PRODUCED");\r
+        vHiiPackageUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initGuidUsage() {\r
+        vGuidUsage.removeAllElements();\r
+        vGuidUsage.addElement("ALWAYS_CONSUMED");\r
+        vGuidUsage.addElement("SOMETIMES_CONSUMED");\r
+        vGuidUsage.addElement("ALWAYS_PRODUCED");\r
+        vGuidUsage.addElement("SOMETIMES_PRODUCED");\r
+        vGuidUsage.addElement("DEFAULT");\r
+        vGuidUsage.addElement("PRIVATE");\r
+    }\r
+    \r
+    private void initExternTypes() {\r
+        vExternTypes.removeAllElements();\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_SPECIFICATION);\r
+        \r
+        vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_ENTRY_POINT);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_MODULE_UNLOAD_IMAGE);\r
+        \r
+        vExternTypes.addElement(EnumerationData.EXTERNS_CONSTRUCTOR);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_DESTRUCTOR);\r
+        \r
+        vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_BINDING);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_COMPONENT_NAME);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_CONFIG);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_DRIVER_DIAG);\r
+        \r
+        vExternTypes.addElement(EnumerationData.EXTERNS_SET_VIRTUAL_ADDRESS_MAP_CALL_BACK);\r
+        vExternTypes.addElement(EnumerationData.EXTERNS_EXIT_BOOT_SERVICES_CALL_BACK);\r
+    }\r
+    \r
+    private void initPcdDriverTypes() {\r
+        vPcdDriverTypes.removeAllElements();\r
+        vPcdDriverTypes.addElement(DataType.EMPTY_SELECT_ITEM);\r
+        vPcdDriverTypes.addElement("PEI_PCD_DRIVER");\r
+        vPcdDriverTypes.addElement("DXE_PCD_DRIVER");\r
+    }\r
+    \r
+    private void initPcdItemTypes() {\r
+        vPcdItemTypes.removeAllElements();\r
+        vPcdItemTypes.addElement("FEATURE_FLAG");\r
+        vPcdItemTypes.addElement("FIXED_AT_BUILD");\r
+        vPcdItemTypes.addElement("PATCHABLE_IN_MODULE");\r
+        vPcdItemTypes.addElement("DYNAMIC");\r
+        vPcdItemTypes.addElement("DYNAMIC_EX");\r
+    }\r
+    \r
+    public Vector<String> getvCompontentType() {\r
+        return vCompontentType;\r
+    }\r
+\r
+    public void setvCompontentType(Vector<String> componentType) {\r
+        vCompontentType = componentType;\r
+    }\r
+\r
+    public Vector<String> getVModuleType() {\r
+        return vModuleType;\r
+    }\r
+\r
+    public void setVModuleType(Vector<String> moduleType) {\r
+        vModuleType = moduleType;\r
+    }\r
+\r
+    public Vector<String> getVLibraryUsage() {\r
+        return vLibraryUsage;\r
+    }\r
+\r
+    public void setVLibClassDefUsage(Vector<String> libClassDefUsage) {\r
+        vLibraryUsage = libClassDefUsage;\r
+    }\r
+\r
+    public Vector<String> getVLibClassDef() {\r
+        return vLibClassDef;\r
+    }\r
+\r
+    public void setVLibClassDef(Vector<String> libClassDef) {\r
+        vLibClassDef = libClassDef;\r
+    }\r
+\r
+    public Vector<String> getVCompontentType() {\r
+        return vCompontentType;\r
+    }\r
+\r
+    public void setVCompontentType(Vector<String> compontentType) {\r
+        vCompontentType = compontentType;\r
+    }\r
+\r
+    public Vector<String> getVLibClassDefBase() {\r
+        return vLibClassDefBase;\r
+    }\r
+\r
+    public void setVLibClassDefBase(Vector<String> libClassDefBase) {\r
+        vLibClassDefBase = libClassDefBase;\r
+    }\r
+\r
+    public Vector<String> getVLibClassDefDxeCore() {\r
+        return vLibClassDefDxeCore;\r
+    }\r
+\r
+    public void setVLibClassDefDxeCore(Vector<String> libClassDefDxeCore) {\r
+        vLibClassDefDxeCore = libClassDefDxeCore;\r
+    }\r
+\r
+    public Vector<String> getVLibClassDefDxeDriver() {\r
+        return vLibClassDefDxeDriver;\r
+    }\r
+\r
+    public void setVLibClassDefDxeDriver(Vector<String> libClassDefDxeDriver) {\r
+        vLibClassDefDxeDriver = libClassDefDxeDriver;\r
+    }\r
+\r
+    public Vector<String> getVLibClassDefDxeSmmDriver() {\r
+        return vLibClassDefDxeSmmDriver;\r
+    }\r
+\r
+    public void setVLibClassDefDxeSmmDriver(Vector<String> libClassDefDxeSmmDriver) {\r