Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.jdt.internal.core.hierarchy;
 
 import java.util.Map;
 
 import  org.eclipse.core.runtime.IProgressMonitor;
 import  org.eclipse.core.runtime.SubProgressMonitor;
 
 public class RegionBasedHierarchyBuilder extends HierarchyBuilder {
 
 		throws JavaModelException {
 
 		super(hierarchy);
 	}
 
 public void build(boolean computeSubtypes) {
 
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	try {
 		// optimize access to zip files while building hierarchy
 		manager.cacheZipFiles(this);
 
 		if (this.. == null || computeSubtypes) {
 			IProgressMonitor typeInRegionMonitor =
 				this.. == null ?
 					null :
 					new SubProgressMonitor(this.., 30);
 			HashMap allOpenablesInRegion = determineOpenablesInRegion(typeInRegionMonitor);
 			this..initialize(allOpenablesInRegion.size());
 			IProgressMonitor buildMonitor =
 				this.. == null ?
 					null :
 					new SubProgressMonitor(this.., 70);
 			createTypeHierarchyBasedOnRegion(allOpenablesInRegionbuildMonitor);
 		} else {
 		}
 	} finally {
 		manager.flushZipFiles(this);
 	}
 }
Configure this type hierarchy that is based on a region.
 
 private void createTypeHierarchyBasedOnRegion(HashMap allOpenablesInRegion, IProgressMonitor monitor) {
 
 	try {
 		int size = allOpenablesInRegion.size();
 		if (monitor != nullmonitor.beginTask(""size * 2/* 1 for build binding, 1 for connect hierarchy*/); //$NON-NLS-1$
 		this. = new HashMap(size);
 		Iterator javaProjects = allOpenablesInRegion.entrySet().iterator();
 		while (javaProjects.hasNext()) {
 			Map.Entry entry = (Map.EntryjavaProjects.next();
 			JavaProject project = (JavaProjectentry.getKey();
 			ArrayList allOpenables = (ArrayListentry.getValue();
 			Openable[] openables = new Openable[allOpenables.size()];
 			allOpenables.toArray(openables);
 
 			try {
 				// resolve
 				this. = searchableEnvironment.nameLookup;
 				this..resolve(openablesnullmonitor);
 			} catch (JavaModelException e) {
 				// project doesn't exit: ignore
 			}
 		}
 	} finally {
 		if (monitor != nullmonitor.done();
 	}
 }

Returns all of the openables defined in the region of this type hierarchy. Returns a map from IJavaProject to ArrayList of Openable
	private HashMap determineOpenablesInRegion(IProgressMonitor monitor) {
		try {
			HashMap allOpenables = new HashMap();
			IJavaElement[] roots =
			int length = roots.length;
			if (monitor != nullmonitor.beginTask(""length); //$NON-NLS-1$
			for (int i = 0; i <lengthi++) {
				IJavaElement root = roots[i];
				IJavaProject javaProject = root.getJavaProject();
				ArrayList openables = (ArrayListallOpenables.get(javaProject);
				if (openables == null) {
					openables = new ArrayList();
					allOpenables.put(javaProjectopenables);
				}
				switch (root.getElementType()) {
						break;
						break;
						break;
						openables.add(root);
						break;
						IType type = (IType)root;
						if (type.isBinary()) {
							openables.add(type.getClassFile());
else {
							openables.add(type.getCompilationUnit());
						}
						break;
					default :
						break;
				}
				worked(monitor, 1);
			}
			return allOpenables;
finally {
			if (monitor != nullmonitor.done();
		}
	}

Adds all of the openables defined within this java project to the list.
		IJavaProject project,
		ArrayList openables) {
		try {
			IPackageFragmentRoot[] devPathRoots =
			if (devPathRoots == null) {
				return;
			}
			for (int j = 0; j < devPathRoots.lengthj++) {
				IPackageFragmentRoot root = devPathRoots[j];
			}
catch (JavaModelException e) {
			// ignore
		}
	}

Adds all of the openables defined within this package fragment to the list.
		ArrayList openables) {
		try {
			int kind = root.getKind();
			if (kind != 0) {
				boolean isSourcePackageFragment = (kind == .);
				if (isSourcePackageFragment) {
					for (int i = 0, length = cus.lengthi < lengthi++) {
						openables.add(cus[i]);
					}
else {
					IClassFile[] classFiles = packFrag.getClassFiles();
					for (int i = 0, length = classFiles.lengthi < lengthi++) {
						openables.add(classFiles[i]);
					}
				}
			}
catch (JavaModelException e) {
			// ignore
		}
	}

Adds all of the openables defined within this package fragment root to the list.
		ArrayList openables) {
		try {
			IJavaElement[] packFrags = root.getChildren();
			for (int k = 0; k < packFrags.lengthk++) {
				IPackageFragment packFrag = (IPackageFragmentpackFrags[k];
			}
catch (JavaModelException e) {
			return;
		}
	}
New to GrepCode? Check out our FAQ X