/*******************************************************************************
 * Copyright (c) 2005, 2017 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 * IBM - Initial API and implementation
 * Benjamin Muskalla - bug 29633
 * Oakland Software Incorporated (Francis Upton) <francisu@ieee.org>
 *		- Bug 224997 [Workbench] Impossible to copy project
 * Dina Sayed, dsayed@eg.ibm.com, IBM -  bug 269844
 * Serge Beauchamp (Freescale Semiconductor) - [252996] Resource filters
 *     Markus Schorn (Wind River Systems) -  bug 284447
 *     James Blackburn (Broadcom Corp.)   -  bug 340978
 * Christian Georgi (SAP) - Bug 423882 - Warn user if workspace is newer than IDE
 * Lars Vogel <Lars.Vogel@vogella.com> - Bug 431862
 * Christian Georgi (SAP SE)           - bug 432480, bug 458811
 * Jan-Ove Weichel <janove.weichel@vogella.com> - Bug 411578
 * Patrik Suzzi <psuzzi@gmail.com> - Bug 485201, 502050, 514355
 * Simon Scholz <simon.scholz@vogella.com> - Bug 486777
 * Lucas Bullen (Red Hat Inc.) - Bug 522096
 * Gunnar Wagenknecht - [102527] Project Natures property page
 * Mickael Istria (Red Hat Inc) - [102527] Project Natures property page
 *******************************************************************************/
package org.eclipse.ui.internal.ide;

import org.eclipse.osgi.util.NLS;

