package org.eclipse.papyrus.uml.diagram.sequence.apex.tools;
import java.util.Map;
import org.eclipse.core.runtime.Platform;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.gef.ui.internal.tools.SelectConnectionEditPartTracker;
import org.eclipse.papyrus.uml.diagram.sequence.apex.util.ApexSequenceRequestConstants;
import org.eclipse.swt.SWT;
/**
* @author Jiho
*
*/
@SuppressWarnings({ "restriction", "unchecked" })
public class ApexSelectConnectionEditPartTracker extends
SelectConnectionEditPartTracker {
/**
* Key modifier for constrained move. It's SHIFT on all platforms.
*/
static final int MODIFIER_CONSTRAINED_MOVE = SWT.SHIFT;
/**
* Key modifier for sequence of messages. It's ALT on Mac, and MOD1
* on all other platforms.
*/
static final int MODIFIER_REORDERING;
static {
if (Platform.OS_MACOSX.equals(Platform.getOS())) {
MODIFIER_REORDERING = SWT.ALT;
} else {
MODIFIER_REORDERING = SWT.MOD1;
}
}
private Request sourceRequest;
public ApexSelectConnectionEditPartTracker(ConnectionEditPart owner) {
super(owner);
}
@Override
protected Request createSourceRequest() {
if (sourceRequest == null)
sourceRequest = super.createSourceRequest();
return sourceRequest;
}
@Override
protected void updateSourceRequest() {
super.updateSourceRequest();
Input currentInput = getCurrentInput();
Map extendedData = sourceRequest.getExtendedData();
extendedData.put(ApexSequenceRequestConstants.APEX_MODIFIER_CONSTRAINED_MOVE, currentInput.isModKeyDown(MODIFIER_CONSTRAINED_MOVE));
extendedData.put(ApexSequenceRequestConstants.APEX_MODIFIER_REORDERING, currentInput.isModKeyDown(MODIFIER_REORDERING));
}
}