package org.eclipse.uml2.diagram.sequence.internal.layout.model; import java.awt.Color; import java.awt.Point; import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsLink; /** * */ public class LMMountingLink { LMMountingLink(AbsLink gdeLink) { myGdeLink = gdeLink; } AbsLink getGdeLink() { return myGdeLink; } public LMFrame getFrame() { return myFrame; } void setFrame(LMFrame frame) { myFrame = frame; } LMMountingRegion getMountingRegion() { return myMountingRegion; } void setMountingRegion(LMMountingRegion mountingRegion) { myMountingRegion = mountingRegion; } void setXPosition(int newPos) { Point firstOldPoint = getFirstLinkPoint(); setLinkPoints(newPos, firstOldPoint.y); } void setFrameTopPosition(int pos) { if (mySavedValidColor == null && myFrame.tryToUseAsPositionResponsibleLink(this)) { myFrame.setTopBorderPosFromMountingLink(pos); } Point firstOldPoint = getFirstLinkPoint(); setLinkPoints(firstOldPoint.x, pos); } void setFrameBottomPosition(int pos) { if (mySavedValidColor != null) { // because we are invalid return; } if (! myFrame.tryToUseAsPositionResponsibleLink(this)) { return; } myFrame.setBottomBorderPos(pos); } private Point getFirstLinkPoint() { Point [] points = getGdeLink().getLinkPoints(); if (points.length==0) { return new Point(0,0); } else { return points[0]; } } private void setLinkPoints(int x, int y) { if (getFrame() instanceof LMVisibleFrameWithPentagon) { getGdeLink().setLinkPoints(new Point [] { new Point(x, y), new Point(x, y) } ); } // else { // getGdeLink().setLinkPoints(new Point [] {} ); // } } boolean isValid() { return mySavedValidColor == null; } void setInvalid(boolean invalid) { if (mySavedValidColor == null && invalid) { mySavedValidColor = myGdeLink.getForeground(); myGdeLink.setForeground(Color.RED); } else if (mySavedValidColor != null && !invalid) { myGdeLink.setForeground(mySavedValidColor); mySavedValidColor = null; } if (! invalid) { myFrame.flushPositionResponsibleLink(); } } private LMFrame myFrame; private LMMountingRegion myMountingRegion; private final AbsLink myGdeLink; private Color mySavedValidColor = null; }