Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 2101 Details for
Bug 6454
Have option for showing packages hierarchically
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Beta patch
patch.txt (text/plain), 15.07 KB, created by
Scott Rutledge
on 2002-10-04 02:39:34 EDT
(
hide
)
Description:
Beta patch
Filename:
MIME Type:
Creator:
Scott Rutledge
Created:
2002-10-04 02:39:34 EDT
Size:
15.07 KB
patch
obsolete
>Index: PackageExplorerContentProvider.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java,v >retrieving revision 1.8 >diff -u -r1.8 PackageExplorerContentProvider.java >--- PackageExplorerContentProvider.java 19 Aug 2002 10:29:15 -0000 1.8 >+++ PackageExplorerContentProvider.java 4 Oct 2002 06:35:20 -0000 >@@ -4,8 +4,13 @@ > */ > package org.eclipse.jdt.internal.ui.packageview; > >+import java.util.ArrayList; >+import java.util.List; >+ > import org.eclipse.core.resources.IResource; > import org.eclipse.core.resources.IResourceDelta; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.IProgressMonitor; > > import org.eclipse.swt.widgets.Control; > >@@ -16,12 +21,15 @@ > import org.eclipse.jface.viewers.Viewer; > > import org.eclipse.jdt.core.ElementChangedEvent; >+import org.eclipse.jdt.core.IBuffer; > import org.eclipse.jdt.core.IClassFile; > import org.eclipse.jdt.core.ICompilationUnit; > import org.eclipse.jdt.core.IElementChangedListener; > import org.eclipse.jdt.core.IJavaElement; > import org.eclipse.jdt.core.IJavaElementDelta; >+import org.eclipse.jdt.core.IJavaModel; > import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jdt.core.IOpenable; > import org.eclipse.jdt.core.IPackageFragment; > import org.eclipse.jdt.core.IPackageFragmentRoot; > import org.eclipse.jdt.core.IWorkingCopy; >@@ -41,6 +49,7 @@ > > protected TreeViewer fViewer; > protected Object fInput; >+ protected boolean fHierarchy; > > /* (non-Javadoc) > * Method declared on IContentProvider. >@@ -364,4 +373,392 @@ > ctrl.getDisplay().asyncExec(r); > } > } >+ >+ /** >+ * Returns the set of top-level packages fragments for a fragement root. >+ * * @param root the root to get the package of * @return an array of top-level packages (IPackageFragement) * @throws JavaModelException */ >+ protected Object[] getTopPackages(IPackageFragmentRoot root) throws JavaModelException { >+ IJavaElement[] fragments= root.getChildren(); >+ List rootPkgs = new ArrayList(); >+ for (int i = 0; i < fragments.length; i++) { >+ String name = fragments[i].getElementName(); >+ // top-level includes the default and any without a dot >+ if (name.indexOf('.') == -1 || name.equals("")) { >+ rootPkgs.add(new PackageNode((IPackageFragment)fragments[i])); >+ } >+ } >+ Object[] nonJavaResources= root.getNonJavaResources(); >+ if (nonJavaResources == null) >+ return rootPkgs.toArray(); >+ return concatenate(rootPkgs.toArray(), nonJavaResources); >+ } >+ >+ /* (non-Javadoc) >+ * Method declared on ITreeContentProvider. >+ */ >+ public Object[] getChildren(Object element) { >+ if (!exists(element)) >+ return NO_CHILDREN; >+ >+ if (fHierarchy && element instanceof IPackageFragmentRoot) >+ { >+ try { >+ return getTopPackages((IPackageFragmentRoot)element); >+ } catch (JavaModelException e) { >+ return NO_CHILDREN; >+ } >+ } // if >+ return super.getChildren(element); >+ } >+ >+ /** >+ * A wrapper around an IPackageFragment that treats the package >+ * hierarchically (sub-packages are children). >+ */ >+ private static class PackageNode implements IPackageFragment { >+ >+ private IPackageFragment pkg; >+ >+ /** >+ * >+ */ >+ public PackageNode(IPackageFragment pkg) { >+ this.pkg = pkg; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#exists() >+ */ >+ public boolean exists() { >+ return pkg.exists(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getAncestor(int) >+ */ >+ public IJavaElement getAncestor(int ancestorType) { >+ return pkg.getAncestor(ancestorType); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getCorrespondingResource() >+ */ >+ public IResource getCorrespondingResource() throws JavaModelException { >+ return pkg.getCorrespondingResource(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getElementName() >+ */ >+ public String getElementName() { >+ String name = pkg.getElementName(); >+ // returns just the node name, but breaks the children somehow >+// int dotIdx = name.lastIndexOf('.'); >+// if (dotIdx != -1) { >+// return name.substring(dotIdx); >+// } >+ return name; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getElementType() >+ */ >+ public int getElementType() { >+ return pkg.getElementType(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getHandleIdentifier() >+ */ >+ public String getHandleIdentifier() { >+ return pkg.getHandleIdentifier(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getJavaModel() >+ */ >+ public IJavaModel getJavaModel() { >+ return pkg.getJavaModel(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getJavaProject() >+ */ >+ public IJavaProject getJavaProject() { >+ return pkg.getJavaProject(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getOpenable() >+ */ >+ public IOpenable getOpenable() { >+ return pkg.getOpenable(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getParent() >+ */ >+ public IJavaElement getParent() { >+ return pkg.getParent(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getPath() >+ */ >+ public IPath getPath() { >+ return pkg.getPath(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getResource() >+ */ >+ public IResource getResource() { >+ return pkg.getResource(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#getUnderlyingResource() >+ */ >+ public IResource getUnderlyingResource() throws JavaModelException { >+ return pkg.getUnderlyingResource(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#isReadOnly() >+ */ >+ public boolean isReadOnly() { >+ return pkg.isReadOnly(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IJavaElement#isStructureKnown() >+ */ >+ public boolean isStructureKnown() throws JavaModelException { >+ return pkg.isStructureKnown(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) >+ */ >+ public Object getAdapter(Class adapter) { >+ return pkg.getAdapter(adapter); >+ } >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#containsJavaResources() >+ */ >+ public boolean containsJavaResources() throws JavaModelException { >+ return pkg.containsJavaResources(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#createCompilationUnit(java.lang.String, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public ICompilationUnit createCompilationUnit( >+ String name, >+ String contents, >+ boolean force, >+ IProgressMonitor monitor) >+ throws JavaModelException { >+ return pkg.createCompilationUnit(name, contents, force, monitor); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getClassFile(java.lang.String) >+ */ >+ public IClassFile getClassFile(String name) { >+ return pkg.getClassFile(name); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getClassFiles() >+ */ >+ public IClassFile[] getClassFiles() throws JavaModelException { >+ return pkg.getClassFiles(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getCompilationUnit(java.lang.String) >+ */ >+ public ICompilationUnit getCompilationUnit(String name) { >+ return pkg.getCompilationUnit(name); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getCompilationUnits() >+ */ >+ public ICompilationUnit[] getCompilationUnits() throws JavaModelException { >+ return pkg.getCompilationUnits(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getKind() >+ */ >+ public int getKind() throws JavaModelException { >+ return pkg.getKind(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#getNonJavaResources() >+ */ >+ public Object[] getNonJavaResources() throws JavaModelException { >+ // concatenate nonjava with sub-packages >+ Object[] subPkgs = getSubpackages(); >+ Object[] nonJava = pkg.getNonJavaResources(); >+ return concatenate(nonJava,subPkgs); >+ } >+ >+ /** >+ * Returns the list of sub-packages. >+ * * @return an array of IJavaElements consisting of the sub-packages * @throws JavaModelException */ >+ public IJavaElement[] getSubpackages() throws JavaModelException { >+ if (isDefaultPackage()) { >+ return new IJavaElement[0]; >+ } >+ List subPkgs = new ArrayList(); >+ IJavaElement[] packages= ((IPackageFragmentRoot)getParent()).getChildren(); >+ String name = pkg.getElementName(); >+ for (int i = 0; i < packages.length; i++) { >+ if (packages[i] == pkg) >+ continue; >+ >+ String subPkgName = packages[i].getElementName(); >+ if (subPkgName.startsWith(name) && >+ subPkgName.lastIndexOf('.') == name.length()) { >+ subPkgs.add(new PackageNode((IPackageFragment)packages[i])); >+ } >+ } >+ >+ return (IJavaElement[]) subPkgs.toArray(new IJavaElement[subPkgs.size()]); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#hasSubpackages() >+ */ >+ public boolean hasSubpackages() throws JavaModelException { >+ return pkg.hasSubpackages(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IPackageFragment#isDefaultPackage() >+ */ >+ public boolean isDefaultPackage() { >+ return pkg.isDefaultPackage(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IParent#getChildren() >+ */ >+ public IJavaElement[] getChildren() throws JavaModelException { >+ IJavaElement[] children = pkg.getChildren(); >+ IJavaElement[] pkgs = getSubpackages(); >+ IJavaElement[] both = new IJavaElement[children.length + pkgs.length]; >+ System.arraycopy(children, 0, both, 0, children.length); >+ System.arraycopy(pkgs, 0, both, children.length, pkgs.length); >+ return both; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IParent#hasChildren() >+ */ >+ public boolean hasChildren() throws JavaModelException { >+ return pkg.hasChildren() || hasSubpackages(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#close() >+ */ >+ public void close() throws JavaModelException { >+ pkg.close(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#getBuffer() >+ */ >+ public IBuffer getBuffer() throws JavaModelException { >+ return pkg.getBuffer(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#hasUnsavedChanges() >+ */ >+ public boolean hasUnsavedChanges() throws JavaModelException { >+ return pkg.hasUnsavedChanges(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#isConsistent() >+ */ >+ public boolean isConsistent() throws JavaModelException { >+ return pkg.isConsistent(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#isOpen() >+ */ >+ public boolean isOpen() { >+ return pkg.isOpen(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#makeConsistent(org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void makeConsistent(IProgressMonitor progress) throws JavaModelException { >+ pkg.makeConsistent(progress); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#open(org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void open(IProgressMonitor progress) throws JavaModelException { >+ pkg.open(progress); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.IOpenable#save(org.eclipse.core.runtime.IProgressMonitor, boolean) >+ */ >+ public void save(IProgressMonitor progress, boolean force) throws JavaModelException { >+ pkg.save(progress, force); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.ISourceManipulation#copy(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.IJavaElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void copy( >+ IJavaElement container, >+ IJavaElement sibling, >+ String rename, >+ boolean replace, >+ IProgressMonitor monitor) >+ throws JavaModelException { >+ pkg.copy(container, sibling, rename, replace, monitor); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.ISourceManipulation#delete(boolean, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void delete(boolean force, IProgressMonitor monitor) throws JavaModelException { >+ pkg.delete(force, monitor); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.ISourceManipulation#move(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.IJavaElement, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void move( >+ IJavaElement container, >+ IJavaElement sibling, >+ String rename, >+ boolean replace, >+ IProgressMonitor monitor) >+ throws JavaModelException { >+ pkg.move(container, sibling, rename, replace, monitor); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.jdt.core.ISourceManipulation#rename(java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void rename(String name, boolean replace, IProgressMonitor monitor) throws JavaModelException { >+ pkg.rename(name, replace, monitor); >+ } >+ >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 6454
: 2101