/*******************************************************************************
 * Copyright (c) 2000, 2005 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.jst.ws.internal.consumption.ui;

import org.eclipse.osgi.util.NLS;

public final class ConsumptionUIMessages extends NLS {

	private static final String BUNDLE_NAME = "org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUI";//$NON-NLS-1$

	private ConsumptionUIMessages() {
		// Do not instantiate
	}

	public static String PLUGIN_NEW_WIZARD_NAME_WS_CLIENT;
	public static String ACTION_GENERATE_JAVA_PROXY;
	public static String CHECKBOX_SHOW_GENERATE_JAVA_PROXY_DIALOG;
	public static String TOOLTIP_PPAD_CHECKBOX_WSDL2PROXY;
	public static String TOOLTIP_SRPF_COMBO_SERVER;
	public static String TOOLTIP_SRPF_COMBO_RUNTIME;
	public static String TOOLTIP_SRPF_COMBO_J2EE;
	public static String MSG_ERROR_TASK_EXCEPTED;
	public static String MSG_ERROR_NO_SERVER_RUNTIME;
	public static String LABEL_FOLDER_NAME;
	public static String LABEL_JSP_FOLDER_NAME;
	public static String LABEL_WEB_PROJECT_NAME;
	public static String LABEL_WEBSERVICETYPE;
	public static String LABEL_J2EE_VERSION;
	public static String LABEL_NA;
	public static String BUTTON_BROWSE;
	public static String BUTTON_BROWSE_FILES;
	public static String BOTTOMUP_LABEL;
	public static String TOPDOWN_LABEL;
	public static String CLIENT_LABEL;
	public static String COMBINED_TYPE_AND_RUNTIME_LABEL;
	public static String WIZARD_TITLE_WSC;
	public static String PAGE_TITLE_WS_PROJECT;
	public static String PAGE_DESC_WS_PROJECT;
	public static String BUTTON_START_WEB_PROJECT;
	public static String BUTTON_INSTALL_SERVICE_WEB_PROJECT;
	public static String BUTTON_INSTALL_CLIENT_WEB_PROJECT;
	public static String GROUP_SCENARIO_SERVICE;
	public static String GROUP_SCENARIO_CLIENT;
	public static String LABEL_WEBSERVICECLIENTTYPE;
	public static String PAGE_TITLE_WS_RUNTIME_SELECTION;
	public static String PAGE_DESC_WS_RUNTIME_SELECTION;
	public static String LABEL_RUNTIMES_LIST;
	public static String LABEL_SERVERS_LIST;
	public static String LABEL_EDIT_BUTTON;
	public static String LABEL_SERVICE_EAR_MODULE;
	public static String LABEL_CLIENT_EAR_MODULE;
	public static String LABEL_CLIENT_MODULE;
	public static String LABEL_SERVICE_MODULE;
	public static String LABEL_CLIENT_PROJECT;
	public static String LABEL_SERVICE_PROJECT;
	public static String LABEL_CLIENT_EAR_PROJECT;
	public static String LABEL_SERVICE_EAR_PROJECT;
	public static String LABEL_CLIENT_COMP_TYPE_WEB;
	public static String LABEL_CLIENT_COMP_TYPE_EJB;
	public static String LABEL_CLIENT_COMP_TYPE_APP_CLIENT;
	public static String LABEL_CLIENT_COMP_TYPE_CONTAINERLESS;
	public static String TOOLTIP_PWRS_TEXT_RUNTIME;
	public static String TOOLTIP_PWRS_TEXT_SERVER;
	public static String TOOLTIP_PWRS_J2EE_VERSION;
	public static String LABEL_SELECTION_VIEW_TITLE;
	public static String LABEL_SELECTION_VIEW_RUNTIME;
	public static String LABEL_SELECTION_VIEW_SERVER;
	public static String LABEL_SELECTION_VIEW_EXPLORE;
	public static String LABEL_TREE_EXISTING_SERVERS;
	public static String LABEL_TREE_SERVER_TYPES;
	public static String MSG_INVALID_SRT_SELECTIONS;
	public static String MSG_NO_RUNTIME;
	public static String MSG_NO_SERVER;
	public static String MSG_ERROR_STUB_ONLY;
	public static String MSG_SERVER_TARGET_MISMATCH;
	public static String MSG_J2EE_MISMATCH;
	public static String MSG_SERVICE_PROJECT_EMPTY;
	public static String MSG_SERVICE_EAR_EMPTY;
	public static String MSG_CLIENT_PROJECT_EMPTY;
	public static String MSG_CLIENT_EAR_EMPTY;
	public static String MSG_INVALID_EJB_PROJECT;
	public static String MSG_INVALID_WEB_PROJECT;
	public static String MSG_INVALID_PROJECT_TYPE;
	public static String MSG_MODULE;
	public static String MSG_MODULE_NAME_AND_PROJECT_NAME_NOT_THE_SAME;
    public static String MSG_SERVICE_RUNTIME_DOES_NOT_SUPPORT_PROJECT;
    public static String MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_PROJECT;
    public static String MSG_SERVICE_RUNTIME_DOES_NOT_SUPPORT_TEMPLATE;
    public static String MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_TEMPLATE;
    public static String MSG_CLIENT_RUNTIME_DOES_NOT_SUPPORT_PROJECT;
    public static String MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_PROJECT;
    public static String MSG_CLIENT_RUNTIME_DOES_NOT_SUPPORT_TEMPLATE;
    public static String MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_TEMPLATE;
	public static String MSG_SAME_CLIENT_AND_SERVICE_EARS;
	public static String MSG_SAME_CLIENT_AND_SERVICE_COMPONENTS;
	public static String MSG_SAME_CLIENT_AND_SERVICE_PROJECTS;
	public static String MSG_WRONG_CLIENT_PROJECT_TYPE;
	public static String MSG_CLIENT_SUB;
	public static String MSG_SERVICE_SUB;
	public static String MSG_GENERAL_PROJECT_AND_EAR;
	public static String MSG_EAR_PROJECT_WILL_BE_CREATED;
	public static String MSG_EAR_WILL_BE_ASSOCIATED;
	public static String MSG_PROJECT_WILL_BE_CREATED;
	public static String MSG_EAR_WILL_BE_CREATED;
	public static String MSG_PROJECT_AND_EAR_CREATED;
	public static String PAGE_TITLE_WS_CLIENT_RUNTIME_SELECTION;
	public static String PAGE_DESC_WS_CLIENT_RUNTIME_SELECTION;
	public static String LABEL_CLIENT_SELECTION_VIEW_TITLE;
	public static String LABEL_CLIENT_TYPE;
	public static String LABEL_SERVICE_TYPE;
	public static String LABEL_WEB;
	public static String LABEL_EJB;
	public static String LABEL_NO_LABEL;
	public static String PAGE_MSG_VALIDATION_INTERNAL_ERROR;
	public static String PAGE_TITLE_WS_XML2BEAN;
	public static String PAGE_DESC_N2P_MAPPINGS;
	public static String MSG_MAPPING_DUPLICATE_ENTRIES;
	public static String BUTTON_GENERATE_PROXY;
	public static String PAGE_DESC_WSSKEL_CONFIG;
	public static String PAGE_TITLE_WSSKEL_CONFIG;
	public static String TOOLTIP_PBSC_TEXT_SKELETON_FOLDER;
	public static String TOOLTIP_PBSC_BUTTON_SKELETON_FOLDER_BROWSE;
	public static String LABEL_SKELETON_ROOT_NAME;
	public static String LABEL_BEAN_CLASS_NAME;
	public static String PAGE_MSG_BEAN_CANNOT_BE_EMPTY;
	public static String BUTTON_BROWSE_CLASSES;
	public static String PAGE_TITLE_WSTEST;
	public static String PAGE_DESC_WSTEST;
	public static String CHECKBOX_TEST_WEBSERVICE;
	public static String CHECKBOX_MONITOR_WEBSERVICE;
	public static String MSG_ERROR_UNABLE_TO_LAUNCH_WSDL_TEST;
	public static String BUTTON_LAUNCH_SERVICE_TEST;
	public static String PAGE_TITLE_WS_SAMPLE;
	public static String PAGE_DESC_WS_SAMPLE;
	public static String BUTTON_TEST;
	public static String LABEL_TEST_TYPES;
	public static String BUTTON_RUN_TEST;
	public static String LABEL_METHODS;
	public static String LABEL_JSP_PROJECT_NAME;
	public static String MSG_ERROR_JTS_PROXY_NOT_COMPILED;
	public static String MSG_ERROR_MALFORMED_URL;
	public static String BUTTON_SELECT_ALL;
	public static String BUTTON_DESELECT_ALL;
	public static String TOOLTIP_PBME_BUTTON_SELECT_ALL;
	public static String TOOLTIP_PBME_BUTTON_DESELECT_ALL;
	public static String PAGE_TITLE_WSDL_SELECTION;
	public static String PAGE_DESC_WSDL_SELECTION;
	public static String PAGE_TITLE_WS_PUBLISH;
	public static String PAGE_DESC_WS_PUBLISH;
	public static String PAGE_TITLE_WS_FIND;
	public static String PAGE_DESC_WS_FIND;
	public static String BUTTON_WS_PUBLISH;
	public static String BUTTON_WS_PUBLISH_PRIVATE_UDDI;
	public static String BUTTON_WS_FIND;
	public static String BUTTON_WS_FIND_PRIVATE_UDDI;
	public static String LABEL_PUBLIC_UDDI_REGISTRIES;
	public static String LABEL_EJB_BEAN_NAME;
	public static String TABLE_TITLE_EJB_BEAN_NAMES;
	public static String TABLE_TITLE_EJB_PROJECT_NAME;
	public static String LABEL_EAR_PROJECTS;
	public static String TOOLTIP_EAR_PROJECTS;
	public static String TOOLTIP_TABLE_BEAN_NAMES;
	public static String TOOLTIP_PWWS_PAGE;
	public static String TOOLTIP_PBCL_PAGE;
	public static String TOOLTIP_PBCL_TEXT_BEAN_CLASS;
	public static String TOOLTIP_PBCL_BUTTON_BEAN_CLASS_BROWSE;
	public static String TOOLTIP_PBCL_BUTTON_BEAN_RESOURCE_BROWSE;
	public static String TOOLTIP_PSTP_COMBOBOX_TEST;
	public static String TOOLTIP_PSTP_LAUNCH_BUTTON;
	public static String TOOLTIP_PWRS_PAGE;
	public static String TOOLTIP_PWRS_LIST_RUNTIMES;
	public static String TOOLTIP_PWRS_LIST_SERVERS;
	public static String TOOLTIP_PWRS_RADIO_SERVER;
	public static String TOOLTIP_PWRS_RADIO_RUNTIME;
	public static String TOOLTIP_PWRS_RADIO_EXPLORE;
	public static String TOOLTIP_PWCR_COMBO_CLIENT_TYPE;
	public static String TOOLTIP_PWCR_COMBO_SERVICE_TYPE;
	public static String TOOLTIP_PWPR_COMBO_TYPE;
	public static String TOOLTIP_PWPR_GROUP_SCENARIO_SERVICE;
	public static String TOOLTIP_PWPR_CHECKBOX_GENERATE_PROXY;
	public static String TOOLTIP_PWPR_CHECKBOX_START_WEB_PROJECT;
	public static String TOOLTIP_PWPR_CHECKBOX_INSTALL_SERVICE_WEB_PROJECT;
	public static String TOOLTIP_PWPR_CHECKBOX_INSTALL_CLIENT_WEB_PROJECT;
	public static String TOOLTIP_PWPR_CHECKBOX_LAUNCH_WS;
	public static String TOOLTIP_PWPR_CHECKBOX_TEST_SERVICE;
	public static String TOOLTIP_PWPR_CHECKBOX_MONITOR_SERVICE;
	public static String TOOLTIP_PWPR_GROUP_SCENARIO_CLIENT;
	public static String TOOLTIP_PWPR_COMBO_CLIENTTYPE;
	public static String TOOLTIP_PWPB_PAGE;
	public static String TOOLTIP_PWPB_CHECKBOX_WS_LAUNCH;
	public static String PAGE_WSIL_IMPORT;
	public static String TITLE_WSIL_IMPORT;
	public static String DESC_WSIL_IMPORT;
	public static String PAGE_TITLE_WS_SELECTION;
	public static String PAGE_DESC_WS_SELECTION;
	public static String PAGE_MSG_LOADING_WEB_SERVICE_URI;
	public static String PAGE_MSG_INVALID_WEB_SERVICE_URI;
	public static String PAGE_MSG_NO_SUCH_FILE;
	public static String PAGE_MSG_SELECTION_MUST_BE_WSDL;
	public static String PAGE_MSG_INVALID_WSIL_FILE_NAME;
	public static String MSG_ERROR_URI_NOT_RESOLVABLE;
	public static String MSG_ERROR_WSDL_HAS_NO_SERVICE_ELEMENT;
	public static String LABEL_WSIL_URI;
	public static String LABEL_BROWSE;
	public static String LABEL_WSDL;
	public static String LABEL_WSDL_URI;
	public static String LABEL_IMPORT;
	public static String LABEL_ADD;
	public static String LABEL_REMOVE;
	public static String LABEL_WS_SELECTION;
	public static String LABEL_SELECT_WSDL;
	public static String LABEL_VALIDATE_MESSAGES;
	public static String TOOLTIP_WSIL_IMPORT_PAGE;
	public static String TOOLTIP_WSIL_TEXT_WSIL;
	public static String TOOLTIP_WSIL_BUTTON_BROWSE_WSIL;
	public static String TOOLTIP_WSIL_TABLE_WSDL;
	public static String TOOLTIP_PCON_PAGE;
	public static String TOOLTIP_PCON_TEXT_WS;
	public static String TOOLTIP_PCON_BUTTON_BROWSE_WS;
	public static String TOOLTIP_VALIDATE_TEXT_MESSAGE;
	public static String TOOLTIP_TABLE_VALIDATE_MESSAGE;
	public static String TOOLTIP_PWSM_PAGE;
	public static String TOOLTIP_PWSM_CHECKBOX_TEST;
	public static String TOOLTIP_PWSM_COMBOBOX_TEST;
	public static String TOOLTIP_PWSM_CHECKBOX_LAUNCH;
	public static String TOOLTIP_PWSM_TEXT_JSP_FOLDER;
	public static String TOOLTIP_PWSM_BUTTON_JSP_FOLDER_BROWSE;
	public static String TOOLTIP_PWSM_BUTTON_SELECT_ALL;
	public static String TOOLTIP_PWSM_BUTTON_DESELECT_ALL;
	public static String TOOLTIP_PWSM_COMBO_PROJECT;
	public static String TOOLTIP_PWSM_TEXT_SAMPLE_FOLDER;
	public static String TOOLTIP_PWSM_TREE_METHODS;
	public static String TOOLTIP_PWSM_EAR_PROJECT;
	public static String DIALOG_TITLE_HTTP_BASIC_AUTH;
	public static String LABEL_URL;
	public static String LABEL_HTTP_BASIC_AUTH_USERNAME;
	public static String LABEL_HTTP_BASIC_AUTH_PASSWORD;
	public static String TOOLTIP_HTTP_BASIC_AUTH_USERNAME;
	public static String TOOLTIP_HTTP_BASIC_AUTH_PASSWORD;
	public static String MSG_ERROR_GENERATE_HANDLER_SKELETON;
	public static String MSG_ERROR_WRITE_FILE;
	public static String LABEL_HANDLERS_CONFIG;
	public static String LABEL_BUTTON_ADD;
	public static String LABEL_BUTTON_REMOVE;
	public static String LABEL_BUTTON_MOVE_UP;
	public static String LABEL_BUTTON_MOVE_DOWN;
	public static String LABEL_BUTTON_GEN_SKELETON;
	public static String LABEL_COMBO_SOURCE_LOC;
	public static String LABEL_COMBO_WS_CLIENT_REF;
	public static String LABEL_COMBO_WS_SERVICE_DESC;
	public static String LABEL_HANDLER_NAME;
	public static String LABLE_HANDLER_CLASS;
	public static String LABEL_HANDLER_PORT;
	public static String DIALOG_TITLE_WS_ADD_HANDLER;
	public static String LABEL_TEXT_HANDLER_NAME;
	public static String LABEL_TEXT_HANDLER_CLASS;
	public static String LABEL_TEXT_HANDLER_PORT;
	public static String PAGE_TITLE_SERVICE_HDLR_CONFIG;
	public static String PAGE_DESC_SERVICE_HDLR_CONFIG;
	public static String PAGE_TITLE_CLIENT_HDLR_CONFIG;
	public static String PAGE_DESC_CLIENT_HDLR_CONFIG;
	public static String TOOLTIP_EDIT_WS_HANDLERS;
	public static String TOOLTIP_BUTTON_GEN_SKELETON;
	public static String TOOLTIP_COMBO_SOURCE_LOC;
	public static String TOOLTIP_TEXT_HANDLER_NAME;
	public static String TOOLTIP_TEXT_HANDLER_CLASS;
	public static String TOOLTIP_TEXT_HANDLER_PORT;
	public static String TOOLTIP_WS_CLIENT_REF;
	public static String TOOLTIP_WS_SERVICE_DESC;
	public static String MSG_ERROR_UNABLE_TO_OPEN_JAVA_EDITOR;
	public static String MSG_WARN_IS_SERVICE_PROJECT;
	public static String MSG_USER_ABORTED;
	public static String MSG_MISSING_THIRD_PARTY_FILES;
	public static String MSG_WARNING_NO_SERVICE_ELEMENT;
	public static String STILL_VALIDATING_WSDL;
	public static String CANCEL_VALIDATION_LABEL;
	public static String CANCEL_VALIDATION_DESCRIPTION;
	public static String CANCEL_ALL_VALIDATION_LABEL;
	public static String CANCEL_ALL_VALIDATION_DESCRIPTION;
	public static String WAIT_VALIDATION_LABEL;
	public static String WAIT_VALIDATION_DESCRIPTION;
	public static String TASK_LABEL_CHECK_WSDL_VALIDATION;
	public static String TASK_DESC_CHECK_WSDL_VALIDATION;
	public static String WAIT_FOR_WSDL;
	public static String MESSAGE_VALIDATE_NO_WSDL;
	public static String MESSAGE_VALIDATE_REMOTE_WSDL;
	public static String MESSAGE_VALIDATE_ALL_WSDL;
	public static String MESSAGE_VALIDATE_IN_PROGRESS;
	public static String ERROR_MESSAGES_IN_VALIDATION;
	public static String WARNING_MESSAGES_IN_VALIDATION;
	public static String WARNING_IF_CONTINUE;
	public static String VALIDATION_COMPLETED;
	public static String TOOLTIP_VALIDATE_TEXT_MESSAGE_SUMMARY;
	public static String PAGE_TITLE_WS_START_SERVER;
	public static String PAGE_DESC_WS_START_SERVER;
	public static String LABEL_START_SERVER_TEXT1;
	public static String LABEL_START_SERVER_TEXT2;
	public static String LABEL_START_SERVER_TEXT3;
	public static String LABEL_START_SERVER_TEXT4;
	public static String LABEL_START_SERVER_BUTTON;
	public static String TOOLTIP_START_SERVER_BUTTON;
	public static String TEXT_SERVER_STATUS;
	public static String TEXT_SERVER_MSG;
	public static String TEXT_SERVER_STARTED;
	public static String TEXT_SERVER_STARTING;
	public static String TEXT_SERVER_STOPPED;
	public static String MSG_INFO_ANT_RUNTIME_HEADING;
	public static String MSG_INFO_ANT_SERVER_RUNTIME;
	public static String MSG_INFO_ANT_CLIENT_RUNTIME;
	public static String MSG_INFO_ANT_SERVER_HEADING;
	public static String MSG_INFO_ANT_SERVER;
    public static String MSG_ERROR_WEB_SERVICE_CLIENTS_NOT_FOUND;
    public static String MSG_ERROR_WEB_SERVICES_NOT_FOUND;
    public static String MSG_ERROR_WSDD_NOT_FOUND;

	static {
		NLS.initializeMessages(BUNDLE_NAME, ConsumptionUIMessages.class);
	}
}