###############################################################################
# Copyright (c) 2000, 2003 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are 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:
#     IBM Corporation - initial API and implementation
###############################################################################
providerName = Eclipse.org
plugin.SWTLauncherExample.name = SWT Launcher Example Plugin
category.SWTExamples.name = SWT Examples
view.LauncherExample.name = SWT Example Launcher

extension-point.launchItems.name = Launch Items

launchcategory.SWTViewExamples.name = Workbench Views
launchcategory.SWTViewExamples.description = \
	A collection of Standard Widget Toolkit examples that run as Views inside the Workbench.  \
	These examples will create a new View in the current Perspective.

launchitem.LauncherExample.name = Launcher
launchitem.LauncherExample.description = \
	The Example Launcher is used to launch SWT examples which can either be \
	Workbench Views, or Standalone applications.\n\n\
	Workbench Views are examples that are integrated into Eclipse.  When the Launcher \
	starts a Workbench View, it is opened in the currently active perspective.\n\n\
	Standalone applications are launched in a separate window.

error.CouldNotLoadResources = Unable to load resources
error.CouldNotFindRegisteredExtensions = Could Not Find Registered Extensions
error.IncompleteProgramLaunchItem = Incomplete XML ProgramLaunchItem definition, id = {0}
error.IncompleteViewLaunchItem = Incomplete XML ViewLaunchItem definition, id = {0}
error.IncompleteLaunchItem = Incomplete or unrecognized XML LaunchItem definition, id = {0}

launchitem.Null.description = <<no item selected>>

launchitem.Missing.name = <<unnamed>>
launchitem.Missing.description = <<no description available>>

view.launchGroup.text = Examples
view.launchButton.text = Run
view.descriptionGroup.text = Description

run.error.Invocation = A fatal error occurred while launching the program.
run.error.DoesNotImplementMethod = The class does not implement the open() method.
run.error.CouldNotFindClass = Could not find the class to run.
run.error.CouldNotInstantiateClass = Could not instantiate the class to run.
