Author: clopes
Date: 2012-07-09 14:12:50 -0700 (Mon, 09 Jul 2012)
New Revision: 29805
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeView.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/EdgeViewDefaultSupport.java
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/AbstractApplyHandler.java
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/ApplyToNetworkHandler.java
Log:
Fixes #1105 (Visual mapping for parent property still applied when the
dependency is disabled): NODE_WIDTH and NODE_HEIGHT are now correctly applied
when "lock node width/height" is disabled, even if there is a mapping for
NODE_SIZE.
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -249,8 +249,7 @@
}
/*
- * A non-negative arrowType has the special meaning to remove overridden
- * arrow.
+ * A non-negative arrowType has the special meaning to remove
overridden arrow.
*/
void overrideSourceArrow(final CyEdge edge, final byte arrowType) {
if ((arrowType >= 0) || (arrowType == super.sourceArrow(edge)))
@@ -261,12 +260,8 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public Paint sourceArrowPaint(final CyEdge edge) {
-
boolean isSelected = selected.contains(edge);
if (isSelected)
@@ -276,15 +271,13 @@
}
private Paint sourceArrowUnselectedPaint(final CyEdge edge) {
- // Check bypass
final DEdgeView dev = m_view.getDEdgeView(edge);
- if
(dev.isValueLocked(DVisualLexicon.EDGE_SOURCE_ARROW_UNSELECTED_PAINT))
- return
dev.getVisualProperty(DVisualLexicon.EDGE_SOURCE_ARROW_UNSELECTED_PAINT);
-
- final Paint paint = this.m_sourceArrowPaints.get(edge);
+ final Paint paint =
dev.getVisualProperty(DVisualLexicon.EDGE_SOURCE_ARROW_UNSELECTED_PAINT);
+// final Paint paint = this.m_sourceArrowPaints.get(edge);
+
if (paint == null) {
- if(m_sourceArrowPaintDefault == null)
+ if (m_sourceArrowPaintDefault == null)
return DEdgeView.DEFAULT_ARROW_PAINT;
else
return m_sourceArrowPaintDefault;
@@ -308,9 +301,6 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public byte targetArrow(final CyEdge edge) {
// Check bypass
@@ -349,9 +339,6 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public Paint targetArrowPaint(final CyEdge edge) {
final boolean isSelected = selected.contains(edge);
@@ -365,10 +352,9 @@
private Paint targetArrowUnselectedPaint(final CyEdge edge) {
// Check bypass
final DEdgeView dev = m_view.getDEdgeView(edge);
- if
(dev.isValueLocked(DVisualLexicon.EDGE_TARGET_ARROW_UNSELECTED_PAINT))
- return
dev.getVisualProperty(DVisualLexicon.EDGE_TARGET_ARROW_UNSELECTED_PAINT);
+ final Paint paint =
dev.getVisualProperty(DVisualLexicon.EDGE_TARGET_ARROW_UNSELECTED_PAINT);
- final Paint paint = this.m_targetArrowPaints.get(edge);
+// final Paint paint = this.m_targetArrowPaints.get(edge);
if (paint == null) {
if(m_targetArrowPaintDefault == null)
@@ -407,9 +393,6 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public float segmentThickness(final CyEdge edge) {
// Bypass check
@@ -444,26 +427,17 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public Stroke segmentStroke(final CyEdge edge) {
- // Bypass check
final DEdgeView dev = m_view.getDEdgeView(edge);
- if (dev.isValueLocked(DVisualLexicon.EDGE_LINE_TYPE)) {
- final LineType lineType =
dev.getVisualProperty(DVisualLexicon.EDGE_LINE_TYPE);
- return
DLineType.getDLineType(lineType).getStroke(segmentThickness(edge));
- }
-
final Stroke stroke = m_segmentStrokes.get(edge);
- if (stroke == null)
- if (m_segmentStrokeDefault == null) {
+ if (stroke == null) {
+ if (m_segmentStrokeDefault == null)
return super.segmentStroke(edge);
- }
else
return m_segmentStrokeDefault;
+ }
return stroke;
}
@@ -551,17 +525,15 @@
isCleared = false;
}
- /**
- * {@inheritDoc}
- */
@Override
public int labelCount(final CyEdge edge) {
final Integer i = m_labelCounts.get(edge);
- if (i == null)
+ if (i == null) {
if (m_labelCountDefault == null)
return super.labelCount(edge);
else
m_labelCountDefault.intValue();
+ }
return i;
}
@@ -574,17 +546,14 @@
* A negative labelCount has the special meaning to remove overridden
count.
*/
void overrideLabelCount(final CyEdge edge, final int labelCount) {
- if ((labelCount < 0) || (labelCount == super.labelCount(edge)))
+ if ((labelCount < 0) || (labelCount == super.labelCount(edge)))
{
m_labelCounts.remove(edge);
- else {
+ } else {
m_labelCounts.put(edge, labelCount);
isCleared = false;
}
}
- /**
- * {@inheritDoc}
- */
@Override
public String labelText(final CyEdge edge, final int labelInx) {
// final long key = (((long) edge) << 32) | ((long) labelInx);
@@ -616,9 +585,6 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public Font labelFont(final CyEdge edge, final int labelInx) {
// final long key = (((long) edge) << 32) | ((long) labelInx);
@@ -651,9 +617,6 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public Paint labelPaint(final CyEdge edge, final int labelInx) {
// Check bypass
@@ -691,17 +654,15 @@
}
}
- /**
- * {@inheritDoc}
- */
@Override
public double labelWidth(final CyEdge edge) {
final Double width = m_labelWidths.get(edge);
- if (width == null)
+ if (width == null) {
if (m_labelWidthDefault == null)
return super.labelWidth(edge);
else
return m_labelWidthDefault.doubleValue();
+ }
return width;
}
@@ -723,7 +684,6 @@
}
}
-
@Override
public float sourceArrowSize(CyEdge edge) {
// For the half arrows, we need to scale multiplicatively
@@ -752,7 +712,6 @@
return (segmentThickness(edge) +
DEdgeView.DEFAULT_ARROW_SIZE);
}
-
public Integer lineType(final CyEdge edge) {
final Integer lineType = m_lineType.get(edge);
if (lineType == null)
@@ -768,7 +727,6 @@
this.m_lineTypeDefault = lineType;
}
-
public Bend bend(final CyEdge edge) {
return bend(edge, false);
}
@@ -786,7 +744,7 @@
m_edgeBends.put(edge, bend);
}
- if(bend == null) {
+ if (bend == null) {
if (m_edgeBendDefault == null)
return EdgeBendVisualProperty.DEFAULT_EDGE_BEND;
else
@@ -800,7 +758,6 @@
this.m_edgeBendDefault = bend;
}
-
// Used by bends
private final MinLongHeap m_heap = new MinLongHeap();
private final float[] m_extentsBuff = new float[4];
@@ -976,7 +933,6 @@
return returnThis;
}
-
/**
* Size of handle graphics (square)
@@ -990,14 +946,12 @@
else
return 0.0f;
}
-
/**
* Color of handles.
*/
@Override
public Paint anchorPaint(final CyEdge edge, int anchorInx) {
-
if (lineType(edge) == DEdgeView.STRAIGHT_LINES)
anchorInx = anchorInx / 2;
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeView.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeView.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeView.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -102,6 +102,7 @@
*/
DEdgeView(final DGraphView view, final long inx, final CyEdge model,
final HandleFactory handleFactory) {
super(model);
+
if (view == null)
throw new IllegalArgumentException("Constructor needs
its parent DGraphView.");
@@ -179,9 +180,8 @@
m_view.m_edgeDetails.m_lineType.put(model,
lineType);
m_view.m_contentChanged = true;
}
- } else {
+ } else
throw new IllegalArgumentException("unrecognized line
type");
- }
}
@Override
@@ -197,12 +197,12 @@
final Paint transpColor = getTransparentColor(paint,
transparency);
m_view.m_edgeDetails.setUnselectedPaint(model,
transpColor);
-
+
+ setSourceEdgeEnd(m_sourceEdgeEnd);
+ setTargetEdgeEnd(m_targetEdgeEnd);
+
if (!isSelected())
m_view.m_contentChanged = true;
-
- setSourceEdgeEnd(m_sourceEdgeEnd);
- setTargetEdgeEnd(m_targetEdgeEnd);
}
}
@@ -212,19 +212,19 @@
}
@Override
- public void setSelectedPaint(Paint paint) {
+ public void setSelectedPaint(final Paint paint) {
synchronized (m_view.m_lock) {
if (paint == null)
throw new NullPointerException("paint is null");
final Paint transpColor = getTransparentColor(paint,
transparency);
m_view.m_edgeDetails.setSelectedPaint(model,
transpColor);
-
+
if (isSelected())
m_view.m_contentChanged = true;
}
}
-
+
@Override
public Paint getSelectedPaint() {
return m_view.m_edgeDetails.selectedPaint(model);
@@ -259,7 +259,8 @@
m_sourceSelectedPaint = paint;
if (isSelected()) {
-
m_view.m_edgeDetails.overrideSourceArrowPaint(model, m_sourceSelectedPaint);
+
m_view.m_edgeDetails.overrideSourceArrowPaint(model,
+ m_sourceSelectedPaint);
m_view.m_contentChanged = true;
}
}
@@ -267,7 +268,6 @@
@Override
public void setTargetEdgeEndSelectedPaint(Paint paint) {
-
synchronized (m_view.m_lock) {
if (paint == null)
throw new NullPointerException("paint is null");
@@ -275,21 +275,23 @@
m_targetSelectedPaint = paint;
if (isSelected()) {
-
m_view.m_edgeDetails.overrideTargetArrowSelectedPaint(model,
m_targetSelectedPaint);
+
m_view.m_edgeDetails.overrideTargetArrowSelectedPaint(model, paint); // TODO
delete?
m_view.m_contentChanged = true;
}
}
}
@Override
- public void setSourceEdgeEndPaint(Paint paint) {
+ public void setSourceEdgeEndPaint(final Paint paint) {
synchronized (m_view.m_lock) {
if (paint == null)
throw new NullPointerException("paint is null");
- m_sourceUnselectedPaint = paint;
-
+ final Paint transpColor = getTransparentColor(paint,
transparency);
+ m_sourceUnselectedPaint = transpColor;
+
if (!isSelected()) {
+
m_view.m_edgeDetails.overrideSourceArrowPaint(model, transpColor); // TODO
delete?
m_view.m_contentChanged = true;
}
}
@@ -301,16 +303,18 @@
if (paint == null)
throw new NullPointerException("paint is null");
- m_targetUnselectedPaint = paint;
+ final Paint transpColor = getTransparentColor(paint,
transparency);
+ m_targetUnselectedPaint = transpColor;
if (!isSelected()) {
+
m_view.m_edgeDetails.overrideTargetArrowPaint(model, transpColor); // TODO
delete?
m_view.m_contentChanged = true;
}
}
}
-
- @Override public void select() {
+ @Override
+ public void select() {
final boolean somethingChanged;
synchronized (m_view.m_lock) {
@@ -327,17 +331,17 @@
return false;
m_selected = true;
- m_view.m_edgeDetails.select(model);
+ m_view.m_edgeDetails.select(model);
m_view.m_selectedEdges.insert(m_inx);
List<Handle> handles =
m_view.m_edgeDetails.bend(model).getAllHandles();
for (int j = 0; j < handles.size(); j++) {
final Handle handle = handles.get(j);
- final Point2D newPoint =
handle.calculateHandleLocation(m_view.getViewModel(), this);
+ final Point2D newPoint =
handle.calculateHandleLocation(m_view.getViewModel(),this);
final double x = newPoint.getX();
final double y = newPoint.getY();
final double halfSize = m_view.getAnchorSize() / 2.0;
-
+
m_view.m_spacialA.insert((m_inx << 6) | j,
(float) (x - halfSize), (float) (y -
halfSize),
(float) (x + halfSize), (float) (y +
halfSize));
@@ -347,7 +351,7 @@
}
return true;
}
-
+
@Override
public void unselect() {
final boolean somethingChanged;
@@ -401,7 +405,7 @@
final public boolean isHidden() {
return m_view.isHidden(this);
}
-
+
@Override
public void setSourceEdgeEnd(final int rendererTypeID) {
synchronized (m_view.m_lock) {
@@ -420,6 +424,7 @@
m_targetEdgeEnd = rendererTypeID;
m_view.m_contentChanged = true;
+
}
@Override
@@ -494,7 +499,7 @@
return m_view.m_edgeDetails.labelFont(model, 0);
}
}
-
+
@Override
public void setFont(final Font font) {
synchronized (m_view.m_lock) {
@@ -572,7 +577,6 @@
return bestInx;
}
}
-
/**
* Insert a new handle to bend object.
@@ -610,7 +614,6 @@
}
}
-
void removeHandle(int inx) {
synchronized (m_view.m_lock) {
final Bend bend = m_view.m_edgeDetails.bend(model);
@@ -637,7 +640,6 @@
}
}
-
private void removeAllHandles() {
synchronized (m_view.m_lock) {
final Bend bend = m_view.m_edgeDetails.bend(model);
@@ -652,7 +654,6 @@
}
}
-
// Interface org.cytoscape.graph.render.immed.EdgeAnchors:
@Override
public int numAnchors() {
@@ -719,16 +720,15 @@
if (trans < 0 || trans > 255) {
// If out of range, use default value.
transparency =
BasicVisualLexicon.EDGE_TRANSPARENCY.getDefault();
- } else
+ } else {
transparency = trans;
+ }
setUnselectedPaint(getUnselectedPaint());
setSelectedPaint(getSelectedPaint());
-
- m_view.m_contentChanged = true;
}
}
-
+
@Override
public void setBend(final Bend bend) {
synchronized (m_view.m_lock) {
@@ -736,7 +736,7 @@
}
m_view.m_contentChanged = true;
}
-
+
@Override
public Bend getBend() {
synchronized (m_view.m_lock) {
@@ -748,33 +748,33 @@
@Override
protected <T, V extends T> void applyVisualProperty(final
VisualProperty<? extends T> vpOriginal, V value) {
VisualProperty<?> vp = vpOriginal;
-
+
// If value is null, simply use the VP's default value.
if (value == null)
value = (V) vp.getDefault();
if (vp == DVisualLexicon.EDGE_STROKE_SELECTED_PAINT) {
- setSelectedPaint((Paint) value);
+ if (value != null)
+ setSelectedPaint((Paint) value);
} else if (vp == DVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT) {
- if (value == null)
- return;
- else
+ if (value != null)
setUnselectedPaint((Paint) value);
} else if (vp == DVisualLexicon.EDGE_SELECTED_PAINT) {
- if (value == null)
- return;
- setSelectedPaint((Paint) value);
- setSourceEdgeEndSelectedPaint((Paint) value);
- setTargetEdgeEndSelectedPaint((Paint) value);
+ if (value != null) {
+ setSelectedPaint((Paint) value);
+// setSourceEdgeEndSelectedPaint((Paint) value);
// TODO delete?
+// setTargetEdgeEndSelectedPaint((Paint) value);
+ }
} else if (vp == DVisualLexicon.EDGE_UNSELECTED_PAINT) {
- if (value == null)
- return;
- setSourceEdgeEndPaint((Paint) value);
- setTargetEdgeEndPaint((Paint) value);
- setUnselectedPaint((Paint) value);
+ if (value != null) {
+// setSourceEdgeEndPaint((Paint) value); // TODO
+// setTargetEdgeEndPaint((Paint) value);
+ setUnselectedPaint((Paint) value);
+ }
} else if (vp == DVisualLexicon.EDGE_WIDTH) {
final float currentWidth = this.getStrokeWidth();
final float newWidth = ((Number) value).floatValue();
+
if (currentWidth != newWidth) {
setStrokeWidth(newWidth);
setStroke(DLineType.getDLineType(lineType).getStroke(newWidth));
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -252,14 +252,8 @@
final Paint transpColor = getTransparentColor(paint,
transparency);
graphView.m_nodeDetails.setSelectedPaint(model,
transpColor);
- if (isSelected()) {
-//
graphView.m_nodeDetails.overrideFillPaint(model, paint);
-//
-// if (paint instanceof Color)
-//
graphView.m_nodeDetails.overrideColorLowDetail(model, (Color) paint);
-
+ if (isSelected())
graphView.m_contentChanged = true;
- }
}
}
@@ -1146,9 +1140,9 @@
setWidth(((Number) value).doubleValue());
} else if (vp == BasicVisualLexicon.NODE_HEIGHT) {
setHeight(((Number) value).doubleValue());
- } else if (vp == BasicVisualLexicon.NODE_SIZE) {
- setWidth(((Number) value).doubleValue());
- setHeight(((Number) value).doubleValue());
+// } else if (vp == BasicVisualLexicon.NODE_SIZE) { // TODO:
delete?
+// setWidth(((Number) value).doubleValue());
+// setHeight(((Number) value).doubleValue());
} else if (vp == BasicVisualLexicon.NODE_LABEL) {
setText(value.toString());
} else if (vp == BasicVisualLexicon.NODE_LABEL_WIDTH) {
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/EdgeViewDefaultSupport.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/EdgeViewDefaultSupport.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/EdgeViewDefaultSupport.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -66,6 +66,7 @@
this.lock = lock;
}
+ // TODO: delete
<T, V extends T> void setEdgeViewDefault(VisualProperty<? extends T>
vpOriginal, V value) {
final VisualProperty<?> vp = vpOriginal;
@@ -139,7 +140,6 @@
edgeDetails.setLineTypeDefault(EdgeView.STRAIGHT_LINES);
}
}
-
void setTransparency(int trans) {
transparency = trans;
@@ -217,7 +217,6 @@
}
}
-
public void setText(final String text) {
synchronized (lock) {
edgeDetails.setLabelTextDefault(text);
@@ -237,7 +236,6 @@
}
}
-
public void setLabelWidth(double width) {
synchronized (lock) {
edgeDetails.setLabelWidthDefault(width);
Modified:
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/AbstractApplyHandler.java
===================================================================
---
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/AbstractApplyHandler.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/AbstractApplyHandler.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -32,17 +32,21 @@
// check mapping exists or not
final VisualMappingFunction<?, ?> mapping =
style.getVisualMappingFunction(vp);
- if (mapping != null)
- mapping.apply(row, view);
- else
+ if (mapping != null) {
+ Object value =
mapping.getMappedValue(row);
+
+ if (value != null)
+ view.setVisualProperty(vp,
value);
+ } else {
applyDefaultToView(view, vp);
+ }
}
}
- override(view);
+ override(row, view);
}
- private void applyDefaultToView(final View<T> view, final
VisualProperty<?> vp) {
+ protected void applyDefaultToView(final View<T> view, final
VisualProperty<?> vp) {
final Set<VisualLexicon> lexSet =
lexManager.getAllVisualLexicon();
if (lexSet.size() != 0)
@@ -65,17 +69,18 @@
view.setVisualProperty(vp, defaultValue);
}
- private void override(final View<T> view) {
+ private void override(final CyRow row, final View<T> view) {
this.dependencies = style.getAllVisualPropertyDependencies();
// Override dependency
for (final VisualPropertyDependency<?> dep : dependencies) {
if (dep.isDependencyEnabled()) {
- final Set<?> vpSet = dep.getVisualProperties();
+ final Set<VisualProperty<?>> vpSet =
dep.getVisualProperties();
+
// Pick parent
- VisualProperty<?> visualProperty =
(VisualProperty<?>) vpSet.iterator().next();
- final VisualLexiconNode node =
lex.getVisualLexiconNode(visualProperty);
- final VisualProperty<?> parentVP =
node.getParent().getVisualProperty();
+ VisualProperty<?> visualProperty =
vpSet.iterator().next();
+ final VisualProperty<?> parentVP =
dep.getParentVisualProperty();
+
Object defaultValue =
style.getDefaultValue(parentVP);
if (defaultValue == null) {
@@ -83,8 +88,19 @@
defaultValue =
style.getDefaultValue(visualProperty);
}
- for (Object vp : vpSet)
-
view.setVisualProperty((VisualProperty<?>) vp, defaultValue);
+ // check mapping exists or not
+ final VisualMappingFunction<?, ?> mapping =
style.getVisualMappingFunction(parentVP);
+
+ for (VisualProperty<?> vp : vpSet) {
+ if (mapping != null) {
+ Object value =
mapping.getMappedValue(row);
+
+ if (value != null)
+
view.setVisualProperty(vp, value);
+ } else {
+
view.setVisualProperty((VisualProperty<?>) vp, defaultValue);
+ }
+ }
}
}
}
Modified:
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/ApplyToNetworkHandler.java
===================================================================
---
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/ApplyToNetworkHandler.java
2012-07-09 21:11:38 UTC (rev 29804)
+++
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/ApplyToNetworkHandler.java
2012-07-09 21:12:50 UTC (rev 29805)
@@ -1,7 +1,9 @@
package org.cytoscape.view.vizmap.internal;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.cytoscape.model.CyEdge;
@@ -25,6 +27,8 @@
private static final Logger logger =
LoggerFactory.getLogger(ApplyToNetworkHandler.class);
+ private Map<VisualProperty<?>, VisualPropertyDependency<?>>
dependencyMap;
+
ApplyToNetworkHandler(VisualStyle style, VisualLexiconManager
lexManager) {
super(style, lexManager);
}
@@ -33,82 +37,117 @@
public void apply(final CyRow row, final View<CyNetwork> view) {
final long start = System.currentTimeMillis();
- CyNetworkView networkView = (CyNetworkView) view;
- final Collection<View<CyNode>> nodeViews =
networkView.getNodeViews();
- final Collection<View<CyEdge>> edgeViews =
networkView.getEdgeViews();
+ dependencyMap = new HashMap<VisualProperty<?>,
VisualPropertyDependency<?>>();
+
+ CyNetworkView netView = (CyNetworkView) view;
+ final Collection<View<CyNode>> nodeViews =
netView.getNodeViews();
+ final Collection<View<CyEdge>> edgeViews =
netView.getEdgeViews();
final Collection<View<CyNetwork>> networkViewSet = new
HashSet<View<CyNetwork>>();
- networkViewSet.add(networkView);
+ networkViewSet.add(netView);
- applyViewDefaults(networkView,
lexManager.getNodeVisualProperties());
- applyViewDefaults(networkView,
lexManager.getEdgeVisualProperties());
- applyViewDefaults(networkView,
lexManager.getNetworkVisualProperties());
+ applyViewDefaults(netView,
lexManager.getNodeVisualProperties());
+ applyViewDefaults(netView,
lexManager.getEdgeVisualProperties());
+ applyViewDefaults(netView,
lexManager.getNetworkVisualProperties());
- // Current visual prop tree.
- applyImpl(networkView, nodeViews,
lexManager.getNodeVisualProperties());
- applyImpl(networkView, edgeViews,
lexManager.getEdgeVisualProperties());
- applyImpl(networkView, networkViewSet,
lexManager.getNetworkVisualProperties());
+ applyDependencies(netView);
+
+ applyMappings(netView, nodeViews,
lexManager.getNodeVisualProperties());
+ applyMappings(netView, edgeViews,
lexManager.getEdgeVisualProperties());
+ applyMappings(netView, networkViewSet,
lexManager.getNetworkVisualProperties());
+ dependencyMap = null;
+
logger.info("Visual Style applied in " +
(System.currentTimeMillis() - start) + " msec.");
}
- private void applyImpl(final CyNetworkView networkView, final
Collection<? extends View<?>> views,
- final Collection<VisualProperty<?>> visualProperties) {
- for (VisualProperty<?> vp : visualProperties)
- applyToView(networkView, views, vp);
- }
+ private void applyViewDefaults(final CyNetworkView netView, final
Collection<VisualProperty<?>> vps) {
+ // TODO get lexicon from view's rendering engine
+ final VisualLexicon lex =
lexManager.getAllVisualLexicon().iterator().next();
- private void applyToView(final CyNetworkView networkView, final
Collection<? extends View<?>> views,
- final VisualProperty<?> vp) {
- final VisualMappingFunction<?, ?> mapping =
style.getVisualMappingFunction(vp);
-
- if (mapping != null) {
- final CyNetwork net = networkView.getModel();
+ for (VisualProperty<?> vp : vps) {
+ final VisualLexiconNode node =
lex.getVisualLexiconNode(vp);
+ final Collection<VisualLexiconNode> children =
node.getChildren();
+
+ if (children.isEmpty()) {
+ Object defaultValue = style.getDefaultValue(vp);
- for (View<?> v : views) {
- View<? extends CyIdentifiable> view = (View<?
extends CyIdentifiable>) v;
- mapping.apply(net.getRow(view.getModel()),
view);
+ if (defaultValue == null) {
+ ((VisualStyleImpl)
style).getStyleDefaults().put(vp, vp.getDefault());
+ defaultValue =
style.getDefaultValue(vp);
+ }
+
+ netView.setViewDefault(vp, defaultValue);
}
}
}
- private void applyViewDefaults(final CyNetworkView view, final
Collection<VisualProperty<?>> vps) {
- final VisualLexicon lex =
lexManager.getAllVisualLexicon().iterator().next();
- final Set<VisualPropertyDependency<?>> dependencies =
style.getAllVisualPropertyDependencies();
-
- for (VisualProperty<?> vp : vps) {
- final VisualLexiconNode node =
lex.getVisualLexiconNode(vp);
- final Collection<VisualLexiconNode> children =
node.getChildren();
+ private void applyMappings(final CyNetworkView netView,
+ final Collection<? extends View<? extends
CyIdentifiable>> views,
+ final Collection<VisualProperty<?>> visualProperties) {
+ for (VisualProperty<?> vp : visualProperties) {
+ final VisualPropertyDependency<?> dep =
dependencyMap.get(vp);
- if (children.size() != 0)
- continue;
+ if (dep != null)
+ continue; // Already handled when applying
dependencies
+
+ final VisualMappingFunction<?, ?> mapping =
style.getVisualMappingFunction(vp);
- Object defaultValue = style.getDefaultValue(vp);
+ if (mapping != null) {
+ final CyNetwork net = netView.getModel();
- if (defaultValue == null) {
-
((VisualStyleImpl)style).getStyleDefaults().put(vp, vp.getDefault());
- defaultValue = style.getDefaultValue(vp);
+ for (final View<? extends CyIdentifiable> v :
views) {
+ Object value =
mapping.getMappedValue(net.getRow(v.getModel()));
+
+ if (value != null)
+ v.setVisualProperty(vp, value);
+ }
}
-
- view.setViewDefault(vp, defaultValue);
}
+ }
+
+ private void applyDependencies(final CyNetworkView netView) {
+ final Set<VisualPropertyDependency<?>> dependencies =
style.getAllVisualPropertyDependencies();
- // Override dependency
- for (final VisualPropertyDependency<?> dep: dependencies) {
+ for (final VisualPropertyDependency<?> dep : dependencies) {
+ final VisualProperty<?> parentVP =
dep.getParentVisualProperty();
+ dependencyMap.put(parentVP, dep);
+
if (dep.isDependencyEnabled()) {
- final Set<?> vpSet = dep.getVisualProperties();
- // Pick parent
- VisualProperty<?> visualProperty =
(VisualProperty<?>) vpSet.iterator().next();
- final VisualLexiconNode node =
lex.getVisualLexiconNode(visualProperty);
- final VisualProperty<?> parentVP =
node.getParent().getVisualProperty();
+ final Set<VisualProperty<?>> vpSet = new
HashSet<VisualProperty<?>>(dep.getVisualProperties());
+ vpSet.add(parentVP);
+
Object defaultValue =
style.getDefaultValue(parentVP);
+ final VisualMappingFunction<?, ?> mapping =
style.getVisualMappingFunction(parentVP);
- if (defaultValue == null) {
-
((VisualStyleImpl)style).getStyleDefaults().put(visualProperty,
visualProperty.getDefault());
- defaultValue =
style.getDefaultValue(visualProperty);
+ for (VisualProperty<?> vp : vpSet) {
+ dependencyMap.put(vp, dep);
+// TODO delete?
+// if (defaultValue == null) {
+// ((VisualStyleImpl)
style).getStyleDefaults().put(vp, vp.getDefault());
+// defaultValue =
style.getDefaultValue(vp);
+// }
+
+ netView.setViewDefault(vp,
defaultValue);
+
+ if (mapping != null) {
+ final CyNetwork net =
netView.getModel();
+ Collection<View<? extends
CyIdentifiable>> views = null;
+
+ if (vp.getTargetDataType() ==
CyNode.class)
+ views = (Collection)
netView.getNodeViews();
+ else if (vp.getTargetDataType()
== CyEdge.class)
+ views = (Collection)
netView.getEdgeViews();
+
+ if (views != null) {
+ for (final View<?
extends CyIdentifiable> v : views) {
+ Object value =
mapping.getMappedValue(net.getRow(v.getModel()));
+
+ if (value !=
null)
+
v.setVisualProperty(vp, value);
+ }
+ }
+ }
}
-
- for (Object vp: vpSet)
-
view.setViewDefault((VisualProperty<?>)vp, defaultValue);
}
}
}
--
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.