package org.eclipse.uml2.diagram.sequence.internal.layout.model;
import org.eclipse.uml2.diagram.sequence.internal.layout.GeometryConstants;
import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsElementPropertyAccess;
import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsNode;
/**
*
*/
public class LMInteractionOccurence extends LMVisibleFrameWithPentagon {
LMInteractionOccurence(AbsNode gdeNode) {
super(gdeNode);
myInteractionUseLayouter = AbsElementPropertyAccess.getInstance().getInteractionUseLayouter(gdeNode);
}
public interface InteractionUseLayouter {
int getPreferredWidth();
int getPreferredHeight();
}
boolean hasVisibleMountingLinks() {
return true;
}
public int getInnerHorizontalPadding() {
return GeometryConstants.Frames.INTERACTION_OCCURENCE_INNER_SPACE_HORIZONTAL;
}
public int getOuterHorizontalPadding() {
return GeometryConstants.Frames.INTERACTION_OCCURENCE_OUTER_SPACE_HORIZONTAL;
}
protected int getPentagonOffset() {
return 0;
}
public int getPreferredWidth() {
int pentagonWidth = super.getPreferredWidth();
int textWidth = myInteractionUseLayouter.getPreferredWidth();
return Math.max(pentagonWidth, textWidth);
}
public int getPreferredHeight() {
int pentagonHeight = getPentagonPreferredHeight();
int textHeight = myInteractionUseLayouter.getPreferredHeight();
return 2*pentagonHeight + textHeight;
}
private final InteractionUseLayouter myInteractionUseLayouter;
}