package org.eclipse.uml2.diagram.timing.edit.policies;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.uml2.diagram.common.editparts.PrimaryShapeEditPart;
import org.eclipse.uml2.diagram.timing.edit.parts.DSegmentEditPart;
import org.eclipse.uml2.diagram.timing.model.timingd.DSegmentElement;
public class SegmentAnchorImpl implements SegmentAnchor {
private EditPartAndGlobalBounds<DSegmentEditPart> myOverlappingSegment;
private EditPartAndGlobalBounds<PrimaryShapeEditPart> myLeftAnchor;
private EditPartAndGlobalBounds<PrimaryShapeEditPart> myRightAnchor;
public void setLeftAnchor(EditPartAndGlobalBounds<PrimaryShapeEditPart> leftAnchorD) {
myLeftAnchor = leftAnchorD;
}
public void setLeftAnchor(PrimaryShapeEditPart ep, Rectangle globalBounds) {
setLeftAnchor(new EditPartAndGlobalBounds<PrimaryShapeEditPart>(ep, globalBounds));
}
public void setOverlappingSegment(DSegmentEditPart ep, Rectangle globalBounds) {
setOverlappingSegment(new EditPartAndGlobalBounds<DSegmentEditPart>(ep, globalBounds));
}
public void setRightAnchor(PrimaryShapeEditPart ep, Rectangle globalBounds) {
setRightAnchor(new EditPartAndGlobalBounds<PrimaryShapeEditPart>(ep, globalBounds));
}
public void setOverlappingSegment(EditPartAndGlobalBounds<DSegmentEditPart> overlappingSegmentD) {
myOverlappingSegment = overlappingSegmentD;
}
public void setRightAnchor(EditPartAndGlobalBounds<PrimaryShapeEditPart> rightAnchorD) {
myRightAnchor = rightAnchorD;
}
public EditPartAndGlobalBounds<PrimaryShapeEditPart> getLeftAnchorEditPartData() {
return myLeftAnchor;
}
public EditPartAndGlobalBounds<DSegmentEditPart> getOverlappingSegmentEditPartData() {
return myOverlappingSegment;
}
public EditPartAndGlobalBounds<PrimaryShapeEditPart> getRightAnchorEditPartData() {
return myRightAnchor;
}
@Override
public String toString() {
StringBuffer result = new StringBuffer();
result.append("SegmentAnchor: ");
result.append("\n\t OverlappingSegment: ").append(myOverlappingSegment);
result.append("\n\t LeftCircle: ").append(asDebugString(myLeftAnchor));
result.append("\n\t RightCircle: ").append(asDebugString(myRightAnchor));
return result.toString();
}
private static <T extends IGraphicalEditPart> String asDebugString(EditPartAndGlobalBounds<T> epd){
if (epd == null){
return "null";
}
IGraphicalEditPart ep = epd.getEditPart();
StringBuffer result = new StringBuffer();
result.append(ep);
EObject semantic = ep.resolveSemanticElement();
if (semantic instanceof DSegmentElement){
result.append("\n\t\t[").append(semantic).append("]");
}
return result.toString();
}
}