package org.eclipse.uml2.diagram.common.draw2d;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart;
import org.eclipse.gmf.runtime.diagram.ui.services.decorator.AbstractDecorator;
import org.eclipse.gmf.runtime.diagram.ui.services.decorator.IDecoratorTarget;
/**
* Workaround for #214160 and #209802 -- in some cases SWT fails to paint Images correctly.
* Until its fixed, we are going to show draw2d polyline based decorations instead of image-based
*/
public class ManuallyDrawnShortcutDecorator extends AbstractDecorator {
public ManuallyDrawnShortcutDecorator(IDecoratorTarget decoratorTarget) {
super(decoratorTarget);
}
public void activate() {
refresh();
}
public void refresh() {
removeDecoration();
EditPart editPart = (EditPart) getDecoratorTarget().getAdapter(EditPart.class);
if (editPart instanceof ShapeEditPart) {
setDecoration(getDecoratorTarget().addShapeDecoration(new ManuallyDrawnShortcutDecorationFigure(), IDecoratorTarget.Direction.SOUTH_WEST, 0, false));
} else if (editPart instanceof ConnectionEditPart) {
setDecoration(getDecoratorTarget().addConnectionDecoration(new ManuallyDrawnShortcutDecorationFigure(), 50, false));
}
}
}