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
Loading
......@@ -38,7 +38,6 @@ import org.cytoscape.service.util.AbstractCyActivator;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.session.events.SessionLoadedListener;
import org.cytoscape.task.create.CloneNetworkTaskFactory;
import org.cytoscape.task.visualize.ApplyVisualStyleTaskFactory;
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkViewManager;
......@@ -93,7 +92,6 @@ public class CyActivator extends AbstractCyActivator {
CyCore.visualStyleFactory = getService(context,VisualStyleFactory.class);
CyCore.continuousMappingFactory = getService(context,VisualMappingFunctionFactory.class, "(mapping.type=continuous)");
CyCore.rootNetworkManager = getService(context,CyRootNetworkManager.class);
CyCore.applyVisualStyleTaskFactory = getService(context,ApplyVisualStyleTaskFactory.class);
//Not sure how to correctly infer arguments here
CyCore.renderingEngineFactory = getService(context,RenderingEngineFactory.class);
CyCore.cloneNetworkTaskFactory = getService(context,CloneNetworkTaskFactory.class);
......
......@@ -29,7 +29,6 @@ import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.task.create.CloneNetworkTaskFactory;
import org.cytoscape.task.visualize.ApplyVisualStyleTaskFactory;
import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
import org.cytoscape.view.model.CyNetworkViewFactory;
import org.cytoscape.view.model.CyNetworkViewManager;
......@@ -61,7 +60,6 @@ public class CyCore {
public static VisualStyleFactory visualStyleFactory;
public static VisualMappingFunctionFactory continuousMappingFactory;
public static CyRootNetworkManager rootNetworkManager;
public static ApplyVisualStyleTaskFactory applyVisualStyleTaskFactory;
public static RenderingEngineFactory<CyNetwork> renderingEngineFactory;
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;
import org.cytoscape.view.layout.CyLayoutAlgorithm;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.presentation.RenderingEngine;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.work.Task;
import org.cytoscape.work.TaskIterator;
import org.cytoscape.work.TaskMonitor;
......@@ -46,6 +45,7 @@ import org.slf4j.Logger;
import de.hhu.ba.yoshikoWrapper.core.CyCore;
import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager;
import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
import static org.cytoscape.view.presentation.property.BasicVisualLexicon.NETWORK_HEIGHT;
......@@ -138,9 +138,7 @@ public class YoshikoCluster {
public void run(TaskMonitor taskMonitor) throws Exception {
taskMonitor.setStatusMessage("Generating cluster view for C:"+id);
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
CyCore.visualMappingManager.setVisualStyle(vs, view);
vs.apply(view);
StyleManager.style(view, CyCore.visualMappingManager.getCurrentVisualStyle());
view.setVisualProperty(NETWORK_WIDTH, new Double(width));
view.setVisualProperty(NETWORK_HEIGHT, new Double(height));
......
......@@ -32,12 +32,10 @@ import org.cytoscape.model.CyEdge.Type;
import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.view.layout.CyLayoutAlgorithm;
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.LocalizationManager;
import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager;
public class YoshikoSolution {
......@@ -78,7 +76,6 @@ public class YoshikoSolution {
//Add nodes
for (YoshikoCluster c: cluster) {
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
CyNode clusterNode = metaGraph.addNode();
......@@ -96,13 +93,13 @@ public class YoshikoSolution {
null
)
);
CyCore.visualMappingManager.setVisualStyle(vs, subnetView);
vs.apply(subnetView);
subnetView.updateView();
StyleManager.style(subnetView,CyCore.visualMappingManager.getCurrentVisualStyle());
clusterNode.setNetworkPointer(subnet);
//Set node attributes
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);
}
......@@ -120,12 +117,12 @@ public class YoshikoSolution {
if (originalGraph.containsEdge(c1n, c2n) || originalGraph.containsEdge(c2n, c1n)) {
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);
metaGraph.getRow(edge).set(StyleManager.EDGESTRENGTH_COLUMN_NAME,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
metaGraph.getRow(edge).set(StyleManager.EDGESTRENGTH_COLUMN_NAME,
metaGraph.getRow(edge).get(StyleManager.EDGESTRENGTH_COLUMN_NAME, Integer.class)+1
);
}
}
......@@ -145,7 +142,6 @@ public class YoshikoSolution {
)
);
VisualStyle vs= CyCore.visualStyleFactory.createVisualStyle(CyCore.visualMappingManager.getCurrentVisualStyle());
CyCore.networkManager.addNetwork(metaGraph);
......@@ -153,25 +149,7 @@ public class YoshikoSolution {
view
);
//define style for solution
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();
StyleManager.styleWithMapping(view, CyCore.visualMappingManager.getCurrentVisualStyle());
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