//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui;

import org.eclipse.jface.dialogs.MessageDialogWithToggle;

/**
 * Defines and caches the commonly referenced text in the Authoring UI.
 * 
 * @author Kelvin Low
 * @since 1.0
 */
public class AuthoringUIText {

	/**
	 * Editor form page titles.
	 */
	public static final String ASSIGN_PAGE_TITLE = AuthoringUIResources.assignPage_title; 

	public static final String CATEGORIES_PAGE_TITLE = AuthoringUIResources.categoriesPage_title; 

	public static final String DELIVERABLE_PARTS_PAGE_TITLE = AuthoringUIResources.deliverablePartsPage_title; 

	public static final String DESCRIPTION_PAGE_TITLE = AuthoringUIResources.descriptionPage_title; 

	public static final String DISCIPLINES_PAGE_TITLE = AuthoringUIResources.disciplinesPage_title; 

	public static final String GUIDANCE_PAGE_TITLE = AuthoringUIResources.guidancePage_title; 

	public static final String PREVIEW_PAGE_TITLE = AuthoringUIResources.previewPage_title; 

	public static final String REFERENCES_PAGE_TITLE = AuthoringUIResources.referencesPage_title; 

	public static final String REFERENCE_WORKFLOW_PAGE_TITLE = AuthoringUIResources.referenceWorkflowPage_title; 

	public static final String ROLES_PAGE_TITLE = AuthoringUIResources.rolesPage_title; 

	public static final String ROLE_SETS_PAGE_TITLE = AuthoringUIResources.roleSetsPage_title; 

	public static final String STEPS_PAGE_TITLE = AuthoringUIResources.stepsPage_title; 

	public static final String TASKS_PAGE_TITLE = AuthoringUIResources.tasksPage_title; 

	public static final String TOOL_MENTORS_PAGE_TITLE = AuthoringUIResources.toolMentorsPage_title; 

	public static final String WORK_PRODUCTS_PAGE_TITLE = AuthoringUIResources.workProductsPage_title; 

	/**
	 * Editor section names and description.
	 */
	public static final String CHECK_ITEMS_SECTION_NAME = AuthoringUIResources.checkItemsSection_name; 

	public static final String CHECK_ITEMS_SECTION_DESC = AuthoringUIResources.checkItemsSection_desc; 

	public static final String DEPENDENCIES_SECTION_NAME = AuthoringUIResources.dependenciesSection_name; 

	public static final String DEPENDENCIES_SECTION_DESC = AuthoringUIResources.dependenciesSection_desc; 

	public static final String DETAIL_SECTION_NAME = AuthoringUIResources.detailSection_name; 

	public static final String DETAIL_SECTION_DESC = AuthoringUIResources.detailSection_desc; 

	public static final String GENERAL_INFO_SECTION_NAME = AuthoringUIResources.generalInfoSection_name; 

	public static final String GENERAL_INFO_SECTION_DESC = AuthoringUIResources.generalInfoSection_desc; 

	public static final String ICON_SECTION_NAME = AuthoringUIResources.iconSection_name; 

	public static final String ICON_SECTION_DESC = AuthoringUIResources.iconSection_desc; 

	public static final String NOTATION_SECTION_NAME = AuthoringUIResources.notationSection_name; 

	public static final String NOTATION_SECTION_DESC = AuthoringUIResources.notationSection_desc; 

	public static final String REFERENCED_PLUGINS_SECTION_NAME = AuthoringUIResources.referencedPluginsSection_name; 

	public static final String REFERENCED_PLUGINS_SECTION_DESC = AuthoringUIResources.referencedPluginsSection_desc; 

	public static final String STAFFING_SECTION_NAME = AuthoringUIResources.staffingSection_name; 

	public static final String STAFFING_SECTION_DESC = AuthoringUIResources.staffingSection_desc; 

	public static final String STEPS_SECTION_NAME = AuthoringUIResources.stepsSection_name; 

	public static final String STEPS_SECTION_DESC = AuthoringUIResources.stepsSection_desc; 

	public static final String TAILORING_SECTION_NAME = AuthoringUIResources.tailoringSection_name; 

	public static final String TAILORING_SECTION_DESC = AuthoringUIResources.tailoringSection_desc; 

	public static final String VARIABILITY_SECTION_NAME = AuthoringUIResources.variabilitySection_name; 

	public static final String VARIABILITY_SECTION_DESC = AuthoringUIResources.variabilitySection_desc; 

	public static final String VERSION_INFO_SECTION_NAME = AuthoringUIResources.versionInfoSection_name; 

	public static final String VERSION_INFO_SECTION_DESC = AuthoringUIResources.versionInfoSection_desc; 

	/**
	 * UI and element attribute labels.
	 */
	public static final String ADDITIONAL_INFO_TEXT = AuthoringUIResources.additionalInfo_text; 

	public static final String APPLICATION_TEXT = AuthoringUIResources.application_text; 

	public static final String ALTERNATIVES_TEXT = AuthoringUIResources.alternatives_text; 

	public static final String ASSIGNMENT_APPROACHES_TEXT = AuthoringUIResources.assignmentApproaches_text; 

	public static final String AUTHORS_TEXT = AuthoringUIResources.authors_text; 

	public static final String BACKGROUND_TEXT = AuthoringUIResources.background_text; 

	public static final String BASE_ELEMENT_TEXT = AuthoringUIResources.baseElement_text; 

	public static final String BASE_GUIDANCE_TEXT = AuthoringUIResources.baseGuidance_text; 

	public static final String BRIEF_DESCRIPTION_TEXT = AuthoringUIResources.briefDescription_text; 

	public static final String BRIEF_OUTLINE_TEXT = AuthoringUIResources.briefOutline_text; 

