package org.eclipse.uml2.diagram.sequence.model.edit;
import java.util.List;
import org.eclipse.uml2.diagram.sequence.model.sequenced.SDBracket;
import org.eclipse.uml2.diagram.sequence.model.sequenced.SDBracketContainer;
public class SDAnchor {
private final SDBracketContainer myContainer;
private final SDBracket myAnchor;
private final boolean myIsBeforeNotAfterAnchor;
public SDAnchor(SDBracketContainer container, SDBracket anchor, boolean isBeforeNotAfterAnchor) {
myContainer = container;
myAnchor = anchor;
myIsBeforeNotAfterAnchor = isBeforeNotAfterAnchor;
}
public boolean isBeforeNotAfterAnchor() {
return myIsBeforeNotAfterAnchor;
}
public boolean isAfterAnchor() {
return !myIsBeforeNotAfterAnchor;
}
public boolean isFirstElement() {
return myIsBeforeNotAfterAnchor && myAnchor == null;
}
public SDBracket getAnchor() {
return myAnchor;
}
public SDBracketContainer getContainer() {
return myContainer;
}
public static SDAnchor after(SDBracket bracket) {
return new SDAnchor(bracket.getBracketContainer(), bracket, false);
}
public static SDAnchor firstChildFor(SDBracketContainer container) {
return new SDAnchor(container, null, true);
}
public static SDAnchor lastChildFor(SDBracketContainer container) {
List<SDBracket> brackets = container.getBrackets();
return brackets.isEmpty() ? firstChildFor(container) : after(brackets.get(brackets.size() - 1));
}
}