Author: kono
Date: 2010-11-02 15:35:39 -0700 (Tue, 02 Nov 2010)
New Revision: 22693

Modified:
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
   cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
   cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
   
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
Log:
Bug ID 0002407: "VizMapper does not save visual styles" fixed.  When 
VisualStyle's clone() method is called, all calculators will be named correctly 
and it will not create duplicate names.

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
        2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
        2010-11-02 22:35:39 UTC (rev 22693)
@@ -36,7 +36,9 @@
  */
 package cytoscape.visual;
 
+import cytoscape.visual.calculators.BasicCalculator;
 import cytoscape.visual.calculators.Calculator;
+import cytoscape.visual.mappings.ObjectMapping;
 import cytoscape.logger.CyLogger;
 
 import java.util.ArrayList;
@@ -49,8 +51,13 @@
  * a (possibly null) calculator for each visual attribute.
  */
 abstract class AppearanceCalculator implements Cloneable {
-       protected List<Calculator> calcs = new ArrayList<Calculator>();
+       
+       protected static final String CLONE_SUFFIX = "-clone-";
+       
+       protected final List<Calculator> calcs = new ArrayList<Calculator>();
+       
        protected Appearance tmpDefaultAppearance;
+       
        protected VisualPropertyDependency deps;
 
        /**
@@ -240,4 +247,20 @@
        }
 
        protected abstract void copyDefaultAppearance(AppearanceCalculator 
toCopy);
+       
+       protected void copyCalculators(AppearanceCalculator copy) {
+               // Copy individual calculators
+       for(Calculator cal  : this.calcs) {
+               final ObjectMapping mCopy = (ObjectMapping) 
cal.getMapping(0).clone();
+               final String originalName = cal.toString();
+               String copyName;
+               if(originalName.contains(CLONE_SUFFIX))
+                       copyName = originalName.split(CLONE_SUFFIX)[0] + 
CLONE_SUFFIX + System.currentTimeMillis();
+               else
+                       copyName = originalName + CLONE_SUFFIX + 
System.currentTimeMillis();
+               
+               final Calculator bCalc = new BasicCalculator(copyName, mCopy, 
cal.getVisualPropertyType());
+               copy.setCalculator(bCalc);
+       }
+       }
 }

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java    
    2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java    
    2010-11-02 22:35:39 UTC (rev 22693)
@@ -39,7 +39,6 @@
 package cytoscape.visual;
 
 
-//----------------------------------------------------------------------------
 import static cytoscape.visual.VisualPropertyType.EDGE_LINETYPE;
 import static cytoscape.visual.VisualPropertyType.EDGE_LINE_STYLE;
 import static cytoscape.visual.VisualPropertyType.EDGE_LINE_WIDTH;
@@ -58,10 +57,6 @@
 import static cytoscape.visual.VisualPropertyType.NODE_SIZE;
 import static cytoscape.visual.VisualPropertyType.NODE_WIDTH;
 
-import cytoscape.visual.calculators.Calculator;
-import cytoscape.visual.calculators.CalculatorFactory;
-import cytoscape.logger.CyLogger;
-
 import java.io.BufferedReader;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -69,20 +64,20 @@
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.Writer;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
-import java.util.Map.Entry;
 
+import cytoscape.logger.CyLogger;
+import cytoscape.visual.calculators.Calculator;
+import cytoscape.visual.calculators.CalculatorFactory;
 
-//----------------------------------------------------------------------------
+
 /**
  * This class defines static methods for reading calculator definitions from a
  * properties object and installing them into a CalculatorCatalog, and for

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
    2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
    2010-11-02 22:35:39 UTC (rev 22693)
@@ -100,15 +100,8 @@
                }
 
                copy.setDefaultAppearance(defAppr);
+               copyCalculators(copy);
 
-               //Copy mappings
-               for (Calculator cal : this.calcs) {
-                       final ObjectMapping mCopy = (ObjectMapping) 
cal.getMapping(0).clone();
-                       BasicCalculator bCalc = new 
BasicCalculator(cal.toString(), mCopy,
-                                                                   
cal.getVisualPropertyType());
-                       copy.setCalculator(bCalc);
-               }
-
                return copy;
        }
 

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
    2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
    2010-11-02 22:35:39 UTC (rev 22693)
@@ -52,6 +52,7 @@
  * a (possibly null) calculator for each visual attribute.
  */
 public class NodeAppearanceCalculator extends AppearanceCalculator {
+       
     private NodeAppearance defaultAppearance = new NodeAppearance();
 
        /**
@@ -103,6 +104,7 @@
      * Create deep copy of the object.
      */
     public Object clone() {
+       
        final NodeAppearanceCalculator copy = new 
NodeAppearanceCalculator(deps);
        
        // Copy defaults
@@ -112,12 +114,7 @@
        }
        copy.setDefaultAppearance(defAppr);
        
-       //Copy mappings
-       for(Calculator cal  : this.calcs) {
-               ObjectMapping mCopy = (ObjectMapping) cal.getMapping(0).clone();
-               BasicCalculator bCalc = new BasicCalculator(cal.toString(), 
mCopy, cal.getVisualPropertyType());
-               copy.setCalculator(bCalc);
-       }
+       this.copyCalculators(copy);
        
        return copy;
     }

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
===================================================================
--- cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java 
2010-11-02 21:48:29 UTC (rev 22692)
+++ cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java 
2010-11-02 22:35:39 UTC (rev 22693)
@@ -35,11 +35,6 @@
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */
 
-//----------------------------------------------------------------------------
-// $Revision$
-// $Date$
-// $Author$
-//----------------------------------------------------------------------------
 package cytoscape.visual;
 
 import java.util.Vector;
@@ -49,7 +44,6 @@
 import cytoscape.logger.CyLogger;
 
 
-//----------------------------------------------------------------------------
 /**
  * This class encapsulates a full set of visual mapping specifications for
  * Cytoscape. Currently this is implemented by holding a reference to three
@@ -108,6 +102,7 @@
         * Perform deep copy of this VisualStyle.
         */
        public Object clone() throws CloneNotSupportedException {
+               
                VisualStyle copy = (VisualStyle) super.clone();
                String dupeFreeName;
 
@@ -123,6 +118,7 @@
 
                copy.name = dupeFreeName;
                copy.dupeCount++;
+               
                copy.nodeAC = (NodeAppearanceCalculator) this.nodeAC.clone();
                copy.edgeAC = (EdgeAppearanceCalculator) this.edgeAC.clone();
                copy.globalAC = (GlobalAppearanceCalculator) 
this.globalAC.clone();

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
    2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
    2010-11-02 22:35:39 UTC (rev 22693)
@@ -33,7 +33,6 @@
        }
        
        
-       
        abstract public void applyProperties(Properties props, String baseKey,
                        ValueParser parser);
        

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
  2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
  2010-11-02 22:35:39 UTC (rev 22693)
@@ -66,7 +66,8 @@
 public class ContinuousMapping extends
                AbstractMapping {
 
-       final Class<?>[] ACCEPTED_CLASS = { Number.class };
+       // Accepts only numbers.
+       private static final Class<?>[] ACCEPTED_CLASS = { Number.class };
 
        // used to interpolate between boundaries
        private Interpolator interpolator;
@@ -113,6 +114,9 @@
         * @return Cloned Mapping Object.
         */
        public Object clone() {
+               
+               // Constructor arguments
+               final Class<?> rangeClassClone;
                final ContinuousMapping clone = new ContinuousMapping(
                                rangeClass, controllingAttrName);
 
@@ -120,7 +124,9 @@
                for (ChangeListener listener : observers)
                        clone.addChangeListener(listener);
 
-               for (ContinuousMappingPoint cmp : points) {
+               
+               // Copy points
+               for (final ContinuousMappingPoint cmp : points) {
                        final ContinuousMappingPoint cmpClone = 
(ContinuousMappingPoint) cmp.clone();
                        clone.addPoint(cmpClone.getValue(), 
cmpClone.getRange());
                }

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
  2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
  2010-11-02 22:35:39 UTC (rev 22693)
@@ -98,14 +98,17 @@
 
        /**
         * Clones the object. (Deep Copy)
+        * 
         * @return Cloned Object.
         */
        public Object clone() {
                final BoundaryRangeValues newRange = new BoundaryRangeValues();
+               
                newRange.lesserValue = range.lesserValue;
                newRange.equalValue = range.equalValue;
                newRange.greaterValue = range.greaterValue;
 
-               return new ContinuousMappingPoint(value, newRange);
+               Double copyValue = new Double(value);
+               return new ContinuousMappingPoint(copyValue, newRange);
        }
 }

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
       2010-11-02 21:48:29 UTC (rev 22692)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
       2010-11-02 22:35:39 UTC (rev 22693)
@@ -2327,6 +2327,9 @@
        }
 
        protected class CopyStyleListener extends AbstractAction {
+               
+               private static final long serialVersionUID = 
4741684758183028809L;
+
                public void actionPerformed(ActionEvent e) {
                        final VisualStyle currentStyle = vmm.getVisualStyle();
                        VisualStyle clone = null;
@@ -2339,9 +2342,8 @@
 
                        final String newName = getStyleName(clone);
 
-                       if ((newName == null) || (newName.trim().length() == 
0)) {
+                       if ((newName == null) || (newName.trim().length() == 0))
                                return;
-                       }
 
                        clone.setName(newName);
 

-- 
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