/*******************************************************************************
 * 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
 *******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.asd;

public class ASDEditorCSHelpIds {
	private static String pluginId = "org.eclipse.wst.wsdl.ui.";
	
	/*-------------------------------------------------------------------------------
	New WSDL Wizard - Options page:
	-------------------------------------------------------------------------------*/
	public static String WSDL_WIZARD_OPTIONS_PAGE_TNS_TEXT = pluginId + "wsdlu0000";
	public static String WSDL_WIZARD_OPTIONS_PAGE_PREFIX_TEXT = pluginId + "wsdlu0001";
	public static String WSDL_WIZARD_OPTIONS_PAGE_CREATE_SKELETON_CHECKBOX = pluginId + "wsdlu0002";
	public static String WSDL_WIZARD_OPTIONS_PAGE_PROTOCOL_COMBO = pluginId + "wsdlu0003";

//	Soap Binding Options
	public static String DOC_LIT_RADIO = pluginId + "wsdlu0010";
	public static String RPC_LIT_RADIO = pluginId + "wsdlu0011";
	public static String RPC_ENCODED_RADIO = pluginId + "wsdlu0012";

//	HTTP Binding Options
	public static String HTTP_GET_RADIO = pluginId + "wsdlu0013";
	public static String HTTP_POST_RADIO = pluginId + "wsdlu0014";


	/*-------------------------------------------------------------------------------
	WSDL Editor - Design View
	-------------------------------------------------------------------------------*/
	public static String WSDL_DESIGN_VIEW_SERVICE_OBJECT = pluginId + "wsdlu0020";   //  Service Object                                          --> wsdlu0020
	public static String WSDL_DESIGN_VIEW_BINDING_OBJECT = pluginId + "wsdlu0021";   //  Binding Object                                          --> wsdlu0021
	public static String WSDL_DESIGN_VIEW_PORTTYPE_OBJECT = pluginId + "wsdlu0022";   //  PortType Object                                         --> wsdlu0022


	/*-------------------------------------------------------------------------------
	WSDL Editor - Outline View
	-------------------------------------------------------------------------------*/
	public static String WSDL_OUTLINE_VIEW_GROUP = pluginId + "wsdlu0023";   //  Imports, Types, Services, Bindings, Port Types, Messages (grouped together)             --> wsdlu0023


	/*-------------------------------------------------------------------------------
	WSDL Editor - Port Wizard
	-------------------------------------------------------------------------------*/
	public static String PORT_WIZARD = pluginId + "wsdlu0030";
	public static String PORT_WIZARD_NAME_TEXT = pluginId + "wsdlu0031";   //  not used - dup below
	public static String PORT_WIZARD_BINDING_COMBO = pluginId + "wsdlu0032";   //  not used - dup below
	public static String PORT_WIZARD_PROTOCOL_COMBO = pluginId + "wsdlu0033";   //  not used - dup below


	/*-------------------------------------------------------------------------------
	WSDL Editor - Generate Binding Wizard
	-------------------------------------------------------------------------------*/
	public static String BINDING_WIZARD = pluginId + "wsdlu0040";
	public static String PROTOCOL_COMPONENT_NAME_TEXT = pluginId + "wsdlu0041";
	public static String PROTOCOL_COMPONENT_REF_COMBO = pluginId + "wsdlu0042";
	public static String PROTOCOL_COMPONENT_PROTOCOL_COMBO = pluginId + "wsdlu0043";
	public static String pROTOCOL_COMPONENT_OVERWRITE_CHECKBOX = pluginId + "wsdlu0044";

	
	/*-------------------------------------------------------------------------------
	WSDL Editor - Edit Namespaces Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String EDIT_NS_DIALOG = pluginId + "wsdlu0050";   //  Edit Namespaces Dialog                  "dialog"        --> wsdlu0050
	public static String EDIT_NS_DIALOG_TNS_TEXT = pluginId + "wsdlu0051";   //  Target Namespace                        "text"          --> wsdlu0051
	public static String EDIT_NS_DIALOG_DECLARATIONS_TABLE = pluginId + "wsdlu0052";   //  Namespace Declarations                  "table"         --> wsdlu0052

	public static String EDIT_NS_DIALOG_ADD_BUTTON = pluginId + "wsdlu0053";   //  Add...                                  "push button"   --> wsdlu0053
	public static String EDIT_NS_DIALOG_EDIT_BUTTON = pluginId + "wsdlu0054";   //  Edit...                                 "push button"   --> wsdlu0054
	public static String EDIT_NS_DIALOG_DELETE_BUTTON = pluginId + "wsdlu0055";   //  Delete                                  "push button"   --> wsdlu0055


	/*-------------------------------------------------------------------------------
	WSDL Editor - Add Namespace Declarations Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String ADD_NS_DECL = pluginId + "wsdlu0060";   //  Add Namespace Declarations Dialog       "dialog"        --> wsdlu0060
	public static String ADD_NS_DECL_SELECT_REG_NS_RADIO = pluginId + "wsdlu0061";   //  Select From Registered Namespaces       "radio"         --> wsdlu0061
	public static String ADD_NS_DECL_SPECIFY_NEW_NS_RADIO = pluginId + "wsdlu0062";   //  Specify New Namespace                   "radio"         --> wsdlu0062

	// Registered Namespaces:
	public static String ADD_NS_DECL_SELECT_NS_TO_ADD_TABLE = pluginId + "wsdlu0063";   //  Select the namespace declarations to add "table"        --> wsdlu0063

	// New Namespace:
	public static String ADD_NS_DECL_PREFIX_TEXT = pluginId + "";   //  Prefix:                                 "text"          -->(COMMON) wsdlu0064
	public static String ADD_NS_DECL_NAMESPACE_NAME_TEXT = pluginId + "";   //  Namespace Name:                         "text"          -->(COMMON) wsdlu0065
	public static String ADD_NS_DECL_LOCATION_HINT_TEXT = pluginId + "";   //  Location Hint:                          "text"          -->(COMMON) wsdlu0066
	public static String ADD_NS_DECL_BROWSE_BUTTON = pluginId + "";   //  Browse...                               "push button"   -->(COMMON) wsdlu0067
	
	
	/*-------------------------------------------------------------------------------
	WSDL Editor - New Namespace Information Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String NEW_NAMESPACE_INFO_DIALOG = pluginId + "wsdlu0068";

	public static String NAMESPACE_NAME = pluginId + "wsdlu0065";
	public static String PREFIX =         pluginId + "wsdlu0064";
	public static String LOCATION_HINT =  pluginId + "wsdlu0066";
	public static String BROWSE =         pluginId + "wsdlu0067";


	/*-------------------------------------------------------------------------------
	WSDL Editor - New Message Dialog
	-------------------------------------------------------------------------------*/
	public static String NEW_MESSAGE_DIALOG = pluginId + "wsdlu0080";
	public static String NEW_MESSAGE_DIALOG_NAME_TEXT = pluginId + "wsdlu0081";  // not used -- text will use "dialog" context Id


	/*-------------------------------------------------------------------------------
	WSDL Editor - Specify Message Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String SPECIFY_MESSAGE_DIALOG = pluginId + "wsdlu0082"; //                "dialog"        --> wsdlu0082

	public static String SPECIFY_DIALOG_NAME_TEXT = pluginId + "wsdlu0070"; //   Name (? = character, * = any string):   "text"          -->(COMMON) wsdlu0070
	public static String SPECIFY_DIALOG_COMPONENTS_LIST = pluginId + "wsdlu0071";  //  Components                              "list"          -->(COMMON) wsdlu0071

	public static String SPECIFY_DIALOG_SEARCH_SCOPE = pluginId + "wsdlu0072"; //  Search Scope:
	//Workspace, Enclosing Project, Current Resource, Working Sets (Grouped)          "radio"         -->(COMMON) wsdlu0072


	/*-------------------------------------------------------------------------------
	WSDL Editor - New Binding Dialog
	-------------------------------------------------------------------------------*/
	public static String NEW_BINDING_DIALOG = pluginId + "wsdlu0083";
	public static String NEW_BINDING_DIALOG_NAME_TEXT = pluginId + "wsdlu0084"; // not used -- text will use "dialog" context Id

	
	/*-------------------------------------------------------------------------------
	WSDL Editor - Specify Binding Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String SPECIFY_BINDING_DIALOG = pluginId + "wsdlu0085";  //  Specify Binding Dialog                  "dialog"        --> wsdlu0085

	
	/*-------------------------------------------------------------------------------
	WSDL Editor - New PortType Dialog 
	-------------------------------------------------------------------------------*/
	public static String NEW_PORTTYPE_DIALOG = pluginId + "wsdlu0086";
	public static String NEW_PORTTYPE_DIALOG_NAME_TEXT = pluginId + "wsdlu0087"; // not used -- text will use "dialog" context Id

	
	/*-------------------------------------------------------------------------------
	WSDL Editor - Specify Port Type Dialog --- common.ui
	-------------------------------------------------------------------------------*/
	public static String SPECIFY_PORTTYPE_DIALOG = pluginId + "wsdlu0088"; //  Specify Port Type Dialog                "dialog"        --> wsdlu0088

	
	/*-------------------------------------------------------------------------------
	WSDL Editor - Properties
	-------------------------------------------------------------------------------*/
	//Definition:
	public static String PROPERTIES_NAME_TEXT = pluginId + "wsdlu0100";
	public static String PROPERTIES_DEF_PREFIX_TEXT = pluginId + "wsdlu0101";
	public static String PROPERTIES_DEF_TNS_TEXT = pluginId + "wsdlu0102";

	//Port:
	public static String PROPERTIES_PORT_BINDING_COMBO = pluginId + "wsdlu0103";
	public static String PROPERTIES_PORT_ADDRESS_TEXT = pluginId + "wsdlu0104";
	public static String PROPERTIES_PORT_PROTOCOL_TEXT = pluginId + "wsdlu0105";

	//Binding:
	public static String PROPERTIES_BINDING_PORTTYPE_COMBO = pluginId + "wsdlu0106";
	public static String PROPERTIES_BINDING_PROTOCOL_TEXT = pluginId + "wsdlu0107";
	public static String PROPERTIES_BINDING_GEN_BINDING_BUTTON = pluginId + "wsdlu0108";

	//Input/Output/Fault:
	public static String PROPERTIES_MESSAGE_REF_MESSAGE_COMBO = pluginId + "wsdlu0109";

	//Part:
	public static String PROPERTIES_PART_ELEMENT_COMBO = pluginId + "wsdlu0110";
	public static String PROPERTIES_PART_TYPE_COMBO = pluginId + "wsdlu0111";
	public static String PROPERTIES_PART_TYPE_RADIO = pluginId + "wsdlu0112";
	public static String PROPERTIES_PART_ELEMENT_RADIO = pluginId + "wsdlu0113";
	

	public static String PROPERTIES_DOCUMENTATION_TAB = pluginId + "wsdlu0114";

	public static String WSDL_WIZARD_OPTIONS_PAGE = pluginId + "wsdlu0120";  // New WSDL Wizard - options page 	--> wsdlu0120
	public static String WSDL_DESIGN_VIEW = pluginId + "wsdlu0121"; //  Design View 				--> wsdlu0121
	public static String WSDL_OUTLINE_VIEW = pluginId + "wsdlu0122";  // Outline View 				--> wsdlu0122
	public static String WSDL_PROPERTIES_VIEW = pluginId + "wsdlu0123"; //  Properties View				--> wsdlu0123

//	WSDL Preference Page:
	public static String WSDL_PREF_DEFAULT_TNS = pluginId + "wsdlu0200";
	public static String WSDL_PREF_REGEN_ON_SAVE = pluginId + "wsdlu0201";
	public static String WSDL_PREF_PROMPT_REGEN_ON_SAVE = pluginId + "wsdlu0202";
}
