From 65c2f4f57c6de87b1214857c62efac7a79078a0d Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Tue, 5 Sep 2017 18:00:51 +0200
Subject: [PATCH] Implemented edge-width scaling in meta-graph

---
 .../graphModel/YoshikoSolution.java           | 36 +++++++++++++------
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
index 3d961ee..bb1a5e5 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyEdge.Type;
 import org.cytoscape.model.subnetwork.CySubNetwork;
 import org.cytoscape.view.layout.CyLayoutAlgorithm;
 import org.cytoscape.view.model.CyNetworkView;
@@ -70,6 +71,10 @@ public class YoshikoSolution {
 		
 		//Add nodes
 		for (YoshikoCluster c: cluster) {
+			
+			VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
+
+			
 			CyNode clusterNode = metaGraph.addNode();
 			CySubNetwork subnet = c.getSubNetwork();
 			CyCore.networkManager.addNetwork(subnet);
@@ -85,9 +90,9 @@ public class YoshikoSolution {
 						null
 				)
 			);
-			VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
 			CyCore.visualMappingManager.setVisualStyle(vs, subnetView);
 			vs.apply(subnetView);
+			subnetView.updateView();
 			clusterNode.setNetworkPointer(subnet);
 			//Set node attributes
 			metaGraph.getRow(clusterNode).set("name", LocalizationManager.get("cluster")+" "+c.getID());
@@ -107,13 +112,16 @@ public class YoshikoSolution {
 				for (CyNode c1n : c1.getSubNetwork().getNodeList()) {
 					for (CyNode c2n : c2.getSubNetwork().getNodeList()) {
 						if (originalGraph.containsEdge(c1n, c2n) || originalGraph.containsEdge(c2n, c1n)) {
-							if (metaGraph.containsEdge(map.get(c1), map.get(c2))){
-								//TODO: Update weight
-							}
-							else {
+							if (!metaGraph.containsEdge(map.get(c1), map.get(c2))){
 								CyEdge edge = metaGraph.addEdge(map.get(c1), map.get(c2), false);
 								metaGraph.getRow(edge).set("edgeStrength",1);
 							}
+							else {
+								CyEdge edge = metaGraph.getConnectingEdgeList(map.get(c1), map.get(c2), Type.ANY).get(0);
+								metaGraph.getRow(edge).set("edgeStrength",
+								metaGraph.getRow(edge).get("edgeStrength", Integer.class)+1
+										);
+							}
 						}
 					}
 				}
@@ -131,6 +139,9 @@ public class YoshikoSolution {
 			)
 		);
 		
+		VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
+
+		
 		CyCore.networkManager.addNetwork(metaGraph);
 		CyCore.networkViewManager.addNetworkView(
 				view
@@ -142,16 +153,21 @@ public class YoshikoSolution {
 				Integer.class,
 				BasicVisualLexicon.NODE_SIZE
 			);
+		
+		ContinuousMapping<Integer, Double> contMapEdges = (ContinuousMapping<Integer, Double>)CyCore.continuousMappingFactory.createVisualMappingFunction(
+				"edgeStrength",
+				Integer.class,
+				BasicVisualLexicon.EDGE_WIDTH
+			);
 
-		VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
-		vs.addVisualMappingFunction(contMap);
-		CyCore.visualMappingManager.addVisualStyle(vs);
-		CyCore.cy.setCurrentNetworkView(view);
 		//Apply visual style
 		CyCore.visualMappingManager.setVisualStyle(vs, view);
+		vs.addVisualMappingFunction(contMap);
+		vs.addVisualMappingFunction(contMapEdges);
 		vs.apply(view);
 		view.updateView();
-
+		
+		CyCore.cy.setCurrentNetworkView(view);
 	}
 	
 }
-- 
GitLab