/**
 * Copyright (c) 2007 Borland Software Corporation
 * 
 * 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:
 *    bblajer - initial API and implementation
 */
package org.eclipse.gmf.runtime.gwt.edit.parts.labels;

import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ICellEditorValidator;

/**
 * Implementors of this interface are responsible for providing labels representing model elements
 * as well as for making it possible to edit the label and apply the values to the model element.
 * <p>IMPORTANT: This interface is <EM>not</EM> intended to be implemented by clients. 
 * Clients should inherit from {@link org.eclipse.gmf.runtime.gwt.edit.parts.labels.AbstractLabelTextDisplayer}.  
 * New methods may be added in the future.
 */
public interface ILabelTextDisplayer {
	/**
	 * Returns the text a label for the given source object should display.
	 */
	public String getDisplayText(EObject source);

	/**
	 * Returns the text that should be displayed when the user edits the label.
	 */
	public String getEditText(EObject source);

	/**
	 * Returns the input validator or <code>null</code> if no validation is required. 
	 */
	public ICellEditorValidator getValidator();

	/**
	 * Returns the command that applies the new value.
	 */
	public Command getApplyCommand(EObject source, String newValue);

	/**
	 * Returns whether the given notification may cause a source to require update of the label.
	 */
	public boolean isAffectingEvent(Notification notification);
}
