Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/filesview/ResourceContentProvider.java

Issue 9704021: Add a top-level node in the Files view to display the SDK libraries. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/filesview/ResourceContentProvider.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/filesview/ResourceContentProvider.java (revision 5473)
+++ editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/filesview/ResourceContentProvider.java (working copy)
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 Google Inc.
+ * Copyright 2012 Google Inc.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -17,10 +17,10 @@
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -28,7 +28,10 @@
import org.eclipse.swt.widgets.Display;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Files view content provider.
@@ -38,8 +41,7 @@
private Viewer viewer;
-// Synthetic libraries node support
-// private Map<IFileStore, DartLibrary> fileStoreMap;
+ private Map<IFileStore, SdkLibraryNode> sdkChildMap;
public ResourceContentProvider() {
ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
@@ -53,22 +55,30 @@
@Override
public Object[] getChildren(Object element) {
try {
- if (element instanceof IProject) {
- return getProjectChildren((IProject) element);
+ if (element instanceof IWorkspaceRoot) {
+ IWorkspaceRoot root = (IWorkspaceRoot) element;
+
+ List<Object> children = new ArrayList<Object>();
+
+ children.addAll(Arrays.asList(root.members()));
+ children.add(SdkDirectoryNode.INSTANCE);
+
+ return children.toArray();
} else if (element instanceof IContainer) {
IContainer container = (IContainer) element;
return filteredMembers(container).toArray();
} else if (element instanceof IFileStore) {
IFileStore fileStore = (IFileStore) element;
return fileStore.childStores(EFS.NONE, null);
+ } else if (element instanceof SdkDirectoryNode) {
+ return ((SdkDirectoryNode) element).getLibraries();
+ } else if (element instanceof SdkLibraryNode) {
+ return ((SdkLibraryNode) element).getFiles();
}
-// Synthetic libraries node support
-// else if (element instanceof DartLibraryImpl) {
-// return getLibraryChildren((DartLibraryImpl) element);
-// }
} catch (CoreException ce) {
//fall through
}
+
return NO_CHILDREN;
}
@@ -83,13 +93,14 @@
return ((IResource) element).getParent();
} else if (element instanceof IFileStore) {
IFileStore fileStore = (IFileStore) element;
- IFileStore parent = fileStore.getParent();
-// Synthetic libraries node support
-// if (getFileStoreMap().containsKey(parent)) {
-// return getFileStoreMap().get(parent);
-// }
- return parent;
+ if (getSdkParent(fileStore) != null) {
+ return getSdkParent(fileStore);
+ }
+
+ return fileStore.getParent();
+ } else if (element instanceof SdkLibraryNode) {
+ return SdkDirectoryNode.INSTANCE;
} else {
return null;
}
@@ -97,14 +108,6 @@
@Override
public boolean hasChildren(Object element) {
- try {
- if (element instanceof IProject) {
- return filteredMembers((IProject) element).size() > 0;
- }
- } catch (CoreException exception) {
- return false;
- }
-
return getChildren(element).length > 0;
}
@@ -123,6 +126,18 @@
});
}
+ private Map<IFileStore, SdkLibraryNode> createSdkChildMap() {
+ Map<IFileStore, SdkLibraryNode> map = new HashMap<IFileStore, SdkLibraryNode>();
+
+ for (SdkLibraryNode library : SdkDirectoryNode.INSTANCE.getLibraries()) {
+ for (IFileStore child : library.getFiles()) {
+ map.put(child, library);
+ }
+ }
+
+ return map;
+ }
+
private List<IResource> filteredMembers(IContainer container) throws CoreException {
List<IResource> children = new ArrayList<IResource>();
@@ -136,94 +151,12 @@
return children;
}
-// Synthetic libraries node support
-// private Map<IFileStore, DartLibrary> getFileStoreMap() {
-// if (fileStoreMap == null) {
-// fileStoreMap = new HashMap<IFileStore, DartLibrary>();
-//
-// try {
-// for (DartLibrary lib : DartModelManager.getInstance().getDartModel().getBundledLibraries()) {
-// if (lib instanceof DartLibraryImpl) {
-// DartLibraryImpl library = (DartLibraryImpl) lib;
-//
-// IFileStore libraryFileStore = getLibraryFileStore(library);
-//
-// fileStoreMap.put(libraryFileStore, library);
-// }
-// }
-// } catch (CoreException exception) {
-// DartToolsPlugin.log(exception);
-// }
-// }
-//
-// return fileStoreMap;
-// }
-
-// private Object[] getLibraryChildren(DartLibraryImpl library) throws CoreException {
-// IFileStore libraryFileStore = getLibraryFileStore(library);
-//
-// if (libraryFileStore != null) {
-// return libraryFileStore.childStores(EFS.NONE, null);
-// } else {
-// return NO_CHILDREN;
-// }
-// }
-
-// private IFileStore getLibraryFileStore(DartLibraryImpl library) throws CoreException {
-// URI uri = library.getLibrarySourceFile().getUri();
-//
-// if (SystemLibraryManager.isDartUri(uri)) {
-// SystemLibraryManager libraryManager = SystemLibraryManagerProvider.getSystemLibraryManager();
-//
-// uri = libraryManager.translateDartUri(uri);
-// }
-//
-// if ("file".equals(uri.getScheme())) {
-// IFileStore fileStore = EFS.getStore(uri);
-//
-// return fileStore.getParent();
-// } else {
-// return null;
-// }
-// }
-
- private Object[] getProjectChildren(IProject project) throws CoreException {
- List<Object> children = new ArrayList<Object>();
-
- List<IResource> resources = filteredMembers(project);
- for (IResource resource : resources) {
- children.add(resource);
+ private SdkLibraryNode getSdkParent(IFileStore fileStore) {
+ if (sdkChildMap == null) {
+ sdkChildMap = createSdkChildMap();
}
-// Synthetic libraries node support
-// if (DartProjectNature.hasDartNature(project)) {
-// DartProject dartProject = DartCore.create(project);
-// for (DartLibrary library : getSystemLibraries(dartProject.getDartLibraries())) {
-// children.add(library);
-// }
-// }
- return children.toArray();
+ return sdkChildMap.get(fileStore);
}
-// Synthetic libraries node support
-// private Set<DartLibrary> getSystemLibraries(DartLibrary[] libraries) throws CoreException {
-// Set<DartLibrary> results = new HashSet<DartLibrary>();
-//
-// for (DartLibrary library : libraries) {
-// for (DartLibrary lib : library.getImportedLibraries()) {
-// if (!lib.isLocal()) {
-// results.add(lib);
-// }
-// }
-// }
-//
-// // TODO(pquitslund): the model should handle this.
-// DartLibrary coreLibrary = DartModelManager.getInstance().getDartModel().getCoreLibrary();
-// if (!coreLibrary.isLocal()) {
-// results.add(coreLibrary);
-// }
-//
-// return results;
-// }
-
}

Powered by Google App Engine
This is Rietveld 408576698