]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
Adjusted sizes to accommodate Windows, iMac and Linux GUI
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / FrameworkWizardUI.java
index 6426f6b0e54c7d30ffa77341b83ef46dc6ccd57c..3c960b4699f956fa7d15a173ab78ae731a623424 100644 (file)
@@ -50,10 +50,10 @@ import org.tianocore.PlatformSurfaceAreaDocument;
 import org.tianocore.frameworkwizard.common.DataType;\r
 import org.tianocore.frameworkwizard.common.IFileFilter;\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.Identifications.Identification;\r
-import org.tianocore.frameworkwizard.common.Identifications.OpenFile;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleList;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;\r
 import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageList;\r
@@ -1637,6 +1637,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             jMenuItemProjectUpdateFar.setMnemonic('U');\r
             jMenuItemProjectUpdateFar.setEnabled(true);\r
             jMenuItemProjectUpdateFar.addActionListener(this);\r
+            jMenuItemProjectUpdateFar.setVisible(true);\r
         }\r
         return jMenuItemProjectUpdateFar;\r
     }\r
@@ -1793,7 +1794,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             CreateStepOne cso = new CreateStepOne(this, true);\r
             int result = cso.showDialog();\r
             if (result == DataType.RETURN_TYPE_OK) {\r
-                this.closeAll();\r
+                String strReturn = "Create Far Done!";\r
+                JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+                                              JOptionPane.INFORMATION_MESSAGE);\r
             }\r
             cso.dispose();\r
         }\r
@@ -1802,6 +1805,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             InstallStepOne iso = new InstallStepOne(this, true);\r
             int result = iso.showDialog();\r
             if (result == DataType.RETURN_TYPE_OK) {\r
+                String strReturn = "<html>Install Far Done! <br>The WORKSPACE will be refreshed!</html>";\r
+                JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+                                              JOptionPane.INFORMATION_MESSAGE);\r
                 this.closeAll();\r
             }\r
             iso.dispose();\r
@@ -1811,6 +1817,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             DeleteStepOne dso = new DeleteStepOne(this, true);\r
             int result = dso.showDialog();\r
             if (result == DataType.RETURN_TYPE_OK) {\r
+                String strReturn = "<html>Delete Far Done! <br>The WORKSPACE will be refreshed!</html>";\r
+                JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+                                              JOptionPane.INFORMATION_MESSAGE);\r
                 this.closeAll();\r
             }\r
             dso.dispose();\r
@@ -1820,6 +1829,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             UpdateStepOne uso = new UpdateStepOne(this, true);\r
             int result = uso.showDialog();\r
             if (result == DataType.RETURN_TYPE_OK) {\r
+                String strReturn = "<html>Update Far Done! <br>The WORKSPACE will be refreshed!</html>";\r
+                JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+                                              JOptionPane.INFORMATION_MESSAGE);\r
                 this.closeAll();\r
             }\r
             uso.dispose();\r
