Skip to content
Snippets Groups Projects
Commit 8345651f authored by Philipp Spohr's avatar Philipp Spohr
Browse files

Improved style handling

parent c81d667f
No related branches found
No related tags found
No related merge requests found
...@@ -38,7 +38,6 @@ import org.cytoscape.service.util.AbstractCyActivator; ...@@ -38,7 +38,6 @@ import org.cytoscape.service.util.AbstractCyActivator;
import org.cytoscape.service.util.CyServiceRegistrar; import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.session.events.SessionLoadedListener; import org.cytoscape.session.events.SessionLoadedListener;
import org.cytoscape.task.create.CloneNetworkTaskFactory; import org.cytoscape.task.create.CloneNetworkTaskFactory;
import org.cytoscape.task.visualize.ApplyVisualStyleTaskFactory;
import org.cytoscape.view.model.CyNetworkViewFactory; import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.layout.CyLayoutAlgorithmManager; import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkViewManager; import org.cytoscape.view.model.CyNetworkViewManager;
...@@ -93,7 +92,6 @@ public class CyActivator extends AbstractCyActivator { ...@@ -93,7 +92,6 @@ public class CyActivator extends AbstractCyActivator {
CyCore.visualStyleFactory = getService(context,VisualStyleFactory.class); CyCore.visualStyleFactory = getService(context,VisualStyleFactory.class);
CyCore.continuousMappingFactory = getService(context,VisualMappingFunctionFactory.class, "(mapping.type=continuous)"); CyCore.continuousMappingFactory = getService(context,VisualMappingFunctionFactory.class, "(mapping.type=continuous)");
CyCore.rootNetworkManager = getService(context,CyRootNetworkManager.class); CyCore.rootNetworkManager = getService(context,CyRootNetworkManager.class);
CyCore.applyVisualStyleTaskFactory = getService(context,ApplyVisualStyleTaskFactory.class);
//Not sure how to correctly infer arguments here //Not sure how to correctly infer arguments here
CyCore.renderingEngineFactory = getService(context,RenderingEngineFactory.class); CyCore.renderingEngineFactory = getService(context,RenderingEngineFactory.class);
CyCore.cloneNetworkTaskFactory = getService(context,CloneNetworkTaskFactory.class); CyCore.cloneNetworkTaskFactory = getService(context,CloneNetworkTaskFactory.class);
......
...@@ -29,7 +29,6 @@ import org.cytoscape.model.CyNetworkManager; ...@@ -29,7 +29,6 @@ import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.subnetwork.CyRootNetworkManager; import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.service.util.CyServiceRegistrar; import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.task.create.CloneNetworkTaskFactory; import org.cytoscape.task.create.CloneNetworkTaskFactory;
import org.cytoscape.task.visualize.ApplyVisualStyleTaskFactory;
import org.cytoscape.view.layout.CyLayoutAlgorithmManager; import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkViewFactory; import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.model.CyNetworkViewManager; import org.cytoscape.view.model.CyNetworkViewManager;
...@@ -61,7 +60,6 @@ public class CyCore { ...@@ -61,7 +60,6 @@ public class CyCore {
public static VisualStyleFactory visualStyleFactory; public static VisualStyleFactory visualStyleFactory;
public static VisualMappingFunctionFactory continuousMappingFactory; public static VisualMappingFunctionFactory continuousMappingFactory;
public static CyRootNetworkManager rootNetworkManager; public static CyRootNetworkManager rootNetworkManager;
public static ApplyVisualStyleTaskFactory applyVisualStyleTaskFactory;
public static RenderingEngineFactory<CyNetwork> renderingEngineFactory; public static RenderingEngineFactory<CyNetwork> renderingEngineFactory;
public static CloneNetworkTaskFactory cloneNetworkTaskFactory; public static CloneNetworkTaskFactory cloneNetworkTaskFactory;
// //
......
package de.hhu.ba.yoshikoWrapper.cytoUtil;
import java.util.List;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.presentation.property.BasicVisualLexicon;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
import de.hhu.ba.yoshikoWrapper.core.CyCore;
public class StyleManager {
public static final String CLUSTERSIZE_COLUMN_NAME = "clusterSize";
public static final String EDGESTRENGTH_COLUMN_NAME = "edgeStrength";
public static final double MIN_EDGE_SIZE = 1.0;
public static final double MAX_EDGE_SIZE = 10.0;
public static final double MIN_NODE_SIZE = 5.0;
public static final double MAX_NODE_SIZE = 30.0;
private static void apply (CyNetworkView view, VisualStyle style) {
CyCore.visualMappingManager.setVisualStyle(style,view);
style.apply(view);
view.updateView();
}
public static void style(CyNetworkView view, VisualStyle style) {
apply(view,style);
}
public static void styleWithMapping(CyNetworkView view, VisualStyle style) {
style = CyCore.visualStyleFactory.createVisualStyle(style);
//Define style for solution
ContinuousMapping<Integer, Double> contMapNodes = (ContinuousMapping<Integer, Double>)CyCore.continuousMappingFactory.createVisualMappingFunction(
CLUSTERSIZE_COLUMN_NAME,
Integer.class,
BasicVisualLexicon.NODE_SIZE
);
ContinuousMapping<Integer, Double> contMapEdges = (ContinuousMapping<Integer, Double>)CyCore.continuousMappingFactory.createVisualMappingFunction(
EDGESTRENGTH_COLUMN_NAME,
Integer.class,
BasicVisualLexicon.EDGE_WIDTH
);
//Calculate size range and scale accordingly
List<Integer> sizes = view.getModel().getDefaultNodeTable().getColumn(CLUSTERSIZE_COLUMN_NAME).getValues(Integer.class);
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (Integer i : sizes) {
if (i < min) {
min = i;
}
if (i > max) {
max = i;
}
}
contMapNodes.addPoint(min, new BoundaryRangeValues<Double>(MIN_NODE_SIZE,MIN_NODE_SIZE,MIN_NODE_SIZE));
contMapNodes.addPoint(max, new BoundaryRangeValues<Double>(MAX_NODE_SIZE,MAX_NODE_SIZE,MAX_NODE_SIZE));
sizes = view.getModel().getDefaultEdgeTable().getColumn(EDGESTRENGTH_COLUMN_NAME).getValues(Integer.class);
min = Integer.MAX_VALUE;
max = Integer.MIN_VALUE;
for (Integer i : sizes) {
if (i < min) {
min = i;
}
if (i > max) {
max = i;
}
}
contMapEdges.addPoint(min, new BoundaryRangeValues<Double>(MIN_EDGE_SIZE,MIN_EDGE_SIZE,MIN_EDGE_SIZE));
contMapEdges.addPoint(max, new BoundaryRangeValues<Double>(MAX_EDGE_SIZE,MAX_EDGE_SIZE,MAX_EDGE_SIZE));
style.addVisualMappingFunction(contMapNodes);
style.addVisualMappingFunction(contMapEdges);
apply(view,style);
}
}
...@@ -38,7 +38,6 @@ import org.cytoscape.model.subnetwork.CySubNetwork; ...@@ -38,7 +38,6 @@ import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.view.layout.CyLayoutAlgorithm; import org.cytoscape.view.layout.CyLayoutAlgorithm;
import org.cytoscape.view.model.CyNetworkView; import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.presentation.RenderingEngine; import org.cytoscape.view.presentation.RenderingEngine;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.work.Task; import org.cytoscape.work.Task;
import org.cytoscape.work.TaskIterator; import org.cytoscape.work.TaskIterator;
import org.cytoscape.work.TaskMonitor; import org.cytoscape.work.TaskMonitor;
...@@ -46,6 +45,7 @@ import org.slf4j.Logger; ...@@ -46,6 +45,7 @@ import org.slf4j.Logger;
import de.hhu.ba.yoshikoWrapper.core.CyCore; import de.hhu.ba.yoshikoWrapper.core.CyCore;
import de.hhu.ba.yoshikoWrapper.core.LocalizationManager; import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager;
import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger; import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
import static org.cytoscape.view.presentation.property.BasicVisualLexicon.NETWORK_HEIGHT; import static org.cytoscape.view.presentation.property.BasicVisualLexicon.NETWORK_HEIGHT;
...@@ -138,9 +138,7 @@ public class YoshikoCluster { ...@@ -138,9 +138,7 @@ public class YoshikoCluster {
public void run(TaskMonitor taskMonitor) throws Exception { public void run(TaskMonitor taskMonitor) throws Exception {
taskMonitor.setStatusMessage("Generating cluster view for C:"+id); taskMonitor.setStatusMessage("Generating cluster view for C:"+id);
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle()); StyleManager.style(view, CyCore.visualMappingManager.getCurrentVisualStyle());
CyCore.visualMappingManager.setVisualStyle(vs, view);
vs.apply(view);
view.setVisualProperty(NETWORK_WIDTH, new Double(width)); view.setVisualProperty(NETWORK_WIDTH, new Double(width));
view.setVisualProperty(NETWORK_HEIGHT, new Double(height)); view.setVisualProperty(NETWORK_HEIGHT, new Double(height));
......
...@@ -32,12 +32,10 @@ import org.cytoscape.model.CyEdge.Type; ...@@ -32,12 +32,10 @@ import org.cytoscape.model.CyEdge.Type;
import org.cytoscape.model.subnetwork.CySubNetwork; import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.view.layout.CyLayoutAlgorithm; import org.cytoscape.view.layout.CyLayoutAlgorithm;
import org.cytoscape.view.model.CyNetworkView; import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.presentation.property.BasicVisualLexicon;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
import de.hhu.ba.yoshikoWrapper.core.CyCore; import de.hhu.ba.yoshikoWrapper.core.CyCore;
import de.hhu.ba.yoshikoWrapper.core.LocalizationManager; import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager;
public class YoshikoSolution { public class YoshikoSolution {
...@@ -78,7 +76,6 @@ public class YoshikoSolution { ...@@ -78,7 +76,6 @@ public class YoshikoSolution {
//Add nodes //Add nodes
for (YoshikoCluster c: cluster) { for (YoshikoCluster c: cluster) {
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
CyNode clusterNode = metaGraph.addNode(); CyNode clusterNode = metaGraph.addNode();
...@@ -96,13 +93,13 @@ public class YoshikoSolution { ...@@ -96,13 +93,13 @@ public class YoshikoSolution {
null null
) )
); );
CyCore.visualMappingManager.setVisualStyle(vs, subnetView);
vs.apply(subnetView); StyleManager.style(subnetView,CyCore.visualMappingManager.getCurrentVisualStyle());
subnetView.updateView();
clusterNode.setNetworkPointer(subnet); clusterNode.setNetworkPointer(subnet);
//Set node attributes //Set node attributes
metaGraph.getRow(clusterNode).set("name", LocalizationManager.get("cluster")+" "+c.getID()); metaGraph.getRow(clusterNode).set("name", LocalizationManager.get("cluster")+" "+c.getID());
metaGraph.getRow(clusterNode).set("clusterSize",c.getSize()); metaGraph.getRow(clusterNode).set(StyleManager.CLUSTERSIZE_COLUMN_NAME,c.getSize());
map.put(c, clusterNode); map.put(c, clusterNode);
} }
...@@ -120,12 +117,12 @@ public class YoshikoSolution { ...@@ -120,12 +117,12 @@ public class YoshikoSolution {
if (originalGraph.containsEdge(c1n, c2n) || originalGraph.containsEdge(c2n, c1n)) { if (originalGraph.containsEdge(c1n, c2n) || originalGraph.containsEdge(c2n, c1n)) {
if (!metaGraph.containsEdge(map.get(c1), map.get(c2))){ if (!metaGraph.containsEdge(map.get(c1), map.get(c2))){
CyEdge edge = metaGraph.addEdge(map.get(c1), map.get(c2), false); CyEdge edge = metaGraph.addEdge(map.get(c1), map.get(c2), false);
metaGraph.getRow(edge).set("edgeStrength",1); metaGraph.getRow(edge).set(StyleManager.EDGESTRENGTH_COLUMN_NAME,1);
} }
else { else {
CyEdge edge = metaGraph.getConnectingEdgeList(map.get(c1), map.get(c2), Type.ANY).get(0); CyEdge edge = metaGraph.getConnectingEdgeList(map.get(c1), map.get(c2), Type.ANY).get(0);
metaGraph.getRow(edge).set("edgeStrength", metaGraph.getRow(edge).set(StyleManager.EDGESTRENGTH_COLUMN_NAME,
metaGraph.getRow(edge).get("edgeStrength", Integer.class)+1 metaGraph.getRow(edge).get(StyleManager.EDGESTRENGTH_COLUMN_NAME, Integer.class)+1
); );
} }
} }
...@@ -145,7 +142,6 @@ public class YoshikoSolution { ...@@ -145,7 +142,6 @@ public class YoshikoSolution {
) )
); );
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
CyCore.networkManager.addNetwork(metaGraph); CyCore.networkManager.addNetwork(metaGraph);
...@@ -153,25 +149,7 @@ public class YoshikoSolution { ...@@ -153,25 +149,7 @@ public class YoshikoSolution {
view view
); );
//define style for solution StyleManager.styleWithMapping(view, CyCore.visualMappingManager.getCurrentVisualStyle());
ContinuousMapping<Integer, Double> contMap = (ContinuousMapping<Integer, Double>)CyCore.continuousMappingFactory.createVisualMappingFunction(
"clusterSize",
Integer.class,
BasicVisualLexicon.NODE_SIZE
);
ContinuousMapping<Integer, Double> contMapEdges = (ContinuousMapping<Integer, Double>)CyCore.continuousMappingFactory.createVisualMappingFunction(
"edgeStrength",
Integer.class,
BasicVisualLexicon.EDGE_WIDTH
);
//Apply visual style
CyCore.visualMappingManager.setVisualStyle(vs, view);
vs.addVisualMappingFunction(contMap);
vs.addVisualMappingFunction(contMapEdges);
vs.apply(view);
view.updateView();
CyCore.cy.setCurrentNetworkView(view); CyCore.cy.setCurrentNetworkView(view);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment