]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
1. Replace openDialog with saveDialog when generating guids.xref file
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / FrameworkWizardUI.java
index b159fe4d628810120f68d57ded57f60738f9fd22..5efa81b25d2a1c2552161f353e8ae17dc1922b15 100644 (file)
@@ -22,6 +22,9 @@ import java.awt.event.KeyListener;
 import java.awt.event.MouseEvent;\r
 import java.awt.event.MouseListener;\r
 import java.awt.event.WindowEvent;\r
+import java.io.BufferedWriter;\r
+import java.io.File;\r
+import java.io.FileWriter;\r
 import java.io.IOException;\r
 import java.util.Iterator;\r
 import java.util.Set;\r
@@ -149,6 +152,8 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
 \r
     private JMenuItem jMenuItemFileNew = null;\r
 \r
+    private JMenuItem jMenuItemFileRefresh = null;\r
+\r
     private JMenuItem jMenuItemFileSaveAs = null;\r
 \r
     private JMenuItem jMenuItemFileExit = null;\r
@@ -304,6 +309,8 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
     ///\r
     private static FrameworkWizardUI fwui = null;\r
 \r
+    private JMenuItem jMenuItemToolsGenerateGuidsXref = null;\r
+\r
     /**\r
      If the class hasn't an instnace, new one.\r
      \r
@@ -430,6 +437,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             jMenuFile.add(getJMenuItemFileSaveAll());\r
             jMenuFile.addSeparator();\r
 \r
+            jMenuFile.add(getJMenuItemFileRefresh());\r
+            jMenuFile.addSeparator();\r
+\r
             jMenuFile.add(getJMenuItemFilePageSetup());\r
             jMenuFile.add(getJMenuItemFilePrint());\r
             jMenuFile.add(getJMenuItemFileImport());\r
@@ -458,6 +468,23 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         return jMenuItemFileSaveAs;\r
     }\r
 \r
+    /**\r
+     This method initializes jMenuItemFileRefresh \r
+     \r
+     @return javax.swing.JMenuItem jMenuItemFileRefresh\r
+     \r
+     **/\r
+    private JMenuItem getJMenuItemFileRefresh() {\r
+        if (jMenuItemFileRefresh == null) {\r
+            jMenuItemFileRefresh = new JMenuItem();\r
+            jMenuItemFileRefresh.setText("Refresh");\r
+            jMenuItemFileRefresh.setMnemonic('R');\r
+            jMenuItemFileRefresh.addActionListener(this);\r
+            jMenuItemFileRefresh.setVisible(true);\r
+        }\r
+        return jMenuItemFileRefresh;\r
+    }\r
+\r
     /**\r
      This method initializes jMenuItemModuleExit \r
      \r
@@ -633,6 +660,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             //\r
             jMenuHelp = new JMenu();\r
             jMenuHelp.setText("Help");\r
+            jMenuHelp.setMnemonic('H');\r
 \r
             //\r
             // Add sub menu items\r
@@ -656,6 +684,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         if (jMenuItemHelpAbout == null) {\r
             jMenuItemHelpAbout = new JMenuItem();\r
             jMenuItemHelpAbout.setText("About...");\r
+            jMenuItemHelpAbout.setMnemonic('A');\r
             jMenuItemHelpAbout.addActionListener(this);\r
         }\r
         return jMenuItemHelpAbout;\r
@@ -760,6 +789,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
 \r
             jMenuTools.add(getJMenuItemToolsToolChainConfiguration());\r
             jMenuTools.add(getJMenuItemToolsBuildPreferences());\r
+            jMenuTools.addSeparator();\r
+\r
+            jMenuTools.add(getJMenuItemToolsGenerateGuidsXref());\r
         }\r
         return jMenuTools;\r
     }\r
@@ -882,6 +914,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         if (jMenuItemFileCloseAll == null) {\r
             jMenuItemFileCloseAll = new JMenuItem();\r
             jMenuItemFileCloseAll.setText("Close All");\r
+            jMenuItemFileCloseAll.setMnemonic('A');\r
             jMenuItemFileCloseAll.setEnabled(true);\r
             jMenuItemFileCloseAll.addActionListener(this);\r
         }\r
@@ -1733,6 +1766,21 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         return jMenuItemEditFindLibraryInstance;\r
     }\r
 \r
+    /**\r
+     * This method initializes jMenuItemProjectGenerateGuidsXref       \r
+     *         \r
+     * @return javax.swing.JMenuItem   \r
+     */\r
+    private JMenuItem getJMenuItemToolsGenerateGuidsXref() {\r
+        if (jMenuItemToolsGenerateGuidsXref == null) {\r
+            jMenuItemToolsGenerateGuidsXref = new JMenuItem();\r
+            jMenuItemToolsGenerateGuidsXref.setText("Generate guids.xref");\r
+            jMenuItemToolsGenerateGuidsXref.setMnemonic('G');\r
+            jMenuItemToolsGenerateGuidsXref.addActionListener(this);\r
+        }\r
+        return jMenuItemToolsGenerateGuidsXref;\r
+    }\r
+\r
     /* (non-Javadoc)\r
      * @see org.tianocore.packaging.common.ui.IFrame#main(java.lang.String[])\r
      *\r
@@ -1860,6 +1908,12 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             this.saveAll();\r
         }\r
 \r
+        if (arg0.getSource() == this.jMenuItemFileRefresh) {\r
+            this.closeAll();\r
+            this.refresh();\r
+            this.makeEmptyTree();\r
+        }\r
+\r
         if (arg0.getSource() == this.jMenuItemFileExit) {\r
             this.exit();\r
         }\r
@@ -1920,6 +1974,10 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             this.setupToolChainConfiguration();\r
         }\r
 \r
+        if (arg0.getSource() == this.jMenuItemToolsGenerateGuidsXref) {\r
+            this.generateGuidsXref();\r
+        }\r
+\r
         if (arg0.getSource() == this.jMenuItemHelpAbout) {\r
             About a = new About(this, true);\r
             int result = a.showDialog();\r
@@ -2594,9 +2652,12 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         IDefaultMutableTreeNode belongNode = null;\r
 \r
         try {\r
-            id = iTree.getSelectNode().getId();\r
-            intCategory = iTree.getSelectCategory();\r
-            belongNode = iTree.getSelectNode().getBelongNode();\r
+            //\r
+            // Get selected tree node\r
+            //\r
+            if (iTree.getSelectNode() != null) {\r
+                id = iTree.getSelectNode().getId();\r
+            }\r
 \r
             //\r
             // If id is null, return directly\r
@@ -2605,6 +2666,9 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
                 return;\r
             }\r
 \r
+            intCategory = iTree.getSelectCategory();\r
+            belongNode = iTree.getSelectNode().getBelongNode();\r
+\r
             //              \r
             // If the node is not opened yet\r
             // Insert top level elements first\r
@@ -3309,13 +3373,13 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             //\r
             // Reinit whole window\r
             //\r
-            closeAll();\r
+            this.closeAll();\r
             this.setTitle(DataType.PROJECT_NAME + " " + DataType.PROJECT_VERSION + " " + "- ["\r
                           + Workspace.getCurrentWorkspace() + "]");\r
             //\r
-            // Reinit Global Data\r
+            // Refrash the tree\r
             //\r
-            GlobalData.init();\r
+            this.refresh();\r
         }\r
         sw.dispose();\r
     }\r
@@ -3467,8 +3531,8 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             //\r
             IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(\r
                                                                        GlobalData.vPlatformList.lastElement().getName(),\r
-                                                                       IDefaultMutableTreeNode.PLATFORM,\r
-                                                                       false, GlobalData.vPlatformList.lastElement(),\r
+                                                                       IDefaultMutableTreeNode.PLATFORM, false,\r
+                                                                       GlobalData.vPlatformList.lastElement(),\r
                                                                        this.dmtnPlatformDescription);\r
             iTree.addNode(this.dmtnPlatformDescription, node);\r
         }\r
@@ -3554,4 +3618,61 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             }\r
         }\r
     }\r
+\r
+    /**\r
+     Search whole workspace and find all module's name and guid, and save them to a file\r
+     \r
+     **/\r
+    private void generateGuidsXref() {\r
+        //\r
+        // Init File Chooser\r
+        //\r
+        JFileChooser fc = new JFileChooser();\r
+        fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+        fc.setSelectedFile(new File(Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+                                    + DataType.GUIDS_XREF_FILE_NAME));\r
+        fc.setMultiSelectionEnabled(false);\r
+\r
+        //\r
+        // Get guids xref and save to file\r
+        //\r
+        int result = fc.showSaveDialog(new JPanel());\r
+        if (result == JFileChooser.APPROVE_OPTION) {\r
+            Vector<String> v = wt.getAllModuleGuidXref();\r
+            if (v.size() < 1) {\r
+                Log.wrn("No guids found!!!");\r
+                return;\r
+            }\r
+            File f = fc.getSelectedFile();\r
+            if (!f.exists()) {\r
+                try {\r
+                    f.createNewFile();\r
+                } catch (IOException e) {\r
+                    Log.wrn("Fail to create file", e.getMessage());\r
+                    Log.err("Fail to create file when generating guids.xref", e.getMessage());\r
+                }\r
+            }\r
+            FileWriter fw = null;\r
+            BufferedWriter bw = null;\r
+            try {\r
+                fw = new FileWriter(f);\r
+                bw = new BufferedWriter(fw);\r
+                for (int index = 0; index < v.size(); index++) {\r
+                    bw.write(v.get(index));\r
+                    bw.newLine();\r
+                }\r
+                bw.flush();\r
+                fw.flush();\r
+                bw.close();\r
+                fw.close();\r
+            } catch (IOException e) {\r
+                Log.wrn("Fail to write file", e.getMessage());\r
+                Log.err("Fail to write file when generating guids.xref", e.getMessage());\r
+                return;\r
+            }\r
+\r
+            JOptionPane.showConfirmDialog(null, "File is created", "Generate guids.xref", JOptionPane.DEFAULT_OPTION,\r
+                                          JOptionPane.INFORMATION_MESSAGE);\r
+        }\r
+    }\r
 }\r