###############################################################################
# Copyright (c) 2003, 2004 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
###############################################################################
#
# $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/Attic/messages.properties,v $
# $Revision: 1.2 $  $Date: 2004/08/27 15:35:42 $
#


SearchPathDialog.ChoosePackages                         = &Choose Packages
SearchPathDialog.Remove                                 = &Remove
SearchPathDialog.Desc.Label                             = &Modify search path of packages within this BeanInfo classes JAR/folder
SearchPathDialog.ModifySearchPaths                      = Modify Search Paths - {0}
SearchPathDialog.NotEditable_INFO_                      = IWAV0075I Plugin type BeanInfo classes locations are not editable
SearchPathDialog.PackagePresent_INFO_                   = IWAV0076I Package already in the search path
SearchPathDialog.InputDialog.Title                      = Package
SearchPathDialog.InputDialog.Message                    = &Enter a package:
BeanInfoPathsBlock.ExportAll                            = E&xport all
BeanInfoPathsBlock.UnexportAll                          = U&nexport all
BeanInfoPathsBlock.Page.Tab.Packages                    = &Packages
BeanInfoPathsBlock.Page.Tab.Classes                     = &BeanInfo classes
BeanInfosWorkbookPage.AddFolders                        = &Add Folders
BeanInfosWorkbookPage.AddJARs                           = Add &JARs
BeanInfosWorkbookPage.AddExternalJAR                    = Add E&xternal JARs
BeanInfosWorkbookPage.AddVariable                       = Add &Variable
BeanInfosWorkbookPage.AddProjects                       = Add Projec&ts
BeanInfosWorkbookPage.ModifyPaths                       = &Modify Paths
BeanInfosWorkbookPage.Remove                            = &Remove
BeanInfosWorkbookPage.List.Text                         = &Choose locations of BeanInfo classes (BeanInfo classes locations not in current project)
BeanInfosWorkbookPage.SelectionDialog.Classes.Title     = BeanInfo Class Folders Selection
BeanInfosWorkbookPage.SelectionDialog.JARs.Title        = JAR Selection
BeanInfosWorkbookPage.SelectionDialog.JARs.Message      = &Choose JARs to be added as BeanInfo classes JARs
BeanInfosWorkbookPage.SelectionDialog.ExtJARs.Text      = JAR Selection
BeanInfosWorkbookPage.SelectionDialog.Projects.Title    = BeanInfo Projects Selection
BeanInfosWorkbookPage.SelectionDialog.Classes.Prompt    = &Choose folders to be added as BeanInfo classes folders.
BeanInfosWorkbookPage.SelectionDialog.Projects.Prompt   = &Choose projects to be added as BeanInfo projects.
PackagesWorkbook.ChoosePackages                         = &Choose packages
PackagesWorkbook.ChooseDefinedPaths                     = Choose &defined paths
PackagesWorkbook.Remove                                 = &Remove
PackagesWorkbook.LabelText                              = Choose BeanInfo &packages from the class path
PackagesWorkbook.SelectionDialog.DefinedPaths.Title     = Choose Defined Paths
PackagesWorkbook.SelectionDialog.DefinedPaths.Message   = Choose the pre-defined paths to add to the search path
LabelProvider.Library.Folder                            = {0} (class folder)
LabelProvider.Library.(PathLastSegment,PathRelative)    = {0} - {1}
LabelProvider.Library.(PathLastSegment,PathExceptLast)  = {0} - {1}
LabelProvider.Variable.(name,PathOSString)              = {0} - {1}
LabelProvider.(packageName,Path)                        = {0}: {1}

VariableSelectionBlock.variable.label                   = &Variable Name:
VariableSelectionBlock.variable.button                  = &Browse...
VariableSelectionBlock.extension.label                  = Path E&xtension:
VariableSelectionBlock.extension.button                 = Bro&wse...
VariableSelectionBlock.fullpath.label                   = Resolved Path:

VariableSelectionBlock.error.entername_ERROR_           = IWAV0077E Variable name must be entered.
VariableSelectionBlock.error.namenotexists_ERROR_       = IWAV0078E Variable does not exist.
VariableSelectionBlock.error.pathexists_ERROR_          = IWAV0079E Class path entry already exists.
VariableSelectionBlock.error.invalidextension_ERROR_    = IWAV0080E Extension is not a valid path.

VariableSelectionBlock.warning.pathnotexists_WARN_      = IWAV0081W Resolved path is not an existing JAR file.

VariableSelectionBlock.ExtJarDialog.title               = JAR Selection




#
# Properties for the com.ibm.etools.beaninfo.ui plugin
#

# This shows up as the title of a message dialog
Beaninfo_UI_.errortitle                                 = Error

Beaninfo_UI_.error                                      = Error while setting BeanInfo configuration.

BeaninfoPropertiesPage_INFO_.nojavaproject              = IWAV0019I BeanInfo is only applicable to Java projects.
BeaninfoPropertiesPage_INFO_.closedproject              = IWAV0020I BeanInfo is not available for a closed project.

# This is a checkbox on a preference page. The label is to indicate whether introspection is enabled to run or not.
BeaninfoPathsBlock_UI_.enablebeaninfo                   = &Enable BeanInfo Introspection on this Project

# This is a header line for a page of preferences.
BeaninfoPathsBlock_UI_.searchpath.label                 = Build BeanInfo &search path order and exported entries:\n(Exported entries are contributed to dependent projects)
BeaninfoPathsBlock_UI_.searchpath.up.button             = &Up
BeaninfoPathsBlock_UI_.searchpath.down.button           = &Down
BeaninfoPathsBlock_UI_.searchpath.remove.button         = &Remove
BeaninfoPathsBlock_UI_.serachpath.tab.order             = &Order and Export

BeaninfoPathsBlock_UI_.warning.EntryMissing             = Project class path entries, or BeanInfo class files are missing.

# {0} will be the package name, e.g. java.lang
BeaninfoPathsBlock_WARN_.searchpath.missing.path.format = IWAV0021W {0} - Package path not found.

# This is a message on a progress dialog.
BeaninfoPathsBlock_UI_.searchpath.operationdescription  = Setting BeanInfo search paths...

BeaninfoPathsBlock_UI_.addsearchpath.title              = Select Packages
BeaninfoPathsBlock_UI_.addsearchpath.description        = &Select packages to add to search path:

BeaninfoPathsBlock_UI_.warning.EntryMissing             = Project class path entries, or BeanInfo class files are missing.
BeaninfoPathsBlock_UI_.searchpath.add.button            = Add Package...
