From d32e138245b21b17c825cf9fa56e4f6d9f75b8aa Mon Sep 17 00:00:00 2001
From: Lee <irina.lee@etu.upmc.fr>
Date: Fri, 3 Aug 2018 13:23:58 +0200
Subject: [PATCH] add condition to connector (eln)

---
 src/main/java/ui/eln/ELNConnector.java | 134 +++++++++++++++++++------
 1 file changed, 101 insertions(+), 33 deletions(-)

diff --git a/src/main/java/ui/eln/ELNConnector.java b/src/main/java/ui/eln/ELNConnector.java
index 9bb73c032b..15be67950d 100644
--- a/src/main/java/ui/eln/ELNConnector.java
+++ b/src/main/java/ui/eln/ELNConnector.java
@@ -45,6 +45,7 @@ import ui.window.JDialogELNConnector;
 import java.awt.*;
 import java.util.*;
 import javax.swing.JFrame;
+import myutil.GraphicLib;
 
 /**
  * Class ELNConnector 
@@ -83,50 +84,117 @@ public class ELNConnector extends TGConnector implements ScalableTGComponent {
 		return true;
 	}
 
-	protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2) {
+	protected void drawLastSegment(Graphics gr, int x1, int y1, int x2, int y2) {
+		Graphics2D g = (Graphics2D) gr;
+		
 		int w = g.getFontMetrics().stringWidth(value);
 		Font fold = g.getFont();
 		Font f = fold.deriveFont(Font.ITALIC, (float) (tdp.getFontSize()));
 		g.setFont(f);
-		if (get_p1().getFather() instanceof ELNComponent) {
-			if (get_p2().getFather() instanceof ELNComponent) {
-				editable = true;
-				g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		
+		ELNConnectingPoint pt1 = (ELNConnectingPoint) p1;
+		ELNConnectingPoint pt2 = (ELNConnectingPoint) p2;
+
+		if (pt1.getFather() instanceof ELNComponent && pt2.getFather() instanceof ELNComponent) {
+			g.drawLine(x1, y1, x2, y2);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt1.getFather() instanceof ELNComponent && pt2.getFather() instanceof ELNMidPortTerminal) {
+			ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) pt2.getFather()).getFather();
+			g.drawLine(x1, y1, x2, y2);
+			if (connector.getValue().equals("")) {
+				value = searchName(connector);
 			}
-			if (get_p2().getFather() instanceof ELNMidPortTerminal) {
-				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) get_p2().getFather()).getFather();
-				if (!connector.getValue().equals("")) {
-					value = connector.getValue();
-				} else {
-					value = searchName(connector);
-				}
+		} else if (pt1.getFather() instanceof ELNMidPortTerminal && pt2.getFather() instanceof ELNComponent) {
+			g.drawLine(x1, y1, x2, y2);
+			ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) pt1.getFather()).getFather();
+			if (connector.getValue().equals("")) {
+				value = searchName(connector);
 			}
-		}
-		if (get_p1().getFather() instanceof ELNMidPortTerminal) {
-			if (get_p2().getFather() instanceof ELNComponent) {
-				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) get_p1().getFather()).getFather();
-				if (!connector.getValue().equals("")) {
-					value = connector.getValue();
-				} else {
-					value = searchName(connector);
-				}
+		} else if (pt1.getFather() instanceof ELNModuleTerminal && pt2.getFather() instanceof ELNModuleTerminal) {
+			String name1 = ((ELNModuleTerminal) pt1.getFather()).getValue();
+			String name2 = ((ELNModuleTerminal) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			g.drawLine(x1, y1, x2, y2);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt1.getFather() instanceof ELNModuleTerminal && pt2.getFather() instanceof ELNClusterTerminal) {
+			String name1 = ((ELNModuleTerminal) pt1.getFather()).getValue();
+			String name2 = ((ELNClusterTerminal) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			g.drawLine(x1, y1, x2, y2);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt2.getFather() instanceof ELNModuleTerminal && pt1.getFather() instanceof ELNClusterTerminal) {
+			String name1 = ((ELNClusterTerminal) pt1.getFather()).getValue();
+			String name2 = ((ELNModuleTerminal) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			g.drawLine(x1, y1, x2, y2);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt1.getFather() instanceof ELNModulePortDE && pt2.getFather() instanceof ELNClusterPortDE) {
+			String name1 = ((ELNModulePortDE) pt1.getFather()).getValue();
+			String name2 = ((ELNClusterPortDE) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			Stroke dashed = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,	new float[] { 9 }, 0);
+			g.setStroke(dashed);
+			GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt2.getFather() instanceof ELNModulePortDE && pt1.getFather() instanceof ELNClusterPortDE) {
+			String name1 = ((ELNClusterPortDE) pt1.getFather()).getValue();
+			String name2 = ((ELNModulePortDE) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
 			}
+			Stroke dashed = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,	new float[] { 9 }, 0);
+			g.setStroke(dashed);
+			GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt1.getFather() instanceof ELNModulePortTDF && pt2.getFather() instanceof ELNClusterPortTDF) {
+			String name1 = ((ELNModulePortTDF) pt1.getFather()).getValue();
+			String name2 = ((ELNClusterPortTDF) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else if (pt2.getFather() instanceof ELNModulePortTDF && pt1.getFather() instanceof ELNClusterPortTDF) {
+			String name1 = ((ELNClusterPortTDF) pt1.getFather()).getValue();
+			String name2 = ((ELNModulePortTDF) pt2.getFather()).getValue();
+			if (name1.equals(name2)) {
+				value = name1;
+			}
+			GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
+			editable = true;
+			g.drawString(value, (x1 + x2 - w) / 2, (y1 + y2) / 2);
+		} else {
+			g.drawLine(x1, y1, x2, y2);
 		}
+
 		g.setFont(fold);
-		
-		g.drawLine(x1, y1, x2, y2);
 	}
 	
 	private String searchName(ELNConnector c) {
-		if (c.get_p1().getFather() instanceof ELNComponent) {
-			if (c.get_p2().getFather() instanceof ELNComponent) {
+		if (c.p1.getFather() instanceof ELNComponent) {
+			if (c.p2.getFather() instanceof ELNComponent) {
 				return c.getValue();
 			}
-			if (c.get_p2().getFather() instanceof ELNComponentNodeRef || c.get_p2().getFather() instanceof ELNModuleTerminalInout) {
+			if (c.p2.getFather() instanceof ELNComponentNodeRef || c.p2.getFather() instanceof ELNModuleTerminal) {
 				return "";
 			}
-			if (c.get_p2().getFather() instanceof ELNMidPortTerminal) {
-				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) c.get_p2().getFather()).getFather();
+			if (c.p2.getFather() instanceof ELNMidPortTerminal) {
+				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) c.p2.getFather()).getFather();
 				if (!connector.getValue().equals("")) {
 					return connector.getValue();
 				} else {
@@ -134,15 +202,15 @@ public class ELNConnector extends TGConnector implements ScalableTGComponent {
 				}
 			}
 		}
-		if (c.get_p1().getFather() instanceof ELNComponentNodeRef || c.get_p1().getFather() instanceof ELNModuleTerminalInout) {
+		if (c.p1.getFather() instanceof ELNComponentNodeRef || c.p1.getFather() instanceof ELNModuleTerminal) {
 			return "";
 		}
-		if (c.get_p1().getFather() instanceof ELNMidPortTerminal) {
-			if (c.get_p2().getFather() instanceof ELNComponentNodeRef || c.get_p2().getFather() instanceof ELNModuleTerminalInout) {
+		if (c.p1.getFather() instanceof ELNMidPortTerminal) {
+			if (c.p2.getFather() instanceof ELNComponentNodeRef || c.p2.getFather() instanceof ELNModuleTerminal) {
 				return "";
 			}
-			if (c.get_p2().getFather() instanceof ELNComponent) {
-				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) c.get_p1().getFather()).getFather();
+			if (c.p2.getFather() instanceof ELNComponent) {
+				ELNConnector connector = (ELNConnector) ((ELNMidPortTerminal) c.p1.getFather()).getFather();
 				if (!connector.getValue().equals("")) {
 					return connector.getValue();
 				} else {
-- 
GitLab