]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java
1. Fix EDKT314 Display module source/binary in a radio box
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / FrameworkWizardUI.java
index 0d3ddb50adc078c6bcab37b15d30adf1287a8722..0e0c54c345dcb3e7f1656aeaea43b3a3a26f72c7 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
@@ -306,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
@@ -431,7 +436,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
             jMenuFile.add(getJMenuItemFileSaveAs());\r
             jMenuFile.add(getJMenuItemFileSaveAll());\r
             jMenuFile.addSeparator();\r
-            \r
+\r
             jMenuFile.add(getJMenuItemFileRefresh());\r
             jMenuFile.addSeparator();\r
 \r
@@ -784,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
@@ -1758,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
@@ -1884,7 +1907,7 @@ public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListe
         if (arg0.getSource() == this.jMenuItemFileSaveAll) {\r
             this.saveAll();\r
         }\r
-        \r
+\r
         if (arg0.getSource() == this.jMenuItemFileRefresh) {\r
             this.closeAll();\r
             this.refresh();\r
@@ -1951,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
@@ -2625,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
@@ -2636,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
@@ -3585,4 +3618,57 @@ 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.showOpenDialog(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
+            }\r
+        }\r
+    }\r
 }\r