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

PreferencePage.externalToolsPreferences = External Tools

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
