/*******************************************************************************
 * Copyright (c) 2009, 2010 Oracle. 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:
 *     Oracle - initial API and implementation
 ******************************************************************************/
package org.eclipse.jpt.ui.internal.jpa2.details;

import org.eclipse.osgi.util.NLS;

/**
 * Localized messages used by Dali mapping panes.
 *
 * @version 2.3
 * @since 2.3
 */
public class JptUiDetailsMessages2_0 
{
	public static String CascadePane2_0_detach;
	
	public static String CollectionTable2_0Composite_title;
	public static String CollectionTable2_0Composite_joinColumn;
	public static String CollectionTable2_0Composite_name;
	public static String CollectionTable2_0Composite_schema;
	public static String CollectionTable2_0Composite_catalog;
	public static String CollectionTable2_0Composite_overrideDefaultJoinColumns;
	
	public static String DerivedIdentity_title;
	public static String DerivedIdentity_nullDerivedIdentity;
	public static String DerivedIdentity_idDerivedIdentity;
	public static String DerivedIdentity_mapsIdDerivedIdentity;
	public static String DerivedIdentity_mapsIdUnspecifiedValue;
	
	public static String ElementCollectionMapping2_0_label;
	public static String ElementCollectionMapping2_0_linkLabel;
	
	public static String ElementCollectionSection_title;
	public static String AbstractElementCollectionMapping2_0_Composite_valueSectionTitle;
	
	public static String Entity_cacheableLabel;
	public static String Entity_cacheableWithDefaultLabel;

	public static String OrderingComposite_orderColumn;
	
	public static String OrphanRemoval2_0Composite_orphanRemovalLabel;
	public static String OrphanRemoval2_0Composite_orphanRemovalLabelDefault;
	
	public static String LockModeComposite_lockModeLabel;

	public static String LockModeComposite_read;
	public static String LockModeComposite_write;
	public static String LockModeComposite_optimistic;
	public static String LockModeComposite_optimistic_force_increment;
	public static String LockModeComposite_pessimistic_read;
	public static String LockModeComposite_pessimistic_write;
	public static String LockModeComposite_pessimistic_force_increment;
	public static String LockModeComposite_none;

	public static String TargetClassComposite_label;
	
	private static final String BUNDLE_NAME = "jpt_ui_details2_0"; //$NON-NLS-1$
	private static final Class<?> BUNDLE_CLASS = JptUiDetailsMessages2_0.class;
	static {
		NLS.initializeMessages(BUNDLE_NAME, BUNDLE_CLASS);
	}

	private JptUiDetailsMessages2_0() {
		throw new UnsupportedOperationException();
	}

}
