/*******************************************************************************
 * 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_BROWSE_BUTTON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_CXF_VERSON_LABEL;
    public static String CXF_RUNTIME_PREFERENCE_PAGE_EXPORT_CXF_CLASSPATH_CONTAINER;
    
    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() {
    }
}
