blob: 504b36b33bc5903942c0ef23c3641727088bf35f (
plain) (
tree)
|
|
/*****************************************************************************
* Copyright (c) 2017 CEA LIST 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:
* CEA LIST - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.edit.policies;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.UnexecutableCommand;
import org.eclipse.gef.requests.ChangeBoundsRequest;
import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.XYLayoutWithConstrainedResizedEditPolicy;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
/**
* this class has been customized to prevent the strange feedback of lifeline during the move
* @since 3.0
*/
public class SequenceDiagramLayoutEditPolicy extends XYLayoutWithConstrainedResizedEditPolicy {
/**
* @see org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy#createAddCommand(org.eclipse.gef.requests.ChangeBoundsRequest, org.eclipse.gef.EditPart, java.lang.Object)
*
* @param request
* @param child
* @param constraint
* @return
*/
@Override
protected Command createAddCommand(ChangeBoundsRequest request, EditPart child, Object constraint) {
if( child instanceof LifelineEditPart) {
return UnexecutableCommand.INSTANCE;
}
return super.createAddCommand(request, child, constraint);
}
/**
* @see org.eclipse.gef.editpolicies.LayoutEditPolicy#showTargetFeedback(org.eclipse.gef.Request)
*
* @param request
*/
@Override
public void showTargetFeedback(Request request) {
if(request instanceof ChangeBoundsRequest){
ChangeBoundsRequest changeBoundsRequest= (ChangeBoundsRequest)request;
if( changeBoundsRequest.getEditParts().get(0) instanceof LifelineEditPart) {
changeBoundsRequest.setMoveDelta(new Point(changeBoundsRequest.getMoveDelta().x,0));
}
}
super.showTargetFeedback(request);
}
}
|