package com.horstmann.violet.product.diagram.communication.edge; import com.horstmann.violet.product.diagram.abstracts.edge.bentstyle.BentStyle; import com.horstmann.violet.product.diagram.common.edge.LabeledLineEdge; import com.horstmann.violet.product.diagram.communication.CommunicationDiagramConstant; import com.horstmann.violet.product.diagram.property.text.LineText; import com.horstmann.violet.product.diagram.property.text.SingleLineText; /** * * @author Artur Ratajczak * */ public class DirectionEdge extends LabeledLineEdge { public DirectionEdge() { super(); setBentStyle(BentStyle.STRAIGHT); SequenceNumber = new SingleLineText(); Message = new SingleLineText(); ConcurrentLoop = false; SequentialLoop = new SingleLineText(); } @Override public DirectionEdge copy() { return new DirectionEdge(this); } @Override protected void beforeReconstruction() { super.beforeReconstruction(); setBentStyle(BentStyle.STRAIGHT); SequenceNumber.reconstruction(); Message.reconstruction(); SequentialLoop.reconstruction(); } protected DirectionEdge(DirectionEdge directionEdge) { super(); this.ConcurrentLoop = directionEdge.ConcurrentLoop; this.SequenceNumber = directionEdge.SequenceNumber.clone(); this.Message = directionEdge.Message.clone(); this.SequentialLoop = directionEdge.SequentialLoop.clone(); } public void setSequenceNumber(LineText number) { this.SequenceNumber.setText(number); margeMessage(); } public LineText getSequenceNumber() { return SequenceNumber; } public void setMessage(LineText message) { this.Message.setText(message); margeMessage(); } public LineText getMessage() { return Message; } public LineText getSequentialLoop() { return SequentialLoop; } public void setSequentialLoop(LineText sequentialLoop) { SequentialLoop.setText(sequentialLoop); margeMessage(); } public boolean isConcurrentLoop() { return ConcurrentLoop; } public void setConcurrentLoop(boolean concurrentLoop) { ConcurrentLoop = concurrentLoop; margeMessage(); } private void margeMessage() { if (isConcurrentLoop() && !SequentialLoop.toString().isEmpty()) { setCenterLabel(SequenceNumber + " *|| " + SequentialLoop + " : " + Message); } else if (!SequentialLoop.toString().isEmpty()) setCenterLabel(SequenceNumber + " * " + SequentialLoop + " : " + Message); else setCenterLabel(SequenceNumber + " : " + Message); } @Override public String getToolTip() { return CommunicationDiagramConstant.COMMUNICATION_DIAGRAM_RESOURCE.getString("tooltip.direction_edge"); } private SingleLineText SequenceNumber; private SingleLineText Message; private SingleLineText SequentialLoop; private boolean ConcurrentLoop; }