/*******************************************************************************
 * Copyright (c) 2004, 2008 Tasktop Technologies 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:
 *     Tasktop Technologies - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.web.tasks;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.web.tasks.messages"; //$NON-NLS-1$

	public static String ParameterEditorDialog_New_Property;

	public static String ParameterEditorDialog_Edit_Property;

	public static String ParameterEditorDialog_Name_;

	public static String ParameterEditorDialog_Value_;

	public static String ParameterEditorDialog_Name_should_be_Java_identifier;

	public static String ParametersEditor_Parameter;

	public static String ParametersEditor_Value;

	public static String ParametersEditor_Add_;

	public static String ParametersEditor_Remove_;

	public static String ParametersEditor_Edit_;

	public static String WebQueryWizardPage_Advanced_Configuration;

	public static String WebQueryWizardPage_complete;

	public static String WebQueryWizardPage_Create_web_query;

	public static String WebQueryWizardPage_Description;

	public static String WebQueryWizardPage_Id;

	public static String WebQueryWizardPage_incomplete;

	public static String WebQueryWizardPage_New_web_query;

	public static String WebQueryWizardPage_No_matching_results_Check_query_regexp;

	public static String WebQueryWizardPage_Open;

	public static String WebQueryWizardPage_Owner;

	public static String WebQueryWizardPage_Parsing_error_;

	public static String WebQueryWizardPage_Preview;

	public static String WebQueryWizardPage_Query_Pattern_;

	public static String WebQueryWizardPage_Query_result;

	public static String WebQueryWizardPage_Query_Title_;

	public static String WebQueryWizardPage_Query_URL_;

	public static String WebQueryWizardPage_Specify_query_parameters_for_X;

	public static String WebQueryWizardPage_Status;

	public static String WebQueryWizardPage_Type;

	public static String WebQueryWizardPage_Unable_to_fetch_resource_;

	public static String WebQueryWizardPage_Updating_preview;

	public static String WebRepositoryConnector_Require_two_matching_groups;

	public static String WebRepositoryConnector_Web_Template_Advanced_;

	public static String WebRepositoryConnector_Failed_to_parse_RSS_feed;

	public static String WebRepositoryConnector_Could_not_fetch_resource;

	public static String WebRepositorySettingsPage_Web_Repository_Settings;

	public static String WebRepositorySettingsPage_Select_server_template_example_and_modify_to_match_settings_for_your_project;

	public static String WebRepositorySettingsPage_Login_Form_URL_;

	public static String WebRepositorySettingsPage_Login_Token_Pattern;

	public static String WebRepositorySettingsPage_Advanced_Configuration;

	public static String WebRepositorySettingsPage_Task_URL_;

	public static String WebRepositorySettingsPage_New_Task_URL_;

	public static String WebRepositorySettingsPage_Query_Request_URL_;

	public static String WebRepositorySettingsPage_Query_Pattern_;

	public static String WebRepositorySettingsPage_Login_Request_URL_;

	public static String WebTaskEditorPageFactory_Browser;
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
