###############################################################################
# Copyright (c) 2001, 2006 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_TAB_GRAPH=Design
_UI_TAB_SOURCE=Source
_UI_BUTTON_NEW=New...
_UI_LABEL_READ_ONLY=read-only
_UI_LABEL_NAMESPACE=Namespace
_UI_LABEL_PORTTYPE=PortType
_UI_LABEL_LOCATION=Location
_UI_LABEL_ADDRESS=Address
_UI_LABEL_BINDING=Binding
_UI_LABEL_PREFIX=Prefix
_UI_LABEL_NAME=Name
_UI_LABEL_TYPE=Type
_UI_ACTION_ADD_SERVICE=Add Service
_UI_ACTION_ADD_MESSAGE=Add Message
_UI_ACTION_ADD_OPERATION=Add Operation
_UI_ACTION_ADD_IMPORT=Add Import
_UI_ACTION_ADD_OUTPUT=Add Output
_UI_ACTION_ADD_FAULT=Add Fault
_UI_ACTION_ADD_PORT=Add Port
_UI_ACTION_ADD_PORTTYPE=Add PortType
_UI_ACTION_DELETE=Delete
_UI_BUTTON_BROWSE=Browse...
_UI_ACTION_NEW_PORTTYPE=New PortType...
_UI_ACTION_NEW_BINDING=New Binding...
_UI_ACTION_EXISTING_PORTTYPE=Existing PortType...
_UI_GENERATE_BINDING_CONTENT=Generate Binding Content...
_UI_ACTION_EXISTING_BINDING=Existing Binding...
_UI_LABEL_BINDING_PROTOCOL=Protocol
_UI_LABEL_TARGET_NAMESPACE=Target namespace
_UI_ACTION_ADD_BINDING=Add Binding
_UI_ACTION_ADD_SCHEMA=Add Schema
_UI_ACTION_ADD_INPUT=Add Input
_UI_SECTION_ADVANCED_ATTRIBUTES=Advanced
