package net.sourceforge.phpdt.externaltools.variable;
/**********************************************************************
Copyright (c) 2002 IBM Corp. and others. All rights reserved.
This file is 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:
**********************************************************************/
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import net.sourceforge.phpdt.externaltools.model.IExternalToolConstants;
/**
* Represents the context the external tool is running in
* that a variable uses to expand itself.
*/
public final class ExpandVariableContext {
public static final ExpandVariableContext EMPTY_CONTEXT = new ExpandVariableContext(null);
private IProject project = null;
private IResource selectedResource = null;
private String buildType = IExternalToolConstants.BUILD_TYPE_NONE;
/**
* Create a context for an external tool running
* as a builder on the given project.
*
* @param project the IProject
being built.
* @param buildKind the kind of build being performed
* (see IncrementalProjectBuilder
).
*/
public ExpandVariableContext(IProject project, int buildKind) {
super();
this.project = project;
switch (buildKind) {
case IncrementalProjectBuilder.INCREMENTAL_BUILD :
this.buildType = IExternalToolConstants.BUILD_TYPE_INCREMENTAL;
break;
case IncrementalProjectBuilder.FULL_BUILD :
this.buildType = IExternalToolConstants.BUILD_TYPE_FULL;
break;
case IncrementalProjectBuilder.AUTO_BUILD :
this.buildType = IExternalToolConstants.BUILD_TYPE_AUTO;
break;
default :
this.buildType = IExternalToolConstants.BUILD_TYPE_NONE;
break;
}
}
/**
* Create a context for an external tool running
* with the given resource selected.
*
* @param selectedResource the IResource
selected
* or null
if none.
*/
public ExpandVariableContext(IResource selectedResource) {
super();
if (selectedResource != null) {
this.selectedResource = selectedResource;
this.project = selectedResource.getProject();
}
}
/**
* Returns the build type being performed if the
* external tool is being run as a project builder.
*
* @return one of the IExternalToolConstants.BUILD_TYPE_*
constants.
*/
public String getBuildType() {
return buildType;
}
/**
* Returns the project which the variable can use. This
* will the the project being built if the tool is being
* run as a builder. Otherwise, it is the project of the
* selected resource, or null
if none.
*
* @return the IProject
or null
if none
*/
public IProject getProject() {
return project;
}
/**
* Returns the resource selected at the time the tool
* is run, or null
if none selected.
*
* @return the IResource
selected, or null
if none
*/
public IResource getSelectedResource() {
return selectedResource;
}
}