/*******************************************************************************
 * Copyright (c) 2007, 2008 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 Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.equinox.internal.p2.ui.admin;

import org.eclipse.osgi.util.NLS;

/**
 * Message class for provisioning UI messages.  
 * 
 * @since 3.4
 */
public class ProvAdminUIMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.equinox.internal.p2.ui.admin.messages"; //$NON-NLS-1$
	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, ProvAdminUIMessages.class);
	}
	public static String AddArtifactRepositoryDialog_DuplicateURL;
	public static String AddArtifactRepositoryDialog_OperationLabel;
	public static String AddProfileDialog_Title;
	public static String AddMetadataRepositoryDialog_OperationLabel;
	public static String MetadataRepositoriesView_AddRepositoryTooltip;
	public static String MetadataRepositoriesView_AddRepositoryLabel;
	public static String MetadataRepositoriesView_ChooseProfileDialogTitle;
	public static String MetadataRepositoriesView_RemoveRepositoryTooltip;
	public static String MetadataRepositoriesView_RevertLabel;
	public static String MetadataRepositoriesView_UnexpectedRevertError;
	public static String ArtifactRepositoriesView_AddRepositoryTooltip;
	public static String ArtifactRepositoriesView_AddRepositoryLabel;
	public static String ArtifactRepositoriesView_RemoveRepositoryTooltip;
	public static String ArtifactRepositoriesView_RemoveRepositoryOperationLabel;
	public static String ProfilesView_ErrorRetrievingProfiles;
	public static String ProfilesView_AddProfileTooltip;
	public static String ProfilesView_AddProfileLabel;
	public static String ProfilesView_RemoveProfileLabel;
	public static String ProfilesView_RemoveProfileTooltip;
	public static String RepositoriesView_RemoveCommandLabel;
	// Preferences
	public static String ProvisioningPrefPage_HideSystemRepos;
	public static String ProvisioningPrefPage_ShowGroupsOnly;
	public static String ProvisioningPrefPage_ShowInstallRootsOnly;
	public static String ProvisioningPrefPage_CollapseIUVersions;
	public static String ProvisioningPrefPage_UseCategories;

	public static String Ops_RemoveProfileOperationLabel;
	public static String AddProfileDialog_OperationLabel;
	public static String AddProfileDialog_DuplicateProfileID;
	public static String ProvView_RefreshCommandLabel;
	public static String ProvView_RefreshCommandTooltip;

	public static String ProfileRootPropertyName;

	public static String RepositoryImplementationPropertyPage_DescriptionLabel;
	public static String RepositoryImplementationPropertyPage_LocationLabel;
	public static String RepositoryImplementationPropertyPage_NameColumnLabel;
	public static String RepositoryImplementationPropertyPage_NameLabel;
	public static String RepositoryImplementationPropertyPage_NoRepositorySelected;
	public static String RepositoryImplementationPropertyPage_PropertiesLabel;
	public static String RepositoryImplementationPropertyPage_ValueColumnLabel;

	public static String IUGroup_ID;
	public static String IUGroup_IU_ID_Required;
	public static String IUGroup_Namespace;
	public static String IUGroup_ProvidedCapabilities;
	public static String IUGroup_RequiredCapabilities;
	public static String IUGroup_TouchpointData;
	public static String IUGroup_TouchpointType;
	public static String IUGroup_Version;
	public static String IUProfilePropertiesGroup_InvalidProfileID;

	public static String IUPropertiesGroup_DescriptionPropertyLabel;
	public static String IUPropertiesGroup_NamePropertyLabel;
	public static String IUPropertiesGroup_ProviderPropertyLabel;
	public static String InstalledIUPropertyPage_NoInfoAvailable;

	public static String No_Property_Item_Selected;

	public static String ProfileGroup_Browse;
	public static String ProfileGroup_Browse2;
	public static String ProfileGroup_Environments;
	public static String ProfileGroup_Flavor;
	public static String ProfileGroup_ID;
	public static String ProfileGroup_Cache;
	public static String ProfileGroup_InstallFolder;
	public static String ProfileGroup_Name;
	public static String ProfileGroup_NL;
	public static String ProfileGroup_SelectProfileMessage;
	public static String ProfileGroup_Description;
	public static String ProfileGroup_ProfileIDRequired;
	public static String ProfileGroup_ProfileInstallFolderRequired;
	public static String ProfileGroup_SelectBundlePoolCache;

}
