/*******************************************************************************
* Copyright (c) 2000, 2005 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.gef.examples.logicdesigner.edit;
import java.beans.PropertyChangeEvent;
import org.eclipse.swt.accessibility.AccessibleControlEvent;
import org.eclipse.swt.accessibility.AccessibleEvent;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.AccessibleEditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.tools.DirectEditManager;
import org.eclipse.gef.examples.logicdesigner.LogicMessages;
import org.eclipse.gef.examples.logicdesigner.figures.StickyNoteFigure;
import org.eclipse.gef.examples.logicdesigner.model.LogicLabel;
public class LogicLabelEditPart
extends LogicEditPart
{
protected AccessibleEditPart createAccessible() {
return new AccessibleGraphicalEditPart(){
public void getValue(AccessibleControlEvent e) {
e.result = getLogicLabel().getLabelContents();
}
public void getName(AccessibleEvent e) {
e.result = LogicMessages.LogicPlugin_Tool_CreationTool_LogicLabel;
}
};
}
protected void createEditPolicies(){
super.createEditPolicies();
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, null);
installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
installEditPolicy(EditPolicy.COMPONENT_ROLE,new LogicLabelEditPolicy());
}
protected IFigure createFigure() {
StickyNoteFigure label = new StickyNoteFigure();
return label;
}
private LogicLabel getLogicLabel(){
return (LogicLabel)getModel();
}
private void performDirectEdit(){
new LogicLabelEditManager(this,
new LabelCellEditorLocator((StickyNoteFigure)getFigure())).show();
}
public void performRequest(Request request){
if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
performDirectEdit();
}
public void propertyChange(PropertyChangeEvent evt){
if (evt.getPropertyName().equalsIgnoreCase("labelContents"))//$NON-NLS-1$
refreshVisuals();
else
super.propertyChange(evt);
}
protected void refreshVisuals() {
((StickyNoteFigure)getFigure()).setText(getLogicLabel().getLabelContents());
super.refreshVisuals();
}
}