X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/SourceType.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/SourceType.java index 4a339bb..02bd1bc 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/SourceType.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/SourceType.java @@ -38,584 +38,654 @@ import org.eclipse.core.runtime.IProgressMonitor; */ public class SourceType extends Member implements IType { - /** - * An empty list of Strings - */ - protected static final String[] fgEmptyList = new String[] {}; - protected SourceType(JavaElement parent, String name) { - super(parent, name); - Assert.isTrue(name.indexOf('.') == -1, Util.bind("sourcetype.invalidName", name)); //$NON-NLS-1$ - } - - /** - * @see IType - */ - //public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] - // localVariableNames,int[] localVariableModifiers,boolean isStatic,ICompletionRequestor requestor) throws JavaModelException { - // if (requestor == null) { - // throw new IllegalArgumentException(ProjectPrefUtil.bind("codeAssist.nullRequestor")); //$NON-NLS-1$ - // } - // - // JavaProject project = (JavaProject) getJavaProject(); - // SearchableEnvironment environment = (SearchableEnvironment) project.getSearchableNameEnvironment(); - // NameLookup nameLookup = project.getNameLookup(); - // CompletionEngine engine = new CompletionEngine(environment, new CompletionRequestorWrapper(requestor,nameLookup), - // project.getOptions(true), project); - // - // String source = getCompilationUnit().getSource(); - // if (source != null && insertion > -1 && insertion < source.length()) { - // String encoding = project.getOption(JavaCore.CORE_ENCODING, true); - // - // char[] prefix = CharOperation.concat(source.substring(0, insertion).toCharArray(), new char[]{'{'}); - // char[] suffix = CharOperation.concat(new char[]{'}'}, source.substring(insertion).toCharArray()); - // char[] fakeSource = CharOperation.concat(prefix, snippet, suffix); - // - // BasicCompilationUnit cu = - // new BasicCompilationUnit( - // fakeSource, - // null, - // getElementName(), - // encoding); - // - // engine.complete(cu, prefix.length + position, prefix.length); - // } else { - // engine.complete(this, snippet, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic); - // } - //} - /** - * @see IType - */ - //public IField createField(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws - // JavaModelException { - // CreateFieldOperation op = new CreateFieldOperation(this, contents, force); - // if (sibling != null) { - // op.createBefore(sibling); - // } - // runOperation(op, monitor); - // return (IField) op.getResultElements()[0]; - //} - /** - * @see IType - */ - //public IInitializer createInitializer(String contents, IJavaElement sibling, IProgressMonitor monitor) throws - // JavaModelException { - // CreateInitializerOperation op = new CreateInitializerOperation(this, contents); - // if (sibling != null) { - // op.createBefore(sibling); - // } - // runOperation(op, monitor); - // return (IInitializer) op.getResultElements()[0]; - //} - /** - * @see IType - */ - //public IMethod createMethod(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws - // JavaModelException { - // CreateMethodOperation op = new CreateMethodOperation(this, contents, force); - // if (sibling != null) { - // op.createBefore(sibling); - // } - // runOperation(op, monitor); - // return (IMethod) op.getResultElements()[0]; - //} - /** - * @see IType - */ - //public IType createType(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws - // JavaModelException { - // CreateTypeOperation op = new CreateTypeOperation(this, contents, force); - // if (sibling != null) { - // op.createBefore(sibling); - // } - // runOperation(op, monitor); - // return (IType) op.getResultElements()[0]; - //} - /** - * @see JavaElement#equalsDOMNode - */ - protected boolean equalsDOMNode(IDOMNode node) throws JavaModelException { - return (node.getNodeType() == IDOMNode.TYPE) && super.equalsDOMNode(node); - } - - /* - * @see IType - */ - public IMethod[] findMethods(IMethod method) { - try { - return this.findMethods(method, this.getMethods()); - } catch (JavaModelException e) { - // if type doesn't exist, no matching method can exist - return null; - } - } - - /** - * @see IMember - */ - public IType getDeclaringType() { - IJavaElement parent = getParent(); - while (parent != null) { - if (parent.getElementType() == IJavaElement.TYPE) { - return (IType) parent; - } else if (parent instanceof IMember) { - parent = parent.getParent(); - } else { - return null; - } - } - return null; - } - - /** - * @see IJavaElement - */ - public int getElementType() { - return TYPE; - } - - /** - * @see IType#getField - */ - public IField getField(String name) { - return new SourceField(this, name); - } - - /** - * @see IType - */ - public IField[] getFields() throws JavaModelException { - ArrayList list = getChildrenOfType(FIELD); - IField[] array = new IField[list.size()]; - list.toArray(array); - return array; - } - - /** - * @see IType#getFullyQualifiedName - */ - public String getFullyQualifiedName() { - return this.getFullyQualifiedName('$'); - } - - /** - * @see IType#getFullyQualifiedName(char) - */ - public String getFullyQualifiedName(char enclosingTypeSeparator) { - String packageName = getPackageFragment().getElementName(); - if (packageName.equals(IPackageFragment.DEFAULT_PACKAGE_NAME)) { - return getTypeQualifiedName(enclosingTypeSeparator); - } - return packageName + '.' + getTypeQualifiedName(enclosingTypeSeparator); - } - - /** - * @see IType - */ - //public IInitializer getInitializer(int occurrenceCount) { - // return new Initializer(this, occurrenceCount); - //} - /** - * @see IType - */ - //public IInitializer[] getInitializers() throws JavaModelException { - // ArrayList list = getChildrenOfType(INITIALIZER); - // IInitializer[] array= new IInitializer[list.size()]; - // list.toArray(array); - // return array; - //} - /** - * @see IType#getMethod - */ - public IMethod getMethod(String name, String[] parameterTypeSignatures) { - return new SourceMethod(this, name, parameterTypeSignatures); - } - - /** - * @see IType - */ - public IMethod[] getMethods() throws JavaModelException { - ArrayList list = getChildrenOfType(METHOD); - IMethod[] array = new IMethod[list.size()]; - list.toArray(array); - return array; - } - - /** - * @see IType - */ - public IPackageFragment getPackageFragment() { - IJavaElement parentElement = this.parent; - while (parentElement != null) { - if (parentElement.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { - return (IPackageFragment) parentElement; - } else { - parentElement = parentElement.getParent(); - } - } - Assert.isTrue(false); // should not happen - return null; - } - - /** - * @see IType - */ - public String getSuperclassName() throws JavaModelException { - SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo(); - char[] superclassName = info.getSuperclassName(); - if (superclassName == null) { - return null; - } - return new String(superclassName); - } - - /** - * @see IType - */ - public String[] getSuperInterfaceNames() throws JavaModelException { - SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo(); - char[][] names = info.getInterfaceNames(); - if (names == null) { - return fgEmptyList; - } - String[] strings = new String[names.length]; - for (int i = 0; i < names.length; i++) { - strings[i] = new String(names[i]); - } - return strings; - } - - /** - * @see IType - */ - public IType getType(String name) { - return new SourceType(this, name); - } - - /** - * @see IType#getTypeQualifiedName - */ - public String getTypeQualifiedName() { - return this.getTypeQualifiedName('$'); - } - - /** - * @see IType#getTypeQualifiedName(char) - */ - public String getTypeQualifiedName(char enclosingTypeSeparator) { - if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) { - return name; - } else { - return ((IType) parent).getTypeQualifiedName(enclosingTypeSeparator) + enclosingTypeSeparator + name; - } - } - - /** - * @see IType - */ - public IType[] getTypes() throws JavaModelException { - ArrayList list = getChildrenOfType(TYPE); - IType[] array = new IType[list.size()]; - list.toArray(array); - return array; - } - - /** - * @see IParent - */ - public boolean hasChildren() throws JavaModelException { - return getChildren().length > 0; - } - - /** - * @see IType#isAnonymous() - */ - public boolean isAnonymous() throws JavaModelException { - return false; // cannot create source handle onto anonymous types - } - - /** - * @see IType - */ - public boolean isClass() throws JavaModelException { - return !isInterface(); - } - - /** - * @see IType - */ - public boolean isInterface() throws JavaModelException { - Object obj = getElementInfo(); - if (obj instanceof SourceTypeElementInfo) { - SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo(); - return info.isInterface(); - } - return false; - } - - /** - * @see IType#isLocal() - */ - public boolean isLocal() throws JavaModelException { - return false; // cannot create source handle onto local types - } - - /** - * @see IType#isMember() - */ - public boolean isMember() throws JavaModelException { - return getDeclaringType() != null; - } - - /** - * @see IType - */ -// public ITypeHierarchy loadTypeHierachy(InputStream input, IProgressMonitor monitor) throws JavaModelException { -// return loadTypeHierachy(input, DefaultWorkingCopyOwner.PRIMARY, monitor); -// } - /** - * NOTE: This method is not part of the API has it is not clear clients would easily use it: they would need to - * first make sure all working copies for the given owner exist before calling it. This is especially har at startup - * time. - * In case clients want this API, here is how it should be specified: - *

- * Loads a previously saved ITypeHierarchy from an input stream. A type hierarchy can - * be stored using ITypeHierachy#store(OutputStream). A compilation unit of a - * loaded type has the given owner if such a working copy exists, otherwise the type's - * compilation unit is a primary compilation unit. - * - * Only hierarchies originally created by the following methods can be loaded: - *