/*******************************************************************************
 * Copyright (c) 2007 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 - Initial API and implementation
 *******************************************************************************/

package org.eclipse.ptp.services.ui.messages;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {

	private static final String BUNDLE_NAME= "org.eclipse.ptp.services.ui.messages.messages";//$NON-NLS-1$
	
	public static String NewServiceModelWidget_0;
	public static String NewServiceModelWidget_1;
	public static String NewServiceModelWidget_2;
	public static String NewServiceModelWidget_3;

	public static String RemoveServiceConfigurationAction_0;
	public static String RemoveServiceConfigurationAction_1;

	public static String SelectActiveServiceConfigurationAction_0;

	public static String ServiceConfigurationExportWizard_0;
	public static String ServiceConfigurationExportWizard_1;
	public static String ServiceConfigurationExportWizard_4;
	public static String ServiceConfigurationExportWizard_5;
	public static String ServiceConfigurationExportWizard_6;
	public static String ServiceConfigurationExportWizard_7;
	public static String ServiceConfigurationExportWizard_8;
	public static String ServiceConfigurationExportWizard_9;
	public static String ServiceConfigurationExportWizard_10;
	public static String ServiceConfigurationExportWizard_11;
	public static String ServiceConfigurationExportWizard_13;
	public static String ServiceConfigurationExportWizard_14;
	public static String ServiceConfigurationExportWizard_15;

	public static String ServiceConfigurationImportWizard_0;
	public static String ServiceConfigurationImportWizard_1;
	public static String ServiceConfigurationImportWizard_2;
	public static String ServiceConfigurationImportWizard_3;
	public static String ServiceConfigurationImportWizard_4;
	public static String ServiceConfigurationImportWizard_5;
	public static String ServiceConfigurationImportWizard_6;
	public static String ServiceConfigurationImportWizard_7;
	public static String ServiceConfigurationImportWizard_8;
	public static String ServiceConfigurationImportWizard_9;
	public static String ServiceConfigurationImportWizard_10;
	public static String ServiceConfigurationImportWizard_11;
	public static String ServiceConfigurationImportWizard_12;
	public static String ServiceConfigurationImportWizard_13;

	public static String ServiceConfigurationPreferencePage_0;
	public static String ServiceConfigurationPreferencePage_1;
	public static String ServiceConfigurationPreferencePage_2;
	public static String ServiceConfigurationPreferencePage_3;
	public static String ServiceConfigurationPreferencePage_4;
	public static String ServiceConfigurationPreferencePage_5;
	public static String ServiceConfigurationPreferencePage_6;

	public static String ServiceConfigurationPropertyPage_0;
	public static String ServiceConfigurationPropertyPage_1;
	
	public static String ServiceConfigurationSelectionDialog_0;
	public static String ServiceConfigurationSelectionDialog_1;

	public static String ServiceConfigurationSelectionWidget_0;
	public static String ServiceConfigurationSelectionWidget_1;
	public static String ServiceConfigurationSelectionWidget_2;
	public static String ServiceConfigurationSelectionWidget_3;
	public static String ServiceConfigurationSelectionWidget_4;
	public static String ServiceConfigurationSelectionWidget_9;
	public static String ServiceConfigurationSelectionWidget_10;
	public static String ServiceConfigurationSelectionWidget_11;
	public static String ServiceConfigurationSelectionWidget_12;
	public static String ServiceConfigurationSelectionWidget_13;

	public static String ServiceConfigurationSelectionWidget_14;

	public static String ServiceConfigurationSelectionWidget_5;

	public static String ServiceConfigurationSelectionWidget_6;

	public static String ServiceConfigurationSelectionWidget_7;

	public static String ServiceConfigurationSelectionWidget_8;
	
	public static String ServiceConfigurationWizard_0;
	public static String ServiceConfigurationWizard_1;
	public static String ServiceConfigurationWizard_2;
	public static String ServiceConfigurationWizard_3;
	public static String ServiceConfigurationWizard_4;
	public static String ServiceConfigurationWizard_5;
	public static String ServiceConfigurationWizard_6;

	public static String ServiceConfigurationWizardPage_0;

	public static String ServiceModelWidget_0;
	public static String ServiceModelWidget_1;
	public static String ServiceModelWidget_2;
	public static String ServiceModelWidget_3;
	public static String ServiceModelWidget_4;
	public static String ServiceModelWidget_5;
	public static String ServiceModelWidget_6;
	public static String ServiceModelWidget_7;

	public static String ServiceModelWidget_8;
	
	public static String NewServiceModelWidgetDialog_title;

	public static String ServicesDialog_0;
	public static String ServicesDialog_1;
	
	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}	

}
