/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.internal.core; import java.util.ArrayList; import net.sourceforge.phpdt.core.IField; import net.sourceforge.phpdt.core.IMethod; import net.sourceforge.phpdt.core.IPackageFragment; import net.sourceforge.phpdt.core.IType; /** * @see IJavaElementRequestor */ public class JavaElementRequestor implements IJavaElementRequestor { /** * True if this requestor no longer wants to receive * results from its IRequestorNameLookup. */ protected boolean fCanceled= false; /** * A collection of the resulting fields, or null * if no field results have been received. */ protected ArrayList fFields= null; /** * A collection of the resulting initializers, or null * if no initializer results have been received. */ protected ArrayList fInitializers= null; /** * A collection of the resulting member types, or null * if no member type results have been received. */ protected ArrayList fMemberTypes= null; /** * A collection of the resulting methods, or null * if no method results have been received. */ protected ArrayList fMethods= null; /** * A collection of the resulting package fragments, or null * if no package fragment results have been received. */ protected ArrayList fPackageFragments= null; /** * A collection of the resulting types, or null * if no type results have been received. */ protected ArrayList fTypes= null; /** * Empty arrays used for efficiency */ protected static IField[] fgEmptyFieldArray= new IField[0]; // protected static IInitializer[] fgEmptyInitializerArray= new IInitializer[0]; protected static IType[] fgEmptyTypeArray= new IType[0]; protected static IPackageFragment[] fgEmptyPackageFragmentArray= new IPackageFragment[0]; protected static IMethod[] fgEmptyMethodArray= new IMethod[0]; /** * @see IJavaElementRequestor */ public void acceptField(IField field) { if (fFields == null) { fFields= new ArrayList(); } fFields.add(field); } /** * @see IJavaElementRequestor */ //public void acceptInitializer(IInitializer initializer) { // if (fInitializers == null) { // fInitializers= new ArrayList(); // } // fInitializers.add(initializer); //} /** * @see IJavaElementRequestor */ public void acceptMemberType(IType type) { if (fMemberTypes == null) { fMemberTypes= new ArrayList(); } fMemberTypes.add(type); } /** * @see IJavaElementRequestor */ public void acceptMethod(IMethod method) { if (fMethods == null) { fMethods = new ArrayList(); } fMethods.add(method); } /** * @see IJavaElementRequestor */ public void acceptPackageFragment(IPackageFragment packageFragment) { if (fPackageFragments== null) { fPackageFragments= new ArrayList(); } fPackageFragments.add(packageFragment); } /** * @see IJavaElementRequestor */ public void acceptType(IType type) { if (fTypes == null) { fTypes= new ArrayList(); } fTypes.add(type); } /** * @see IJavaElementRequestor */ public IField[] getFields() { if (fFields == null) { return fgEmptyFieldArray; } int size = fFields.size(); IField[] results = new IField[size]; fFields.toArray(results); return results; } /** * @see IJavaElementRequestor */ //public IInitializer[] getInitializers() { // if (fInitializers == null) { // return fgEmptyInitializerArray; // } // int size = fInitializers.size(); // IInitializer[] results = new IInitializer[size]; // fInitializers.toArray(results); // return results; //} /** * @see IJavaElementRequestor */ public IType[] getMemberTypes() { if (fMemberTypes == null) { return fgEmptyTypeArray; } int size = fMemberTypes.size(); IType[] results = new IType[size]; fMemberTypes.toArray(results); return results; } /** * @see IJavaElementRequestor */ public IMethod[] getMethods() { if (fMethods == null) { return fgEmptyMethodArray; } int size = fMethods.size(); IMethod[] results = new IMethod[size]; fMethods.toArray(results); return results; } /** * @see IJavaElementRequestor */ public IPackageFragment[] getPackageFragments() { if (fPackageFragments== null) { return fgEmptyPackageFragmentArray; } int size = fPackageFragments.size(); IPackageFragment[] results = new IPackageFragment[size]; fPackageFragments.toArray(results); return results; } /** * @see IJavaElementRequestor */ public IType[] getTypes() { if (fTypes== null) { return fgEmptyTypeArray; } int size = fTypes.size(); IType[] results = new IType[size]; fTypes.toArray(results); return results; } /** * @see IJavaElementRequestor */ public boolean isCanceled() { return fCanceled; } /** * Reset the state of this requestor. */ public void reset() { fCanceled = false; fFields = null; fInitializers = null; fMemberTypes = null; fMethods = null; fPackageFragments = null; fTypes = null; } /** * Sets the #isCanceled state of this requestor to true or false. */ public void setCanceled(boolean b) { fCanceled= b; } }