/*******************************************************************************
* Copyright (c) 2000, 2005 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.gef.examples.logicdesigner.edit;
import org.eclipse.draw2d.Connection;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.requests.BendpointRequest;
import org.eclipse.gef.examples.logicdesigner.model.Wire;
import org.eclipse.gef.examples.logicdesigner.model.commands.BendpointCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.CreateBendpointCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.DeleteBendpointCommand;
import org.eclipse.gef.examples.logicdesigner.model.commands.MoveBendpointCommand;
public class WireBendpointEditPolicy
extends org.eclipse.gef.editpolicies.BendpointEditPolicy
{
protected Command getCreateBendpointCommand(BendpointRequest request) {
CreateBendpointCommand com = new CreateBendpointCommand();
Point p = request.getLocation();
Connection conn = getConnection();
conn.translateToRelative(p);
com.setLocation(p);
Point ref1 = getConnection().getSourceAnchor().getReferencePoint();
Point ref2 = getConnection().getTargetAnchor().getReferencePoint();
conn.translateToRelative(ref1);
conn.translateToRelative(ref2);
com.setRelativeDimensions(p.getDifference(ref1),
p.getDifference(ref2));
com.setWire((Wire)request.getSource().getModel());
com.setIndex(request.getIndex());
return com;
}
protected Command getMoveBendpointCommand(BendpointRequest request) {
MoveBendpointCommand com = new MoveBendpointCommand();
Point p = request.getLocation();
Connection conn = getConnection();
conn.translateToRelative(p);
com.setLocation(p);
Point ref1 = getConnection().getSourceAnchor().getReferencePoint();
Point ref2 = getConnection().getTargetAnchor().getReferencePoint();
conn.translateToRelative(ref1);
conn.translateToRelative(ref2);
com.setRelativeDimensions(p.getDifference(ref1),
p.getDifference(ref2));
com.setWire((Wire)request.getSource().getModel());
com.setIndex(request.getIndex());
return com;
}
protected Command getDeleteBendpointCommand(BendpointRequest request) {
BendpointCommand com = new DeleteBendpointCommand();
Point p = request.getLocation();
com.setLocation(p);
com.setWire((Wire)request.getSource().getModel());
com.setIndex(request.getIndex());
return com;
}
}