Java tutorial
/********************************************************************** * This file is part of "Object Teams Development Tooling"-Software * * Copyright 2004, 2006 Fraunhofer Gesellschaft, Munich, Germany, * for its Fraunhofer Institute for Computer Architecture and Software * Technology (FIRST), Berlin, Germany and Technical University Berlin, * Germany. * * 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 * $Id: CompletionOnFieldAccessSpec.java 23416 2010-02-03 19:59:31Z stephan $ * * Please visit http://www.eclipse.org/objectteams for updates and contact. * * Contributors: * Fraunhofer FIRST - Initial API and implementation * Technical University Berlin - Initial API and implementation **********************************************************************/ package org.eclipse.objectteams.otdt.internal.codeassist; import org.eclipse.jdt.internal.codeassist.complete.CompletionNodeFound; import org.eclipse.jdt.internal.compiler.ast.TypeReference; import org.eclipse.jdt.internal.compiler.lookup.BlockScope; import org.eclipse.jdt.internal.compiler.lookup.MethodBinding; import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding; import org.eclipse.objectteams.otdt.internal.core.compiler.ast.FieldAccessSpec; import org.eclipse.objectteams.otdt.internal.core.compiler.lookup.CallinCalloutScope; /** * A FieldAccessSpec at the right hand side of a method mapping is a good candidate * for completion: we already know the receiver type (baseclass). * * @author stephan * @version $Id: CompletionOnFieldAccessSpec.java 23416 2010-02-03 19:59:31Z stephan $ */ public class CompletionOnFieldAccessSpec extends FieldAccessSpec { public CompletionOnFieldAccessSpec(char[] ident, TypeReference type, long pos, int modifiers) { super(ident, type, pos, modifiers); } public CompletionOnFieldAccessSpec(char[] ident, TypeReference type, long pos, boolean isSetter) { super(ident, type, pos, isSetter); } @Override public MethodBinding resolveFeature(ReferenceBinding receiverType, BlockScope scope, boolean callinExpected, boolean isBaseSide, boolean allowEnclosing) { throw new CompletionNodeFound(this, receiverType, scope); } @Override public void resolveTypes(CallinCalloutScope scope, boolean isBaseSide) { // need to resolve return type at least: super.resolveTypes(scope, isBaseSide); ReferenceBinding enclosing = scope.enclosingReceiverType(); ReferenceBinding baseclass = null; if (enclosing != null && enclosing.isRole()) baseclass = enclosing.baseclass(); throw new CompletionNodeFound(this, baseclass, scope); } @Override public StringBuffer print(int indent, StringBuffer output) { output.append("<CompleteOnFieldAccessSpec:"); //$NON-NLS-1$ super.print(indent, output); output.append('>'); return output; } }