]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
1. Fix EDKT508: FW should't build Log.log file in current directory
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / FrameworkWizardUI.java
index ad08749b7f6f789464008116d94bfc36d3ed0af1..69d47423a572ddd5244db64dcdbe7546c24f721c 100644 (file)
@@ -44,6 +44,7 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;\r
 import javax.swing.JSplitPane;\r
 import javax.swing.JTabbedPane;\r
+import javax.swing.ToolTipManager;\r
 import javax.swing.event.MenuEvent;\r
 import javax.swing.event.MenuListener;\r
 import javax.swing.event.TreeSelectionEvent;\r
@@ -73,6 +74,7 @@ import org.tianocore.frameworkwizard.far.installui.InstallStepOne;
 import org.tianocore.frameworkwizard.far.updateui.UpdateStepOne;\r
 import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
 import org.tianocore.frameworkwizard.module.ui.ModuleBootModes;\r
+import org.tianocore.frameworkwizard.module.ui.ModuleBuildOptions;\r
 import org.tianocore.frameworkwizard.module.ui.ModuleDataHubs;\r
 import org.tianocore.frameworkwizard.module.ui.ModuleEvents;\r
 import org.tianocore.frameworkwizard.module.ui.ModuleExterns;\r
@@ -120,6 +122,11 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     /// Define class Serial Version UID\r
     ///\r
     private static final long serialVersionUID = -7103240960573031772L;\r
+    \r
+    //\r
+    // Set ToolTipText Show Time\r
+    //\r
+    static { ToolTipManager.sharedInstance().setDismissDelay(18000); }\r
 \r
     ///\r
     /// Used to record current operation target\r
@@ -317,12 +324,22 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      @return FrameworkWizardUI The instance of this class\r
      \r
      **/\r
