/*******************************************************************************
 * 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_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() {
    }
}