@@ -2039,147 +2051,76 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
         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, ModuleIdentification moduleId) {\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
-               ModuleIdentification mid = new ModuleIdentification(id, pid, moduleId.isLibrary());\r
-               vModuleList.addElement(mid);\r
-               //\r
-               // Add new MsaHeader node to the tree\r
-               //\r
-               IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(mid.getName(),\r
-                                                                          IDefaultMutableTreeNode.MSA_HEADER, true,\r
-                                                                          mid);\r
-               //\r
-               // First find the module belongs to which package\r
-               //\r
-               IDefaultMutableTreeNode packageNode = iTree.getNodeById(dmtnModuleDescription, mid.getPackageId(),\r
-                                                                       IDefaultMutableTreeNode.MODULE_PACKAGE);\r
-               //\r
-               // To check if has module node or library node\r
-               //\r
-               IDefaultMutableTreeNode parentModuleNode = null;\r
-               IDefaultMutableTreeNode parentLibraryNode = null;\r
-               boolean hasModule = false;\r
-               boolean hasLibrary = false;\r
-               for (int index = 0; index < packageNode.getChildCount(); index++) {\r
-                   IDefaultMutableTreeNode iNode = (IDefaultMutableTreeNode) packageNode.getChildAt(index);\r
-                   if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY) {\r
-                       hasLibrary = true;\r
-                       parentLibraryNode = iNode;\r
-                   }\r
-                   if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE) {\r
-                       hasModule = true;\r
-                       parentModuleNode = iNode;\r
-                   }\r
-               }\r
-\r
-               //\r
-               // If is a module\r
-               //\r
-               if (!mid.isLibrary()) {\r
-                   //\r
-                   // Create parent node first if has no parent node\r
-                   //\r
-                   if (!hasModule) {\r
-                       parentModuleNode = new IDefaultMutableTreeNode("Module",\r
-                                                                      IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE,\r
-                                                                      false, mid.getPackageId());\r
-                       iTree.addNode(packageNode, parentModuleNode);\r
-                   }\r
-\r
-                   iTree.addNode(parentModuleNode, node);\r
-               }\r
-\r
-               //\r
-               // If is a Library\r
-               //\r
-               if (mid.isLibrary()) {\r
-                   //\r
-                   // Create parent node first if has no parent node\r
-                   //\r
-                   if (!hasLibrary) {\r
-                       parentLibraryNode = new IDefaultMutableTreeNode("Library",\r
-                                                                       IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY,\r
-                                                                       false, mid.getPackageId());\r
-                       iTree.addNode(packageNode, parentLibraryNode);\r
-                   }\r
-\r
-                   iTree.addNode(parentLibraryNode, node);\r
-               }\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
-       //\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
+     Add a module to tree\r
+     \r
+     @param mid The module node to be added\r
+     \r
+     **/\r
+    private void addModuleToTree(ModuleIdentification mid) {\r
+        //\r
+        // Add new MsaHeader node to the tree\r
+        //\r
+        IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(mid.getName(), IDefaultMutableTreeNode.MSA_HEADER,\r
+                                                                   true, mid);\r
+        //\r
+        // First find the module belongs to which package\r
+        //\r
+        IDefaultMutableTreeNode packageNode = iTree.getNodeById(dmtnModuleDescription, mid.getPackageId(),\r
+                                                                IDefaultMutableTreeNode.MODULE_PACKAGE);\r
+        //\r
+        // To check if has module node or library node\r
+        //\r
+        IDefaultMutableTreeNode parentModuleNode = null;\r
+        IDefaultMutableTreeNode parentLibraryNode = null;\r
+        boolean hasModule = false;\r
+        boolean hasLibrary = false;\r
+        for (int index = 0; index < packageNode.getChildCount(); index++) {\r
+            IDefaultMutableTreeNode iNode = (IDefaultMutableTreeNode) packageNode.getChildAt(index);\r
+            if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY) {\r
+                hasLibrary = true;\r
+                parentLibraryNode = iNode;\r
+            }\r
+            if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE) {\r
+                hasModule = true;\r
+                parentModuleNode = iNode;\r
+            }\r
+        }\r
+\r
+        //\r
+        // If is a module\r
+        //\r
+        if (!mid.isLibrary()) {\r
+            //\r
+            // Create parent node first if has no parent node\r
+            //\r
+            if (!hasModule) {\r
+                parentModuleNode = new IDefaultMutableTreeNode("Module", IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE,\r
+                                                               false, mid.getPackageId());\r
+                iTree.addNode(packageNode, parentModuleNode);\r
+            }\r
+\r
+            iTree.addNode(parentModuleNode, node);\r
+        }\r
+\r
+        //\r
+        // If is a Library\r
+        //\r
+        if (mid.isLibrary()) {\r
+            //\r
+            // Create parent node first if has no parent node\r
+            //\r
+            if (!hasLibrary) {\r
+                parentLibraryNode = new IDefaultMutableTreeNode("Library",\r
+                                                                IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY, false,\r
+                                                                mid.getPackageId());\r
+                iTree.addNode(packageNode, parentLibraryNode);\r
+            }\r
+\r
+            iTree.addNode(parentLibraryNode, node);\r
+        }\r
+    }\r
 \r
     /**\r
      Open Module\r
@@ -2187,17 +2128,20 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
      @param path input file path\r
      \r
      **/\r
