package org.angularjs.codeInsight.router; import com.intellij.diagram.DiagramEdgeBase; import com.intellij.diagram.DiagramNode; import com.intellij.diagram.DiagramRelationshipInfo; import com.intellij.diagram.DiagramRelationshipInfoAdapter; import com.intellij.diagram.presentation.DiagramLineType; import org.jetbrains.annotations.Nullable; import java.awt.*; /** * @author Irina.Chernushina on 3/23/2016. */ public class AngularUiRouterEdge extends DiagramEdgeBase<DiagramObject> { private final static DiagramRelationshipInfo DEPENDS = new DiagramRelationshipInfoAdapter("DEPENDS", DiagramLineType.SOLID) { @Override public Shape getStartArrow() { return NONE; } @Override public Shape getEndArrow() { return STANDARD; } }; private final String myLabel; private final Type myType; @Nullable private String mySourceName; @Nullable private String myTargetName; public AngularUiRouterEdge(DiagramNode<DiagramObject> source, DiagramNode<DiagramObject> target, final String label, Type type) { super(source, target, new DiagramRelationshipInfoAdapter("BUILTIN", DiagramLineType.SOLID) { @Override public String getLabel() { return ""; } @Override public Shape getStartArrow() { return NONE; } @Override public Shape getEndArrow() { return STANDARD; } }); myLabel = label; myType = type; } @Nullable public String getSourceName() { return mySourceName; } public AngularUiRouterEdge setSourceName(@Nullable String sourceName) { mySourceName = sourceName; return this; } @Nullable public String getTargetName() { return myTargetName; } public String getLabel() { return myLabel; } public AngularUiRouterEdge setTargetName(@Nullable String targetName) { myTargetName = targetName; return this; } public Type getType() { return myType; } public static enum Type { providesTemplate, fillsTemplate, parent } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; AngularUiRouterEdge edge = (AngularUiRouterEdge)o; if (myLabel != null ? !myLabel.equals(edge.myLabel) : edge.myLabel != null) return false; if (myType != edge.myType) return false; if (mySourceName != null ? !mySourceName.equals(edge.mySourceName) : edge.mySourceName != null) return false; if (myTargetName != null ? !myTargetName.equals(edge.myTargetName) : edge.myTargetName != null) return false; return true; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (myLabel != null ? myLabel.hashCode() : 0); result = 31 * result + (myType != null ? myType.hashCode() : 0); result = 31 * result + (mySourceName != null ? mySourceName.hashCode() : 0); result = 31 * result + (myTargetName != null ? myTargetName.hashCode() : 0); return result; } }