blob: 92b483f5f47f070128a0c0db996311daffb53f72 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2012 SAP AG.
* 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:
* SAP AG - initial API, implementation and documentation
* Benjamin Schmeling - mwenz - Bug 367483 - Support composite connections
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.ui.internal.parts;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.draw2d.Bendpoint;
import org.eclipse.draw2d.BendpointConnectionRouter;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.graphiti.internal.services.GraphitiInternal;
import org.eclipse.graphiti.mm.algorithms.styles.Point;
import org.eclipse.graphiti.mm.pictograms.Connection;
import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
import org.eclipse.graphiti.ui.internal.config.IConfigurationProviderInternal;
import org.eclipse.graphiti.ui.internal.util.DataTypeTransformation;
/**
* The Class FreeFormConnectionEditPart.
*
* @noinstantiate This class is not intended to be instantiated by clients.
* @noextend This class is not intended to be subclassed by clients.
*/
public class FreeFormConnectionEditPart extends ConnectionEditPart {
/**
* The Constructor.
*
* @param configurationProvider
* the configuration provider
* @param connection
* the connection
*/
public FreeFormConnectionEditPart(IConfigurationProviderInternal configurationProvider, Connection connection,
EditPart contextParent) {
super(configurationProvider, connection, contextParent);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.graphiti.ui.internal.parts.ConnectionEditPart#createFigure ()
*/
@Override
public IFigure createFigure() {
IFigure ret = super.createFigure();
if (ret instanceof org.eclipse.draw2d.Connection) {
org.eclipse.draw2d.Connection draw2dConnection = (org.eclipse.draw2d.Connection) ret;
draw2dConnection.setConnectionRouter(new BendpointConnectionRouter());
}
return ret;
}
private void refreshBendpoints() {
FreeFormConnection ffc = (FreeFormConnection) getConnection();
if (!GraphitiInternal.getEmfService().isObjectAlive(ffc)) {
return;
}
List<Bendpoint> pointList = new ArrayList<Bendpoint>();
List<Point> bendpoints = ffc.getBendpoints();
for (Point point : bendpoints) {
Bendpoint draw2dBendPoint = DataTypeTransformation.toDraw2dBendPoint(point);
pointList.add(draw2dBendPoint);
}
getConnectionFigure().setRoutingConstraint(pointList);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.graphiti.ui.internal.parts.ConnectionEditPart#
* createEditPolicies()
*/
@Override
protected void createEditPolicies() {
super.createEditPolicies();
installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, getConfigurationProvider().getEditPolicyFactory()
.createConnectionBendpointsEditPolicy());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.graphiti.ui.internal.parts.ConnectionEditPart#
* refreshVisuals()
*/
@Override
protected void refreshVisuals() {
super.refreshVisuals();
refreshBendpoints();
}
}