blob: 45d3d1ee88bdcf640e59b62b4096c7b7be063d40 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004, 2010 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.gmf.runtime.diagram.ui.services.decorator;
import org.eclipse.core.runtime.Assert;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DecorationEditPolicy.DecoratorTarget;
/**
* Abstract Decorator class. Clients can have their decorator subclass this to
* inherit utility methods for adding decoration figures.
*
* @see IDecorator
*
* @author cmahoney
*/
public abstract class AbstractDecorator
implements IDecorator {
/** the object to be decorated */
private DecoratorTarget decoratorTarget;
/** the decoration being displayed */
private Decoration decoration;
/**
* Creates a new <code>AbstractDecorator</code> for the decorator target
* passed in.
*
* @param decoratorTarget
* the object to be decorated
*/
public AbstractDecorator(IDecoratorTarget decoratorTarget) {
Assert.isTrue(decoratorTarget instanceof DecoratorTarget);
this.decoratorTarget = (DecoratorTarget) decoratorTarget;
}
/**
* Gets the object to be decorated.
*
* @return Returns the object to be decorated
*/
protected DecoratorTarget getDecoratorTarget() {
return decoratorTarget;
}
/**
* @return Returns the decoration.
* @since 1.4
*/
public Decoration getDecoration() {
return decoration;
}
/**
* @param decoration
* The decoration to set.
*/
public void setDecoration(IDecoration decoration) {
Assert.isTrue(decoration instanceof Decoration);
this.decoration = (Decoration) decoration;
}
/**
* Removes the decoration if it exists and sets it to null.
*/
protected void removeDecoration() {
if (decoration != null) {
decoratorTarget.removeDecoration(decoration);
decoration = null;
}
}
/**
* Removes the decoration.
*
* @see org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecorator#deactivate()
*/
public void deactivate() {
removeDecoration();
}
}