X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FFrameworkWizard%2Fsrc%2Forg%2Ftianocore%2Fframeworkwizard%2FFrameworkWizardUI.java;h=5efa81b25d2a1c2552161f353e8ae17dc1922b15;hp=c05c9eeecbe2416f682d1bb09b4b267d52200439;hb=0e8d8bc75d4b513716d22e3e6d57a9a811f48091;hpb=fe1543a5eb094c7760746614d7bdbf1bf7ceae15 diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java index c05c9eeecb..5efa81b25d 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/FrameworkWizardUI.java @@ -17,10 +17,17 @@ package org.tianocore.frameworkwizard; import java.awt.event.ActionEvent; import java.awt.event.ComponentEvent; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowEvent; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; +import java.util.Iterator; +import java.util.Set; import java.util.Vector; import javax.swing.JButton; @@ -41,6 +48,7 @@ import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.TreePath; import org.apache.xmlbeans.XmlException; import org.tianocore.PackageSurfaceAreaDocument; @@ -106,7 +114,8 @@ import org.tianocore.frameworkwizard.toolchain.Preferences; It extends IFrame implements MouseListener, TreeSelectionListener, ComponentListener and MenuListener **/ -public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSelectionListener, MenuListener { +public class FrameworkWizardUI extends IFrame implements KeyListener, MouseListener, TreeSelectionListener, + MenuListener { /// /// Define class Serial Version UID /// @@ -143,6 +152,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele private JMenuItem jMenuItemFileNew = null; + private JMenuItem jMenuItemFileRefresh = null; + private JMenuItem jMenuItemFileSaveAs = null; private JMenuItem jMenuItemFileExit = null; @@ -298,6 +309,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele /// private static FrameworkWizardUI fwui = null; + private JMenuItem jMenuItemToolsGenerateGuidsXref = null; + /** If the class hasn't an instnace, new one. @@ -424,6 +437,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele jMenuFile.add(getJMenuItemFileSaveAll()); jMenuFile.addSeparator(); + jMenuFile.add(getJMenuItemFileRefresh()); + jMenuFile.addSeparator(); + jMenuFile.add(getJMenuItemFilePageSetup()); jMenuFile.add(getJMenuItemFilePrint()); jMenuFile.add(getJMenuItemFileImport()); @@ -452,6 +468,23 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele return jMenuItemFileSaveAs; } + /** + This method initializes jMenuItemFileRefresh + + @return javax.swing.JMenuItem jMenuItemFileRefresh + + **/ + private JMenuItem getJMenuItemFileRefresh() { + if (jMenuItemFileRefresh == null) { + jMenuItemFileRefresh = new JMenuItem(); + jMenuItemFileRefresh.setText("Refresh"); + jMenuItemFileRefresh.setMnemonic('R'); + jMenuItemFileRefresh.addActionListener(this); + jMenuItemFileRefresh.setVisible(true); + } + return jMenuItemFileRefresh; + } + /** This method initializes jMenuItemModuleExit @@ -627,6 +660,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // jMenuHelp = new JMenu(); jMenuHelp.setText("Help"); + jMenuHelp.setMnemonic('H'); // // Add sub menu items @@ -650,6 +684,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele if (jMenuItemHelpAbout == null) { jMenuItemHelpAbout = new JMenuItem(); jMenuItemHelpAbout.setText("About..."); + jMenuItemHelpAbout.setMnemonic('A'); jMenuItemHelpAbout.addActionListener(this); } return jMenuItemHelpAbout; @@ -754,6 +789,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele jMenuTools.add(getJMenuItemToolsToolChainConfiguration()); jMenuTools.add(getJMenuItemToolsBuildPreferences()); + jMenuTools.addSeparator(); + + jMenuTools.add(getJMenuItemToolsGenerateGuidsXref()); } return jMenuTools; } @@ -876,6 +914,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele if (jMenuItemFileCloseAll == null) { jMenuItemFileCloseAll = new JMenuItem(); jMenuItemFileCloseAll.setText("Close All"); + jMenuItemFileCloseAll.setMnemonic('A'); jMenuItemFileCloseAll.setEnabled(true); jMenuItemFileCloseAll.addActionListener(this); } @@ -1727,6 +1766,21 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele return jMenuItemEditFindLibraryInstance; } + /** + * This method initializes jMenuItemProjectGenerateGuidsXref + * + * @return javax.swing.JMenuItem + */ + private JMenuItem getJMenuItemToolsGenerateGuidsXref() { + if (jMenuItemToolsGenerateGuidsXref == null) { + jMenuItemToolsGenerateGuidsXref = new JMenuItem(); + jMenuItemToolsGenerateGuidsXref.setText("Generate guids.xref"); + jMenuItemToolsGenerateGuidsXref.setMnemonic('G'); + jMenuItemToolsGenerateGuidsXref.addActionListener(this); + } + return jMenuItemToolsGenerateGuidsXref; + } + /* (non-Javadoc) * @see org.tianocore.packaging.common.ui.IFrame#main(java.lang.String[]) * @@ -1753,6 +1807,12 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele **/ private void init() { + // + // Show splash screen + // + SplashScreen ss = new SplashScreen(); + ss.setVisible(true); + // // Set current workspace and check // Check if exists WORKSPACE @@ -1771,6 +1831,11 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // GlobalData.init(); + // + // Close splash screen + // + ss.dispose(); + // // Init the frame // @@ -1828,6 +1893,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele if (arg0.getSource() == this.jMenuItemFileCloseAll) { this.closeAll(); + this.makeEmptyTree(); } if (arg0.getSource() == this.jMenuItemFileSave) { @@ -1842,6 +1908,12 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele this.saveAll(); } + if (arg0.getSource() == this.jMenuItemFileRefresh) { + this.closeAll(); + this.refresh(); + this.makeEmptyTree(); + } + if (arg0.getSource() == this.jMenuItemFileExit) { this.exit(); } @@ -1902,6 +1974,10 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele this.setupToolChainConfiguration(); } + if (arg0.getSource() == this.jMenuItemToolsGenerateGuidsXref) { + this.generateGuidsXref(); + } + if (arg0.getSource() == this.jMenuItemHelpAbout) { About a = new About(this, true); int result = a.showDialog(); @@ -1919,12 +1995,13 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Make root // - dmtnRoot = new IDefaultMutableTreeNode("WORKSPACE", IDefaultMutableTreeNode.WORKSPACE, -1); + dmtnRoot = new IDefaultMutableTreeNode("WORKSPACE", IDefaultMutableTreeNode.WORKSPACE, false, null, null); // // Make Module Description // - dmtnModuleDescription = new IDefaultMutableTreeNode("Modules", IDefaultMutableTreeNode.MODULE, -1); + dmtnModuleDescription = new IDefaultMutableTreeNode("Modules", IDefaultMutableTreeNode.MODULE_DESCRIPTION, + false, null, dmtnRoot); // // First add package @@ -1937,13 +2014,16 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele dmtnModulePackage = new IDefaultMutableTreeNode(GlobalData.vPackageList.elementAt(index).getName(), IDefaultMutableTreeNode.MODULE_PACKAGE, false, - GlobalData.vPackageList.elementAt(index)); + GlobalData.vPackageList.elementAt(index), + this.dmtnModuleDescription); dmtnModulePackageLibrary = new IDefaultMutableTreeNode("Library", IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY, - false, GlobalData.vPackageList.elementAt(index)); + false, GlobalData.vPackageList.elementAt(index), + this.dmtnModuleDescription); dmtnModulePackageModule = new IDefaultMutableTreeNode("Module", IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE, - false, GlobalData.vPackageList.elementAt(index)); + false, GlobalData.vPackageList.elementAt(index), + this.dmtnModuleDescription); // // And then add each module in its package // @@ -1952,11 +2032,13 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele if (vModule.get(indexJ).isLibrary()) { dmtnModulePackageLibrary.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), IDefaultMutableTreeNode.MODULE, false, - vModule.get(indexJ))); + vModule.get(indexJ), + this.dmtnModuleDescription)); } else { dmtnModulePackageModule.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), IDefaultMutableTreeNode.MODULE, false, - vModule.get(indexJ))); + vModule.get(indexJ), + this.dmtnModuleDescription)); } } if (dmtnModulePackageModule.getChildCount() > 0) { @@ -1973,26 +2055,31 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Make Package Description // - dmtnPackageDescription = new IDefaultMutableTreeNode("Packages", IDefaultMutableTreeNode.PACKAGE, -1); + dmtnPackageDescription = new IDefaultMutableTreeNode("Packages", IDefaultMutableTreeNode.PACKAGE_DESCRIPTION, + false, null, this.dmtnRoot); if (GlobalData.vPackageList.size() > 0) { for (int index = 0; index < GlobalData.vPackageList.size(); index++) { dmtnPackageDescription.add(new IDefaultMutableTreeNode(GlobalData.vPackageList.elementAt(index) .getName(), IDefaultMutableTreeNode.PACKAGE, false, - GlobalData.vPackageList.elementAt(index))); + GlobalData.vPackageList.elementAt(index), + this.dmtnPackageDescription)); } } // // Make Platform Description // - dmtnPlatformDescription = new IDefaultMutableTreeNode("Platforms", IDefaultMutableTreeNode.PLATFORM, -1); + dmtnPlatformDescription = new IDefaultMutableTreeNode("Platforms", + IDefaultMutableTreeNode.PLATFORM_DESCRIPTION, false, + null, this.dmtnRoot); if (GlobalData.vPlatformList.size() > 0) { for (int index = 0; index < GlobalData.vPlatformList.size(); index++) { dmtnPlatformDescription.add(new IDefaultMutableTreeNode(GlobalData.vPlatformList.elementAt(index) .getName(), IDefaultMutableTreeNode.PLATFORM, false, - GlobalData.vPlatformList.elementAt(index))); + GlobalData.vPlatformList.elementAt(index), + this.dmtnPlatformDescription)); } } @@ -2004,6 +2091,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele dmtnRoot.add(dmtnPlatformDescription); iTree = new ITree(dmtnRoot); iTree.addMouseListener(this); + iTree.addKeyListener(this); jScrollPaneTree.setViewportView(iTree); } @@ -2024,10 +2112,6 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele * */ public void mouseClicked(MouseEvent arg0) { - if (arg0.getButton() == MouseEvent.BUTTON1) { - } - if (arg0.getButton() == MouseEvent.BUTTON3) { - } // // When double click // @@ -2125,8 +2209,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Add new MsaHeader node to the tree // - IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(mid.getName(), IDefaultMutableTreeNode.MODULE, true, - mid); + IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(mid.getName(), IDefaultMutableTreeNode.MODULE, + false, mid, this.dmtnModuleDescription); // // First find the module belongs to which package // @@ -2160,7 +2244,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // if (!hasModule) { parentModuleNode = new IDefaultMutableTreeNode("Module", IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE, - false, mid.getPackageId()); + false, mid.getPackageId(), this.dmtnModuleDescription); iTree.addNode(packageNode, parentModuleNode); } @@ -2177,7 +2261,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele if (!hasLibrary) { parentLibraryNode = new IDefaultMutableTreeNode("Library", IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY, false, - mid.getPackageId()); + mid.getPackageId(), this.dmtnModuleDescription); iTree.addNode(packageNode, parentLibraryNode); } @@ -2191,7 +2275,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele @param path input file path **/ - private void openModule(String path) { + private void openModule(String path, IDefaultMutableTreeNode belongNode) { ModuleIdentification id = GlobalData.openingModuleList.getIdByPath(path); if (id == null) { // @@ -2204,29 +2288,33 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Make the node selected // - iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(this.dmtnModuleDescription, id, - IDefaultMutableTreeNode.MODULE))); + iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(belongNode, id, IDefaultMutableTreeNode.MODULE))); + // // Update opening Module list information // - if (!GlobalData.openingModuleList.getModuleOpen(id)) { + if (!iTree.getSelectNode().isOpening()) { // // Insert sub node of module // - insertModuleTreeNode(id); + insertModuleTreeNode(id, belongNode); iTree.getSelectNode().setOpening(true); // // Update opening module list // GlobalData.openingModuleList.setModuleOpen(id, true); - GlobalData.openingModuleList.setTreePathById(id, iTree.getSelectionPath()); + Set temp = GlobalData.openingModuleList.getTreePathById(id); + temp.add(iTree.getSelectionPath()); + GlobalData.openingModuleList.setTreePathById(id, temp); } // // Select msa header node and show it in editor panel // - iTree.setSelectionPath(iTree.getPathOfNode(iTree.getNodeById(this.dmtnModuleDescription, id, - IDefaultMutableTreeNode.MSA_HEADER))); + iTree + .setSelectionPath(iTree + .getPathOfNode(iTree + .getNodeById(belongNode, id, IDefaultMutableTreeNode.MSA_HEADER))); showModuleElement(IDefaultMutableTreeNode.MSA_HEADER, GlobalData.openingModuleList.getOpeningModuleById(id)); this.currentOpeningModuleIndex = GlobalData.openingModuleList.findIndexOfListById(id); } @@ -2266,7 +2354,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // Update opening module list // GlobalData.openingPackageList.setPackageOpen(id, true); - GlobalData.openingPackageList.setTreePathById(id, iTree.getSelectionPath()); + Set temp = GlobalData.openingPackageList.getTreePathById(id); + temp.add(iTree.getSelectionPath()); + GlobalData.openingPackageList.setTreePathById(id, temp); } // // Show spd header in editor panel @@ -2312,7 +2402,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // Update opening module list // GlobalData.openingPlatformList.setPlatformOpen(id, true); - GlobalData.openingPlatformList.setTreePathById(id, iTree.getSelectionPath()); + Set temp = GlobalData.openingPlatformList.getTreePathById(id); + temp.add(iTree.getSelectionPath()); + GlobalData.openingPlatformList.setTreePathById(id, temp); } // // Show fpd header in editor panel @@ -2417,56 +2509,136 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele } } - private void insertModuleTreeNode(Identification id) { - iTree.addNode(new IDefaultMutableTreeNode("Module Header", IDefaultMutableTreeNode.MSA_HEADER, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Source Files", IDefaultMutableTreeNode.MSA_SOURCEFILES, true, id)); + private void insertModuleTreeNode(Identification id, IDefaultMutableTreeNode belongNode) { + iTree.addNode(new IDefaultMutableTreeNode("Module Header", IDefaultMutableTreeNode.MSA_HEADER, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Source Files", IDefaultMutableTreeNode.MSA_SOURCEFILES, true, id, + belongNode)); iTree.addNode(new IDefaultMutableTreeNode("Library Class Definitions", - IDefaultMutableTreeNode.MSA_LIBRARYCLASSDEFINITIONS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Package Dependencies", - IDefaultMutableTreeNode.MSA_PACKAGEDEPENDENCIES, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Protocols", IDefaultMutableTreeNode.MSA_PROTOCOLS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Events", IDefaultMutableTreeNode.MSA_EVENTS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Hobs", IDefaultMutableTreeNode.MSA_HOBS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Ppis", IDefaultMutableTreeNode.MSA_PPIS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Variables", IDefaultMutableTreeNode.MSA_VARIABLES, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Boot Modes", IDefaultMutableTreeNode.MSA_BOOTMODES, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("System Tables", IDefaultMutableTreeNode.MSA_SYSTEMTABLES, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Data Hubs", IDefaultMutableTreeNode.MSA_DATAHUBS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Hii Packages", IDefaultMutableTreeNode.MSA_HIIPACKAGES, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Guids", IDefaultMutableTreeNode.MSA_GUIDS, true, id)); + IDefaultMutableTreeNode.MSA_LIBRARYCLASSDEFINITIONS, true, id, + belongNode)); iTree - .addNode(new IDefaultMutableTreeNode("External Defintions", IDefaultMutableTreeNode.MSA_EXTERNS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Pcd Coded", IDefaultMutableTreeNode.MSA_PCDS, true, id)); + .addNode(new IDefaultMutableTreeNode("Package Dependencies", + IDefaultMutableTreeNode.MSA_PACKAGEDEPENDENCIES, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Protocols", IDefaultMutableTreeNode.MSA_PROTOCOLS, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Events", IDefaultMutableTreeNode.MSA_EVENTS, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Hobs", IDefaultMutableTreeNode.MSA_HOBS, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Ppis", IDefaultMutableTreeNode.MSA_PPIS, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Variables", IDefaultMutableTreeNode.MSA_VARIABLES, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Boot Modes", IDefaultMutableTreeNode.MSA_BOOTMODES, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("System Tables", IDefaultMutableTreeNode.MSA_SYSTEMTABLES, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Data Hubs", IDefaultMutableTreeNode.MSA_DATAHUBS, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Hii Packages", IDefaultMutableTreeNode.MSA_HIIPACKAGES, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Guids", IDefaultMutableTreeNode.MSA_GUIDS, true, id, belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("External Defintions", IDefaultMutableTreeNode.MSA_EXTERNS, true, id, + belongNode)); + iTree.addNode(new IDefaultMutableTreeNode("Pcd Coded", IDefaultMutableTreeNode.MSA_PCDS, true, id, belongNode)); } private void insertPackageTreeNode(Identification id) { - iTree.addNode(new IDefaultMutableTreeNode("Package Header", IDefaultMutableTreeNode.SPD_HEADER, true, id)); + IDefaultMutableTreeNode idmtTemp = this.dmtnPackageDescription; + iTree.addNode(new IDefaultMutableTreeNode("Package Header", IDefaultMutableTreeNode.SPD_HEADER, true, id, + idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Library Class Declarations", - IDefaultMutableTreeNode.SPD_LIBRARYCLASSDECLARATIONS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Msa Files", IDefaultMutableTreeNode.SPD_MSAFILES, false, id)); + IDefaultMutableTreeNode.SPD_LIBRARYCLASSDECLARATIONS, true, id, + idmtTemp)); + iTree.addNode(new IDefaultMutableTreeNode("Msa Files", IDefaultMutableTreeNode.SPD_MSAFILES, false, id, + idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Package Includes", IDefaultMutableTreeNode.SPD_PACKAGEHEADERS, true, - id)); + id, idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Guid Declarations", IDefaultMutableTreeNode.SPD_GUIDDECLARATIONS, - true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Protocol Declarations", - IDefaultMutableTreeNode.SPD_PROTOCOLDECLARATIONS, true, id)); + true, id, idmtTemp)); + iTree + .addNode(new IDefaultMutableTreeNode("Protocol Declarations", + IDefaultMutableTreeNode.SPD_PROTOCOLDECLARATIONS, true, id, idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Ppi Declarations", IDefaultMutableTreeNode.SPD_PPIDECLARATIONS, - true, id)); + true, id, idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Pcd Declarations", IDefaultMutableTreeNode.SPD_PCDDECLARATIONS, - true, id)); + true, id, idmtTemp)); + // + // Add modules in this package + // + IDefaultMutableTreeNode dmtnModulePackageLibrary = null; + IDefaultMutableTreeNode dmtnModulePackageModule = null; + + dmtnModulePackageLibrary = new IDefaultMutableTreeNode("Library", + IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY, false, + id, idmtTemp); + dmtnModulePackageModule = new IDefaultMutableTreeNode("Module", IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE, + false, id, idmtTemp); + + Vector vModule = wt.getAllModules(new PackageIdentification(id)); + for (int indexJ = 0; indexJ < vModule.size(); indexJ++) { + if (vModule.get(indexJ).isLibrary()) { + dmtnModulePackageLibrary.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), + IDefaultMutableTreeNode.MODULE, false, + vModule.get(indexJ), idmtTemp)); + } else { + dmtnModulePackageModule.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), + IDefaultMutableTreeNode.MODULE, false, + vModule.get(indexJ), idmtTemp)); + } + } + if (dmtnModulePackageModule.getChildCount() > 0) { + iTree.addNode(dmtnModulePackageModule); + } + if (dmtnModulePackageLibrary.getChildCount() > 0) { + iTree.addNode(dmtnModulePackageLibrary); + } } private void insertPlatformTreeNode(Identification id) { + IDefaultMutableTreeNode idmtTemp = this.dmtnPlatformDescription; iTree.addNode(new IDefaultMutableTreeNode("Platform Header", IDefaultMutableTreeNode.FPD_PLATFORMHEADER, true, - id)); + id, idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Platform Definitions", - IDefaultMutableTreeNode.FPD_PLATFORMDEFINITIONS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Flash Information", IDefaultMutableTreeNode.FPD_FLASH, true, id)); + IDefaultMutableTreeNode.FPD_PLATFORMDEFINITIONS, true, id, idmtTemp)); + iTree.addNode(new IDefaultMutableTreeNode("Flash Information", IDefaultMutableTreeNode.FPD_FLASH, true, id, + idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Framework Modules", IDefaultMutableTreeNode.FPD_FRAMEWORKMODULES, - true, id)); + true, id, idmtTemp)); iTree.addNode(new IDefaultMutableTreeNode("Dynamic PCD Build Declarations", - IDefaultMutableTreeNode.FPD_PCDDYNAMICBUILDDECLARATIONS, true, id)); - iTree.addNode(new IDefaultMutableTreeNode("Build Options", IDefaultMutableTreeNode.FPD_BUILDOPTIONS, true, id)); + IDefaultMutableTreeNode.FPD_PCDDYNAMICBUILDDECLARATIONS, true, id, + idmtTemp)); + iTree.addNode(new IDefaultMutableTreeNode("Build Options", IDefaultMutableTreeNode.FPD_BUILDOPTIONS, true, id, + idmtTemp)); + + // + // Add modules in this platform + // + IDefaultMutableTreeNode dmtnModulePackageLibrary = null; + IDefaultMutableTreeNode dmtnModulePackageModule = null; + + dmtnModulePackageLibrary = new IDefaultMutableTreeNode("Library", + IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY, false, + id, idmtTemp); + dmtnModulePackageModule = new IDefaultMutableTreeNode("Module", IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE, + false, id, idmtTemp); + + Vector vModule = wt.getAllModules(new PlatformIdentification(id)); + for (int indexJ = 0; indexJ < vModule.size(); indexJ++) { + if (vModule.get(indexJ).isLibrary()) { + dmtnModulePackageLibrary.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), + IDefaultMutableTreeNode.MODULE, false, + vModule.get(indexJ), idmtTemp)); + } else { + dmtnModulePackageModule.add(new IDefaultMutableTreeNode(vModule.get(indexJ).getName(), + IDefaultMutableTreeNode.MODULE, false, + vModule.get(indexJ), idmtTemp)); + } + } + if (dmtnModulePackageModule.getChildCount() > 0) { + iTree.addNode(dmtnModulePackageModule); + } + if (dmtnModulePackageLibrary.getChildCount() > 0) { + iTree.addNode(dmtnModulePackageLibrary); + } } /** @@ -2477,24 +2649,33 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele Identification id = null; int intCategory = -1; String path = null; + IDefaultMutableTreeNode belongNode = null; try { - id = iTree.getSelectNode().getId(); + // + // Get selected tree node + // + if (iTree.getSelectNode() != null) { + id = iTree.getSelectNode().getId(); + } + + // + // If id is null, return directly + // + if (id == null) { + return; + } + intCategory = iTree.getSelectCategory(); + belongNode = iTree.getSelectNode().getBelongNode(); // // If the node is not opened yet // Insert top level elements first // if (intCategory == IDefaultMutableTreeNode.MODULE) { - - if (intCategory == IDefaultMutableTreeNode.MODULE) { - path = iTree.getSelectNode().getId().getPath(); - } - if (intCategory == IDefaultMutableTreeNode.PACKAGE) { - path = iTree.getSelectNode().getId().getPath(); - } - openModule(path); + path = iTree.getSelectNode().getId().getPath(); + openModule(path, belongNode); return; } if (intCategory == IDefaultMutableTreeNode.PACKAGE) { @@ -2535,8 +2716,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele .findIndexOfListById(new PlatformIdentification( id)); } - } catch (RuntimeException e) { + } catch (Exception e) { Log.err("double click category: " + intCategory); + Log.err("double click belong node: " + belongNode.toString()); Log.err("double click id path: " + id); Log.err("double click exception: " + e.getMessage()); } @@ -2778,7 +2960,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Open the node // - this.openModule(mid.getPath()); + this.openModule(mid.getPath(), this.dmtnModuleDescription); } } } else if (result == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) { @@ -2812,14 +2994,15 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(pid.getName(), IDefaultMutableTreeNode.MODULE_PACKAGE, - false, pid); + false, pid, this.dmtnModuleDescription); iTree.addNode(dmtnModuleDescription, node); // // Add new SpdHeader node to the tree // - node = new IDefaultMutableTreeNode(pid.getName(), IDefaultMutableTreeNode.PACKAGE, true, pid); + node = new IDefaultMutableTreeNode(pid.getName(), IDefaultMutableTreeNode.PACKAGE, true, pid, + this.dmtnPackageDescription); iTree.addNode(dmtnPackageDescription, node); this.openPackage(pid.getPath()); @@ -2855,7 +3038,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(fid.getName(), IDefaultMutableTreeNode.PLATFORM, true, - fid); + fid, this.dmtnPlatformDescription); iTree.addNode(dmtnPlatformDescription, node); this.openPlatform(fid.getPath()); } @@ -2884,7 +3067,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele String path = fc.getSelectedFile().getPath(); String match = path.substring(path.length() - 4); if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.MODULE_SURFACE_AREA_EXT)) { - openModule(path); + openModule(path, this.dmtnModuleDescription); } else if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.PACKAGE_SURFACE_AREA_EXT)) { openPackage(path); } else if (match.equals(DataType.FILE_EXT_SEPARATOR + DataType.PLATFORM_SURFACE_AREA_EXT)) { @@ -2898,6 +3081,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele **/ private void close() { + TreePath item = null; switch (this.jTabbedPaneEditor.getSelectedIndex()) { // // Current is module @@ -2916,9 +3100,19 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele return; } } - iTree - .removeNodeChildrenByPath(GlobalData.openingModuleList - .getTreePathByIndex(currentOpeningModuleIndex)); + + // + // Remove all tree paths for the module + // + Set openingTreePaths = GlobalData.openingModuleList + .getTreePathByIndex(currentOpeningModuleIndex); + Iterator openingTreePathsIter = openingTreePaths.iterator(); + while (openingTreePathsIter.hasNext()) { + item = openingTreePathsIter.next(); + iTree.getNodeByPath(item).setOpening(false); + iTree.removeNodeChildrenByPath(item); + } + GlobalData.openingModuleList.setModuleOpen(this.currentOpeningModuleIndex, false); this.cleanDesktopPaneModule(); this.currentOpeningModuleIndex = -1; @@ -2941,9 +3135,19 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele return; } } - iTree - .removeNodeChildrenByPath(GlobalData.openingPackageList - .getTreePathByIndex(currentOpeningPackageIndex)); + + // + // Remove all tree paths for the module + // + Set openingTreePaths = GlobalData.openingPackageList + .getTreePathByIndex(currentOpeningPackageIndex); + Iterator openingTreePathsIter = openingTreePaths.iterator(); + while (openingTreePathsIter.hasNext()) { + item = openingTreePathsIter.next(); + iTree.getNodeByPath(item).setOpening(false); + iTree.removeNodeChildrenByPath(item); + } + GlobalData.openingPackageList.setPackageOpen(this.currentOpeningPackageIndex, false); this.cleanDesktopPanePackage(); this.currentOpeningPackageIndex = -1; @@ -2966,9 +3170,19 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele return; } } - iTree - .removeNodeChildrenByPath(GlobalData.openingPlatformList - .getTreePathByIndex(currentOpeningPlatformIndex)); + + // + // Remove all tree paths for the module + // + Set openingTreePaths = GlobalData.openingPlatformList + .getTreePathByIndex(currentOpeningPlatformIndex); + Iterator openingTreePathsIter = openingTreePaths.iterator(); + while (openingTreePathsIter.hasNext()) { + item = openingTreePathsIter.next(); + iTree.getNodeByPath(item).setOpening(false); + iTree.removeNodeChildrenByPath(item); + } + GlobalData.openingPlatformList.setPlatformOpen(this.currentOpeningPlatformIndex, false); this.cleanDesktopPanePlatform(); this.currentOpeningPlatformIndex = -1; @@ -3002,7 +3216,14 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele GlobalData.openingModuleList.closeAll(); GlobalData.openingPackageList.closeAll(); GlobalData.openingPlatformList.closeAll(); - this.makeEmptyTree(); + } + + /** + Refresh all global data from disk to memory + + **/ + private void refresh() { + GlobalData.init(); } /** @@ -3152,13 +3373,13 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele // // Reinit whole window // - closeAll(); + this.closeAll(); this.setTitle(DataType.PROJECT_NAME + " " + DataType.PROJECT_VERSION + " " + "- [" + Workspace.getCurrentWorkspace() + "]"); // - // Reinit Global Data + // Refrash the tree // - GlobalData.init(); + this.refresh(); } sw.dispose(); } @@ -3190,6 +3411,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); this.closeAll(); + this.refresh(); + this.makeEmptyTree(); } iso.dispose(); } @@ -3206,6 +3429,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); this.closeAll(); + this.refresh(); + this.makeEmptyTree(); } dso.dispose(); } @@ -3222,6 +3447,8 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele JOptionPane.showConfirmDialog(null, strReturn, "Done", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); this.closeAll(); + this.refresh(); + this.makeEmptyTree(); } uso.dispose(); } @@ -3256,23 +3483,20 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele } int category = iTree.getSelectCategory(); Identification id = iTree.getSelectNode().getId(); - if (category == IDefaultMutableTreeNode.MODULE || category == IDefaultMutableTreeNode.PACKAGE - || category == IDefaultMutableTreeNode.PLATFORM) { - Log.wrn("Clone", "Please select a target to clone!"); - return; - } if (category == IDefaultMutableTreeNode.WORKSPACE) { mode = DataType.RETURN_TYPE_WORKSPACE; id = null; } - if (category >= IDefaultMutableTreeNode.MSA_HEADER && category < IDefaultMutableTreeNode.SPD_HEADER) { + if ((category == IDefaultMutableTreeNode.MODULE) + || (category >= IDefaultMutableTreeNode.MSA_HEADER && category < IDefaultMutableTreeNode.SPD_HEADER)) { mode = DataType.RETURN_TYPE_MODULE_SURFACE_AREA; } - if (category >= IDefaultMutableTreeNode.SPD_HEADER && category < IDefaultMutableTreeNode.FPD_PLATFORMHEADER) { + if ((category == IDefaultMutableTreeNode.PACKAGE) + || (category >= IDefaultMutableTreeNode.SPD_HEADER && category < IDefaultMutableTreeNode.FPD_PLATFORMHEADER)) { mode = DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA; } - if (category >= IDefaultMutableTreeNode.FPD_PLATFORMHEADER) { + if ((category == IDefaultMutableTreeNode.PLATFORM) || (category >= IDefaultMutableTreeNode.FPD_PLATFORMHEADER)) { mode = DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA; } @@ -3287,32 +3511,30 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele } if (result == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) { Tools.showInformationMessage("Module Clone Completed!"); - GlobalData.vModuleList.addElement(c.getMid()); addModuleToTree(c.getMid()); } if (result == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) { Tools.showInformationMessage("Package Clone Completed!"); - GlobalData.vPackageList.addElement(c.getPid()); // // Add new SpdHeader node to the tree // IDefaultMutableTreeNode node = new IDefaultMutableTreeNode(GlobalData.vPackageList.lastElement().getName(), - IDefaultMutableTreeNode.SPD_HEADER, true, - GlobalData.vPackageList.lastElement()); - iTree.addNode(dmtnPackageDescription, node); + IDefaultMutableTreeNode.PACKAGE, false, + GlobalData.vPackageList.lastElement(), + this.dmtnPackageDescription); + iTree.addNode(this.dmtnPackageDescription, node); } if (result == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) { Tools.showInformationMessage("Platform Surface Area Clone Finished"); - GlobalData.vPlatformList.addElement(c.getFid()); // // Add new SpdHeader node to the tree // IDefaultMutableTreeNode node = new IDefaultMutableTreeNode( GlobalData.vPlatformList.lastElement().getName(), - IDefaultMutableTreeNode.FPD_PLATFORMHEADER, - true, GlobalData.vPlatformList.lastElement()); - iTree.addNode(dmtnPlatformDescription, node); - //this.openPlatform(c.getFid().getPath()); + IDefaultMutableTreeNode.PLATFORM, false, + GlobalData.vPlatformList.lastElement(), + this.dmtnPlatformDescription); + iTree.addNode(this.dmtnPlatformDescription, node); } if (result == DataType.RETURN_TYPE_OK) { @@ -3365,8 +3587,9 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele jMenuItemToolsClone.setEnabled(false); } else { int category = iTree.getSelectCategory(); - if (category == IDefaultMutableTreeNode.MODULE || category == IDefaultMutableTreeNode.PACKAGE - || category == IDefaultMutableTreeNode.PLATFORM + if (category == IDefaultMutableTreeNode.MODULE_DESCRIPTION + || category == IDefaultMutableTreeNode.PACKAGE_DESCRIPTION + || category == IDefaultMutableTreeNode.PLATFORM_DESCRIPTION || category == IDefaultMutableTreeNode.MODULE_PACKAGE || category == IDefaultMutableTreeNode.MODULE_PACKAGE_LIBRARY || category == IDefaultMutableTreeNode.MODULE_PACKAGE_MODULE) { @@ -3377,4 +3600,79 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele } } } + + public void keyTyped(KeyEvent arg0) { + // TODO Auto-generated method stub + + } + + public void keyPressed(KeyEvent arg0) { + // TODO Auto-generated method stub + + } + + public void keyReleased(KeyEvent arg0) { + if (arg0.getSource() == this.iTree) { + if (arg0.getKeyCode() == KeyEvent.VK_ENTER) { + this.doubleClickModuleTreeNode(); + } + } + } + + /** + Search whole workspace and find all module's name and guid, and save them to a file + + **/ + private void generateGuidsXref() { + // + // Init File Chooser + // + JFileChooser fc = new JFileChooser(); + fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace())); + fc.setSelectedFile(new File(Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR + + DataType.GUIDS_XREF_FILE_NAME)); + fc.setMultiSelectionEnabled(false); + + // + // Get guids xref and save to file + // + int result = fc.showSaveDialog(new JPanel()); + if (result == JFileChooser.APPROVE_OPTION) { + Vector v = wt.getAllModuleGuidXref(); + if (v.size() < 1) { + Log.wrn("No guids found!!!"); + return; + } + File f = fc.getSelectedFile(); + if (!f.exists()) { + try { + f.createNewFile(); + } catch (IOException e) { + Log.wrn("Fail to create file", e.getMessage()); + Log.err("Fail to create file when generating guids.xref", e.getMessage()); + } + } + FileWriter fw = null; + BufferedWriter bw = null; + try { + fw = new FileWriter(f); + bw = new BufferedWriter(fw); + for (int index = 0; index < v.size(); index++) { + bw.write(v.get(index)); + bw.newLine(); + } + bw.flush(); + fw.flush(); + bw.close(); + fw.close(); + } catch (IOException e) { + Log.wrn("Fail to write file", e.getMessage()); + Log.err("Fail to write file when generating guids.xref", e.getMessage()); + return; + } + + JOptionPane.showConfirmDialog(null, "File is created", "Generate guids.xref", JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE); + } + } }