/** * Returns the hierarchical packages inside a given fragment. * * @param fragment the package to get the children for or 'null' to get the children of the root * @param result Collection where the resulting elements are added * @throws JavaModelException if fetching the children fails */ private void getHierarchicalPackageChildren(IPackageFragment fragment, Collection<Object> result) throws JavaModelException { List<IPackageFragment> children = packageCache.getDirectChildren(fragment); for (IPackageFragment child : children) { if (fFoldPackages) { child= getFolded(child); } result.add(child); } }
public Object getHierarchicalPackageParent(IPackageFragment child) { String name= child.getElementName(); IPackageFragmentRoot parent= (IPackageFragmentRoot) child.getParent(); int index= name.lastIndexOf('.'); if (index != -1) { String realParentName= name.substring(0, index); IPackageFragment element= parent.getPackageFragment(realParentName); if (element.exists()) { try { if (fFoldPackages && isEmpty(element) && packageCache.hasSingleChild(element)) { return getHierarchicalPackageParent(element); } } catch (JavaModelException e) { // ignore } return element; } else { // bug 65240 IResource resource= element.getResource(); if (resource != null) { return resource; } } } if (parent.getResource() instanceof IProject) { return parent.getJavaProject(); } return parent; }
private void clearPackageCache() { packageCache.clear(); }
/** * Creates a new content provider for Java elements. * @param provideMembers if set, members of compilation units and class files are shown */ public PackageExplorerContentProvider(boolean provideMembers) { super(provideMembers); fShowLibrariesNode= false; fIsFlatLayout= false; fFoldPackages= arePackagesFoldedInHierarchicalLayout(); fPendingUpdates= null; JavaPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); fUpdateJob= null; packageCache= new PackageCache.PerRootCache(); }
IPackageFragment getSingleChild(IPackageFragment packageFragment) throws JavaModelException { PackageCache packagesOfRoot= getPackageCache(packageFragment); return packagesOfRoot.getSingleChild(packageFragment); }
List<IPackageFragment> getDirectChildren(IPackageFragment packageFragment) throws JavaModelException { PackageCache packagesOfRoot= getPackageCache(packageFragment); return packagesOfRoot.getDirectChildren(packageFragment); }
boolean hasSingleChild(IPackageFragment packageFragment) throws JavaModelException { PackageCache packagesOfRoot= getPackageCache(packageFragment); return packagesOfRoot.hasSingleChild(packageFragment); }
private PackageCache getPackageCache(IPackageFragment packageFragment) { IPackageFragmentRoot packageRoot= (IPackageFragmentRoot) packageFragment.getParent(); PackageCache packageCache= getPackageCache(packageRoot); return packageCache; }
private IPackageFragment getFolded(IPackageFragment pack) throws JavaModelException { while (isEmpty(pack)) { IPackageFragment collapsed= packageCache.getSingleChild(pack); if (collapsed == null) { return pack; } pack= collapsed; } return pack; }