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.

Reply via email to