###############################################################################
#  Copyright (c) 2003, 2008 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
###############################################################################
# ----------------------------------------------------------------------
# Properties for org.eclipse.ui.cheatsheets
#
# Entries are of the form CONSTANT=string
# ----------------------------------------------------------------------

# ----------------------------------------------------------------------
# Properties used by cheat sheet plugin.xml
# ----------------------------------------------------------------------
PLUGIN_NAME = Cheat Sheets
PROVIDER_NAME = Eclipse.org
CHEAT_SHEETS = Cheat Sheets
CHEAT_SHEET_CONTENT = Cheat Sheet Content
CHEAT_SHEET_ITEM_EXTENSION = Cheat Sheet Item Extension

searchParticipant.name = Cheat Sheets

command.openCheatSheet.name = Open Cheat Sheet
command.openCheatSheet.description = Open a Cheat Sheet.
commandParameter.openCheatSheet.cheatSheetId.name = Identifier

command.openCheatSheetURL.name = Open Cheat Sheet from URL
command.openCheatSheetURL.description = Open a Cheat Sheet from file at a specified URL.
commandParameter.openCheatSheetURL.cheatSheetId.name = Identifier
commandParameter.openCheatSheetURL.name.name = Name
commandParameter.openCheatSheetURL.url.name = URL

category.dialogs.name = Dialogs
category.dialogs.description = Commands for opening dialogs

command.openMessageDialog.name = Open Message Dialog
command.openMessageDialog.description = Open a Message Dialog
commandParameter.openMessageDialog.title.name = Title
commandParameter.openMessageDialog.message.name = Message
commandParameter.openMessageDialog.imageType.name = Image Type Constant
commandParameter.openMessageDialog.defaultIndex.name = Default Button Index
commandParameter.openMessageDialog.buttonLabel0.name = First Button Label
commandParameter.openMessageDialog.buttonLabel1.name = Second Button Label
commandParameter.openMessageDialog.buttonLabel2.name = Third Button Label
commandParameter.openMessageDialog.buttonLabel3.name = Fourth Button Label
commandParameter.openMessageDialog.cancelReturns.name = Return Value on Cancel

command.openInputDialog.name = Open Input Dialog
command.openInputDialog.description = Open an Input Dialog
commandParameter.openInputDialog.title.name = Title
commandParameter.openInputDialog.message.name = Message
commandParameter.openInputDialog.initialValue.name = Initial Value
commandParameter.openInputDialog.cancelReturns.name = Return Value on Cancel
