Created a separated 'externaltools' plugin: initial check-in
[phpeclipse.git] / net.sourceforge.phpeclipse.externaltools / src / net / sourceforge / phpdt / externaltools / variable / ExpandVariableContext.java
diff --git a/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/variable/ExpandVariableContext.java b/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpdt/externaltools/variable/ExpandVariableContext.java
new file mode 100644 (file)
index 0000000..b5eeb46
--- /dev/null
@@ -0,0 +1,102 @@
+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 net.sourceforge.phpdt.externaltools.model.IExternalToolConstants;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+
+/**
+ * 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 <code>IProject</code> being built.
+        * @param buildKind the kind of build being performed
+        *              (see <code>IncrementalProjectBuilder</code>).
+        */
+       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 <code>IResource</code> selected
+        *              or <code>null</code> 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 <code>IExternalToolConstants.BUILD_TYPE_*</code> 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 <code>null</code> if none.
+        * 
+        * @return the <code>IProject</code> or <code>null</code> if none
+        */
+       public IProject getProject() {
+               return project;
+       }
+       
+       /**
+        * Returns the resource selected at the time the tool
+        * is run, or <code>null</code> if none selected.
+        * 
+        * @return the <code>IResource</code> selected, or <code>null</code> if none
+        */
+       public IResource getSelectedResource() {
+               return selectedResource;
+       }
+}