241976 [CommonNavigator] [Viewers] Duplicate javascript container nodes in project explorer
diff --git a/bundles/org.eclipse.wst.jsdt.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.jsdt.ui/META-INF/MANIFEST.MF
index 43952fc..3fb115d 100644
--- a/bundles/org.eclipse.wst.jsdt.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.jsdt.ui/META-INF/MANIFEST.MF
@@ -99,7 +99,7 @@
org.eclipse.wst.jsdt.ui.text.java,
org.eclipse.wst.jsdt.ui.text.java.hover,
org.eclipse.wst.jsdt.ui.wizards
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
Bundle-Activator: org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin
Require-Bundle: org.eclipse.ui;bundle-version="[3.4.0,4.0.0)",
org.eclipse.ui.console;bundle-version="[3.3.0,4.0.0)",
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/navigator/JavaNavigatorContentProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/navigator/JavaNavigatorContentProvider.java
index 9664d0c..be1dbf8 100644
--- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/navigator/JavaNavigatorContentProvider.java
+++ b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/navigator/JavaNavigatorContentProvider.java
@@ -16,7 +16,6 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
-import java.util.Vector;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -24,6 +23,7 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
@@ -37,10 +37,7 @@
import org.eclipse.wst.jsdt.core.IJavaScriptElement;
import org.eclipse.wst.jsdt.core.IJavaScriptModel;
import org.eclipse.wst.jsdt.core.IJavaScriptProject;
-import org.eclipse.wst.jsdt.core.IPackageFragment;
-import org.eclipse.wst.jsdt.core.IPackageFragmentRoot;
import org.eclipse.wst.jsdt.core.JavaScriptCore;
-import org.eclipse.wst.jsdt.core.JavaScriptModelException;
import org.eclipse.wst.jsdt.internal.ui.navigator.IExtensionStateConstants.Values;
import org.eclipse.wst.jsdt.internal.ui.packageview.PackageExplorerContentProvider;
import org.eclipse.wst.jsdt.ui.PreferenceConstants;
@@ -170,7 +167,7 @@
return getParent(object);
}
- public PipelinedShapeModification interceptAdd(PipelinedShapeModification addModification) {
+ public PipelinedShapeModification interceptAdd(PipelinedShapeModification addModification) {
Object parent= addModification.getParent();
@@ -180,7 +177,8 @@
if (parent instanceof IWorkspaceRoot) {
deconvertJavaProjects(addModification);
- }
+ }
+
convertToJavaElements(addModification);
return addModification;
}
@@ -269,88 +267,35 @@
* @param proposedChildren
*/
private void customize(Object[] javaElements, Set proposedChildren) {
- // List elementList= Arrays.asList(javaElements);
-// IResource[] javaElementResources;
-// for(int i = 0;i<javaElements.length;i++) {
-// if(javaElements[i] instanceof IJavaScriptElement) {
-//
-// }
-// }
-
-
-// for (Iterator iter= proposedChildren.iterator(); iter.hasNext();) {
-// Object element= iter.next();
-// IResource resource= null;
-// if (element instanceof IResource) {
-// resource= (IResource)element;
-// } else if (element instanceof IAdaptable) {
-// resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
-// }
-// if (resource != null) {
-// int i= elementList.indexOf(resource);
-// if (i >= 0) {
-// javaElements[i]= null;
-// }
-// }
-// }
-
-
-
- proposedChildren.removeAll(Arrays.asList(javaElements));
- proposedChildren.addAll(Arrays.asList(javaElements));
-
-
-
- Vector allJavaElements = new Vector(Arrays.asList(javaElements));
- boolean addedPfRoot = false;
- while(allJavaElements.size()>0) {
- Object element=null;
- try {
- element = allJavaElements.remove(0);
+ List elementList= Arrays.asList(javaElements);
+ for (Iterator iter= proposedChildren.iterator(); iter.hasNext();) {
+ Object element= iter.next();
+ IResource resource= null;
+ if (element instanceof IResource) {
+ resource= (IResource)element;
+ } else if (element instanceof IAdaptable) {
+ resource= (IResource)((IAdaptable)element).getAdapter(IResource.class);
}
- catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
-
- if (element instanceof IJavaScriptElement) {
- IJavaScriptElement cElement= (IJavaScriptElement)element;
- IResource resource= cElement.getResource();
- proposedChildren.remove(resource);
- if(cElement instanceof IPackageFragmentRoot) {
- IPackageFragmentRoot root = (IPackageFragmentRoot)cElement;
- try {
- Object[] nonJava = root.getNonJavaScriptResources();
- allJavaElements.addAll(Arrays.asList(root.getChildren()));
- proposedChildren.removeAll(Arrays.asList(nonJava));
- }
- catch (JavaScriptModelException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }else if(cElement instanceof IPackageFragment) {
- IPackageFragment root = (IPackageFragment)cElement;
-
- if(root.isDefaultPackage()) {
- IPackageFragmentRoot pfRoot = (IPackageFragmentRoot)root.getParent();
- if(!addedPfRoot) allJavaElements.add(pfRoot);
- addedPfRoot = true;
- }
-
- try {
- Object[] nonJava = root.getNonJavaScriptResources();
- Object[] children = root.getChildren();
- allJavaElements.addAll(Arrays.asList(children));
- proposedChildren.removeAll(Arrays.asList(nonJava));
- }
- catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ if (resource != null) {
+ int i= elementList.indexOf(resource);
+ if (i >= 0) {
+ javaElements[i]= null;
}
}
}
-
+ for (int i= 0; i < javaElements.length; i++) {
+ Object element= javaElements[i];
+ if (element instanceof IJavaScriptElement) {
+ IJavaScriptElement cElement= (IJavaScriptElement)element;
+ IResource resource= cElement.getResource();
+ if (resource != null) {
+ proposedChildren.remove(resource);
+ }
+ proposedChildren.add(element);
+ } else if (element != null) {
+ proposedChildren.add(element);
+ }
+ }
}
@@ -364,7 +309,6 @@
return convertToJavaElements(updateSynchronization.getRefreshTargets());
}
-
protected void postAdd(final Object parent, final Object element, Collection runnables) {
if (parent instanceof IJavaScriptModel)
super.postAdd(((IJavaScriptModel) parent).getWorkspace(), element, runnables);
@@ -387,5 +331,4 @@
}
super.postRefresh(toRefresh, updateLabels, runnables);
}
-
}