-    public static FrameworkWizardUI getInstance() {\r
+    public static FrameworkWizardUI getInstance(String[] args) {\r
         if (fwui == null) {\r
-            fwui = new FrameworkWizardUI();\r
+            fwui = new FrameworkWizardUI(args);\r
         }\r
         return fwui;\r
     }\r
+    \r
+    /**\r
+    If the class hasn't an instnace, new one.\r
+    \r
+    @return FrameworkWizardUI The instance of this class\r
+    \r
+    **/\r
+   public static FrameworkWizardUI getInstance() {\r
+       return fwui;\r
+   }\r
 \r
     /**\r
      This method initializes jMenuBar \r
@@ -683,7 +700,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemHelpAbout() {\r
         if (jMenuItemHelpAbout == null) {\r
             jMenuItemHelpAbout = new JMenuItem();\r
-            jMenuItemHelpAbout.setText("About...");\r
+            jMenuItemHelpAbout.setText("About");\r
             jMenuItemHelpAbout.setMnemonic('A');\r
             jMenuItemHelpAbout.addActionListener(this);\r
         }\r
@@ -1358,7 +1375,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemToolsBuildPreferences() {\r
         if (jMenuItemToolsBuildPreferences == null) {\r
             jMenuItemToolsBuildPreferences = new JMenuItem();\r
-            jMenuItemToolsBuildPreferences.setText("Build Preferences");\r
+            jMenuItemToolsBuildPreferences.setText("Build Preferences...");\r
             jMenuItemToolsBuildPreferences.setMnemonic('P');\r
             jMenuItemToolsBuildPreferences.setEnabled(true);\r
             jMenuItemToolsBuildPreferences.addActionListener(this);\r
@@ -1598,7 +1615,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemProjectInstallFar() {\r
         if (jMenuItemProjectInstallFar == null) {\r
             jMenuItemProjectInstallFar = new JMenuItem();\r
-            jMenuItemProjectInstallFar.setText("Install FAR");\r
+            jMenuItemProjectInstallFar.setText("Install FAR...");\r
             jMenuItemProjectInstallFar.setMnemonic('I');\r
             jMenuItemProjectInstallFar.setEnabled(true);\r
             jMenuItemProjectInstallFar.addActionListener(this);\r
@@ -1614,7 +1631,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemProjectUpdateFar() {\r
         if (jMenuItemProjectUpdateFar == null) {\r
             jMenuItemProjectUpdateFar = new JMenuItem();\r
-            jMenuItemProjectUpdateFar.setText("Update FAR");\r
+            jMenuItemProjectUpdateFar.setText("Update FAR...");\r
             jMenuItemProjectUpdateFar.setMnemonic('U');\r
             jMenuItemProjectUpdateFar.setEnabled(true);\r
             jMenuItemProjectUpdateFar.addActionListener(this);\r
@@ -1631,7 +1648,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemProjectRemoveFar() {\r
         if (jMenuItemProjectRemoveFar == null) {\r
             jMenuItemProjectRemoveFar = new JMenuItem();\r
-            jMenuItemProjectRemoveFar.setText("Remove FAR");\r
+            jMenuItemProjectRemoveFar.setText("Remove FAR...");\r
             jMenuItemProjectRemoveFar.setMnemonic('R');\r
             jMenuItemProjectRemoveFar.setEnabled(true);\r
             jMenuItemProjectRemoveFar.addActionListener(this);\r
@@ -1647,7 +1664,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemProjectCreateFar() {\r
         if (jMenuItemProjectCreateFar == null) {\r
             jMenuItemProjectCreateFar = new JMenuItem();\r
-            jMenuItemProjectCreateFar.setText("Create FAR");\r
+            jMenuItemProjectCreateFar.setText("Create FAR...");\r
             jMenuItemProjectCreateFar.setMnemonic('C');\r
             jMenuItemProjectCreateFar.addActionListener(this);\r
         }\r
@@ -1774,7 +1791,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     private JMenuItem getJMenuItemToolsGenerateGuidsXref() {\r
         if (jMenuItemToolsGenerateGuidsXref == null) {\r
             jMenuItemToolsGenerateGuidsXref = new JMenuItem();\r
-            jMenuItemToolsGenerateGuidsXref.setText("Generate guids.xref");\r
+            jMenuItemToolsGenerateGuidsXref.setText("Generate guids.xref...");\r
             jMenuItemToolsGenerateGuidsXref.setMnemonic('G');\r
             jMenuItemToolsGenerateGuidsXref.addActionListener(this);\r
         }\r
@@ -1787,8 +1804,11 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      * Main class, start the GUI\r
      * \r
      */\r
-    public static void main(String[] args) {\r
-        FrameworkWizardUI module = FrameworkWizardUI.getInstance();\r
+    public static void main(String[] args) {      \r
+        //\r
+        // Start Main UI\r
+        //\r
+        FrameworkWizardUI module = FrameworkWizardUI.getInstance(args);\r
         module.setVisible(true);\r
     }\r
 \r
@@ -1796,9 +1816,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      This is the default constructor\r
      \r
      **/\r
-    public FrameworkWizardUI() {\r
+    public FrameworkWizardUI(String[] args) {\r
         super();\r
-        init();\r
+        init(args);\r
     }\r
 \r
     /**\r
@@ -1806,7 +1826,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      \r
      \r
      **/\r
-    private void init() {\r
+    private void init(String[] args) {\r
         //\r
         // Set current workspace and check\r
         // Check if exists WORKSPACE\r
@@ -1820,6 +1840,15 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         SplashScreen ss = new SplashScreen();\r
         ss.setVisible(true);\r
         \r
+        //\r
+        // Go through args to check if enable log\r
+        //\r
+        for (int index = 0; index < args.length; index++) {\r
+            if (args[index].equals("--log") || args[index].equals("-l")) {\r
+                Log.setSaveLog(true);\r
+            }\r
+        }\r
+\r
         //\r
         // Init Global Data\r
         //\r
@@ -1829,7 +1858,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         // Close splash screen\r
         //\r
         ss.dispose();\r
-\r
+                \r
         //\r
         // Init the frame\r
         //\r
@@ -1887,6 +1916,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
 \r
         if (arg0.getSource() == this.jMenuItemFileCloseAll) {\r
             this.closeAll();\r
+            this.refresh();\r
             this.makeEmptyTree();\r
         }\r
 \r
@@ -1903,9 +1933,10 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         }\r
 \r
         if (arg0.getSource() == this.jMenuItemFileRefresh) {\r
-            this.closeAll();\r
-            this.refresh();\r
-            this.makeEmptyTree();\r
+            if (this.closeAll() == 0) {\r
+                this.refresh();\r
+                this.makeEmptyTree();\r
+            }\r
         }\r
 \r
         if (arg0.getSource() == this.jMenuItemFileExit) {\r
@@ -2533,6 +2564,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         iTree.addNode(new IDefaultMutableTreeNode("External Defintions", IDefaultMutableTreeNode.MSA_EXTERNS, true, id,\r
                                                   belongNode));\r
         iTree.addNode(new IDefaultMutableTreeNode("Pcd Coded", IDefaultMutableTreeNode.MSA_PCDS, true, id, belongNode));\r
+        iTree.addNode(new IDefaultMutableTreeNode("Build Options", IDefaultMutableTreeNode.MSA_BUILDOPTIONS, true, id, belongNode));\r
     }\r
 \r
     private void insertPackageTreeNode(Identification id) {\r
@@ -2774,31 +2806,31 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             getJDesktopPanePackage().add(frmSpdHeader, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_LIBRARYCLASSDECLARATIONS:\r
-            SpdLibClassDecls frmSlcd = new SpdLibClassDecls(spd);\r
+            SpdLibClassDecls frmSlcd = new SpdLibClassDecls(spd, this);\r
             getJDesktopPanePackage().add(frmSlcd, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_MSAFILES:\r
-            SpdMsaFiles frmSmf = new SpdMsaFiles(spd);\r
+            SpdMsaFiles frmSmf = new SpdMsaFiles(spd, this);\r
             getJDesktopPanePackage().add(frmSmf, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_PACKAGEHEADERS:\r
-            SpdPackageHeaders frmSph = new SpdPackageHeaders(spd);\r
+            SpdPackageHeaders frmSph = new SpdPackageHeaders(spd, this);\r
             getJDesktopPanePackage().add(frmSph, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_GUIDDECLARATIONS:\r
-            SpdGuidDecls frmSgd = new SpdGuidDecls(spd);\r
+            SpdGuidDecls frmSgd = new SpdGuidDecls(spd, this);\r
             getJDesktopPanePackage().add(frmSgd, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_PROTOCOLDECLARATIONS:\r
-            SpdProtocolDecls frmSprod = new SpdProtocolDecls(spd);\r
+            SpdProtocolDecls frmSprod = new SpdProtocolDecls(spd, this);\r
             getJDesktopPanePackage().add(frmSprod, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_PPIDECLARATIONS:\r
-            SpdPpiDecls frmSppid = new SpdPpiDecls(spd);\r
+            SpdPpiDecls frmSppid = new SpdPpiDecls(spd, this);\r
             getJDesktopPanePackage().add(frmSppid, 1);\r
             break;\r
         case IDefaultMutableTreeNode.SPD_PCDDECLARATIONS:\r
-            SpdPcdDefs frmSpcdd = new SpdPcdDefs(spd);\r
+            SpdPcdDefs frmSpcdd = new SpdPcdDefs(spd, this);\r
             getJDesktopPanePackage().add(frmSpcdd, 1);\r
             break;\r
         }\r
@@ -2821,65 +2853,69 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             getJDesktopPaneModule().add(frmMsaHeader, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_LIBRARYCLASSDEFINITIONS:\r
-            ModuleLibraryClassDefinitions frmMlcd = new ModuleLibraryClassDefinitions(msa);\r
+            ModuleLibraryClassDefinitions frmMlcd = new ModuleLibraryClassDefinitions(msa, this);\r
             getJDesktopPaneModule().add(frmMlcd, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_PACKAGEDEPENDENCIES:\r
-            ModulePackageDependencies frmMpd = new ModulePackageDependencies(msa);\r
+            ModulePackageDependencies frmMpd = new ModulePackageDependencies(msa, this);\r
             getJDesktopPaneModule().add(frmMpd, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_SOURCEFILES:\r
-            ModuleSourceFiles frmMsf = new ModuleSourceFiles(msa);\r
+            ModuleSourceFiles frmMsf = new ModuleSourceFiles(msa, this);\r
             getJDesktopPaneModule().add(frmMsf, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_PROTOCOLS:\r
-            ModuleProtocols frmMp = new ModuleProtocols(msa);\r
+            ModuleProtocols frmMp = new ModuleProtocols(msa, this);\r
             getJDesktopPaneModule().add(frmMp, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_EVENTS:\r
-            ModuleEvents frmMe = new ModuleEvents(msa);\r
+            ModuleEvents frmMe = new ModuleEvents(msa, this);\r
             getJDesktopPaneModule().add(frmMe, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_HOBS:\r
-            ModuleHobs frmMh = new ModuleHobs(msa);\r
+            ModuleHobs frmMh = new ModuleHobs(msa, this);\r
             getJDesktopPaneModule().add(frmMh, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_PPIS:\r
-            ModulePpis frmMpp = new ModulePpis(msa);\r
+            ModulePpis frmMpp = new ModulePpis(msa, this);\r
             getJDesktopPaneModule().add(frmMpp, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_VARIABLES:\r
-            ModuleVariables frmMv = new ModuleVariables(msa);\r
+            ModuleVariables frmMv = new ModuleVariables(msa, this);\r
             getJDesktopPaneModule().add(frmMv, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_BOOTMODES:\r
-            ModuleBootModes frmMbm = new ModuleBootModes(msa);\r
+            ModuleBootModes frmMbm = new ModuleBootModes(msa, this);\r
             getJDesktopPaneModule().add(frmMbm, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_SYSTEMTABLES:\r
-            ModuleSystemTables frmMst = new ModuleSystemTables(msa);\r
+            ModuleSystemTables frmMst = new ModuleSystemTables(msa, this);\r
             getJDesktopPaneModule().add(frmMst, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_DATAHUBS:\r
-            ModuleDataHubs frmMdh = new ModuleDataHubs(msa);\r
+            ModuleDataHubs frmMdh = new ModuleDataHubs(msa, this);\r
             getJDesktopPaneModule().add(frmMdh, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_HIIPACKAGES:\r
-            ModuleHiiPackages frmMf = new ModuleHiiPackages(msa);\r
+            ModuleHiiPackages frmMf = new ModuleHiiPackages(msa, this);\r
             getJDesktopPaneModule().add(frmMf, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_GUIDS:\r
-            ModuleGuids frmGuid = new ModuleGuids(msa);\r
+            ModuleGuids frmGuid = new ModuleGuids(msa, this);\r
             getJDesktopPaneModule().add(frmGuid, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_EXTERNS:\r
-            ModuleExterns frmMex = new ModuleExterns(msa);\r
+            ModuleExterns frmMex = new ModuleExterns(msa, this);\r
             getJDesktopPaneModule().add(frmMex, 1);\r
             break;\r
         case IDefaultMutableTreeNode.MSA_PCDS:\r
-            ModulePCDs frmPcd = new ModulePCDs(msa);\r
+            ModulePCDs frmPcd = new ModulePCDs(msa, this);\r
             getJDesktopPaneModule().add(frmPcd, 1);\r
             break;\r
+        case IDefaultMutableTreeNode.MSA_BUILDOPTIONS:\r
+            ModuleBuildOptions frmMbo = new ModuleBuildOptions(msa, this);\r
+            getJDesktopPaneModule().add(frmMbo, 1);\r
+            break;\r
         }\r
         this.jTabbedPaneEditor.setSelectedIndex(0);\r
         resizeDesktopPanel();\r
@@ -3085,7 +3121,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 if (!GlobalData.openingModuleList.getModuleSaved(currentOpeningModuleIndex)) {\r
                     int result = showSaveDialog();\r
                     if (result == JOptionPane.YES_OPTION) {\r
-                        this.saveAll();\r
+                        this.save();\r
                     }\r
                     if (result == JOptionPane.NO_OPTION) {\r
                         // Do nothing\r
@@ -3107,7 +3143,10 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                     iTree.removeNodeChildrenByPath(item);\r
                 }\r
 \r
+                GlobalData.openingModuleList.reload(this.currentOpeningModuleIndex);\r
                 GlobalData.openingModuleList.setModuleOpen(this.currentOpeningModuleIndex, false);\r
+                GlobalData.openingModuleList.setModuleSaved(this.currentOpeningModuleIndex, true);\r
+                \r
                 this.cleanDesktopPaneModule();\r
                 this.currentOpeningModuleIndex = -1;\r
             }\r
@@ -3120,7 +3159,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 if (!GlobalData.openingPackageList.getPackageSaved(currentOpeningPackageIndex)) {\r
                     int result = showSaveDialog();\r
                     if (result == JOptionPane.YES_OPTION) {\r
-                        this.saveAll();\r
+                        this.save();\r
                     }\r
                     if (result == JOptionPane.NO_OPTION) {\r
                         // Do nothing\r
@@ -3142,7 +3181,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                     iTree.removeNodeChildrenByPath(item);\r
                 }\r
 \r
+                GlobalData.openingPackageList.reload(this.currentOpeningPackageIndex);\r
                 GlobalData.openingPackageList.setPackageOpen(this.currentOpeningPackageIndex, false);\r
+                GlobalData.openingPackageList.setPackageSaved(this.currentOpeningPackageIndex, true);\r
                 this.cleanDesktopPanePackage();\r
                 this.currentOpeningPackageIndex = -1;\r
             }\r
@@ -3155,7 +3196,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 if (!GlobalData.openingPlatformList.getPlatformSaved(currentOpeningPlatformIndex)) {\r
                     int result = showSaveDialog();\r
                     if (result == JOptionPane.YES_OPTION) {\r
-                        this.saveAll();\r
+                        this.save();\r
                     }\r
                     if (result == JOptionPane.NO_OPTION) {\r
                         // Do nothing\r
@@ -3177,7 +3218,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                     iTree.removeNodeChildrenByPath(item);\r
                 }\r
 \r
+                GlobalData.openingPlatformList.reload(this.currentOpeningPlatformIndex);\r
                 GlobalData.openingPlatformList.setPlatformOpen(this.currentOpeningPlatformIndex, false);\r
+                GlobalData.openingPlatformList.setPlatformSaved(this.currentOpeningPlatformIndex, true);\r
                 this.cleanDesktopPanePlatform();\r
                 this.currentOpeningPlatformIndex = -1;\r
             }\r
@@ -3189,8 +3232,8 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      Close all opening files and clean all showing internal frame\r
      \r
      **/\r
-    private void closeAll() {\r
-        int result = -1;\r
+    private int closeAll() {\r
+        int result = JOptionPane.NO_OPTION;\r
         if (!GlobalData.openingModuleList.isSaved() || !GlobalData.openingPackageList.isSaved()\r
             || !GlobalData.openingPlatformList.isSaved()) {\r
             result = showSaveDialog();\r
@@ -3203,13 +3246,15 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             // Do nothing\r
             //\r
         }\r
-        if (result == JOptionPane.CANCEL_OPTION) {\r
-            return;\r
+        if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) {\r
+            return -1;\r
         }\r
         this.cleanDesktopPane();\r
         GlobalData.openingModuleList.closeAll();\r
         GlobalData.openingPackageList.closeAll();\r
         GlobalData.openingPlatformList.closeAll();\r
+\r
+        return 0;\r
     }\r
 \r
     /**\r
@@ -3282,18 +3327,16 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
      \r
      **/\r
     private void exit() {\r
-        int result = -1;\r
+        int result = JOptionPane.NO_OPTION;\r
         if (!GlobalData.openingModuleList.isSaved() || !GlobalData.openingPackageList.isSaved()\r
             || !GlobalData.openingPlatformList.isSaved()) {\r
             result = showSaveDialog();\r
         }\r
         if (result == JOptionPane.YES_OPTION) {\r
             this.saveAll();\r
-        }\r
-        if (result == JOptionPane.NO_OPTION) {\r
+        } else if (result == JOptionPane.NO_OPTION) {\r
             // Do nothing\r
-        }\r
-        if (result == JOptionPane.CANCEL_OPTION) {\r
+        } else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) {\r
             return;\r
         }\r
         this.dispose();\r
@@ -3374,6 +3417,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             // Refrash the tree\r
             //\r
             this.refresh();\r
+            this.makeEmptyTree();\r
         }\r
         sw.dispose();\r
     }\r
@@ -3387,7 +3431,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         int result = cso.showDialog();\r
         if (result == DataType.RETURN_TYPE_OK) {\r
             String strReturn = "Far Creation Completed!";\r
-            JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+            JOptionPane.showConfirmDialog(this, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
                                           JOptionPane.INFORMATION_MESSAGE);\r
         }\r
         cso.dispose();\r
@@ -3402,7 +3446,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         int result = iso.showDialog();\r
         if (result == DataType.RETURN_TYPE_OK) {\r
             String strReturn = "<html>Far Installalation completed!<br>Refreshing the WORKSPACE!</html>";\r
-            JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+            JOptionPane.showConfirmDialog(this, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
                                           JOptionPane.INFORMATION_MESSAGE);\r
             this.closeAll();\r
             this.refresh();\r
@@ -3420,7 +3464,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         int result = dso.showDialog();\r
         if (result == DataType.RETURN_TYPE_OK) {\r
             String strReturn = "<html>Far Deletion completed!<br>Refreshing the WORKSPACE!</html>";\r
-            JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+            JOptionPane.showConfirmDialog(this, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
                                           JOptionPane.INFORMATION_MESSAGE);\r
             this.closeAll();\r
             this.refresh();\r
@@ -3438,7 +3482,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         int result = uso.showDialog();\r
         if (result == DataType.RETURN_TYPE_OK) {\r
             String strReturn = "<html>Far Update completed!<br>Refreshing the WORKSPACE!</html>";\r
-            JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
+            JOptionPane.showConfirmDialog(this, strReturn, "Done", JOptionPane.DEFAULT_OPTION,\r
                                           JOptionPane.INFORMATION_MESSAGE);\r
             this.closeAll();\r
             this.refresh();\r
@@ -3555,9 +3599,32 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             //\r
             // Enable close/close all if some files are opened\r
             //\r
-            jMenuItemFileClose.setEnabled(GlobalData.openingModuleList.isOpen()\r
-                                          || GlobalData.openingPackageList.isOpen()\r
-                                          || GlobalData.openingPlatformList.isOpen());\r
+            switch (this.jTabbedPaneEditor.getSelectedIndex()) {\r
+            case 0:\r
+                jMenuItemFileClose\r
+                                  .setEnabled(GlobalData.openingModuleList\r
+                                                                          .getModuleOpen(this.currentOpeningModuleIndex));\r
+                jMenuItemFileSave\r
+                                 .setEnabled(!GlobalData.openingModuleList\r
+                                                                          .getModuleSaved(this.currentOpeningModuleIndex));\r
+                break;\r
+            case 1:\r
+                jMenuItemFileClose\r
+                                  .setEnabled(GlobalData.openingPackageList\r
+                                                                           .getPackageOpen(this.currentOpeningPackageIndex));\r
+                jMenuItemFileSave\r
+                                 .setEnabled(!GlobalData.openingPackageList\r
+                                                                           .getPackageSaved(this.currentOpeningPackageIndex));\r
+                break;\r
+            case 2:\r
+                jMenuItemFileClose\r
+                                  .setEnabled(GlobalData.openingPlatformList\r
+                                                                            .getPlatformOpen(this.currentOpeningPlatformIndex));\r
+                jMenuItemFileSave\r
+                                 .setEnabled(!GlobalData.openingPlatformList\r
+                                                                            .getPlatformSaved(this.currentOpeningPlatformIndex));\r
+                break;\r
+            }\r
             jMenuItemFileCloseAll.setEnabled(GlobalData.openingModuleList.isOpen()\r
                                              || GlobalData.openingPackageList.isOpen()\r
                                              || GlobalData.openingPlatformList.isOpen());\r
@@ -3565,9 +3632,6 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             //\r
             // Enable save/save all if some files are changed\r
             //\r
-            jMenuItemFileSave.setEnabled(!GlobalData.openingModuleList.isSaved()\r
-                                         || !GlobalData.openingPackageList.isSaved()\r
-                                         || !GlobalData.openingPlatformList.isSaved());\r
             jMenuItemFileSaveAll.setEnabled(!GlobalData.openingModuleList.isSaved()\r
                                             || !GlobalData.openingPackageList.isSaved()\r
                                             || !GlobalData.openingPlatformList.isSaved());\r
@@ -3665,7 +3729,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 return;\r
             }\r
 \r
-            JOptionPane.showConfirmDialog(null, "File is created", "Generate guids.xref", JOptionPane.DEFAULT_OPTION,\r
+            JOptionPane.showConfirmDialog(this, "File is created", "Generate guids.xref", JOptionPane.DEFAULT_OPTION,\r
                                           JOptionPane.INFORMATION_MESSAGE);\r
         }\r
     }\r
@@ -3681,11 +3745,15 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         case Workspace.WORKSPACE_NOT_DEFINED:\r
             JOptionPane\r
                        .showConfirmDialog(\r
-                                          null,\r
-                                          "WORKSPACE Environment Variable Is Not Defined, Please select a valid WORKSPACE directory. " +\r
-                                          DataType.LINE_SEPARATOR + DataType.LINE_SEPARATOR + "NOTICE:" +\r
-                                          DataType.LINE_SEPARATOR + "This does not change the System Environment Variable." +\r
-                                          DataType.LINE_SEPARATOR + "It only applies to where the Wizard will manage modification and file creations.",\r
+                                          this,\r
+                                          "WORKSPACE Environment Variable Is Not Defined, Please select a valid WORKSPACE directory. "\r
+                                                          + DataType.LINE_SEPARATOR\r
+                                                          + DataType.LINE_SEPARATOR\r
+                                                          + "NOTICE:"\r
+                                                          + DataType.LINE_SEPARATOR\r
+                                                          + "This does not change the System Environment Variable."\r
+                                                          + DataType.LINE_SEPARATOR\r
+                                                          + "It only applies to where the Wizard will manage modification and file creations.",\r
                                           "Error", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);\r
             SwitchWorkspace sw = new SwitchWorkspace(this, true);\r
             int result = sw.showDialog();\r
@@ -3697,20 +3765,25 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 break;\r
             }\r
         case Workspace.WORKSPACE_NOT_EXIST:\r
-            JOptionPane.showConfirmDialog(null, "Defined WORKSPACE Is Not Existed", "Error",\r
+            JOptionPane.showConfirmDialog(this, "Defined WORKSPACE Is Not Existed", "Error",\r
                                           JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);\r
             this.dispose();\r
             System.exit(0);\r
         case Workspace.WORKSPACE_NOT_DIRECTORY:\r
-            JOptionPane.showConfirmDialog(null, "Defined WORKSPACE Is Not A Directory", "Error",\r
+            JOptionPane.showConfirmDialog(this, "Defined WORKSPACE Is Not A Directory", "Error",\r
                                           JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);\r
             this.dispose();\r
             System.exit(0);\r
         case Workspace.WORKSPACE_NOT_VALID:\r
-            JOptionPane.showConfirmDialog(null, "WORKSPACE Environment Variable Is Not Valid", "Error",\r
+            JOptionPane.showConfirmDialog(this, "WORKSPACE Environment Variable Is Not Valid", "Error",\r
                                           JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);\r
             this.dispose();\r
             System.exit(0);\r
+        case Workspace.WORKSPACE_NO_TARGET_FILE:\r
+            JOptionPane.showConfirmDialog(this, "Target.txt File Is Not Existed", "Error", JOptionPane.DEFAULT_OPTION,\r
+                                          JOptionPane.ERROR_MESSAGE);\r
+            this.dispose();\r
+            System.exit(0);\r
         }\r
     }\r
 }\r