1 19 20 package org.netbeans.bluej.nodes; 21 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 import java.util.List ; 25 import java.util.ResourceBundle ; 26 import javax.swing.Action ; 27 import javax.swing.JSeparator ; 28 import org.netbeans.api.java.project.JavaProjectConstants; 29 import org.netbeans.api.project.ProjectInformation; 30 import org.netbeans.api.project.ProjectUtils; 31 import org.netbeans.api.project.SourceGroup; 32 import org.netbeans.api.project.Sources; 33 import org.netbeans.bluej.BluejProject; 34 import org.netbeans.bluej.export.ConvertToJ2SEAction; 35 import org.netbeans.spi.java.project.support.ui.PackageView; 36 import org.netbeans.spi.project.ActionProvider; 37 import org.netbeans.spi.project.ui.support.CommonProjectActions; 38 import org.netbeans.spi.project.ui.support.ProjectSensitiveActions; 39 import org.openide.ErrorManager; 40 import org.openide.actions.FindAction; 41 import org.openide.actions.ToolsAction; 42 import org.openide.filesystems.FileObject; 43 import org.openide.filesystems.Repository; 44 import org.openide.loaders.DataFolder; 45 import org.openide.loaders.DataObject; 46 import org.openide.loaders.DataObjectNotFoundException; 47 import org.openide.loaders.FolderLookup; 48 import org.openide.nodes.AbstractNode; 49 import org.openide.nodes.FilterNode; 50 import org.openide.nodes.Node; 51 import org.openide.util.Lookup; 52 import org.openide.util.NbBundle; 53 import org.openide.util.actions.SystemAction; 54 55 59 public class BluejLogicalViewRootNode extends AbstractNode { 60 61 62 public BluejLogicalViewRootNode(Lookup look) { 63 super(new FilterChildrenImpl(look), look); 64 setIconBaseWithExtension("org/netbeans/bluej/resources/bluejproject.png"); } 66 67 public String getName() { 68 return getProjectInfo(getLookup()).getName(); 69 } 70 71 public String getDisplayName() { 72 return getProjectInfo(getLookup()).getDisplayName(); 73 } 74 75 private static BluejProject getProject(Lookup lkp) { 76 return (BluejProject)lkp.lookup(BluejProject.class); 77 } 78 79 private static ProjectInformation getProjectInfo(Lookup lkp) { 80 return (ProjectInformation)getProject(lkp).getLookup().lookup(ProjectInformation.class); 81 } 82 83 84 private static SourceGroup getSourceGroup(Lookup lkp) { 85 BluejProject prj = getProject(lkp); 86 Sources srcs = ProjectUtils.getSources(prj); 87 SourceGroup[] grps = srcs.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA); 88 assert grps.length > 0; 89 return grps[0]; 90 } 91 92 public Action [] getActions(boolean context) { 93 94 ResourceBundle bundle = NbBundle.getBundle(BluejLogicalViewRootNode.class); 95 96 List actions = new ArrayList (); 97 98 actions.add(CommonProjectActions.newFileAction()); 99 actions.add(null); 100 actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_BUILD, bundle.getString("LBL_BuildAction_Name"), null)); actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_REBUILD, bundle.getString("LBL_RebuildAction_Name"), null)); actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_CLEAN, bundle.getString("LBL_CleanAction_Name"), null)); actions.add(ProjectSensitiveActions.projectCommandAction(JavaProjectConstants.COMMAND_JAVADOC, bundle.getString("LBL_JavadocAction_Name"), null)); actions.add(null); 105 actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_RUN, bundle.getString("LBL_RunAction_Name"), null)); actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_DEBUG, bundle.getString("LBL_DebugAction_Name"), null)); actions.add(null); 109 actions.add(new ConvertToJ2SEAction(getProject(getLookup()))); 110 actions.add(CommonProjectActions.setAsMainProjectAction()); 111 actions.add(CommonProjectActions.closeProjectAction()); 113 actions.add(null); 114 actions.add(SystemAction.get(FindAction.class)); 115 116 118 try { 119 FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource("Projects/Actions"); if (fo != null) { 121 DataObject dobj = DataObject.find(fo); 122 FolderLookup actionRegistry = new FolderLookup((DataFolder)dobj); 123 Lookup.Template query = new Lookup.Template(Object .class); 124 Lookup lookup = actionRegistry.getLookup(); 125 Iterator it = lookup.lookup(query).allInstances().iterator(); 126 if (it.hasNext()) { 127 actions.add(null); 128 } 129 while (it.hasNext()) { 130 Object next = it.next(); 131 if (next instanceof Action ) { 132 actions.add(next); 133 } else if (next instanceof JSeparator ) { 134 actions.add(null); 135 } 136 } 137 } 138 } catch (DataObjectNotFoundException ex) { 139 ErrorManager.getDefault().notify(ex); 141 } 142 143 actions.add(null); 144 actions.add(SystemAction.get(ToolsAction.class)); 145 actions.add(null); 146 actions.add(CommonProjectActions.customizeProjectAction()); 147 148 return (Action []) actions.toArray(new Action [actions.size()]); 149 } 150 151 private static class FilterChildrenImpl extends FilterNode.Children { 152 FilterChildrenImpl(Lookup lkp) { 153 this(PackageView.createPackageView(getSourceGroup(lkp))); 154 } 155 156 FilterChildrenImpl(Node original) { 157 super(original); 158 } 159 160 protected Node[] createNodes(Node orig) { 161 DataObject dobj = (DataObject)orig.getLookup().lookup(DataObject.class); 162 if (dobj != null) { 163 FileObject fo = dobj.getPrimaryFile(); 164 if ("bluej.pkg".equals(fo.getNameExt()) || "build.xml".equals(fo.getNameExt()) || "bluej.pkh".equals(fo.getNameExt()) || ("+libs".equals(fo.getName()) && fo.isFolder()) || "ctxt".equals(fo.getExt()) || "class".equals(fo.getExt()) || ".DS_STORE".equals(fo.getNameExt()) || (fo.isFolder() && fo.getFileObject("bluej.pkg") == null)) { return new Node[0]; 173 } 174 return new Node[] {new MyFilterWithHtml(orig, new FilterChildrenImpl(orig))}; 175 } 176 return new Node[] {new FilterNode(orig)}; 177 } 178 179 180 public void doRefresh(Node original) { 181 refreshKey(original); 182 } 183 } 184 185 private static class MyFilterWithHtml extends FilterNode { 186 MyFilterWithHtml(Node orig, Children children) { 187 super(orig, children); 188 } 189 190 MyFilterWithHtml(Node orig) { 191 super(orig); 192 } 193 194 public String getHtmlDisplayName() { 195 return null; 198 } 199 200 } 201 202 203 } 204 | Popular Tags |