###############################################################################
# Copyright (c) 2000, 2006 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
###############################################################################

Plugin.name = External Tools
Plugin.providerName = Eclipse.org

build_type.description= Returns the type of build being performed - "incremental", "full", "auto", or "none".
build_project.description= Returns the absolute file system path of the project currently being built, or the absolute file system path of the resource identified by an optional argument interpreted as a path relative to the project currently being built.
build_files.description= Returns the set of absolute file system paths whose modification caused the current build.  A list of the characters, 'a' (added), 'c' (changed), 'r' (removed), 'f' (files only), 'd' (directories only), can be supplied as an argument to limit the file list to just those types of deltas.  Defaults to all deltas. 
system_path.description= Returns the absolute file system path of the external tool. Resolved by finding the first occurrence of the named tool based on the system path specification. The tool name must be supplied as an argument.

ExtPoint.configurationDuplicationMaps = Launch Configuration Duplication Maps
ExternalToolsLaunchGroup.label = &External Tools
ExternalToolsLaunchGroup.title = Select or configure an external tool to run
Menu.run = &Run
ActionSet.externalTools = External Tools
Action.externalTools = &External Tools
Action.externalToolsTip = Run Last Tool
PropertyPage.externalToolsBuilders = Builders

Builder.externalTools = Integrated External Tool Builder
PreferencePage.externalToolsPreferences = External Tools

Program.externalTools = Program
programLaunchConfigurationTabGroup.description=Run a program
programBuilderLaunchConfigurationTabGroup.description=Create a configuration that will run a program during builds

ActionDefinition.externalToolMenuDelegateToolbar.name=Run Last Launched External Tool
ActionDefinition.externalToolMenuDelegateToolbar.description=Runs the last launched external Tool

ActionDefinition.openExternalToolsConfigurations.name=External Tools...
ActionDefinition.openExternalToolsConfigurations.description=Open external tools launch configuration dialog
