/*******************************************************************************
* Copyright (c) 2000, 2008 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.che.ide.ext.java.jdt.templates;
import org.eclipse.che.ide.ext.java.jdt.core.dom.CompilationUnit;
import org.eclipse.che.ide.ext.java.jdt.templates.api.DocumentTemplateContext;
import org.eclipse.che.ide.ext.java.jdt.templates.api.TemplateContextType;
import org.eclipse.che.ide.ext.java.jdt.text.Document;
import org.eclipse.che.ide.api.text.Position;
/** A compilation unit context. */
public abstract class CompilationUnitContext extends DocumentTemplateContext {
/** The compilation unit, may be <code>null</code>. */
private final CompilationUnit fCompilationUnit;
/** A flag to force evaluation in head-less mode. */
protected boolean fForceEvaluation;
/** A global state for proposals that change if a master proposal changes. */
protected MultiVariableGuess fMultiVariableGuess;
/** <code>true</code> if the context has a managed (i.e. added to the document) position, <code>false</code> otherwise. */
protected final boolean fIsManaged;
/**
* Creates a compilation unit context.
*
* @param type
* the context type
* @param document
* the document
* @param completionOffset
* the completion position within the document
* @param completionLength
* the completion length within the document
* @param compilationUnit
* the compilation unit (may be <code>null</code>)
*/
protected CompilationUnitContext(TemplateContextType type, Document document, int completionOffset,
int completionLength, CompilationUnit compilationUnit) {
super(type, document, completionOffset, completionLength);
fCompilationUnit = compilationUnit;
fIsManaged = false;
}
/**
* Creates a compilation unit context.
*
* @param type
* the context type
* @param document
* the document
* @param completionPosition
* the position defining the completion offset and length
* @param compilationUnit
* the compilation unit (may be <code>null</code>)
* @since 3.2
*/
protected CompilationUnitContext(TemplateContextType type, Document document, Position completionPosition,
CompilationUnit compilationUnit) {
super(type, document, completionPosition);
fCompilationUnit = compilationUnit;
fIsManaged = true;
}
/**
* Returns the compilation unit if one is associated with this context, <code>null</code> otherwise.
*
* @return the compilation unit of this context or <code>null</code>
*/
public final CompilationUnit getCompilationUnit() {
return fCompilationUnit;
}
// /** //TODO
// * Returns the enclosing element of a particular element type,
// * <code>null</code> if no enclosing element of that type exists.
// *
// * @param elementType the element type
// * @return the enclosing element of the given type or <code>null</code>
// */
// public IJavaElement findEnclosingElement(int elementType) {
// if (fCompilationUnit == null)
// return null;
//
// try {
// IJavaElement element= fCompilationUnit.getElementAt(getStart());
// if (element == null) {
// element= fCompilationUnit;
// }
//
// return element.getAncestor(elementType);
//
// } catch (JavaModelException e) {
// return null;
// }
// }
/**
* Sets whether evaluation is forced or not.
*
* @param evaluate
* <code>true</code> in order to force evaluation, <code>false</code> otherwise
*/
public void setForceEvaluation(boolean evaluate) {
fForceEvaluation = evaluate;
}
/**
* Returns the multi-variable guess.
*
* @return the multi-variable guess
*/
public MultiVariableGuess getMultiVariableGuess() {
return fMultiVariableGuess;
}
/**
* @param multiVariableGuess
* The multiVariableGuess to set.
*/
void setMultiVariableGuess(MultiVariableGuess multiVariableGuess) {
fMultiVariableGuess = multiVariableGuess;
}
// protected IJavaProject getJavaProject() {
// ICompilationUnit compilationUnit= getCompilationUnit();
// IJavaProject project= compilationUnit == null ? null : compilationUnit.getJavaProject();
// return project;
// }
}