Author: kono
Date: 2011-10-11 14:51:08 -0700 (Tue, 11 Oct 2011)
New Revision: 27132

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/DGraphView.java
Log:
Performance problem for clear() method had been resolved.

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
   2011-10-11 21:41:17 UTC (rev 27131)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
   2011-10-11 21:51:08 UTC (rev 27132)
@@ -32,39 +32,36 @@
 import java.awt.Font;
 import java.awt.Paint;
 import java.awt.Stroke;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.cytoscape.ding.impl.strokes.WidthStroke;
-import org.cytoscape.model.CyEdge;
 import org.cytoscape.util.intr.IntObjHash;
-import org.cytoscape.util.intr.MinIntHeap;
-import org.cytoscape.view.model.View;
 
 
 class DEdgeDetails extends IntermediateEdgeDetails {
        
        final DGraphView m_view;
-       final IntObjHash m_colorsLowDetail = new IntObjHash();
        final Object m_deletedEntry = new Object();
        
-       final Map<Integer, Float> m_segmentThicknesses = new HashMap<Integer, 
Float>();
-       final Map<Integer, Stroke> m_segmentStrokes = new HashMap<Integer, 
Stroke>();
-       final Map<Integer, Byte> m_sourceArrows = new HashMap<Integer, Byte>();
-       final Map<Integer, Paint> m_sourceArrowPaints = new HashMap<Integer, 
Paint>();
-       final Map<Integer, Byte> m_targetArrows = new HashMap<Integer, Byte>();
-       final Map<Integer, Paint> m_targetArrowPaints = new HashMap<Integer, 
Paint>();
-       final Map<Integer, Paint> m_segmentPaints = new HashMap<Integer, 
Paint>();
-       final Map<Integer, Integer> m_labelCounts = new HashMap<Integer, 
Integer>();
-       final Map<Long, String> m_labelTexts = new HashMap<Long, String>();
-       final Map<Long, Font> m_labelFonts = new HashMap<Long, Font>();
-       final Map<Long, Paint> m_labelPaints = new HashMap<Long, Paint>();
-       final Map<Integer, Double> m_labelWidths = new HashMap<Integer, 
Double>();
-
-       // For selected paint default
-       final Map<Integer, Paint> m_selectedPaints = new HashMap<Integer, 
Paint>();
-
+       IntObjHash m_colorsLowDetail = new IntObjHash();
+       
+       Map<Integer, Float> m_segmentThicknesses = new HashMap<Integer, 
Float>();
+       Map<Integer, Stroke> m_segmentStrokes = new HashMap<Integer, Stroke>();
+       
+       Map<Integer, Byte> m_sourceArrows = new HashMap<Integer, Byte>();
+       Map<Integer, Paint> m_sourceArrowPaints = new HashMap<Integer, Paint>();
+       Map<Integer, Byte> m_targetArrows = new HashMap<Integer, Byte>();
+       Map<Integer, Paint> m_targetArrowPaints = new HashMap<Integer, Paint>();
+       
+       Map<Integer, Integer> m_labelCounts = new HashMap<Integer, Integer>();
+       Map<Long, String> m_labelTexts = new HashMap<Long, String>();
+       Map<Long, Font> m_labelFonts = new HashMap<Long, Font>();
+       Map<Long, Paint> m_labelPaints = new HashMap<Long, Paint>();
+       Map<Integer, Double> m_labelWidths = new HashMap<Integer, Double>();
+       
+       Map<Integer, Paint> m_segmentPaints = new HashMap<Integer, Paint>();
+       Map<Integer, Paint> m_selectedPaints = new HashMap<Integer, Paint>();
+       
        private Paint m_colorLowDetailDefault ;
        private Byte m_sourceArrowDefault ;
        private Paint m_sourceArrowPaintDefault ;
@@ -80,6 +77,8 @@
        private Double m_labelWidthDefault ;
        
        private Paint m_selectedPaintDefault;
+       
+       private boolean isCleared = false; 
 
 
        DEdgeDetails(final DGraphView view) {
@@ -87,10 +86,29 @@
        }
        
        void clear() {
-               Collection<View<CyEdge>> edgeViews = m_view.getEdgeViews();
-               for(View<CyEdge> edgeView: edgeViews){
-                       unregisterEdge(edgeView.getModel().getIndex());
-               }
+               if(isCleared)
+                       return;
+               
+               m_segmentThicknesses = new HashMap<Integer, Float>();
+               m_segmentStrokes = new HashMap<Integer, Stroke>();
+               
+               m_sourceArrows = new HashMap<Integer, Byte>();
+               m_sourceArrowPaints = new HashMap<Integer, Paint>();
+               m_targetArrows = new HashMap<Integer, Byte>();
+               m_targetArrowPaints = new HashMap<Integer, Paint>();
+               
+               m_labelCounts = new HashMap<Integer, Integer>();
+               m_labelTexts = new HashMap<Long, String>();
+               m_labelFonts = new HashMap<Long, Font>();
+               m_labelPaints = new HashMap<Long, Paint>();
+               m_labelWidths = new HashMap<Integer, Double>();
+               
+               m_segmentPaints = new HashMap<Integer, Paint>();
+               m_selectedPaints = new HashMap<Integer, Paint>();
+               
+               m_colorsLowDetail = new IntObjHash();
+               
+               isCleared = true;
        }
 
        void unregisterEdge(final int edgeIdx) {
@@ -157,7 +175,7 @@
        }
 
        void setSourceArrowDefault(byte arrow) {
-               m_sourceArrowDefault = Byte.valueOf(arrow);
+               m_sourceArrowDefault = arrow;
        }
        
 
@@ -168,8 +186,10 @@
        void overrideSourceArrow(final int edge, final byte arrowType) {
                if ((arrowType >= 0) || (arrowType == super.sourceArrow(edge)))
                        m_sourceArrows.remove(edge);
-               else
+               else {
                        m_sourceArrows.put(edge, arrowType);
+                       isCleared = false;
+               }
        }
 
 
@@ -194,8 +214,10 @@
        void overrideSourceArrowPaint(final int edge, final Paint paint) {
                if ((paint == null) || 
paint.equals(super.sourceArrowPaint(edge)))
                        m_sourceArrowPaints.remove(edge);
-               else
+               else {
                        m_sourceArrowPaints.put(edge, paint);
+                       isCleared = false;
+               }
        }
 
        
@@ -226,8 +248,10 @@
        void overrideTargetArrow(final int edge, final byte arrowType) {
                if ((arrowType >= 0) || (arrowType == super.targetArrow(edge)))
                        m_targetArrows.remove(edge);
-               else
+               else {
                        m_targetArrows.put(edge, arrowType);
+                       isCleared = false;
+               }
        }
 
        /**
@@ -255,8 +279,10 @@
        void overrideTargetArrowPaint(final int edge, final Paint paint) {
                if ((paint == null) || 
paint.equals(super.targetArrowPaint(edge)))
                        m_targetArrowPaints.remove(edge);
-               else
+               else {
                        m_targetArrowPaints.put(edge, paint);
+                       isCleared = false;
+               }
        }
 
 
@@ -286,8 +312,10 @@
        void overrideSegmentThickness(final int edge, final float thickness) {
                if ((thickness < 0.0f) || (thickness == 
super.segmentThickness(edge)))
                        m_segmentThicknesses.remove(edge);
-               else
+               else {
                        m_segmentThicknesses.put(edge, thickness);
+                       isCleared = false;
+               }
        }
 
 
@@ -317,8 +345,10 @@
        void overrideSegmentStroke(int edge, Stroke stroke) {
                if ((stroke == null) || 
stroke.equals(super.segmentStroke(edge)))
                        m_segmentStrokes.remove(edge);
-               else
+               else {
                        m_segmentStrokes.put(edge, stroke);
+                       isCleared = false;
+               }
        }
 
 
@@ -364,8 +394,10 @@
        void overrideSegmentPaint(final int edge, final Paint paint) {
                if ((paint == null) || (paint == super.segmentPaint(edge)))
                        m_segmentPaints.remove(edge);
-               else
+               else {
                        m_segmentPaints.put(edge, paint);
+                       isCleared = false;
+               }
        }
 
        
@@ -394,8 +426,10 @@
        void overrideLabelCount(final int edge, final int labelCount) {
                if ((labelCount < 0) || (labelCount == super.labelCount(edge)))
                        m_labelCounts.remove(edge);
-               else
+               else {
                        m_labelCounts.put(edge, labelCount);
+                       isCleared = false;
+               }
        }
 
        /**
@@ -426,8 +460,10 @@
 
                if ((text == null) || text.equals(super.labelText(edge, 
labelInx)))
                        m_labelTexts.remove(key);
-               else
+               else {
                        m_labelTexts.put(key, text);
+                       isCleared = false;
+               }
        }
 
        /**
@@ -459,8 +495,10 @@
 
                if ((font == null) || font.equals(super.labelFont(edge, 
labelInx)))
                        m_labelFonts.remove(key);
-               else
+               else {
                        m_labelFonts.put(key, font);
+                       isCleared = false;
+               }
        }
 
 
@@ -493,8 +531,10 @@
 
                if ((paint == null) || paint.equals(super.labelPaint(edge, 
labelInx)))
                        m_labelPaints.remove(key);
-               else
+               else {
                        m_labelPaints.put(key, paint);
+                       isCleared = false;
+               }
        }
 
        /**
@@ -513,7 +553,7 @@
        }
 
        void setLabelWidthDefault(double width) {
-               m_labelWidthDefault = Double.valueOf(width);
+               m_labelWidthDefault = width;
        }
 
        /*
@@ -522,8 +562,10 @@
        void overrideLabelWidth(final int edge, final double width) {
                if ((width < 0.0) || (width == super.labelWidth(edge)))
                        m_labelWidths.remove(edge);
-               else
+               else {
                        m_labelWidths.put(edge, width);
+                       isCleared = false;
+               }
        }
 
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
     2011-10-11 21:41:17 UTC (rev 27131)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
     2011-10-11 21:51:08 UTC (rev 27132)
@@ -2977,7 +2977,7 @@
                if(targetType == CyNode.class)
                        
m_nodeViewDefaultSupport.setNodeViewDefault(vp,defaultValue);
                else if(targetType == CyEdge.class) {
-                       this.m_edgeDetails.clear();
+                       m_edgeDetails.clear();
                        
m_edgeViewDefaultSupport.setEdgeViewDefault(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