1 11 package org.eclipse.jdt.internal.core; 12 13 import org.eclipse.jdt.core.*; 14 import org.eclipse.jdt.core.IJavaElement; 15 import org.eclipse.jdt.core.IJavaModelStatus; 16 import org.eclipse.jdt.core.IJavaModelStatusConstants; 17 import org.eclipse.jdt.core.IJavaProject; 18 import org.eclipse.jdt.core.IRegion; 19 import org.eclipse.jdt.core.IType; 20 import org.eclipse.jdt.core.ITypeHierarchy; 21 import org.eclipse.jdt.core.JavaModelException; 22 import org.eclipse.jdt.core.search.IJavaSearchScope; 23 import org.eclipse.jdt.internal.core.hierarchy.RegionBasedTypeHierarchy; 24 import org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy; 25 26 37 38 public class CreateTypeHierarchyOperation extends JavaModelOperation { 39 42 protected TypeHierarchy typeHierarchy; 43 44 49 public CreateTypeHierarchyOperation(IRegion region, ICompilationUnit[] workingCopies, IType element, boolean computeSubtypes) { 50 super(element); 51 this.typeHierarchy = new RegionBasedTypeHierarchy(region, workingCopies, element, computeSubtypes); 52 } 53 57 public CreateTypeHierarchyOperation(IType element, ICompilationUnit[] workingCopies, IJavaSearchScope scope, boolean computeSubtypes) { 58 super(element); 59 ICompilationUnit[] copies; 60 if (workingCopies != null) { 61 int length = workingCopies.length; 62 copies = new ICompilationUnit[length]; 63 System.arraycopy(workingCopies, 0, copies, 0, length); 64 } else { 65 copies = null; 66 } 67 this.typeHierarchy = new TypeHierarchy(element, copies, scope, computeSubtypes); 68 } 69 73 public CreateTypeHierarchyOperation(IType element, ICompilationUnit[] workingCopies, IJavaProject project, boolean computeSubtypes) { 74 super(element); 75 ICompilationUnit[] copies; 76 if (workingCopies != null) { 77 int length = workingCopies.length; 78 copies = new ICompilationUnit[length]; 79 System.arraycopy(workingCopies, 0, copies, 0, length); 80 } else { 81 copies = null; 82 } 83 this.typeHierarchy = new TypeHierarchy(element, copies, project, computeSubtypes); 84 } 85 89 protected void executeOperation() throws JavaModelException { 90 this.typeHierarchy.refresh(this); 91 } 92 95 public ITypeHierarchy getResult() { 96 return this.typeHierarchy; 97 } 98 101 public boolean isReadOnly() { 102 return true; 103 } 104 111 public IJavaModelStatus verify() { 112 IJavaElement elementToProcess= getElementToProcess(); 113 if (elementToProcess == null && !(this.typeHierarchy instanceof RegionBasedTypeHierarchy)) { 114 return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS); 115 } 116 if (elementToProcess != null && !elementToProcess.exists()) { 117 return new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, elementToProcess); 118 } 119 IJavaProject project = this.typeHierarchy.javaProject(); 120 if (project != null && !project.exists()) { 121 return new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, project); 122 } 123 return JavaModelStatus.VERIFIED_OK; 124 } 125 } 126 | Popular Tags |