package org.eclipse.uml2.diagram.timing.edit.policies;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.uml2.diagram.common.editparts.PrimaryShapeEditPart;
import org.eclipse.uml2.diagram.timing.edit.parts.DSegmentEditPart;
public interface SegmentAnchor {
public EditPartAndGlobalBounds<DSegmentEditPart> getOverlappingSegmentEditPartData();
public EditPartAndGlobalBounds<PrimaryShapeEditPart> getLeftAnchorEditPartData();
public EditPartAndGlobalBounds<PrimaryShapeEditPart> getRightAnchorEditPartData();
public static class Util {
public static final String KEY_FOR_REQUEST_PARAMETERS = SegmentAnchor.Util.class.getSimpleName() + ":REQUEST_KEY";
@SuppressWarnings("unchecked")
public static void putAnchor(SegmentAnchor data, Request request){
request.getExtendedData().put(KEY_FOR_REQUEST_PARAMETERS, data);
}
@SuppressWarnings("unchecked")
public static void putAnchor(SegmentAnchor data, IEditCommandRequest request){
request.getParameters().put(KEY_FOR_REQUEST_PARAMETERS, data);
}
public static SegmentAnchor getAnchor(Request request){
return (SegmentAnchor) request.getExtendedData().get(KEY_FOR_REQUEST_PARAMETERS);
}
public static SegmentAnchor getAnchor(IEditCommandRequest request){
return (SegmentAnchor) request.getParameters().get(KEY_FOR_REQUEST_PARAMETERS);
}
}
public static class EditPartAndGlobalBounds<T extends IGraphicalEditPart> {
private final Rectangle myGlobalBounds;
private final T myEditPart;
public EditPartAndGlobalBounds(T editPart, Rectangle globalBounds){
myEditPart = editPart;
myGlobalBounds = globalBounds;
}
public Rectangle getGlobalBounds() {
return myGlobalBounds;
}
public T getEditPart() {
return myEditPart;
}
public View getNotationView(){
return myEditPart.getNotationView();
}
public EObject getSemanticElement(){
return myEditPart.resolveSemanticElement();
}
}
}