###############################################################################
# Copyright (c) 2001, 2010 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
###############################################################################

_UI_ACTION_SHOW_PROPERTIES=Sho&w properties
_UI_ACTION_SET_AS_FOCUS=&Set As Focus
_UI_ACTION_UPDATE_NAME=Update Name
_UI_ACTION_UPDATE_TYPE=Update type
_UI_ACTION_UPDATE_ELEMENT_REFERENCE=Update element reference
_UI_ACTION_DELETE=&Delete
_UI_ACTION_BROWSE=&Browse...
_UI_LABEL_DESIGN=Design
_UI_LABEL_SOURCE=Source
_UI_ACTION_NEW=&New...
_UI_ACTION_ADD_FIELD=Add Field
_UI_LABEL_VIEW=View:
_UI_HOVER_VIEW_MODE_DESCRIPTION=Change the view mode of the editor
_UI_ACTION_CAPTURE_SCREEN_OVERWRITE_CONFIRMATION_QUESTION=Question
_UI_ACTION_CAPTURE_SCREEN_OVERWRITE_CONFIRMATION=The file {0} already exists. Do you want to replace the existing file?
_UI_ACTION_CAPTURE_SCREEN_ERROR_TITLE=Error
_UI_ACTION_CAPTURE_SCREEN_ERROR_DESCRIPTION=Could not save editor contents
_UI_ACTION_CAPTURE_SCREEN_FORMAT_NOT_SUPPORTED=Format not supported
_UI_CAPTURE_SCREEN_ACTION_TEXT = &Export Diagram as Image...
_UI_CAPTURE_SCREEN_ACTION_TOOLTIPTEXT = Export Diagram as Image
_UI_ACTION_CAPTURE_SCREEN_DEFAULT_FILE_NAME = Diagram
_UI_ACTION_CAPTURE_SCREEN_FILE_SAVE_DIALOG_TITLE=Export Diagram as Image
_UI_HOVER_BACK_TO_SCHEMA=Show schema index view
_UI_ACTION_SELECT_ALL=Select &All
_UI_REFACTOR_CONTEXT_MENU=Refac&tor
_UI_HYPERLINK_TEXT = Open {0} with the XML Schema editor
