/*******************************************************************************
 * Copyright (c) 2008 IONA Technologies PLC
 * 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:
 * IONA Technologies PLC - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.ws.internal.cxf.ui;

import org.eclipse.osgi.util.NLS;

public class CXFUIMessages extends NLS {
    private static final String BUNDLE_NAME = "org.eclipse.jst.ws.internal.cxf.ui.CXFUImessages"; //$NON-NLS-1$
    public static String CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_HOME_TAB_NAME;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_HOME_TAB_TOOLTIP;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_CXF_HOME_DIR_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_RUNTIME_NOT_SET;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_ADD_BUTTON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_EDIT_BUTTON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_REMOVE_BUTTON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_BROWSE_BUTTON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_CXF_VERSION_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_CXF_TYPE_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_EXPORT_CXF_CLASSPATH_CONTAINER;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_DESCRIPTION_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_VERSION_COLUMN_NAME;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_LOCATION_COLUMN_NAME;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_TYPE_COLUMN_NAME;

    public static String CXF_RUNTIME_PREFERENCE_PAGE_ENTER_TYPE_NAME;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_INVALID_TYPE_NAME;

    public static String CXF_PROPERTY_PAGE_RUNTIME_LABEL;
    public static String CXF_CONFIGURE_INSTALLED_RUNTIMES_LABEL;

    public static String CXF_INSTALL_WIZARD_PAGE_TITLE;
    public static String CXF_INSTALL_WIZARD_PAGE_DESCRIPTION;
    public static String CXF_INSTALL_WIZARD_ADD_WINDOW_TITLE;
    public static String CXF_INSTALL_WIZARD_EDIT_WINDOW_TITLE;

    public static String CXF_FACET_INSTALL_WIZARD_PAGE_TITLE;
    public static String CXF_FACET_INSTALL_WIZARD_PAGE_DESCRIPTION;

    public static String JAVA2WS_PREFERENCES_TAB_NAME;
    public static String JAVA2WS_PREFERENCES_TAB_TOOLTIP;

    public static String JAVA2WSDL_PREFERENCES_TAB_NAME;
    public static String JAVA2WSDL_PREFERENCES_TAB_TOOLTIP;

    public static String ANNOTATIONS_PREFERENCES_TAB_NAME;
    public static String ANNOTATIONS_PREFERENCES_TAB_TOOLTIP;

    public static String WSDL2JAVA_PREFERENCES_TAB_NAME;
    public static String WSDL2JAVA_PREFERENCES_TAB_TOOLTIP;

    public static String SPRING_CONFIG_PREFERENCES_TAB_NAME;
    public static String SPRING_CONFIG_PREFERENCES_TAB_TOOLTIP;

    public static String ANNOTATIONS_PREFERENCES_LINK;

    public static String CXF_DEFAULT_FRONTEND_LABEL;
    public static String CXF_DEFAULT_DATABINDING_LABEL;
    public static String JAVA2WS_GROUP_LABEL;
    public static String JAVA2WSDL_GROUP_LABEL;
    public static String WSDL2JAVA_GROUP_LABEL;
    public static String JAVA2WS_GEN_CLIENT_LABEL;
    public static String JAVA2WS_GEN_SERVER_LABEL;
    public static String JAVA2WS_GEN_IMPLEMENTATION_LABEL;
    public static String JAVA2WS_GEN_WRAPPER_FAULT_LABEL;
    public static String JAVA2WS_GEN_WSDL_LABEL;
    public static String JAVA2WS_DEFAULT_SOAPBINDING_LABEL;
    public static String JAVA2WS_GEN_XSD_IMPORTS;
    public static String CXF_INVALID_VERSION_FORMAT;
    public static String CXF_VERSION_NOT_SPECIFIED;
    public static String SPRING_CONFIG_GROUP_LABEL;
    public static String SPRING_CONFIG_USE_CXF_SERVLET;
    public static String SPRING_CONFIG_USE_CXF_SPRING_APPLICATION_CONTEXT;
    public static String WSDL2JAVA_PROCESS_SOAP_HEADERS;
    public static String WSDL2JAVA_LOAD_DEFAULT_NAMESPACE_PACKAGE_MAPPING;
    public static String WSDL2JAVA_USE_DEFAULT_EXCLUDES_NAMESPACE_MAPPING;
    public static String WSDL2JAVA_WSDL_VERSION_LABEL;
    public static String WSDL2JAVA_USE_DEFAULT_VALUES;

    public static String JAXWS_ANNOTATIONS_GROUP_LABEL;
    public static String JAXWS_ANNOTATIONS_GROUP_TOOLTIP;
    public static String JAXWS_GENERATE_WEB_METHOD;
    public static String JAXWS_GENERATE_WEB_PARAM;
    public static String JAXWS_GENERATE_REQUEST_WRAPPER;
    public static String JAXWS_GENERATE_RESPONSE_WRAPPER;
    public static String JAXWS_GENERATE_WEB_RESULT;
    public static String JAXWS_ANNOTATIONS_PROCESSING_GROUP_LABEL;
    public static String JAXWS_ENABLE_ANNOTATION_PROCESSING;
    public static String JAXWS_ENABLE_ANNOTATION_PROCESSING_TOOLTIP;

    public static String JAVA2WS_SOAP12_BINDING_TOOLTIP;
    public static String JAVA2WS_CREATE_XSD_IMPORTS_TOOLTIP;
    public static String JAVA2WS_DATABINDING_TOOLTIP;
    public static String JAVA2WS_FRONTEND_TOOLTIP;
    public static String JAVA2WS_GENERATE_WSDL_TOOLTIP;
    public static String JAVA2WS_GENERATE_WRAPPERBEAN_TOOLTIP;
    public static String JAVA2WS_GENERATE_CLIENT_TOOLTIP;
    public static String JAVA2WS_GENERATE_SERVER_TOOLTIP;
    public static String JAVA2WS_GENERATE_ANT_TOOLTIP;
    public static String JAVA2WS_BEANS_TOOLTIP;
    public static String JAVA2WS_TARGET_NAMESPACE_TOOLTIP;
    public static String JAVA2WS_SERVICE_NAME_TOOLTIP;
    public static String JAVA2WS_PORT_NAME_TOOLTIP;
    public static String JAVA2WS_ADDRESS_TOOLTIP;

    public static String JAVA2WS_WSDL_FILE_NAME;
    public static String JAVA2WS_OUTPUT_FILE_TOOLTIP;

    public static String JAVA2WS_USE_SEI_BUTTON;
    public static String JAVA2WS_USE_SEI_INFO_LABEL;

    public static String JAVA2WS_SELECT_SEI;
    public static String JAVA2WS_SELECT_SEI_LABEL;
    public static String JAVA2WS_SELECT_SEI_TOOLTIP;
    public static String JAVA2WS_BROWSE_LABEL;
    public static String JAVA2WS_EXTRACT_SEI;
    public static String JAVA2WS_EXTRACT_SEI_LABEL;
    public static String JAVA2WS_EXTRACT_SEI_TOOLTIP;
    public static String JAVA2WS_EXTRACT_MEMBERS_LABEL;

    public static String JAVA2WS_SELECT_ALL_BUTTON;
    public static String JAVA2WS_DESELECT_ALL_BUTTON;

    public static String JAVA2WS_SELECT_IMPLEMENTATION;
    public static String JAVA2WS_SELECT_IMPLEMENTATION_TOOLTIP;

    public static String WSDL2JAVA_FRONTEND_TOOLTIP;
    public static String WSDL2JAVA_DATABINDING_TOOLTIP;
    public static String WSDL2JAVA_WSDL_VERSION_TOOLTIP;
    public static String WSDL2JAVA_GENERATE_IMPLEMENTATION_TOOLTIP;
    public static String WSDL2JAVA_GENERATE_CLIENT_TOOLTIP;
    public static String WSDL2JAVA_GENERATE_SERVER_TOOLTIP;
    public static String WSDL2JAVA_DEFAULT_VALUES_TOOLTIP;
    public static String WSDL2JAVA_EXCLUDE_NAMESPACE_TOOLTIP;
    public static String WSDL2JAVA_PROCESS_SOAP_HEADERS_TOOLTIP;
    public static String WSDL2JAVA_DEFAULT_NAMESPACE_LOADING_TOOLTIP;
    public static String WSDL2JAVA_EXCLUDE_NAMESPACE_LOADING_TOOLTIP;
    public static String WSDL2JAVA_WSDL_LOCATION_TOOLTIP;
    public static String WSDL2JAVA_NO_ADDRESS_BINDING;
    public static String WSDL2JAVA_NO_ADDRESS_BINDING_TOOLTIP;
    public static String WSDL2JAVA_AUTO_NAME_RESOLUTION;
    public static String WSDL2JAVA_AUTO_NAME_RESOLUTION_TOOLTIP;
    public static String WSDL2JAVA_XML_CATALOG_TOOLTIP;
    public static String WSDL2JAVA_XJC_ARGS_TOOLTIP;
    public static String WSDL2JAVA_XJC_ARG_GROUP_TITLE;
    public static String WSDL2JAVA_XJC_ARG_COLUMN_NAME;
    public static String WSDL2JAVA_XJC_DESCRIPTION_COLUMN_NAME;
    public static String WSDL2JAVA_XJC_DEFAULT_VALUES;
    public static String WSDL2JAVA_XJC_TOSTRING;
    public static String WSDL2JAVA_XJC_TOSTRING_MULTILINE;
    public static String WSDL2JAVA_XJC_TOSTRING_SIMPLE;
    public static String WSDL2JAVA_XJC_LOCATOR;
    public static String WSDL2JAVA_XJC_SYNC_METHODS;
    public static String WSDL2JAVA_XJC_MARK_GENERATED;
    public static String WSDL2JAVA_XJC_EPISODE_FILE;

    public static String RESOURCE_SELECTIN_DIALOG_BROWSE_WORKSPACE_BUTTON;
    public static String RESOURCE_SELECTIN_DIALOG_BROWSE_FILE_SYSTEM_BUTTON;
    public static String RESOURCE_SELECTIN_DIALOG_BROWSE_FILE_NOT_FOUND_ERROR;

    public static String WSDL2JAVA_OUTPUT_DIRECTORY;
    public static String WSDL2JAVA_OUTPUT_DIRECTORY_TOOLTIP;

    public static String WSDL2JAVA_PACKAGE_NAME;
    public static String WSDL2JAVA_PACKAGE_NAME_TOOLTIP;

    public static String WSDL2JAVA_PACKAGE_NAME_OPTIONAL;
    public static String WSDL2JAVA_PACKAGE_NAME_OPTIONAL_TOOLTIP;

    public static String WSDL2JAVA_WSDL_NAMESPACE_COLUMN_HEADER;
    public static String WSDL2JAVA_PACKAGE_NAME_COLUMN_HEADER;

    public static String WSDL2JAVA_SERVICE_NAME;
    public static String WSDL2JAVA_SERVICE_NAME_TOOLTIP;

    public static String WSDL2JAVA_BINDING_FILES;
    public static String WSDL2JAVA_BINDING_NAME_TOOLTIP;
    public static String WSDL2JAVA_BINDING_FILES_ADD;
    public static String WSDL2JAVA_BINDING_FILES_REMOVE;

    public static String WSDL2JAVA_BINDING_FILE_DIALOG_TITLE;
    public static String WSDL2JAVA_BINDING_FILE_DIALOG_MESSAGE;
    public static String WSDL2JAVA_BINDING_FILE_DIALOG_FILTER_NAME;

    public static String WSDL2JAVA_XML_CATLOG;
    public static String WSDL2JAVA_XML_CATLOG_TOOLTIP;
    public static String WSDL2JAVA_XML_CATLOG_BROWSE;
    static {
        // initialize resource bundle
        NLS.initializeMessages(BUNDLE_NAME, CXFUIMessages.class);
    }

    private CXFUIMessages() {
    }
}