	public static final String CHANGE_DATE_TEXT = AuthoringUIResources.changeDate_text; 

	public static final String CHANGE_DESCRIPTION_TEXT = AuthoringUIResources.changeDescription_text; 

	public static final String CHECK_ITEMS_TEXT = AuthoringUIResources.checkItems_text; 

	public static final String CONTRIBUTES_TEXT = AuthoringUIResources.contributes_text; 
	
	public static final String LOCAL_CONTRIBUTES_TEXT = AuthoringUIResources.localContributes_text;  

	public static final String COPYRIGHT_TEXT = AuthoringUIResources.copyright_text; 

	public static final String DESCRIPTION_TEXT = AuthoringUIResources.description_text; 

	public static final String EDITOR_TEXT = AuthoringUIResources.editor_text; 

	public static final String EXTENDS_TEXT = AuthoringUIResources.extends_text; 

	public static final String EXTERNAL_DESCRIPTION_TEXT = AuthoringUIResources.externalDescription_text; 

	public static final String EXTERNAL_ID_TEXT = AuthoringUIResources.externalId_text; 

	public static final String GOALS_TEXT = AuthoringUIResources.goals_text; 

	public static final String IMPACT_OF_NOT_HAVING_TEXT = AuthoringUIResources.impactOfNotHaving_text; 

	public static final String KEY_CONSIDERATIONS_TEXT = AuthoringUIResources.keyConsiderations_text; 

	public static final String LEVEL_OF_ADOPTION_TEXT = AuthoringUIResources.levelsOfAdoption_text; 

	public static final String MAIN_DESCRIPTION_TEXT = AuthoringUIResources.mainDescription_text; 

	public static final String NAME_TEXT = AuthoringUIResources.name_text; 

	public static final String NEW_ELEMENT_TEXT = AuthoringUIResources.newElement_text; 

	public static final String NOT_APPLICABLE_TEXT = AuthoringUIResources.notApplicable_text; 

	public static final String NOTATION_TEXT = AuthoringUIResources.notation_text; 

	public static final String PACKAGING_GUIDANCE_TEXT = AuthoringUIResources.packagingGuidance_text; 

	public static final String PRESENTATION_NAME_TEXT = AuthoringUIResources.presentationName_text; 

	public static final String PROBLEM_TEXT = AuthoringUIResources.problem_text; 

	public static final String PURPOSE_TEXT = AuthoringUIResources.purpose_text; 

	public static final String REASON_FOR_NOT_NEEDING_TEXT = AuthoringUIResources.reasonForNotNeeding_text; 

	public static final String REPLACES_TEXT = AuthoringUIResources.replaces_text; 

	public static final String REPRESENTATION_TEXT = AuthoringUIResources.representation_text; 

	public static final String REPRESENTATION_OPTIONS_TEXT = AuthoringUIResources.representationOptions_text; 

	public static final String SKILLS_TEXT = AuthoringUIResources.skills_text; 

	public static final String STEPS_TEXT = AuthoringUIResources.steps_text; 

	public static final String STEP_NAME_TEXT = AuthoringUIResources.steps_name_text; 

	public static final String SYNONYMS_TEXT = AuthoringUIResources.synonyms_text; 

	public static final String ATTACHED_FILE_TEXT = AuthoringUIResources.attachedFile_text; 

	public static final String TYPE_TEXT = AuthoringUIResources.type_text; 

	public static final String UNIQUE_ID_TEXT = AuthoringUIResources.uniqueId_text; 

	public static final String VARIABILITY_TYPE_TEXT = AuthoringUIResources.variabilityType_text; 

	public static final String VERSION_TEXT = AuthoringUIResources.version_text; 

	/**
	 * Button labels.
	 */
	public static final String ADD_BUTTON_TEXT = AuthoringUIResources.addButton_text; 

	public static final String ATTACH_BUTTON_TEXT = AuthoringUIResources.attachButton_text; 
	
	public static final String ATTACH_URL_BUTTON_TEXT = AuthoringUIResources.attachUrlButton_text;

	public static final String BROWSE_BUTTON_TEXT = AuthoringUIResources.browseButton_text; 

	public static final String CHANGE_TYPE_BUTTON_TEXT = AuthoringUIResources.changeTypeButton_text; 

	public static final String CLEAR_BUTTON_TEXT = AuthoringUIResources.clearButton_text; 

	public static final String DELETE_BUTTON_TEXT = AuthoringUIResources.deleteButton_text; 

	public static final String DESELECT_BUTTON_TEXT = AuthoringUIResources.deselectButton_text; 

	public static final String DETACH_BUTTON_TEXT = AuthoringUIResources.detachButton_text; 

	public static final String DOWN_BUTTON_TEXT = AuthoringUIResources.downButton_text; 

	public static final String ORDER_BUTTON_TEXT = AuthoringUIResources.orderButton_text; 

	public static final String EDIT_BUTTON_TEXT = AuthoringUIResources.editButton_text; 
	
	public static final String REMOVE_BUTTON_TEXT = AuthoringUIResources.removeButton_text; 

	public static final String SELECT_BUTTON_TEXT = AuthoringUIResources.selectButton_text; 

	public static final String UP_BUTTON_TEXT = AuthoringUIResources.upButton_text; 

	public static final String VIEW_HISTORY_BUTTON_TEXT = AuthoringUIResources.viewHistoryButton_text; 

	public static final String ALWAYS_BUTTON_TEXT = MessageDialogWithToggle.ALWAYS;

	public static final String NEVER_BUTTON_TEXT = MessageDialogWithToggle.NEVER;

	public static final String PROMPT_BUTTON_TEXT = MessageDialogWithToggle.PROMPT;

	public static final String PUBLISH_CATEGORIES_TEXT = AuthoringUIResources.publish_categories_text;
}
