/******************************************************************************* * 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.editpolicies; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.LayerConstants; import org.eclipse.gef.editparts.LayerManager; /** * A <code>GraphicalEditPolicy</code> is used with a {@link GraphicalEditPart}. All * GraphicalEditPolicies are involved with the Figure in some way. They might use the * Figure to interpret Requests, or they might simply decorate the Figure with graphical * Feedback, such as selection handles. * <P> * This class provides convenience methods for accessing the host's Figure, and for adding * <i>feedback</i> to the GraphicalViewer. This class does not handle any Request types * directly. */ public abstract class GraphicalEditPolicy extends AbstractEditPolicy { /** * Adds the specified <code>Figure</code> to the {@link LayerConstants#FEEDBACK_LAYER}. * @param figure the feedback to add */ protected void addFeedback(IFigure figure) { getFeedbackLayer().add(figure); } /** * Returns the layer used for displaying feedback. * * @return the feedback layer */ protected IFigure getFeedbackLayer() { return getLayer(LayerConstants.FEEDBACK_LAYER); } /** * Convenience method to return the host's Figure. * @return The host GraphicalEditPart's Figure */ protected IFigure getHostFigure() { return ((GraphicalEditPart)getHost()).getFigure(); } /** * Obtains the specified layer. * @param layer the key identifying the layer * @return the requested layer */ protected IFigure getLayer(Object layer) { return LayerManager.Helper.find(getHost()).getLayer(layer); } /** * Removes the specified <code>Figure</code> from the {@link * LayerConstants#FEEDBACK_LAYER}. * @param figure the feedback to remove */ protected void removeFeedback(IFigure figure) { getFeedbackLayer().remove(figure); } }