Author: ruschein
Date: 2011-07-13 14:46:14 -0700 (Wed, 13 Jul 2011)
New Revision: 26171
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualMappingManager.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapBypass.java
Log:
Fixes a bug where custom graphics visual bypasses were not being saved in
session files.
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualMappingManager.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualMappingManager.java
2011-07-13 21:08:48 UTC (rev 26170)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualMappingManager.java
2011-07-13 21:46:14 UTC (rev 26171)
@@ -42,9 +42,11 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import cytoscape.CyEdge;
import cytoscape.CyNetwork;
@@ -57,6 +59,7 @@
import cytoscape.data.attr.MultiHashMapDefinition;
import cytoscape.logger.CyLogger;
import cytoscape.view.CyNetworkView;
+import cytoscape.visual.NodeAppearance;
import cytoscape.visual.calculators.AbstractCalculator;
import cytoscape.visual.calculators.Calculator;
import cytoscape.visual.calculators.GenericNodeCustomGraphicCalculator;
@@ -279,30 +282,53 @@
* attributes are calculated by delegating to the
NodeAppearanceCalculator
* member of the current visual style.
*/
- public void applyNodeAppearances(final CyNetwork network,
- final CyNetworkView network_view) {
+ public void applyNodeAppearances(final CyNetwork network, final
CyNetworkView network_view) {
final NodeAppearanceCalculator nodeAppearanceCalculator =
activeVS
.getNodeAppearanceCalculator();
List<VisualPropertyType> bypassedVPs = getBypassedVPs("NODE",
Cytoscape
.getNodeAttributes());
+ final Set<CyCustomGraphics> byPassedCustomGraphics = new
HashSet<CyCustomGraphics>();
final Iterator<NodeView> itr =
network_view.getNodeViewsIterator();
while (itr.hasNext()) {
final NodeView nodeView = itr.next();
- final Node node = nodeView.getNode();
+ final Node node = nodeView.getNode();
+
+ // Identify and collect the bypassed custom graphics:
+ final List<Object> bypassedProps =
+ getByPassedVisProps(nodeView, bypassedVPs);
+ for (final Object bypassedProp : bypassedProps) {
+ if (bypassedProp instanceof CyCustomGraphics)
+
byPassedCustomGraphics.add((CyCustomGraphics)bypassedProp);
+ }
+
nodeAppearanceCalculator.calculateNodeAppearance(myNodeApp, node,
network, bypassedVPs);
myNodeApp.applyAppearance(nodeView,
activeVS.getDependency());
}
- checkCustomGraphicsInUse();
+ checkCustomGraphicsInUse(byPassedCustomGraphics);
}
+
+ private static final List<Object> getByPassedVisProps(final NodeView nv,
+ final
List<VisualPropertyType> bypassedVPs)
+ {
+ final List<Object> bypassedProps = new ArrayList<Object>();
+ final CyAttributes nodeAttrs = Cytoscape.getNodeAttributes();
+ final String id = nv.getNode().getIdentifier();
+ for (final VisualPropertyType propType : bypassedVPs) {
+ final Object bypass = Appearance.getBypass(nodeAttrs,
id, propType);
+ if (bypass != null)
+ bypassedProps.add(bypass);
+ }
+ return bypassedProps;
+ }
/**
* Reset status of used Custom Graphics
*/
- private void checkCustomGraphicsInUse() {
+ private void checkCustomGraphicsInUse(final Set<CyCustomGraphics>
byPassedCustomGraphics) {
// Set everything unused.
final Collection<CyCustomGraphics> allCG = manager.getAll();
@@ -361,6 +387,9 @@
}
}
+
+ for (final CyCustomGraphics cg : byPassedCustomGraphics)
+ manager.setUsedInCurrentSession(cg, true);
}
/**
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapBypass.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapBypass.java
2011-07-13 21:08:48 UTC (rev 26170)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapBypass.java
2011-07-13 21:46:14 UTC (rev 26171)
@@ -55,6 +55,7 @@
import cytoscape.visual.VisualPropertyDependency;
import cytoscape.visual.VisualPropertyType;
import cytoscape.visual.converter.ValueToStringConverterManager;
+import cytoscape.visual.customgraphic.CyCustomGraphics;
/**
@@ -124,6 +125,11 @@
try {
obj =
type.showDiscreteEditor(currentValue);
+ if (obj instanceof CyCustomGraphics) {
+ final CyCustomGraphics cg =
(CyCustomGraphics)obj;
+
Cytoscape.getVisualMappingManager().getCustomGraphicsManager()
+
.setUsedInCurrentSession(cg, true);
+ }
} catch (Exception ex) {
logger.warn("Unable to show descrete
editor", ex);
obj = null;
--
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.