/******************************************************************************* * Copyright (c) 2011 EBM WebSourcing (PetalsLink) * 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: * Mickael Istria, EBM WebSourcing (PetalsLink) - initial API and implementation *******************************************************************************/ package org.eclipse.nebula.widgets.treemapper.internal; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.MouseListener; import org.eclipse.draw2d.MouseMotionListener; import org.eclipse.draw2d.Polyline; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.PointList; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; /** * @author Mickael Istria (EBM WebSourcing (PetalsLink)) */ public class LinkFigure { private IFigure parent; private Polyline leftLine; private Polyline rightLine; private Point leftPoint; private Point rightPoint; public LinkFigure(IFigure parent) { leftLine = new Polyline(); leftLine.setAntialias(SWT.ON); rightLine = new Polyline(); rightLine.setAntialias(SWT.ON); parent.add(leftLine); parent.add(rightLine); this.parent = parent; } /** * @param i * @param j */ public void setLeftPoint(int x, int y) { leftPoint = new Point(x, y); updateFigures(); } /** * @param i * @param j */ public void setRightPoint(int x, int y) { rightPoint = new Point(x, y); updateFigures(); } /** * @param leftItemVisible */ public void setLeftMappingVisible(boolean leftItemVisible) { if (leftItemVisible) { leftLine.setLineStyle(SWT.LINE_SOLID); } else { leftLine.setLineStyle(SWT.LINE_DASH); } } /** * */ private void updateFigures() { if (leftPoint != null && rightPoint != null) { Point middlePoint = new Rectangle(leftPoint, rightPoint).getCenter(); { PointList leftPointList = new PointList(2); leftPointList.addPoint(leftPoint); leftPointList.addPoint(middlePoint); leftLine.setPoints(leftPointList); } { PointList rightPointList = new PointList(2); rightPointList.addPoint(middlePoint); rightPointList.addPoint(rightPoint); rightLine.setPoints(rightPointList); } } } /** * @param rightItemVisible */ public void setRightMappingVisible(boolean rightItemVisible) { if (rightItemVisible) { rightLine.setLineStyle(SWT.LINE_SOLID); } else { rightLine.setLineStyle(SWT.LINE_DASH); } } /** * @param lineWidth */ public void setLineWidth(int lineWidth) { leftLine.setLineWidth(lineWidth); rightLine.setLineWidth(lineWidth); } /** * */ public void deleteFromParent() { parent.remove(leftLine); parent.remove(rightLine); } /** * @param color */ public void seLineColor(Color color) { leftLine.setForegroundColor(color); rightLine.setForegroundColor(color); } /** * @param mouseListener */ public void addMouseListener(MouseListener mouseListener) { leftLine.addMouseListener(mouseListener); rightLine.addMouseListener(mouseListener); } /** * @param mouseMotionListener */ public void addMouseMotionListener(MouseMotionListener mouseMotionListener) { leftLine.addMouseMotionListener(mouseMotionListener); rightLine.addMouseMotionListener(mouseMotionListener); } }