KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > bluej > nodes > BluejLogicalViewRootNode


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.bluej.nodes;
21
22 import java.util.ArrayList JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.ResourceBundle JavaDoc;
26 import javax.swing.Action JavaDoc;
27 import javax.swing.JSeparator JavaDoc;
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 /**
56  *
57  * @author mkleint
58  */

59 public class BluejLogicalViewRootNode extends AbstractNode {
60     
61     /** Creates a new instance of BluejLogicalViewRootNode */
62     public BluejLogicalViewRootNode(Lookup look) {
63         super(new FilterChildrenImpl(look), look);
64         setIconBaseWithExtension("org/netbeans/bluej/resources/bluejproject.png"); // NOI18N
65
}
66     
67     public String JavaDoc getName() {
68         return getProjectInfo(getLookup()).getName();
69     }
70     
71     public String JavaDoc 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 JavaDoc[] getActions(boolean context) {
93         
94         ResourceBundle JavaDoc bundle = NbBundle.getBundle(BluejLogicalViewRootNode.class);
95         
96         List JavaDoc actions = new ArrayList JavaDoc();
97         
98         actions.add(CommonProjectActions.newFileAction());
99         actions.add(null);
100         actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_BUILD, bundle.getString("LBL_BuildAction_Name"), null)); // NOI18N
101
actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_REBUILD, bundle.getString("LBL_RebuildAction_Name"), null)); // NOI18N
102
actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_CLEAN, bundle.getString("LBL_CleanAction_Name"), null)); // NOI18N
103
actions.add(ProjectSensitiveActions.projectCommandAction(JavaProjectConstants.COMMAND_JAVADOC, bundle.getString("LBL_JavadocAction_Name"), null)); // NOI18N
104
actions.add(null);
105         actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_RUN, bundle.getString("LBL_RunAction_Name"), null)); // NOI18N
106
actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_DEBUG, bundle.getString("LBL_DebugAction_Name"), null)); // NOI18N
107
//// actions.add(ProjectSensitiveActions.projectCommandAction(ActionProvider.COMMAND_TEST, bundle.getString("LBL_TestAction_Name"), null)); // NOI18N
108
actions.add(null);
109          actions.add(new ConvertToJ2SEAction(getProject(getLookup())));
110         actions.add(CommonProjectActions.setAsMainProjectAction());
111 // actions.add(CommonProjectActions.openSubprojectsAction());
112
actions.add(CommonProjectActions.closeProjectAction());
113         actions.add(null);
114         actions.add(SystemAction.get(FindAction.class));
115         
116         // honor 57874 contact
117

118         try {
119             FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource("Projects/Actions"); // NOI18N
120
if (fo != null) {
121                 DataObject dobj = DataObject.find(fo);
122                 FolderLookup actionRegistry = new FolderLookup((DataFolder)dobj);
123                 Lookup.Template query = new Lookup.Template(Object JavaDoc.class);
124                 Lookup lookup = actionRegistry.getLookup();
125                 Iterator JavaDoc it = lookup.lookup(query).allInstances().iterator();
126                 if (it.hasNext()) {
127                     actions.add(null);
128                 }
129                 while (it.hasNext()) {
130                     Object JavaDoc next = it.next();
131                     if (next instanceof Action JavaDoc) {
132                         actions.add(next);
133                     } else if (next instanceof JSeparator JavaDoc) {
134                         actions.add(null);
135                     }
136                 }
137             }
138         } catch (DataObjectNotFoundException ex) {
139             // data folder for existing fileobject expected
140
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 JavaDoc[]) actions.toArray(new Action JavaDoc[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()) || // NOI18N
165
"build.xml".equals(fo.getNameExt()) || // NOI18N
166
"bluej.pkh".equals(fo.getNameExt()) || // NOI18N
167
("+libs".equals(fo.getName()) && fo.isFolder()) || // NOI18N
168
"ctxt".equals(fo.getExt()) || // NOI18N
169
"class".equals(fo.getExt()) || // NOI18N
170
".DS_STORE".equals(fo.getNameExt()) || // NOI18N
171
(fo.isFolder() && fo.getFileObject("bluej.pkg") == null)) { // NOI18N
172
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 JavaDoc getHtmlDisplayName() {
195             //for some reason the delegating to package view "<default package>" returns the
196
// value in htmdisplayname and causes an error. workarounding..
197
return null;
198         }
199         
200     }
201     
202     
203 }
204
Popular Tags