/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.ui.internal.decorations; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.swt.graphics.Color; import org.xmind.gef.draw2d.IAnchor; import org.xmind.gef.draw2d.decoration.IConnectionDecoration; import org.xmind.gef.draw2d.decoration.IConnectionDecorationEx; import org.xmind.gef.draw2d.decoration.ICorneredDecoration; import org.xmind.gef.draw2d.decoration.IDecoration; import org.xmind.gef.draw2d.decoration.ILineDecoration; import org.xmind.gef.draw2d.decoration.IShadowedDecoration; import org.xmind.gef.draw2d.geometry.PrecisionPoint; import org.xmind.gef.draw2d.graphics.Path; import org.xmind.ui.decorations.AbstractRelationshipDecoration; public class RelationshipDecorationAdapter extends AbstractRelationshipDecoration implements ICorneredDecoration { private IDecoration decoration; public RelationshipDecorationAdapter(IDecoration decoration) { this.decoration = decoration; } protected void route(IFigure figure, Path shape) { } public int getAlpha() { return decoration.getAlpha(); } public String getId() { return decoration.getId(); } public Color getLineColor() { if (decoration instanceof ILineDecoration) return ((ILineDecoration) decoration).getLineColor(); return super.getLineColor(); } public int getLineStyle() { if (decoration instanceof ILineDecoration) return ((ILineDecoration) decoration).getLineStyle(); return super.getLineStyle(); } public int getLineWidth() { if (decoration instanceof ILineDecoration) return ((ILineDecoration) decoration).getLineWidth(); return super.getLineWidth(); } public IAnchor getSourceAnchor() { if (decoration instanceof IConnectionDecoration) return ((IConnectionDecoration) decoration).getSourceAnchor(); return super.getSourceAnchor(); } public PrecisionPoint getSourcePosition(IFigure figure) { if (decoration instanceof IConnectionDecoration) return ((IConnectionDecoration) decoration) .getSourcePosition(figure); return super.getSourcePosition(figure); } public IAnchor getTargetAnchor() { if (decoration instanceof IConnectionDecoration) return ((IConnectionDecoration) decoration).getTargetAnchor(); return super.getTargetAnchor(); } public PrecisionPoint getTargetPosition(IFigure figure) { if (decoration instanceof IConnectionDecoration) return ((IConnectionDecoration) decoration) .getTargetPosition(figure); return super.getTargetPosition(figure); } public void invalidate() { decoration.invalidate(); } public boolean isVisible() { return decoration.isVisible(); } public void paint(IFigure figure, Graphics graphics) { decoration.paint(figure, graphics); } public void reroute(IFigure figure) { if (decoration instanceof IConnectionDecoration) { ((IConnectionDecoration) decoration).reroute(figure); } else { super.reroute(figure); } } public void setAlpha(IFigure figure, int alpha) { decoration.setAlpha(figure, alpha); } public void setId(String id) { decoration.setId(id); } public void setLineColor(IFigure figure, Color color) { if (decoration instanceof ILineDecoration) { ((ILineDecoration) decoration).setLineColor(figure, color); } else { super.setLineColor(figure, color); } } public void setLineStyle(IFigure figure, int style) { if (decoration instanceof ILineDecoration) { ((ILineDecoration) decoration).setLineStyle(figure, style); } else { super.setLineStyle(figure, style); } } public void setLineWidth(IFigure figure, int width) { if (decoration instanceof ILineDecoration) { ((ILineDecoration) decoration).setLineWidth(figure, width); } else { super.setLineWidth(figure, width); } } public void setSourceAnchor(IFigure figure, IAnchor anchor) { if (decoration instanceof IConnectionDecoration) { ((IConnectionDecoration) decoration) .setSourceAnchor(figure, anchor); } else { super.setSourceAnchor(figure, anchor); } } public void setTargetAnchor(IFigure figure, IAnchor anchor) { if (decoration instanceof IConnectionDecoration) { ((IConnectionDecoration) decoration) .setTargetAnchor(figure, anchor); } else { super.setTargetAnchor(figure, anchor); } } public void setVisible(IFigure figure, boolean visible) { decoration.setVisible(figure, visible); } public void validate(IFigure figure) { decoration.validate(figure); } public boolean containsPoint(IFigure figure, int x, int y) { if (decoration instanceof IConnectionDecorationEx) return ((IConnectionDecorationEx) decoration).containsPoint(figure, x, y); return super.containsPoint(figure, x, y); } public Rectangle getPreferredBounds(IFigure figure) { if (decoration instanceof IConnectionDecorationEx) return ((IConnectionDecorationEx) decoration) .getPreferredBounds(figure); return super.getPreferredBounds(figure); } public void paintShadow(IFigure figure, Graphics graphics) { if (decoration instanceof IShadowedDecoration) { ((IShadowedDecoration) decoration).paintShadow(figure, graphics); } else { super.paintShadow(figure, graphics); } } public int hashCode() { return decoration.hashCode(); } public String toString() { return decoration.toString(); } public boolean equals(Object obj) { if (obj == null) return false; if (obj == this) return true; if (obj instanceof RelationshipDecorationAdapter) { obj = ((RelationshipDecorationAdapter) obj).decoration; } return this.decoration.equals(obj); } public int getCornerSize() { if (decoration instanceof ICorneredDecoration) return ((ICorneredDecoration) decoration).getCornerSize(); return 0; } public void setCornerSize(IFigure figure, int cornerSize) { if (decoration instanceof ICorneredDecoration) { ((ICorneredDecoration) decoration) .setCornerSize(figure, cornerSize); } } }