Author: kono
Date: 2012-04-09 11:53:44 -0700 (Mon, 09 Apr 2012)
New Revision: 28768
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/vizmap/VisualStyleSerializer.java
Log:
Saving/Loading methods for VisualPropertyDependencies had been implemented.
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/vizmap/VisualStyleSerializer.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/vizmap/VisualStyleSerializer.java
2012-04-09 17:39:09 UTC (rev 28767)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/vizmap/VisualStyleSerializer.java
2012-04-09 18:53:44 UTC (rev 28768)
@@ -46,15 +46,16 @@
import java.util.Set;
import org.cytoscape.io.internal.util.vizmap.model.AttributeType;
+import org.cytoscape.io.internal.util.vizmap.model.Dependency;
import org.cytoscape.io.internal.util.vizmap.model.DiscreteMappingEntry;
import org.cytoscape.io.internal.util.vizmap.model.Edge;
import org.cytoscape.io.internal.util.vizmap.model.Network;
import org.cytoscape.io.internal.util.vizmap.model.Node;
import org.cytoscape.io.internal.util.vizmap.model.Vizmap;
import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.view.model.VisualProperty;
import org.cytoscape.view.model.Visualizable;
@@ -63,6 +64,7 @@
import org.cytoscape.view.vizmap.VisualMappingFunction;
import org.cytoscape.view.vizmap.VisualMappingFunctionFactory;
import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.view.vizmap.VisualPropertyDependency;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.view.vizmap.VisualStyleFactory;
import org.cytoscape.view.vizmap.mappings.BoundaryRangeValues;
@@ -83,6 +85,7 @@
private final VisualStyleFactory visualStyleFactory;
private final VisualMappingManager visualMappingManager;
private final RenderingEngineManager renderingEngineManager;
+
private final VisualMappingFunctionFactory discreteMappingFactory;
private final VisualMappingFunctionFactory continuousMappingFactory;
private final VisualMappingFunctionFactory passthroughMappingFactory;
@@ -130,6 +133,9 @@
createVizmapProperties(vs,
BasicVisualLexicon.NETWORK, vsModel.getNetwork().getVisualProperty());
createVizmapProperties(vs,
BasicVisualLexicon.NODE, vsModel.getNode().getVisualProperty());
createVizmapProperties(vs,
BasicVisualLexicon.EDGE, vsModel.getEdge().getVisualProperty());
+
+ // Create Dependencies
+ createDependency(vs, vsModel);
}
}
@@ -176,6 +182,9 @@
if (vsModel.getEdge() != null)
createVisualProperties(vs,
CyEdge.class, vsModel.getEdge().getVisualProperty());
+ // Restore dependency
+ restoreDependency(vs, vsModel);
+
// Do not add the modified default style to the
list!
if (!vs.equals(defStyle))
styles.add(vs);
@@ -466,11 +475,72 @@
}
}
}
+
+ private void createDependency(final VisualStyle visualStyle,
+ org.cytoscape.io.internal.util.vizmap.model.VisualStyle
vsModel) {
+ // Create serializable Dependency
+ final Set<VisualPropertyDependency<?>> dependencies =
visualStyle.getAllVisualPropertyDependencies();
- private void setDependency(VisualLexicon lexicon, VisualStyle vs,
String key, String value) {
- // FIXME: should not be global, but per Visual Style
+ final List<Dependency> nodeDep =
vsModel.getNode().getDependency();
+ final List<Dependency> edgeDep =
vsModel.getEdge().getDependency();
+ final List<Dependency> networkDep =
vsModel.getNetwork().getDependency();
+
+ Collection<VisualProperty<?>> nodeVisualProperties =
lexicon.getAllDescendants(BasicVisualLexicon.NODE);
+ Collection<VisualProperty<?>> edgeVisualProperties =
lexicon.getAllDescendants(BasicVisualLexicon.EDGE);
+ Collection<VisualProperty<?>> networkVisualProperties =
lexicon.getAllDescendants(BasicVisualLexicon.NETWORK);
+
+ for (VisualPropertyDependency<?> vpDep : dependencies) {
+ final Dependency newDependency = new Dependency();
+ newDependency.setName(vpDep.getDisplayName());
+ newDependency.setValue(vpDep.isDependencyEnabled());
+
+ final VisualProperty<?> parent =
vpDep.getParentVisualProperty();
+ if (nodeVisualProperties.contains(parent))
+ nodeDep.add(newDependency);
+ else if (edgeVisualProperties.contains(parent))
+ edgeDep.add(newDependency);
+ else
+ networkDep.add(newDependency);
+ }
+ }
+
+ private void restoreDependency(final VisualStyle visualStyle,
org.cytoscape.io.internal.util.vizmap.model.VisualStyle vsModel) {
+
+ final Node nodeSection = vsModel.getNode();
+ final Edge edgeSection = vsModel.getEdge();
+ final Network networkSection = vsModel.getNetwork();
+
+ final Set<Dependency> dependencyStates = new
HashSet<Dependency>();
+
+ if(nodeSection != null)
+ dependencyStates.addAll(nodeSection.getDependency());
+ if(edgeSection != null)
+ dependencyStates.addAll(edgeSection.getDependency());
+ if(networkSection != null)
+ dependencyStates.addAll(networkSection.getDependency());
+
+ final Set<VisualPropertyDependency<?>> availableDependencies =
visualStyle.getAllVisualPropertyDependencies();
+ for(final Dependency dep: dependencyStates) {
+ final String newDependencyName = dep.getName();
+ final Boolean depEnabled = dep.isValue();
+
+ for(final VisualPropertyDependency<?> vsDependency:
availableDependencies) {
+
if(vsDependency.getDisplayName().equals(newDependencyName))
+ vsDependency.setDependency(depEnabled);
+ }
+ }
+ }
+
+
+ /**
+ * For 2.x compatibility?
+ * @param vs
+ * @param key
+ * @param value
+ */
+ private void setDependency(final VisualStyle vs, final String key,
final String value) {
if (key.contains("nodeSizeLocked")) {
- boolean b = Boolean.parseBoolean(value);
+ boolean isDependencyEnabled =
Boolean.parseBoolean(value);
//
lexicon.getVisualLexiconNode(BasicVisualLexicon.NODE_WIDTH).setDependency(b);
//
lexicon.getVisualLexiconNode(BasicVisualLexicon.NODE_HEIGHT).setDependency(b);
}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.