/******************************************************************************* * Copyright (c) 2004, 2005 Sybase, Inc. 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpolicy; import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.BendpointEditPolicy; import org.eclipse.gef.requests.BendpointRequest; import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.CreateBendpointCommand; import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.DeleteBendpointCommand; import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.MoveBendpointCommand; import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.PageflowLink; /** * Customize the bendpoint edit policy fro pageflow link connections * */ public class PFLinkBendpointEditPolicy extends BendpointEditPolicy { /* * (non-Javadoc) * * @see org.eclipse.gef.editpolicies.BendpointEditPolicy#getCreateBendpointCommand(org.eclipse.gef.requests.BendpointRequest) */ protected Command getCreateBendpointCommand(BendpointRequest request) { CreateBendpointCommand createCmd = new CreateBendpointCommand(); Point p = request.getLocation(); Connection conn = getConnection(); conn.translateToRelative(p); createCmd.setLocation(p); Point ref1 = getConnection().getSourceAnchor().getReferencePoint(); Point ref2 = getConnection().getTargetAnchor().getReferencePoint(); conn.translateToRelative(ref1); conn.translateToRelative(ref2); createCmd.setRelativeDimensions(p.getDifference(ref1), p .getDifference(ref2)); createCmd.setPFLink((PageflowLink) request.getSource().getModel()); createCmd.setIndex(request.getIndex()); return createCmd; } /* * (non-Javadoc) * * @see org.eclipse.gef.editpolicies.BendpointEditPolicy#getDeleteBendpointCommand(org.eclipse.gef.requests.BendpointRequest) */ protected Command getDeleteBendpointCommand(BendpointRequest request) { DeleteBendpointCommand deleteCom = new DeleteBendpointCommand(); Point p = request.getLocation(); deleteCom.setLocation(p); deleteCom.setPFLink((PageflowLink) request.getSource().getModel()); deleteCom.setIndex(request.getIndex()); return deleteCom; } /* * (non-Javadoc) * * @see org.eclipse.gef.editpolicies.BendpointEditPolicy#getMoveBendpointCommand(org.eclipse.gef.requests.BendpointRequest) */ protected Command getMoveBendpointCommand(BendpointRequest request) { MoveBendpointCommand moveCmd = new MoveBendpointCommand(); Point p = request.getLocation(); Connection conn = getConnection(); conn.translateToRelative(p); moveCmd.setLocation(p); Point ref1 = getConnection().getSourceAnchor().getReferencePoint(); Point ref2 = getConnection().getTargetAnchor().getReferencePoint(); conn.translateToRelative(ref1); conn.translateToRelative(ref2); moveCmd.setRelativeDimensions(p.getDifference(ref1), p .getDifference(ref2)); moveCmd.setPFLink((PageflowLink) request.getSource().getModel()); moveCmd.setIndex(request.getIndex()); return moveCmd; } }