? maven-subproject
Index: arch.xml
===================================================================
RCS file: /cvs/java/j2seproject/arch.xml,v
retrieving revision 1.13
diff -u -r1.13 arch.xml
--- arch.xml 15 Aug 2006 15:21:20 -0000 1.13
+++ arch.xml 28 Aug 2006 08:20:55 -0000
@@ -1073,6 +1073,12 @@
Please note that the latter is not part of any public APIs and you need implementation dependency to make use of it.
+
+
+ "Projects/org-netbeans-modules-java-j2seproject/Nodes" folder's content is used to construct the project's child nodes.
+ It's content is expected to be NodeFactory
instances.
+
+
Index: nbproject/project.properties
===================================================================
RCS file: /cvs/java/j2seproject/nbproject/project.properties,v
retrieving revision 1.29
diff -u -r1.29 project.properties
--- nbproject/project.properties 15 Aug 2006 16:10:51 -0000 1.29
+++ nbproject/project.properties 28 Aug 2006 08:20:55 -0000
@@ -15,7 +15,7 @@
# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
# Microsystems, Inc. All Rights Reserved.
-spec.version.base=1.7.0
+spec.version.base=1.8.0
javadoc.arch=${basedir}/arch.xml
Index: src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java
===================================================================
RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java,v
retrieving revision 1.19
diff -u -r1.19 J2SELogicalViewProvider.java
--- src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java 11 Aug 2006 13:21:03 -0000 1.19
+++ src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java 28 Aug 2006 08:20:55 -0000
@@ -24,14 +24,10 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.CharConversionException;
-import java.io.File;
import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -42,7 +38,6 @@
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JSeparator;
-import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.netbeans.api.java.platform.JavaPlatform;
@@ -54,29 +49,24 @@
import org.netbeans.api.project.SourceGroup;
import org.netbeans.api.project.Sources;
import org.netbeans.modules.java.j2seproject.J2SEProjectUtil;
-import org.netbeans.modules.java.j2seproject.ui.customizer.CustomizerLibraries;
-import org.netbeans.modules.java.j2seproject.ui.customizer.CustomizerProviderImpl;
import org.netbeans.modules.java.j2seproject.ui.customizer.J2SEProjectProperties;
import org.netbeans.modules.java.j2seproject.J2SEProject;
import org.netbeans.modules.java.j2seproject.SourceRoots;
import org.netbeans.modules.java.j2seproject.UpdateHelper;
-import org.netbeans.modules.java.j2seproject.wsclient.J2SEProjectWebServicesClientSupport;
import org.netbeans.spi.java.project.support.ui.BrokenReferencesSupport;
import org.netbeans.spi.java.project.support.ui.PackageView;
import org.netbeans.spi.project.ActionProvider;
import org.netbeans.spi.project.SubprojectProvider;
-import org.netbeans.spi.project.support.ant.AntProjectHelper;
import org.netbeans.spi.project.support.ant.PropertyEvaluator;
import org.netbeans.spi.project.support.ant.ReferenceHelper;
import org.netbeans.spi.project.ui.LogicalViewProvider;
import org.netbeans.spi.project.ui.support.CommonProjectActions;
+import org.netbeans.spi.project.ui.support.NodeFactorySupport;
import org.netbeans.spi.project.ui.support.DefaultProjectOperations;
import org.netbeans.spi.project.ui.support.ProjectSensitiveActions;
import org.openide.ErrorManager;
import org.openide.actions.FindAction;
import org.openide.actions.ToolsAction;
-import org.openide.filesystems.FileChangeAdapter;
-import org.openide.filesystems.FileEvent;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileStateInvalidException;
import org.openide.filesystems.FileStatusEvent;
@@ -90,8 +80,6 @@
import org.openide.loaders.FolderLookup;
import org.openide.modules.SpecificationVersion;
import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.FilterNode;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;
@@ -102,8 +90,6 @@
import org.openide.util.actions.SystemAction;
import org.openide.util.lookup.Lookups;
import org.openide.xml.XMLUtil;
-import org.netbeans.modules.websvc.api.client.WebServicesClientSupport;
-import org.netbeans.modules.websvc.api.client.WebServicesClientView;
/**
* Support for creating logical views.
@@ -119,9 +105,6 @@
private final SubprojectProvider spp;
private final ReferenceHelper resolver;
private List changeListeners;
-
- // Web service client
- private static final Object KEY_SERVICE_REFS = "serviceRefs"; // NOI18N
public J2SELogicalViewProvider(J2SEProject project, UpdateHelper helper, PropertyEvaluator evaluator, SubprojectProvider spp, ReferenceHelper resolver) {
this.project = project;
@@ -139,6 +122,18 @@
return new J2SELogicalViewRootNode();
}
+ public PropertyEvaluator getEvaluator() {
+ return evaluator;
+ }
+
+ public ReferenceHelper getRefHelper() {
+ return resolver;
+ }
+
+ public UpdateHelper getUpdateHelper() {
+ return helper;
+ }
+
public Node findPath(Node root, Object target) {
Project project = (Project) root.getLookup().lookup(Project.class);
if (project == null) {
@@ -284,7 +279,8 @@
// icon badging <<<
public J2SELogicalViewRootNode() {
- super(new LogicalViewChildren(project, evaluator, helper, resolver), Lookups.singleton(project));
+ super(NodeFactorySupport.createCompositeChildren(project, "Projects/org-netbeans-modules-java-j2seproject/Nodes"),
+ Lookups.singleton(project));
setIconBaseWithExtension("org/netbeans/modules/java/j2seproject/ui/resources/j2seProject.gif");
super.setName( ProjectUtils.getInformation( project ).getDisplayName() );
if (hasBrokenLinks()) {
@@ -650,352 +646,6 @@
}
- }
-
- private static final class LogicalViewChildren extends Children.Keys/**/ implements ChangeListener {
-
- private static final Object LIBRARIES = "Libs"; //NOI18N
- private static final Object TEST_LIBRARIES = "TestLibs"; //NOI18N
- private static final String WSDL_FOLDER=J2SEProjectWebServicesClientSupport.WSDL_FOLDER;
-
- private final Project project;
- private final PropertyEvaluator evaluator;
- private final UpdateHelper helper;
- private final ReferenceHelper resolver;
- private final SourceRoots testSources;
-
- private final WsdlCreationListener wsdlListener;
- private final MetaInfListener metaInfListener;
- private FileObject wsdlFolder;
-
- public LogicalViewChildren(J2SEProject project, PropertyEvaluator evaluator, UpdateHelper helper, ReferenceHelper resolver) {
- this.project = project;
- this.evaluator = evaluator;
- this.helper = helper;
- this.resolver = resolver;
- this.testSources = project.getTestSourceRoots();
- this.metaInfListener = new MetaInfListener();
- this.wsdlListener = new WsdlCreationListener();
- }
-
- protected void addNotify() {
- super.addNotify();
- getSources().addChangeListener(this);
-
- AntProjectHelper projectHelper = helper.getAntProjectHelper();
- String prop = evaluator.getProperty("meta.inf.dir"); //NOI18N
- if (prop!=null) {
- FileObject metaInf = projectHelper.resolveFileObject(prop);
- if (metaInf!=null) metaInf.addFileChangeListener(metaInfListener);
- }
- prop = evaluator.getProperty("src.dir"); //NOI18N
- if (prop!=null) {
- FileObject srcDir = projectHelper.resolveFileObject(prop);
- if (srcDir!=null) srcDir.addFileChangeListener(metaInfListener);
- }
-
- //XXX: Not very nice, the wsdlFolder should be hold by this class because it listens on it
- WebServicesClientSupport wsClientSupportImpl = WebServicesClientSupport.getWebServicesClientSupport(project.getProjectDirectory());
- try {
- if (wsClientSupportImpl != null) {
- wsdlFolder = wsClientSupportImpl.getWsdlFolder(false);
- }
- } catch (IOException ex) {
- ErrorManager.getDefault().notify(ex);
- }
- if (wsdlFolder != null) {
- wsdlFolder.addFileChangeListener(wsdlListener);
- }
- setKeys(getKeys());
- }
-
- protected void removeNotify() {
- setKeys(Collections.EMPTY_SET);
- getSources().removeChangeListener(this);
-
- AntProjectHelper projectHelper = helper.getAntProjectHelper();
- String prop = evaluator.getProperty("meta.inf.dir"); //NOI18N
- if (prop!=null) {
- FileObject metaInf = projectHelper.resolveFileObject(prop);
- if (metaInf!=null) metaInf.addFileChangeListener(metaInfListener);
- }
- prop = evaluator.getProperty("src.dir"); //NOI18N
- if (prop!=null) {
- FileObject srcDir = projectHelper.resolveFileObject(prop);
- if (srcDir!=null) srcDir.removeFileChangeListener(metaInfListener);
- }
- if (wsdlFolder != null) {
- wsdlFolder.removeFileChangeListener(wsdlListener);
- }
-
- super.removeNotify();
- }
-
- protected Node[] createNodes(Object key) {
- Node[] result;
- if (key == LIBRARIES) {
- //Libraries Node
- result = new Node[] {
- new LibrariesNode(NbBundle.getMessage(J2SELogicalViewProvider.class,"CTL_LibrariesNode"),
- project, evaluator, helper, resolver, J2SEProjectProperties.RUN_CLASSPATH,
- new String[] {J2SEProjectProperties.BUILD_CLASSES_DIR},
- "platform.active", // NOI18N
- new Action[] {
- LibrariesNode.createAddProjectAction(project, J2SEProjectProperties.JAVAC_CLASSPATH),
- LibrariesNode.createAddLibraryAction(project, J2SEProjectProperties.JAVAC_CLASSPATH),
- LibrariesNode.createAddFolderAction(project, J2SEProjectProperties.JAVAC_CLASSPATH),
- null,
- new PreselectPropertiesAction(project, "Libraries", CustomizerLibraries.COMPILE), // NOI18N
- }
- ),
- };
- } else if (key == TEST_LIBRARIES) {
- result = new Node[] {
- new LibrariesNode(NbBundle.getMessage(J2SELogicalViewProvider.class,"CTL_TestLibrariesNode"),
- project, evaluator, helper, resolver, J2SEProjectProperties.RUN_TEST_CLASSPATH,
- new String[] {
- J2SEProjectProperties.BUILD_TEST_CLASSES_DIR,
- J2SEProjectProperties.JAVAC_CLASSPATH,
- J2SEProjectProperties.BUILD_CLASSES_DIR,
- },
- null,
- new Action[] {
- LibrariesNode.createAddProjectAction(project, J2SEProjectProperties.JAVAC_TEST_CLASSPATH),
- LibrariesNode.createAddLibraryAction(project, J2SEProjectProperties.JAVAC_TEST_CLASSPATH),
- LibrariesNode.createAddFolderAction(project, J2SEProjectProperties.JAVAC_TEST_CLASSPATH),
- null,
- new PreselectPropertiesAction(project, "Libraries", CustomizerLibraries.COMPILE_TESTS), // NOI18N
- }
- ),
- };
- }
- // else if (key instanceof SourceGroup) {
- else if (key instanceof SourceGroupKey) {
- //Source root
- result = new Node[] {new PackageViewFilterNode(((SourceGroupKey) key).group, project)};
-
- } else if (key == KEY_SERVICE_REFS) {
- result = null;
- FileObject clientRoot = project.getProjectDirectory();
- WebServicesClientView clientView = WebServicesClientView.getWebServicesClientView(clientRoot);
- if (clientView != null) {
- WebServicesClientSupport wss = WebServicesClientSupport.getWebServicesClientSupport(clientRoot);
- if (wss!=null) {
- FileObject wsdlFolder = wss.getWsdlFolder();
- if (wsdlFolder!=null) {
- FileObject[] children = wsdlFolder.getChildren();
- boolean foundWsdl = false;
- for (int i=0;i
+
+
+
+
+
+
+
+
Index: src/org/netbeans/modules/java/j2seproject/wsclient/WebServicesNodeFactory.java
===================================================================
RCS file: src/org/netbeans/modules/java/j2seproject/wsclient/WebServicesNodeFactory.java
diff -N src/org/netbeans/modules/java/j2seproject/wsclient/WebServicesNodeFactory.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/netbeans/modules/java/j2seproject/wsclient/WebServicesNodeFactory.java 28 Aug 2006 08:20:56 -0000
@@ -0,0 +1,246 @@
+/*
+ * The contents of this file are subject to the terms of the Common Development
+ * and Distribution License (the License). You may not use this file except in
+ * compliance with the License.
+ *
+ * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
+ * or http://www.netbeans.org/cddl.txt.
+ *
+ * When distributing Covered Code, include this CDDL Header Notice in each file
+ * and include the License file at http://www.netbeans.org/cddl.txt.
+ * If applicable, add the following below the CDDL Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * The Original Software is NetBeans. The Initial Developer of the Original
+ * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+ * Microsystems, Inc. All Rights Reserved.
+ */
+
+package org.netbeans.modules.java.j2seproject.wsclient;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import org.netbeans.api.project.Project;
+import org.netbeans.modules.java.j2seproject.J2SEProject;
+import org.netbeans.modules.java.j2seproject.UpdateHelper;
+import org.netbeans.modules.java.j2seproject.ui.J2SELogicalViewProvider;
+import org.netbeans.modules.websvc.api.client.WebServicesClientSupport;
+import org.netbeans.modules.websvc.api.client.WebServicesClientView;
+import org.netbeans.spi.project.support.ant.AntProjectHelper;
+import org.netbeans.spi.project.support.ant.PropertyEvaluator;
+import org.netbeans.spi.project.support.ant.ReferenceHelper;
+import org.netbeans.spi.project.ui.support.NodeFactory;
+import org.netbeans.spi.project.ui.support.NodeList;
+import org.openide.ErrorManager;
+import org.openide.filesystems.FileChangeAdapter;
+import org.openide.filesystems.FileEvent;
+import org.openide.filesystems.FileObject;
+import org.openide.nodes.Node;
+
+/**
+ *
+ * @author mkleint
+ */
+public class WebServicesNodeFactory implements NodeFactory {
+
+ /** Creates a new instance of WebServicesNodeFactory */
+ public WebServicesNodeFactory() {
+ }
+
+ public NodeList createNodes(Project p) {
+ J2SEProject project = (J2SEProject)p.getLookup().lookup(J2SEProject.class);
+ assert project != null;
+ return new WsNodeList(project);
+ }
+
+ public Node findPath(Project p, Node root, Object target) {
+ return null;
+ }
+
+ private static class WsNodeList implements NodeList {
+
+ private static final String WSDL_FOLDER=J2SEProjectWebServicesClientSupport.WSDL_FOLDER;
+ // Web service client
+ private static final Object KEY_SERVICE_REFS = "serviceRefs"; // NOI18N
+
+ private J2SEProject project;
+
+ private List listeners = new ArrayList();
+ private final WsdlCreationListener wsdlListener;
+ private final MetaInfListener metaInfListener;
+ private FileObject wsdlFolder;
+
+ private PropertyEvaluator evaluator;
+ private UpdateHelper helper;
+ private ReferenceHelper resolver;
+
+
+ public WsNodeList(J2SEProject proj) {
+ project = proj;
+ this.metaInfListener = new MetaInfListener();
+ this.wsdlListener = new WsdlCreationListener();
+ J2SELogicalViewProvider logView = (J2SELogicalViewProvider)project.getLookup().lookup(J2SELogicalViewProvider.class);
+ assert logView != null;
+ evaluator = logView.getEvaluator();
+ helper = logView.getUpdateHelper();
+ resolver = logView.getRefHelper();
+ }
+
+ public List keys() {
+ return Collections.singletonList(KEY_SERVICE_REFS);
+ }
+
+ public synchronized void addChangeListener(ChangeListener l) {
+ listeners.add(l);
+ }
+
+ public synchronized void removeChangeListener(ChangeListener l) {
+ listeners.remove(l);
+ }
+
+ private void fireChange() {
+ ArrayList list = new ArrayList();
+ synchronized (this) {
+ list.addAll(listeners);
+ }
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ ChangeListener elem = (ChangeListener) it.next();
+ elem.stateChanged(new ChangeEvent( this ));
+ }
+ }
+
+ public Node node(Object key) {
+ FileObject clientRoot = project.getProjectDirectory();
+ WebServicesClientView clientView = WebServicesClientView.getWebServicesClientView(clientRoot);
+ if (clientView != null) {
+ WebServicesClientSupport wss = WebServicesClientSupport.getWebServicesClientSupport(clientRoot);
+ if (wss!=null) {
+ FileObject wsdlFolder = wss.getWsdlFolder();
+ if (wsdlFolder!=null) {
+ FileObject[] children = wsdlFolder.getChildren();
+ boolean foundWsdl = false;
+ for (int i=0;i