public class IDEWorkbenchMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ui.internal.ide.messages";//$NON-NLS-1$
	// package: org.eclipse.ui.ide

	public static String IDEWorkbenchAdvisor_noPerspective;
	public static String IDEWorkbenchAdvisor_cancelHistoryPruning;
	public static String IDEWorkbenchAdvisor_preHistoryCompaction;
	public static String IDEWorkbenchAdvisor_postHistoryCompaction;

	public static String IDE_noFileEditorSelectedUserCanceled;
	public static String IDE_noFileEditorFound;
	public static String IDE_coreExceptionFileStore;

	public static String OpenWithMenu_Other;
	public static String OpenWithMenu_OtherDialogDescription;

	public static String QuickStartAction_errorDialogTitle;
	public static String QuickStartAction_infoReadError;

	public static String ConfigurationLogUpdateSection_installConfiguration;
	public static String ConfigurationLogUpdateSection_lastChangedOn;
	public static String ConfigurationLogUpdateSection_location;
	public static String ConfigurationLogUpdateSection_IU;
	public static String ConfigurationLogUpdateSection_IUHeader;
	public static String ConfigurationLogUpdateSection_bundle;
	public static String ConfigurationLogUpdateSection_bundleHeader;
	public static String ConfigurationLogUpdateSection_timestamp;

	public static String ErrorClosing;
	public static String ErrorOnSaveAll;
	public static String ErrorOnCloseEditors;

	public static String ResourceInfoPage_noResource;

	public static String ResourceFilterPage_title;
	public static String ResourceFilterPage_noResource;
	public static String ResourceFilterPage_addButtonLabel;
	public static String ResourceFilterPage_addGroupButtonLabel;
	public static String ResourceFilterPage_editButtonLabel;
	public static String ResourceFilterPage_removeButtonLabel;
	public static String ResourceFilterPage_columnFilterMode;
	public static String ResourceFilterPage_columnFilterDescription;
	public static String ResourceFilterPage_columnFilterTarget;
	public static String ResourceFilterPage_columnFilterPattern;
	public static String ResourceFilterPage_applyRecursivelyToFolderStructure;
	public static String ResourceFilterPage_recursive;
	public static String ResourceFilterPage_details;
	public static String ResourceFilterPage_caseSensitive;
	public static String ResourceFilterPage_regularExpression;
	public static String ResourceFilterPage_multiMatcher_Matcher;
	public static String ResourceFilterPage_multiMatcher_FileLength;
	public static String ResourceFilterPage_multiMatcher_TimeInterval;
	public static String ResourceFilterPage_multiMatcher_InvalidFileLength;
	public static String ResourceFilterPage_multiMatcher_InvalidTimeInterval;
	public static String ResourceFilterPage_includeOnly;
	public static String ResourceFilterPage_excludeAll;
	public static String ResourceFilterPage_includeOnlyColumn;
	public static String ResourceFilterPage_excludeAllColumn;
	public static String ResourceFilterPage_filesAndFolders;
	public static String ResourceFilterPage_files;
	public static String ResourceFilterPage_folders;
	public static String ResourceFilterPage_editFilterDialogTitle;
	public static String ResourceFilterPage_newFilterDialogTitleFolder;
	public static String ResourceFilterPage_newFilterDialogTitleProject;
	public static String ResourceFilterPage_addSubFilterActionLabel;
	public static String ResourceFilterPage_addSubFilterGroupActionLabel;
	public static String ResourceFilterPage_removeFilterActionLabel;
	public static String ResourceFilterPage_editFilterActionLabel;
	public static String ResourceFilterPage_multiKeyName;
	public static String ResourceFilterPage_multiKeyProjectRelativePath;
	public static String ResourceFilterPage_multiKeyLocation;
	public static String ResourceFilterPage_multiKeyLastModified;
	public static String ResourceFilterPage_multiKeyCreated;
	public static String ResourceFilterPage_multiKeyLength;
	public static String ResourceFilterPage_multiKeyReadOnly;
	public static String ResourceFilterPage_multiKeySymLink;
	public static String ResourceFilterPage_multiEquals;
	public static String ResourceFilterPage_multiMatches;
	public static String ResourceFilterPage_multiLargerThan;
	public static String ResourceFilterPage_multiSmallerThan;
	public static String ResourceFilterPage_multiBefore;
	public static String ResourceFilterPage_multiAfter;
	public static String ResourceFilterPage_multiWithin;
	public static String ResourceFilterPage_true;
	public static String ResourceFilterPage_false;

	//
	//
	// Copies from org.eclipse.ui.workbench
	//
	public static String showAdvanced;
	public static String hideAdvanced;
	public static String editfilters;
	public static String useDefaultLocation;
	public static String createLinkedFolder;
	public static String createVirtualFolder;

	// ==============================================================================
	// Workbench Actions
	// ==============================================================================

	// --- File Menu ---
	public static String Workbench_file;
	public static String Workbench_new;
	public static String OpenWorkspaceAction_text;
	public static String OpenWorkspaceAction_toolTip;
	public static String OpenWorkspaceAction_other;
	public static String NewProjectAction_text;
	public static String NewProjectAction_toolTip;
	public static String NewExampleAction_text;
	public static String NewExampleAction_toolTip;
	public static String SaveAsDialog_title;
	public static String SaveAsDialog_message;
	public static String SaveAsDialog_text;
	public static String SaveAsDialog_fileLabel;
	public static String SaveAsDialog_file;
	public static String SaveAsDialog_overwriteQuestion;
	public static String SaveAsDialog_closedProjectMessage;
	public static String Workbench_projectProperties;
	public static String Workbench_projectPropertiesToolTip;


	// --- Edit Menu ---
	public static String Workbench_edit;
	public static String Workbench_addBookmark;
	public static String Workbench_addBookmarkToolTip;
	public static String Workbench_addTask;
	public static String Workbench_addTaskToolTip;


	// --- Perspective Menu ---
	public static String Workbench_perspective;

	// --- Navigate Menu ---
	public static String Workbench_navigate;
	public static String Workbench_goTo;

	public static String Workbench_showIn;

	// --- Project Menu ---
	public static String Workbench_project;

	public static String Workbench_buildProject;
	public static String Workbench_buildProjectToolTip;
	public static String Workbench_rebuildProject;
	public static String Workbench_rebuildProjectToolTip;
	public static String Workbench_buildClean;
	public static String Workbench_buildSet;
	public static String Workbench_buildAutomatically;

	public static String GlobalBuildAction_text;
	public static String GlobalBuildAction_toolTip;
	public static String GlobalBuildAction_rebuildText;
	public static String GlobalBuildAction_rebuildToolTip;
	public static String GlobalBuildAction_buildProblems;
	public static String GlobalBuildAction_internalError;
	public static String GlobalBuildAction_buildOperationTitle;
	public static String GlobalBuildAction_rebuildAllOperationTitle;
	public static String GlobalBuildAction_jobTitle;

	public static String BuildSetAction_noBuildTitle;
	public static String BuildSetAction_noProjects;


	// --- Window Menu ---
	public static String Workbench_window;
	public static String Workbench_openPerspective;
	public static String Workbench_showView;

	public static String PromptOnExitDialog_shellTitle;
	public static String PromptOnExitDialog_message0;
	public static String PromptOnExitDialog_message1;
	public static String PromptOnExitDialog_choice;
	public static String PromptOnExitDialog_button_label_exit;

	public static String Workbench_shortcuts;
	public static String Workbench_openNewWindow;


	// --- Help Menu ---
	public static String Workbench_help;
	public static String QuickStart_text;
	public static String QuickStart_toolTip;
	public static String QuickStartMessageDialog_title;
	public static String QuickStartMessageDialog_message;
	public static String WelcomePageSelectionDialog_title;
	public static String WelcomePageSelectionDialog_message;
	public static String TipsAndTricks_text;
	public static String TipsAndTricks_toolTip;
	public static String TipsAndTricksMessageDialog_title;
	public static String TipsAndTricksMessageDialog_message;
	public static String TipsAndTricksPageSelectionDialog_title;
	public static String TipsAndTricksPageSelectionDialog_message;
	public static String TipsAndTricksErrorDialog_title;
	public static String TipsAndTricksErrorDialog_noHref;
	public static String TipsAndTricksErrorDialog_noFeatures;

	// ==============================================================================
	// Navigator Actions
	// ==============================================================================
	public static String OpenWithMenu_dialogTitle;

	public static String CopyProjectAction_title;
	public static String CopyProjectAction_toolTip;
	public static String CopyProjectAction_copyTitle;
	public static String CopyProjectAction_copyNameOneArg;
	public static String CopyProjectAction_copyNameTwoArgs;
	public static String CopyProjectAction_alreadyExists;
	public static String CopyProjectAction_copyFailedTitle;
	public static String CopyProjectAction_internalError;

	public static String CopyResourceAction_title;
	public static String CopyResourceAction_toolTip;
	public static String CopyResourceAction_selectDestination;

	public static String MoveProjectAction_text;
	public static String MoveProjectAction_toolTip;
	public static String MoveProjectAction_moveTitle;
	public static String MoveProjectAction_dialogTitle;
	public static String MoveProjectAction_internalError;

	public static String MoveResourceAction_text;
	public static String MoveResourceAction_toolTip;
	public static String MoveResourceAction_title;
	public static String MoveResourceAction_checkMoveMessage;

	public static String ReadOnlyCheck_problems;

	public static String RenameResourceAction_text;
	public static String RenameResourceAction_toolTip;
	public static String RenameResourceAction_operationTitle;
	public static String RenameResourceAction_inputDialogTitle;
	public static String RenameResourceAction_inputDialogMessage;
	public static String RenameResourceAction_checkTitle;
	public static String RenameResourceAction_readOnlyCheck;
	public static String RenameResourceAction_resourceExists;
	public static String RenameResourceAction_projectExists;
	public static String RenameResourceAction_nameExists;
	public static String RenameResourceAction_overwriteQuestion;
	public static String RenameResourceAction_overwriteProjectQuestion;
	public static String RenameResourceAction_problemTitle;
	public static String RenameResourceAction_progress;
	public static String RenameResourceAction_nameMustBeDifferent;
	public static String RenameResourceAction_problemMessage;

	public static String DeleteResourceAction_text;
	public static String DeleteResourceAction_toolTip;
	public static String DeleteResourceAction_title1;
	public static String DeleteResourceAction_titleN;
	public static String DeleteResourceAction_confirm1;
	public static String DeleteResourceAction_confirmN;
	public static String DeleteResourceAction_titleProject1;
	public static String DeleteResourceAction_titleProjectN;
	public static String DeleteResourceAction_confirmProject1;
	public static String DeleteResourceAction_confirmProjectN;
	public static String DeleteResourceAction_deleteContents1;
	public static String DeleteResourceAction_deleteContentsN;
	public static String DeleteResourceAction_deleteContentsDetails;
	public static String DeleteResourceAction_doNotDeleteContents;
	public static String DeleteResourceAction_confirmLinkedResource1;
	public static String DeleteResourceAction_confirmLinkedResourceN;
	public static String DeleteResourceAction_readOnlyQuestion;
	public static String DeleteResourceAction_jobName;
	public static String DeleteResourceAction_checkJobName;
	public static String DeleteResourceAction_operationLabel;

	public static String AddBookmarkLabel;
	public static String AddBookmarkToolTip;
	public static String AddBookmarkDialog_title;
	public static String AddBookmarkDialog_message;

	public static String AddTaskLabel;
	public static String AddTaskToolTip;

	public static String OpenFileAction_text;
	public static String OpenFileAction_toolTip;
	public static String OpenFileAction_openFileShellTitle;

	public static String OpenLocalFileAction_title;
	public static String OpenLocalFileAction_message_fileNotFound;
	public static String OpenLocalFileAction_message_filesNotFound;
	public static String OpenLocalFileAction_message_errorOnOpen;
	public static String OpenLocalFileAction_title_selectWorkspaceFile;
	public static String OpenLocalFileAction_message_fileLinkedToMultiple;

	public static String OpenResourceAction_text;
	public static String OpenResourceAction_text_plural;
	public static String OpenResourceAction_toolTip;
	public static String OpenResourceAction_toolTip_plural;
	public static String OpenResourceAction_dialogTitle;
	public static String OpenResourceAction_problemMessage;
	public static String OpenResourceAction_operationMessage;
	public static String OpenResourceAction_operationMessage_plural;
	public static String OpenResourceAction_openRequiredProjects;

	public static String CloseResourceAction_text;
	public static String CloseResourceAction_text_plural;
	public static String CloseResourceAction_warningForOne;
	public static String CloseResourceAction_warningForMultiple;
	public static String CloseResourceAction_confirm;
	public static String CloseResourceAction_toolTip;
	public static String CloseResourceAction_toolTip_plural;
	public static String CloseResourceAction_title;
	public static String CloseResourceAction_problemMessage;
	public static String CloseResourceAction_operationMessage;
	public static String CloseResourceAction_operationMessage_plural;

	public static String CloseUnrelatedProjectsAction_text;
	public static String CloseUnrelatedProjectsAction_text_plural;
	public static String CloseUnrelatedProjectsAction_toolTip;
	public static String CloseUnrelatedProjectsAction_toolTip_plural;
	public static String CloseUnrelatedProjectsAction_confirmMsg1;
	public static String CloseUnrelatedProjectsAction_confirmMsgN;
	public static String CloseUnrelatedProjectsAction_AlwaysClose;
	public static String CloseUnrelatedProjectsAction_AlwaysCloseWithoutPrompt;

	public static String BuildAction_text;
	public static String BuildAction_text_plural;
	public static String BuildAction_toolTip;
	public static String BuildAction_problemMessage;
	public static String BuildAction_problemTitle;
	public static String BuildAction_operationMessage;
	public static String BuildAction_operationMessage_plural;

	public static String RebuildAction_text;
	public static String RebuildAction_tooltip;

	public static String RefreshAction_text;
	public static String RefreshAction_toolTip;
	public static String RefreshAction_progressMessage;
	public static String RefreshAction_problemTitle;
	public static String RefreshAction_problemMessage;
	public static String RefreshAction_locationDeletedMessage;
	public static String RefreshAction_dialogTitle;

	public static String SelectWorkingSetAction_text;

	// --- Operations ---
	public static String CopyProjectOperation_progressTitle;
	public static String CopyProjectOperation_copyFailedMessage;
	public static String CopyProjectOperation_copyFailedTitle;
	public static String CopyProjectOperation_internalError;
	public static String CopyProjectOperation_copyProject;

	public static String CopyFilesAndFoldersOperation_copyFailedTitle;
	public static String CopyFilesAndFoldersOperation_problemMessage;
	public static String CopyFilesAndFoldersOperation_operationTitle;
	public static String CopyFilesAndFoldersOperation_nameCollision;
	public static String CopyFilesAndFoldersOperation_internalError;
	public static String CopyFilesAndFoldersOperation_resourceExists;
	public static String CopyFilesAndFoldersOperation_overwriteQuestion;
	public static String CopyFilesAndFoldersOperation_overwriteWithDetailsQuestion;
	public static String CopyFilesAndFoldersOperation_overwriteMergeQuestion;
	public static String CopyFilesAndFoldersOperation_overwriteNoMergeLinkQuestion;
	public static String CopyFilesAndFoldersOperation_overwriteNoMergeNoLinkQuestion;
	public static String CopyFilesAndFoldersOperation_deepCopyQuestion;
	public static String CopyFilesAndFoldersOperation_deepMoveQuestion;
	public static String CopyFilesAndFoldersOperation_destinationAccessError;
	public static String CopyFilesAndFoldersOperation_destinationDescendentError;
	public static String CopyFilesAndFoldersOperation_overwriteProblem;
	public static String CopyFilesAndFoldersOperation_question;
	public static String CopyFilesAndFoldersOperation_inputDialogTitle;
	public static String CopyFilesAndFoldersOperation_inputDialogMessage;
	public static String CopyFilesAndFoldersOperation_nameExists;
	public static String CopyFilesAndFoldersOperation_nameMustBeDifferent;
	public static String CopyFilesAndFoldersOperation_sameSourceAndDest;
	public static String CopyFilesAndFoldersOperation_importSameSourceAndDest;
	public static String CopyFilesAndFoldersOperation_resourceDeleted;
	public static String CopyFilesAndFoldersOperation_missingPathVariable;
	public static String CopyFilesAndFoldersOperation_missingLinkTarget;
	public static String CopyFilesAndFoldersOperation_CopyResourcesTask;
	public static String CopyFilesAndFoldersOperation_parentNotEqual;
	public static String CopyFilesAndFoldersOperation_infoNotFound;
	public static String CopyFilesAndFoldersOperation_sourceCannotBeCopiedIntoAVirtualFolder;
	public static String CopyFilesAndFoldersOperation_copyTitle;
	public static String CopyFilesAndFoldersOperation_moveTitle;
	public static String CopyFilesAndFoldersOperation_overwriteButtonLabel;
	public static String CopyFilesAndFoldersOperation_overwriteAllButtonLabel;
	public static String CopyFilesAndFoldersOperation_dontOverwriteButtonLabel;

	public static String MoveFilesAndFoldersOperation_sameSourceAndDest;
	public static String MoveFilesAndFoldersOperation_moveFailedTitle;
	public static String MoveFilesAndFoldersOperation_problemMessage;
	public static String MoveFilesAndFoldersOperation_operationTitle;

	public static String WizardDataTransfer_existsQuestion;
	public static String WizardDataTransfer_overwriteNameAndPathQuestion;
	public static String WizardDataTransfer_exceptionMessage;
	public static String WizardDataTransfer_overwrite_button_label;
	public static String WizardTransferPage_selectTypes;
	public static String WizardTransferPage_selectAll;
	public static String WizardTransferPage_deselectAll;

	// --- Import ---
	public static String WizardImportPage_specifyFolder;
	public static String WizardImportPage_specifyProject;
	public static String WizardImportPage_folderMustExist;
	public static String WizardImportPage_errorDialogTitle;
	public static String WizardImportPage_folder;
	public static String WizardImportPage_browseLabel;
	public static String WizardImportPage_browse2;
	public static String WizardImportPage_selectFolderLabel;
	public static String WizardImportPage_selectFolderTitle;
	public static String WizardImportPage_destinationLabel;
	public static String WizardImportPage_options;
	public static String WizardImportPage_projectNotExist;
	public static String WizardImportPage_importOnReceiver;
	public static String WizardImportPage_noOpenProjects;
	public static String WizardImportPage_undefinedPathVariable;
	public static String WizardImportPage_containerNotExist;

	// --- Export ---
	public static String WizardExportPage_errorDialogTitle;
	public static String WizardExportPage_mustExistMessage;
	public static String WizardExportPage_mustBeAccessibleMessage;
	public static String WizardExportPage_detailsMessage;
	public static String WizardExportPage_whatLabel;
	public static String WizardExportPage_whereLabel;
	public static String WizardExportPage_options;
	public static String WizardExportPage_selectionDialogMessage;
	public static String WizardExportPage_resourceTypeDialog;
	public static String WizardExportPage_folder;
	public static String WizardExportPage_browse;
	public static String WizardExportPage_allTypes;
	public static String WizardExportPage_specificTypes;
	public static String WizardExportPage_edit;
	public static String WizardExportPage_details;
	public static String WizardExportPage_selectResourcesTitle;
	public static String WizardExportPage_oneResourceSelected;
	public static String WizardExportPage_selectResourcesToExport;
	public static String WizardExportPage_internalErrorTitle;
	public static String WizardExportPage_resourceCountMessage;

	// --- New Example ---
	public static String NewExample_title;

	public static String WizardNewProjectCreationPage_projectNameEmpty;
	public static String WizardNewProjectCreationPage_projectLocationEmpty;
	public static String WizardNewProjectCreationPage_projectExistsMessage;
	public static String WizardNewProjectCreationPage_nameLabel;
	public static String WizardNewProjectReferences_title;

	// --- New Folder ---
	public static String WizardNewFolderMainPage_folderName;
	public static String WizardNewFolderMainPage_folderLabel;
	public static String WizardNewFolderMainPage_description;
	public static String WizardNewFolderCreationPage_progress;
	public static String WizardNewFolderCreationPage_errorTitle;
	public static String WizardNewFolderCreationPage_internalErrorTitle;
	public static String WizardNewFolderCreationPage_resourceWillBeFilteredWarning;
	public static String WizardNewFolderCreationPage_title;
	public static String WizardNewFolder_internalError;
	public static String WizardNewFolderCreationPage_createLinkLocationTitle;
	public static String WizardNewFolderCreationPage_createLinkLocationQuestion;

	// --- New File ---
	public static String WizardNewFileCreationPage_progress;
	public static String WizardNewFileCreationPage_errorTitle;
	public static String WizardNewFileCreationPage_fileLabel;
	public static String WizardNewFileCreationPage_file;
	public static String WizardNewFileCreationPage_internalErrorTitle;
	public static String WizardNewFileCreationPage_internalErrorMessage;
	public static String WizardNewFileCreationPage_title;
	public static String WizardNewFileCreationPage_resourceWillBeFilteredWarning;
	public static String WizardNewFileCreationPage_createLinkLocationTitle;
	public static String WizardNewFileCreationPage_createLinkLocationQuestion;


	// --- Linked Resource ---
	public static String WizardNewLinkPage_linkFileButton;
	public static String WizardNewLinkPage_linkFolderButton;
	public static String WizardNewLinkPage_browseButton;
	public static String WizardNewLinkPage_variablesButton;
	public static String WizardNewLinkPage_targetSelectionLabel;
	public static String WizardNewLinkPage_linkTargetEmpty;
	public static String WizardNewLinkPage_linkTargetInvalid;
	public static String WizardNewLinkPage_linkTargetLocationInvalid;
	public static String WizardNewLinkPage_linkTargetNonExistent;
	public static String WizardNewLinkPage_linkTargetNotFile;
	public static String WizardNewLinkPage_linkTargetNotFolder;

	// ==============================================================================
	// Preference Pages
	// ==============================================================================
	public static String Preference_note;

	// --- Workbench ---
	public static String WorkbenchPreference_encoding;
	public static String WorkbenchPreference_defaultEncoding;
	public static String WorkbenchPreference_otherEncoding;
	public static String WorkbenchPreference_unsupportedEncoding;
	public static String WorkbenchPreference_encoding_encodingMessage;

	public static String UriHandlerPreferencePage_Warning_OtherApp;
	public static String UriHandlerPreferencePage_Warning_OtherApp_Description;

	public static String UriHandlerPreferencePage_Warning_OtherApp_Confirmation;
	public static String UriHandlerPreferencePage_Warning_OtherApp_Confirmation_Description;

	// --- Link Handler Preference Page ---
	public static String UrlHandlerPreferencePage_Handler_Label;
	public static String UrlHandlerPreferencePage_Handler_Text_No_Application;
	public static String UrlHandlerPreferencePage_Page_Description;
	public static String UrlHandlerPreferencePage_LoadingText;
	public static String UrlHandlerPreferencePage_ColumnName_SchemeName;
	public static String UrlHandlerPreferencePage_ColumnName_SchemeDescription;
	public static String UrlHandlerPreferencePage_ColumnName_Handler;
	public static String UrlHandlerPreferencePage_Column_Handler_Text_Current_Application;
	public static String UrlHandlerPreferencePage_Column_Handler_Text_Other_Application;
	public static String UriHandlerPreferencePage_Confirm_Handle;
	public static String UrlHandlerPreferencePage_Error_Reading_Scheme;
	public static String UrlHandlerPreferencePage_Error_Writing_Scheme;
	public static String UrlHandlerPreferencePage_UnsupportedOperatingSystem;
	public static String UrlHandlerPreferencePage_LauncherCannotBeDetermined;

	// ---workspace ---
	public static String IDEWorkspacePreference_autobuild;
	public static String IDEWorkspacePreference_autobuildToolTip;
	public static String IDEWorkspacePreference_savePriorToBuilding;
	public static String IDEWorkspacePreference_savePriorToBuildingToolTip;
	public static String IDEWorkspacePreference_RefreshButtonText;
	public static String IDEWorkspacePreference_RefreshButtonToolTip;
	public static String IDEWorkspacePreference_RefreshLightweightButtonText;
	public static String IDEWorkspacePreference_RefreshLightweightButtonToolTip;
	public static String IDEWorkspacePreference_fileLineDelimiter;
	public static String IDEWorkspacePreference_defaultLineDelim;
	public static String IDEWorkspacePreference_defaultLineDelimProj;
	public static String IDEWorkspacePreference_otherLineDelim;
	public static String IDEWorkspacePreference_relatedLink;
	public static String IDEWorkspacePreference_openReferencedProjects;
	public static String IDEWorkspacePreference_closeUnrelatedProjectsToolTip;
	public static String IDEWorkspacePreference_windowTitleGroupText;
	public static String IDEWorkspacePreference_showLocationInWindowTitle;
	public static String IDEWorkspacePreference_showLocationInWindowTitle_lockedByCommandLine;
	public static String IDEWorkspacePreference_showLocationNameInWindowTitle;
	public static String IDEWorkspacePreference_showPerspectiveNameInWindowTitle;
	public static String IDEWorkspacePreference_showProductNameInWindowTitle;
	public static String IDEWorkspacePreference_showLocationSetOnCommandLine;
	public static String IDEWorkspacePreference_workspaceName;
	public static String IDEWorkbenchPreference_workbenchSystemExplorer;
	public static String IDEWorkspacePreference_UnknownNatureSeverity;
	public static String IDEWorkspacePreference_UnknownNatureSeverity_Ignore;

	// --- Linked Resources ---
	public static String LinkedResourcesPreference_explanation;
	public static String LinkedResourcesPreference_enableLinkedResources;
	public static String LinkedResourcesPreference_linkedResourcesWarningTitle;
	public static String LinkedResourcesPreference_linkedResourcesWarningMessage;
	public static String LinkedResourcesPreference_dragAndDropHandlingMessage;
	public static String LinkedResourcesPreference_dragAndDropVirtualFolderHandlingMessage;
	public static String LinkedResourcesPreference_link;
	public static String linkedResourcesPreference_copy;
	public static String LinkedResourcesPreference_promptVirtual;
	public static String LinkedResourcesPreference_linkAndVirtualFolder;
	public static String LinkedResourcesPreference_linkVirtual;
	public static String linkedResourcesPreference_copyVirtual;
	public static String LinkedResourcesPreference_linkAndVirtualFolderVirtual;

	// The following six keys are marked as unused by the NLS search, but they are indirectly used
	// and should be removed.
	public static String PathVariableDialog_shellTitle_newVariable;
	public static String PathVariableDialog_shellTitle_existingVariable;
	public static String PathVariableDialog_shellTitle_editLocation;
	public static String PathVariableDialog_dialogTitle_newVariable;
	public static String PathVariableDialog_dialogTitle_existingVariable;
	public static String PathVariableDialog_dialogTitle_editLinkLocation;
	public static String PathVariableDialog_message_newVariable;
	public static String PathVariableDialog_message_existingVariable;
	public static String PathVariableDialog_message_editLocation;

	public static String PathVariableDialog_variableName;
	public static String PathVariableDialog_variableValue;
	public static String PathVariableDialog_variableResolvedValue;
	public static String PathVariableDialog_variableNameEmptyMessage;
	public static String PathVariableDialog_variableValueEmptyMessage;
	public static String PathVariableDialog_variableValueInvalidMessage;
	public static String PathVariableDialog_file;
	public static String PathVariableDialog_folder;
	public static String PathVariableDialog_variable;
	public static String PathVariableDialog_selectFileTitle;
	public static String PathVariableDialog_selectFolderTitle;
	public static String PathVariableDialog_selectFolderMessage;
	public static String PathVariableDialog_variableAlreadyExistsMessage;
	public static String PathVariableDialog_pathIsRelativeMessage;
	public static String PathVariableDialog_pathDoesNotExistMessage;
	public static String PathVariableDialog_variableValueIsWrongTypeFolder;
	public static String PathVariableDialog_variableValueIsWrongTypeFile;

	// --- Local History ---
	public static String FileHistory_longevity;
	public static String FileHistory_entries;
	public static String FileHistory_diskSpace;
	public static String FileHistory_applyPolicy;
	public static String FileHistory_keepDerivedState;
	public static String FileHistory_mustBePositive;
	public static String FileHistory_invalid;
	public static String FileHistory_exceptionSaving;
	public static String FileHistory_aboveMaxEntries;
	public static String FileHistory_aboveMaxFileSize;
	public static String FileHistory_restartNote;

	// --- Perspectives ---
	public static String ProjectSwitchPerspectiveMode_optionsTitle;
	public static String ProjectSwitchPerspectiveMode_always;
	public static String ProjectSwitchPerspectiveMode_never;
	public static String ProjectSwitchPerspectiveMode_prompt;

	// --- Build Order ---
	public static String BuildOrderPreference_up;
	public static String BuildOrderPreference_down;
	public static String BuildOrderPreference_add;
	public static String BuildOrderPreference_remove;
	public static String BuildOrderPreference_selectOtherProjects;
	public static String BuildOrderPreference_useDefaults;
	public static String BuildOrderPreference_projectBuildOrder;
	public static String BuildOrderPreference_removeNote;
	public static String BuildOrderPreference_maxIterationsLabel;

	// --- Startup preferences ---
	public static String StartupPreferencePage_refreshButton;
	public static String StartupPreferencePage_showProblemsButton;
	public static String StartupPreferencePage_launchPromptButton;
	public static String StartupPreferencePage_exitPromptButton;

	// --- Startup -> Workspaces preferences ---
	public static String RecentWorkspacesPreferencePage_NumberOfWorkspaces_label;
	public static String RecentWorkspacesPreferencePage_PromptAtStartup_label;
	public static String RecentWorkspacesPreferencePage_RecentWorkspacesList_label;
	public static String RecentWorkspacesPreferencePage_RemoveButton_label;


	// --- Info ---
	public static String ResourceInfo_readOnly;
	public static String ResourceInfo_executable;
	public static String ResourceInfo_locked;
	public static String ResourceInfo_archive;
	public static String ResourceInfo_derived;
	public static String ResourceInfo_derivedHasDerivedAncestor;
	public static String ResourceInfo_type;
	public static String ResourceInfo_location;
	public static String ResourceInfo_location_button_tooltip;
	public static String ResourceInfo_resolvedLocation;
	public static String ResourceInfo_size;
	public static String ResourceInfo_bytes;
	public static String ResourceInfo_file;
	public static String ResourceInfo_fileTypeFormat;
	public static String ResourceInfo_folder;
	public static String ResourceInfo_project;
	public static String ResourceInfo_linkedFile;
	public static String ResourceInfo_linkedFolder;
	public static String ResourceInfo_virtualFolder;
	public static String ResourceInfo_unknown;
	public static String ResourceInfo_notLocal;
	public static String ResourceInfo_undefinedPathVariable;
	public static String ResourceInfo_notExist;
	public static String ResourceInfo_fileNotExist;
	public static String ResourceInfo_path;
	public static String ResourceInfo_lastModified;
	public static String ResourceInfo_fileEncodingTitle;
	public static String ResourceInfo_fileContentEncodingFormat;
	public static String ResourceInfo_fileContentTypeEncodingFormat;
	public static String ResourceInfo_fileContainerEncodingFormat;
	public static String ResourceInfo_containerEncodingFormat;
	public static String ResourceInfo_exWarning;
	public static String ResourceInfo_isVirtualFolder;
	public static String ResourceInfo_edit;
	public static String ResourceInfo_attributes;
	public static String ResourceInfo_permissions;
	public static String ResourceInfo_owner;
	public static String ResourceInfo_group;
	public static String ResourceInfo_other;
	public static String ResourceInfo_read;
	public static String ResourceInfo_write;
	public static String ResourceInfo_execute;
	public static String ResourceInfo_recursiveChangesTitle;
	public static String ResourceInfo_recursiveChangesSummary;
	public static String ResourceInfo_recursiveChangesSet;
	public static String ResourceInfo_recursiveChangesUnset;
	public static String ResourceInfo_recursiveChangesQuestion;
	public static String ResourceInfo_recursiveChangesJobName;
	public static String ResourceInfo_recursiveChangesSubTaskName;
	public static String ResourceInfo_recursiveChangesError;

	// --- Project References ---
	public static String ProjectReferencesPage_label;

	// --- Project Natures ---
	public static String ProjectNaturesPage_label;
	public static String ProjectNaturesPage_missingNatureText;
	public static String ProjectNaturesPage_addNature;
	public static String ProjectNaturesPage_removeNature;
	public static String ProjectNaturesPage_selectNatureToAddMessage;
	public static String ProjectNaturesPage_selectNatureToAddTitle;
	public static String ProjectNaturesPage_changeWarningTitle;
	public static String ProjectNaturesPage_warningMessage;
	public static String ProjectNaturesPage_changeWarningQuestion;

	// --- Project Linked Resources References ---
	public static String ProjectLinkedResourcePage_description;
	public static String ProjectLinkedResourcePage_pathVariableTabTitle;
	public static String ProjectLinkedResourcePage_linkedResourcesTabTitle;

	// --- Linked Resource Editor ---
	public static String LinkedResourceEditor_editLinkedLocation;
	public static String LinkedResourceEditor_convertToVariableLocation;
	public static String LinkedResourceEditor_remove;
	public static String LinkedResourceEditor_resourceName;
	public static String LinkedResourceEditor_path;
	public static String LinkedResourceEditor_location;
	public static String LinkedResourceEditor_fixed;
	public static String LinkedResourceEditor_broken;
	public static String LinkedResourceEditor_absolute;
	public static String LinkedResourceEditor_changedTo;
	public static String LinkedResourceEditor_unableToSetLinkLocationForResource;
	public static String LinkedResourceEditor_convertRelativePathLocations;
	public static String LinkedResourceEditor_convertionResults;
	public static String linkedResourceEditor_OK;
	public static String LinkedResourceEditor_unableToCreateVariable;
	public static String LinkedResourceEditor_unableToFindCommonPathSegments;
	public static String LinkedResourceEditor_convertAbsolutePathLocations;
	public static String LinkedResourceEditor_descriptionBlock;
	public static String LinkedResourceEditor_convertTitle;
	public static String LinkedResourceEditor_convertMessage;
	public static String LinkedResourceEditor_removeTitle;
	public static String LinkedResourceEditor_removeMessage;
	public static String LinkedResourceEditor_removingMessage;

	// --- Auto-save ---
	public static String AutoSavePreferencPage_autoSaveButton;
	public static String AutoSavePreferencPage_intervalMessage;
	public static String AutoSavePreferencPage_errorMessage;
	public static String AutoSavePreferencPage_resetMessage;
	public static String AutoSavePreferencPage_noteLabel;
	public static String AutoSavePreferencPage_noteMessage;

	// ==============================================================================
	// Editors
	// ==============================================================================
	public static String DefaultEditorDescription_name;

	public static String WelcomeEditor_accessException;
	public static String WelcomeEditor_readFileError;
	public static String WelcomeEditor_title;
	public static String WelcomeEditor_toolTip;
	public static String WelcomeEditor_copy_text;

	public static String WelcomeItem_unableToLoadClass;
	public static String WelcomeParser_parseError;
	public static String WelcomeParser_parseException;
	public static String Workbench_openEditorErrorDialogTitle;
	public static String Workbench_openEditorErrorDialogMessage;
	public static String QuickStartAction_openEditorException;

	// ==============================================================================
	// Dialogs
	// ==============================================================================
	public static String Question;
	public static String Always;
	public static String Never;
	public static String Prompt;

	public static String ContainerSelectionDialog_title;
	public static String ContainerSelectionDialog_message;

	public static String ContainerGroup_message;
	public static String ContainerGroup_selectFolder;

	public static String ContainerGenerator_progressMessage;
	public static String ContainerGenerator_pathOccupied;

	public static String ResourceGroup_resource;
	public static String ResourceGroup_nameExists;
	public static String ResourceGroup_folderEmpty;
	public static String ResourceGroup_noProject;
	public static String ResourceGroup_emptyName;
	public static String ResourceGroup_invalidFilename;
	public static String ResourceGroup_pathOccupied;

	public static String FileSelectionDialog_title;
	public static String FileSelectionDialog_message;

	public static String ProjectLocationSelectionDialog_nameLabel;
	public static String ProjectLocationSelectionDialog_locationLabel;
	public static String ProjectLocationSelectionDialog_browseLabel;
	public static String ProjectLocationSelectionDialog_directoryLabel;
	public static String ProjectLocationSelectionDialog_locationError;
	public static String ProjectLocationSelectionDialog_locationIsSelf;
	public static String ProjectLocationSelectionDialog_selectionTitle;
	public static String ProjectLocationSelectionDialog_useDefaultLabel;
	public static String ProjectLocationSelectionDialog_copyButtonLabel;

	public static String ResourceSelectionDialog_title;
	public static String ResourceSelectionDialog_message;

	public static String MarkerResolutionSelectionDialog_title;
	public static String MarkerResolutionSelectionDialog_messageLabel;
	public static String MarkerDeleteHandler_JobTitle;
	public static String MarkerDeleteHandler_JobMessageLabel;

	public static String FilteredResourcesSelectionDialog_showDerivedResourcesAction;
	public static String FilteredResourcesSelectionDialog_groupResourcesWithSameUndelyingLocation;

	public static String ResourceSelectionDialog_label;
	public static String ResourceSelectionDialog_matching;
	public static String ResourceSelectionDialog_folders;
	public static String ResourceSelectionDialog_showDerived;

	public static String OpenResourceDialog_title;
	public static String OpenResourceDialog_message;
	public static String OpenResourceDialog_openWithButton_text;

	public static String OpenResourceDialog_openWithMenu_label;
	public static String OpenResourceDialog_openButton_text;

	public static String OpenResourceDialog_showInButton_text;

	public static String OpenResourceDialog_showInMenu_label;

	public static String NewFolderDialog_title;
	public static String NewFolderDialog_nameLabel;
	public static String NewFolderDialog_alreadyExists;
	public static String NewFolderDialog_folderNameEmpty;
	public static String NewFolderDialog_progress;
	public static String NewFolderDialog_errorTitle;
	public static String NewFolderDialog_internalError;

	public static String CreateLinkedResourceGroup_linkFileButton;
	public static String CreateLinkedResourceGroup_linkFolderButton;
	public static String CreateLinkedResourceGroup_browseButton;
	public static String CreateLinkedResourceGroup_variablesButton;
	public static String CreateLinkedResourceGroup_resolvedPathLabel;
	public static String CreateLinkedResourceGroup_targetSelectionLabel;
	public static String CreateLinkedResourceGroup_targetSelectionTitle;
	public static String CreateLinkedResourceGroup_linkTargetNotFile;
	public static String CreateLinkedResourceGroup_linkTargetNotFolder;
	public static String CreateLinkedResourceGroup_linkTargetNonExistent;
	public static String CreateLinkedResourceGroup_unableToValidateLinkTarget;
	public static String CreateLinkedResourceGroup_linkRequiredUnderAGroup;

	public static String PathVariablesBlock_variablesLabel;
	public static String PathVariablesBlock_variablesLabelForResource;
	public static String PathVariablesBlock_addVariableButton;
	public static String PathVariablesBlock_editVariableButton;
	public static String PathVariablesBlock_removeVariableButton;
	public static String PathVariablesBlock_nameColumn;
	public static String PathVariablesBlock_valueColumn;

	public static String ResourceFilterEditDialog_title;

	public static String PathVariableSelectionDialog_title;
	public static String PathVariableSelectionDialog_extendButton;
	public static String PathVariableSelectionDialog_ExtensionDialog_title;
	public static String PathVariableSelectionDialog_ExtensionDialog_description;

	public static String ImportTypeDialog_title;
	public static String ImportTypeDialog_titleFilesOnly;
	public static String ImportTypeDialog_titleFilesLinking;
	public static String ImportTypeDialog_question;
	public static String ImportTypeDialog_questionFilesOnly;
	public static String ImportTypeDialog_moveFilesAndDirectories;
	public static String ImportTypeDialog_copyFilesAndDirectories;
	public static String ImportTypeDialog_moveFiles;
	public static String ImportTypeDialog_copyFiles;
	public static String ImportTypeDialog_recreateFilesAndDirectories;
	public static String ImportTypeDialog_createLinks;
	public static String ImportTypeDialog_linkFiles;
	public static String ImportTypeDialog_importElementsAs;
	public static String ImportTypeDialog_importElementsAsTooltip;
	public static String ImportTypeDialog_importElementsAsTooltipSet;
	public static String ImportTypeDialog_editVariables;
	public static String ImportTypeDialog_alwaysPerformThisOperation;
	public static String ImportTypeDialog_configureSettings;

	// ==============================================================================
	// Editor Framework
	// ==============================================================================
	public static String EditorManager_saveResourcesMessage;
	public static String EditorManager_saveResourcesTitle;

	public static String OpenSystemEditorAction_dialogTitle;
	public static String OpenSystemEditorAction_text;
	public static String OpenSystemEditorAction_toolTip;

	// ==============================================================================
	// Workspace
	// ==============================================================================
	public static String WorkspaceAction_problemsTitle;
	public static String WorkspaceAction_logTitle;
	public static String WorkbenchAction_problemsMessage;
	public static String WorkbenchAction_internalError;
	public static String Workspace;


	// ==============================================================================
	// Workbench
	// ==============================================================================
	public static String Internal_error;
	public static String InternalError;
	public static String InternalErrorNoArg;
	public static String InternalErrorOneArg;

	public static String FatalError_RecursiveError;
	public static String FatalError_OutOfMemoryError;
	public static String FatalError_StackOverflowError;
	public static String FatalError_VirtualMachineError;
	public static String FatalError_SWTError;
	public static String FatalError;

	public static String ProblemSavingWorkbench;
	public static String ProblemsSavingWorkspace;

	public static String Problems_Opening_Page;

	public static String Workspace_refreshing;

	public static String IDEExceptionHandler_ExceptionHandledMessage;
	// ==============================================================================
	// Keys with references but don't show in the UI
	// ==============================================================================
	public static String CreateFileAction_text;
	public static String CreateFileAction_toolTip;
	public static String CreateFileAction_title;

	public static String CreateFolderAction_text;
	public static String CreateFolderAction_toolTip;
	public static String CreateFolderAction_title;

	public static String ScrubLocalAction_problemsMessage;
	public static String ScrubLocalAction_text;
	public static String ScrubLocalAction_toolTip;
	public static String ScrubLocalAction_problemsTitle;
	public static String ScrubLocalAction_progress;

	public static String ShowInSystemExplorerHandler_commandUnavailable;
	public static String ShowInSystemExplorerHandler_notDetermineLocation;
	public static String ShowInSystemExplorerHandler_jobTitle;

	public static String TextAction_selectAll;
	public static String Cut;
	public static String Copy;
	public static String Paste;
	public static String Delete;

	// ==============================================================================
	// Keys used in the reuse editor which is released as experimental.
	// ==============================================================================
	public static String WorkbenchPreference_saveInterval;
	public static String WorkbenchPreference_saveIntervalError;

	// ==============================================================================
	// Working Set Framework.
	// ==============================================================================
	public static String ResourceWorkingSetPage_title;
	public static String ResourceWorkingSetPage_description;
	public static String ResourceWorkingSetPage_message;
	public static String ResourceWorkingSetPage_label_tree;
	public static String ResourceWorkingSetPage_warning_nameMustNotBeEmpty;
	public static String ResourceWorkingSetPage_warning_nameWhitespace;
	public static String ResourceWorkingSetPage_warning_workingSetExists;
	public static String ResourceWorkingSetPage_warning_resourceMustBeChecked;
	public static String ResourceWorkingSetPage_error;
	public static String ResourceWorkingSetPage_error_updateCheckedState;
	public static String ResourceWorkingSetPage_selectAll_label;
	public static String ResourceWorkingSetPage_selectAll_toolTip;
	public static String ResourceWorkingSetPage_deselectAll_label;
	public static String ResourceWorkingSetPage_deselectAll_toolTip;

	public static String ResourceEncodingFieldEditor_ErrorLoadingMessage;
	public static String ResourceEncodingFieldEditor_ErrorStoringMessage;
	public static String ResourceEncodingFieldEditor_EncodingConflictTitle;
	public static String ResourceEncodingFieldEditor_EncodingConflictMessage;
	public static String ResourceEncodingFieldEditor_SeparateDerivedEncodingsLabel;

	public static String ChooseWorkspaceDialog_dialogName;
	public static String ChooseWorkspaceDialog_dialogTitle;
	public static String ChooseWorkspaceDialog_dialogMessage;
	public static String ChooseWorkspaceDialog_defaultProductName;
	public static String ChooseWorkspaceDialog_workspaceEntryLabel;
	public static String ChooseWorkspaceDialog_browseLabel;
	public static String ChooseWorkspaceDialog_launchLabel;
	public static String ChooseWorkspaceDialog_directoryBrowserTitle;
	public static String ChooseWorkspaceDialog_directoryBrowserMessage;
	public static String ChooseWorkspaceDialog_removeWorkspaceSelection;
	public static String ChooseWorkspaceDialog_recentWorkspaces;
	public static String ChooseWorkspaceDialog_useDefaultMessage;

	public static String ChooseWorkspaceWithSettingsDialog_SettingsGroupName;
	public static String ChooseWorkspaceWithSettingsDialog_ProblemsTransferTitle;
	public static String ChooseWorkspaceWithSettingsDialog_TransferFailedMessage;
	public static String ChooseWorkspaceWithSettingsDialog_SaveSettingsFailed;
	public static String ChooseWorkspaceWithSettingsDialog_ClassCreationFailed;
	public static String ChooseWorkspaceWithSettingsDialog_copySettingsDecoLabel;

	public static String IDEApplication_workspaceMandatoryTitle;
	public static String IDEApplication_workspaceMandatoryMessage;
	public static String IDEApplication_workspaceInUseTitle;
	public static String IDEApplication_workspaceInUseMessage;
	public static String IDEApplication_workspaceInUse_Choose;
	public static String IDEApplication_workspaceInUse_Retry;
	public static String IDEApplication_workspaceEmptyTitle;
	public static String IDEApplication_workspaceEmptyMessage;
	public static String IDEApplication_workspaceInvalidTitle;
	public static String IDEApplication_workspaceInvalidMessage;
	public static String IDEApplication_workspaceCannotBeSetTitle;
	public static String IDEApplication_workspaceCannotBeSetMessage;
	public static String IDEApplication_workspaceCannotLockTitle;
	public static String IDEApplication_workspaceCannotLockMessage;
	public static String IDEApplication_versionTitle_newerWorkspace;
	public static String IDEApplication_versionTitle_olderWorkspace;
	public static String IDEApplication_versionMessage_newerWorkspace;
	public static String IDEApplication_versionMessage_olderWorkspace;
	public static String IDEApplication_version_doNotWarnAgain;
	public static String IDEApplication_version_continue;
	public static String IDEApplication_version_switch;
	public static String IDEApplication_version_exit;
	public static String GlobalBuildAction_BuildRunningTitle;
	public static String GlobalBuildAction_BuildRunningMessage;
	public static String CleanDialog_buildCleanAuto;
	public static String CleanDialog_buildCleanManual;
	public static String CleanDialog_title;
	public static String CleanDialog_clean_button_label;
	public static String CleanDialog_selectAllButton;
	public static String CleanDialog_deselectedAllButton;
	public static String CleanDialog_buildNowButton;
	public static String CleanDialog_globalBuildButton;
	public static String CleanDialog_buildSelectedProjectsButton;
	public static String CleanDialog_cleanSelectedTaskName;
	public static String CleanDialog_cleanAllTaskName;
	public static String CleanDialog_alwaysCleanAllButton;
	public static String CleanDialog_typeFilterText;
	public static String CleanDialog_clearToolTip;
	public static String CleanDialog_AccessibleListenerClearButton;
	public static String IDEEncoding_EncodingJob;
	public static String IDEEditorsPreferencePage_WorkbenchPreference_viewsRelatedLink;
	public static String IDEEditorsPreferencePage_WorkbenchPreference_FileEditorsRelatedLink;
	public static String IDEEditorsPreferencePage_WorkbenchPreference_contentTypesRelatedLink;
	public static String WorkbenchEncoding_invalidCharset;
	public static String CopyProjectAction_confirm;
	public static String CopyProjectAction_warning;
	public static String DeleteResourceAction_confirm;
	public static String DeleteResourceAction_warning;
	public static String CopyFilesAndFoldersOperation_confirmMove;
	public static String CopyFilesAndFoldersOperation_warningMove;
	public static String CopyFilesAndFoldersOperation_confirmCopy;
	public static String CopyFilesAndFoldersOperation_warningCopy;
	public static String RenameResourceAction_confirm;
	public static String RenameResourceAction_warning;

	public static String IDE_sideEffectWarning;

	public static String IDE_areYouSure;

	public static String IDEIdleHelper_backgroundGC;

	public static String SystemSettingsChange_title;
	public static String SystemSettingsChange_message;
	public static String SystemSettingsChange_yes;
	public static String SystemSettingsChange_no;

	public static String IDEWorkbenchActivityHelper_jobName;

	public static String OpenDelayedFileAction_title;
	public static String OpenDelayedFileAction_message_errorOnOpen;
	public static String OpenDelayedFileAction_message_fileNotFound;
	public static String OpenDelayedFileAction_message_noWindow;

	public static String OpenDelayedUrlAction_cannotHandle;

	public static String OpenDelayedUrlAction_invalidURL;

	public static String OpenDelayedUrlAction_title;

	public static String editorAssociationOverride_error_couldNotCreate_message;
	public static String editorAssociationOverride_error_invalidElementName_message;
	public static String editorAssociationOverride_error_invalidExtension_message;

	public static String ExtendedFileEditorsPreferencePage_strategyForUnassociatedFiles;
	public static String ExtendedFileEditorsPreferencePage_labelNotResolved;

	public static String WorkbenchPreference_maxSimultaneousBuilds;
	public static String WorkbenchPreference_maxSimultaneousBuildIntervalError;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, IDEWorkbenchMessages.class);
	}

}