-    private void openModule(String path) {\r
+    private void openModule(String path, ModuleIdentification moduleId) {\r
         ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;\r
         try {\r
             msa = OpenFile.openMsaFile(path);\r
         } catch (IOException e) {\r
+            Log.wrn("Open Module Surface Area " + path, e.getMessage());\r
             Log.err("Open Module Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (XmlException e) {\r
+            Log.wrn("Open Module Surface Area " + path, e.getMessage());\r
             Log.err("Open Module Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (Exception e) {\r
+            Log.wrn("Open Module Surface Area " + path, "Invalid file type");\r
             Log.err("Open Module Surface Area " + path, "Invalid file type");\r
             return;\r
         }\r
@@ -2220,80 +2164,100 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
                 }\r
             }\r
             if (!isFind) {\r
-                ModuleIdentification mid = new ModuleIdentification(id, pid);\r
+                ModuleIdentification mid = new ModuleIdentification(id, pid, moduleId.isLibrary());\r
                 vModuleList.addElement(mid);\r
-                //\r
-                // Add new MsaHeader node to the tree\r
-                //\r
-                IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(mid.getName(),\r
-                                                                           IDefaultMutableTreeNode.MSA_HEADER, true,\r
-                                                                           mid);\r
-                //\r
-                // First find the module belongs to which package\r
-                //\r
-                IDefaultMutableTreeNode packageNode = iTree.getNodeById(dmtnModuleDescription, mid.getPackageId(),\r
-                                                                        IDefaultMutableTreeNode.MODULE_PACKAGE);\r
-                //\r
-                // To check if has module node or library node\r
-                //\r
-                IDefaultMutableTreeNode parentModuleNode = null;\r
-                IDefaultMutableTreeNode parentLibraryNode = null;\r
-                boolean hasModule = false;\r
-                boolean hasLibrary = false;\r
-                for (int index = 0; index < packageNode.getChildCount(); index++) {\r
-                    IDefaultMutableTreeNode iNode = (IDefaultMutableTreeNode) packageNode.getChildAt(index);\r
-                    if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY) {\r
-                        hasLibrary = true;\r
-                        parentLibraryNode = iNode;\r
-                    }\r
-                    if (iNode.getCategory() == IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE) {\r
-                        hasModule = true;\r
-                        parentModuleNode = iNode;\r
-                    }\r
-                }\r
+                addModuleToTree(mid);\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
-                //\r
-                // If is a module\r
-                //\r
-                if (!mid.isLibrary()) {\r
-                    //\r
-                    // Create parent node first if has no parent node\r
-                    //\r
-                    if (!hasModule) {\r
-                        parentModuleNode = new IDefaultMutableTreeNode("Module",\r
-                                                                       IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE,\r
-                                                                       false, mid.getPackageId());\r
-                        iTree.addNode(packageNode, parentModuleNode);\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
-                    iTree.addNode(parentModuleNode, node);\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
-                // If is a Library\r
-                //\r
-                if (mid.isLibrary()) {\r
-                    //\r
-                    // Create parent node first if has no parent node\r
-                    //\r
-                    if (!hasLibrary) {\r
-                        parentLibraryNode = new IDefaultMutableTreeNode("Library",\r
-                                                                        IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY,\r
-                                                                        false, mid.getPackageId());\r
-                        iTree.addNode(packageNode, parentLibraryNode);\r
-                    }\r
+    /**\r
+     Open Module\r
 \r
-                    iTree.addNode(parentLibraryNode, node);\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.wrn("Open Module Surface Area " + path, e.getMessage());\r
+            Log.err("Open Module Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (XmlException e) {\r
+            Log.wrn("Open Module Surface Area " + path, e.getMessage());\r
+            Log.err("Open Module Surface Area " + path, e.getMessage());\r
+            return;\r
+        } catch (Exception e) {\r
+            Log.wrn("Open Module Surface Area " + path, "Invalid file type");\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
+                ModuleIdentification mid = new ModuleIdentification(id, pid);\r
+                vModuleList.addElement(mid);\r
+                addModuleToTree(mid);\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
+            Log.wrn("Open Module", "The module hasn't been added to any package of current workspace!");\r
             return;\r
         }\r
-        \r
+\r
         //\r
         // Make the node selected\r
         //\r
@@ -2333,12 +2297,15 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
         try {\r
             spd = OpenFile.openSpdFile(path);\r
         } catch (IOException e) {\r
+            Log.wrn("Open Package Surface Area " + path, e.getMessage());\r
             Log.err("Open Package Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (XmlException e) {\r
+            Log.wrn("Open Package Surface Area " + path, e.getMessage());\r
             Log.err("Open Package Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (Exception e) {\r
+            Log.wrn("Open Package Surface Area " + path, "Invalid file type");\r
             Log.err("Open Package Surface Area " + path, "Invalid file type");\r
             return;\r
         }\r
@@ -2359,7 +2326,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             //\r
             // The module is not in existing packages\r
             //\r
-            Log.err("The package hasn't been added to current workspace!");\r
+            Log.wrn("Open Package", "The package hasn't been added to current workspace!");\r
             return;\r
         }\r
 \r
@@ -2402,12 +2369,15 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
         try {\r
             fpd = OpenFile.openFpdFile(path);\r
         } catch (IOException e) {\r
+            Log.wrn("Open Platform Surface Area " + path, e.getMessage());\r
             Log.err("Open Platform Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (XmlException e) {\r
+            Log.wrn("Open Platform Surface Area " + path, e.getMessage());\r
             Log.err("Open Platform Surface Area " + path, e.getMessage());\r
             return;\r
         } catch (Exception e) {\r
+            Log.wrn("Open Platform Surface Area " + path, "Invalid file type");\r
             Log.err("Open Platform Surface Area " + path, "Invalid file type");\r
             return;\r
         }\r
@@ -2429,7 +2399,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             //\r
             // The module is not in existing packages\r
             //\r
-            Log.err("The platform hasn't been added to current workspace!");\r
+            Log.wrn("Open Platform", "The platform hasn't been added to current workspace!");\r
             return;\r
         }\r
 \r
@@ -2477,6 +2447,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             openingModuleList.setNew(omt.getId(), false);\r
             openingModuleList.setModuleSaved(omt.getId(), true);\r
         } catch (Exception e) {\r
+            Log.wrn("Save Module", e.getMessage());\r
             Log.err("Save Module", e.getMessage());\r
         }\r
     }\r
@@ -2497,6 +2468,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             openingPackageList.setNew(opt.getId(), false);\r
             openingPackageList.setPackageSaved(opt.getId(), true);\r
         } catch (Exception e) {\r
+            Log.wrn("Save Package", e.getMessage());\r
             Log.err("Save Package", e.getMessage());\r
         }\r
     }\r
@@ -2517,6 +2489,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             openingPlatformList.setNew(opt.getId(), false);\r
             openingPlatformList.setPlatformSaved(opt.getId(), true);\r
         } catch (Exception e) {\r
+            Log.wrn("Save Package", e.getMessage());\r
             Log.err("Save Package", e.getMessage());\r
         }\r
     }\r
@@ -2626,50 +2599,59 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
      \r
      **/\r
     private void doubleClickModuleTreeNode() {\r
-        Identification id = iTree.getSelectNode().getId();\r
-        int intCategory = iTree.getSelectCategory();\r
+        Identification id = null;\r
+        int intCategory = -1;\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
+        try {\r
+            id = iTree.getSelectNode().getId();\r
+            intCategory = iTree.getSelectCategory();\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.SPD_MSAFILES) {\r
+            if (intCategory == IDefaultMutableTreeNode.FPD_PLATFORMHEADER) {\r
                 path = iTree.getSelectNode().getId().getPath();\r
+                openPlatform(path);\r
+                return;\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
+            // 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
+        } catch (RuntimeException e) {\r
+            Log.log("double click category: " + intCategory);\r
+            Log.log("double click id path: " + id.getPath());\r
+            Log.log("double click exception: " + e.getMessage());\r
+            e.printStackTrace();\r
         }\r
     }\r
 \r
@@ -2885,16 +2867,16 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
                 try {\r
                     wt.addModuleToPackage(smb.getMid(), psa);\r
                 } catch (IOException e) {\r
+                    Log.wrn("Upddate MsaFiles of Package", e.getMessage());\r
                     Log.err("Upddate MsaFiles of Package", e.getMessage());\r
-                    e.printStackTrace();\r
                     return;\r
                 } catch (XmlException e) {\r
+                    Log.wrn("Upddate MsaFiles of Package", e.getMessage());\r
                     Log.err("Upddate MsaFiles of Package", e.getMessage());\r
-                    e.printStackTrace();\r
                     return;\r
                 } catch (Exception e) {\r
+                    Log.wrn("Upddate MsaFiles of Package", e.getMessage());\r
                     Log.err("Upddate MsaFiles of Package", e.getMessage());\r
-                    e.printStackTrace();\r
                     return;\r
                 }\r
                 this.openModule(smb.getMid().getPath(), smb.getMid());\r
@@ -2914,17 +2896,26 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
                 try {\r
                     wt.addPackageToDatabase(smb.getPid());\r
                 } catch (Exception e) {\r
-                    // TODO Auto-generated catch block\r
-                    e.printStackTrace();\r
+                    Log.err("addPackageToDatabase", e.getMessage());\r
                 }\r
                 vPackageList.addElement(smb.getPid());\r
+\r
                 //\r
-                // Add new SpdHeader node to the tree\r
+                // Add to Module Description node\r
                 //\r
                 IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(vPackageList.lastElement().getName(),\r
-                                                                           IDefaultMutableTreeNode.SPD_HEADER, true,\r
-                                                                           vPackageList.lastElement());\r
+                                                                           IDefaultMutableTreeNode.MODULE_PACKAGE,\r
+                                                                           false, vPackageList.lastElement());\r
+\r
+                iTree.addNode(dmtnModuleDescription, node);\r
+\r
+                //\r
+                // Add new SpdHeader node to the tree\r
+                //\r
+                node = new IDefaultMutableTreeNode(vPackageList.lastElement().getName(),\r
+                                                   IDefaultMutableTreeNode.SPD_HEADER, true, vPackageList.lastElement());\r
                 iTree.addNode(dmtnPackageDescription, node);\r
+\r
                 this.openPackage(smb.getPid().getPath());\r
             }\r
         } else if (result == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
@@ -2942,8 +2933,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
                 try {\r
                     wt.addPlatformToDatabase(smb.getFid());\r
                 } catch (Exception e) {\r
-                    // TODO Auto-generated catch block\r
-                    e.printStackTrace();\r
+                    Log.err("addPlatformToDatabase", e.getMessage());\r
                 }\r
                 vPlatformList.addElement(smb.getFid());\r
                 //\r
@@ -3211,14 +3201,14 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
         // 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
+            Log.wrn("Clone", "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
+            Log.wrn("Clone", "Please select a target to clone!");\r
             return;\r
         }\r
 \r
@@ -3248,13 +3238,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
         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
+            addModuleToTree(c.getMid());\r
         }\r
         if (result == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
             Tools.showInformationMessage("Package Surface Area Clone Finished");\r
@@ -3327,7 +3311,10 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
             } else {\r
                 int category = iTree.getSelectCategory();\r
                 if (category == IDefaultMutableTreeNode.MODULE || category == IDefaultMutableTreeNode.PACKAGE\r
-                    || category == IDefaultMutableTreeNode.PLATFORM) {\r
+                    || category == IDefaultMutableTreeNode.PLATFORM\r
+                    || category == IDefaultMutableTreeNode.MODULE_PACKAGE\r
+                    || category == IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY\r
+                    || category == IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE) {\r
                     jMenuItemToolsClone.setEnabled(false);\r
                 } else {\r
                     jMenuItemToolsClone.setEnabled(true);\r