Author: kono
Date: 2012-05-03 18:35:46 -0700 (Thu, 03 May 2012)
New Revision: 29103

Modified:
   
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualStyleFactoryImpl.java
   
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/mappings/ContinuousMappingImpl.java
Log:
fixes #940 Copy Visual Style function fixed.

Modified: 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualStyleFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualStyleFactoryImpl.java
      2012-05-04 00:04:55 UTC (rev 29102)
+++ 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualStyleFactoryImpl.java
      2012-05-04 01:35:46 UTC (rev 29103)
@@ -2,6 +2,7 @@
 
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.cytoscape.service.util.CyServiceRegistrar;
@@ -9,6 +10,13 @@
 import org.cytoscape.view.vizmap.VisualMappingFunction;
 import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.view.vizmap.VisualStyleFactory;
+import org.cytoscape.view.vizmap.internal.mappings.ContinuousMappingImpl;
+import org.cytoscape.view.vizmap.internal.mappings.DiscreteMappingImpl;
+import org.cytoscape.view.vizmap.internal.mappings.PassthroughMappingImpl;
+import org.cytoscape.view.vizmap.mappings.ContinuousMapping;
+import org.cytoscape.view.vizmap.mappings.ContinuousMappingPoint;
+import org.cytoscape.view.vizmap.mappings.DiscreteMapping;
+import org.cytoscape.view.vizmap.mappings.PassthroughMapping;
 
 public class VisualStyleFactoryImpl implements VisualStyleFactory {
 
@@ -51,15 +59,64 @@
                }
        }
 
+       /**
+        * Copy Mapping functions
+        * 
+        * @param original
+        * @param copy
+        */
        private void copyMappingFunctions(final VisualStyle original, final 
VisualStyle copy) {
-               Collection<VisualMappingFunction<?, ?>> allMapping = 
original.getAllVisualMappingFunctions();
+               final Collection<VisualMappingFunction<?, ?>> allMapping = 
original.getAllVisualMappingFunctions();
 
                for (VisualMappingFunction<?, ?> mapping : allMapping) {
-                       String attrName = mapping.getMappingColumnName();
-                       VisualProperty<?> vp = mapping.getVisualProperty();
+                       VisualMappingFunction<?, ?> copyMapping = null;
+                       if (mapping instanceof PassthroughMapping) {
+                               copyMapping = 
createPassthrough((PassthroughMapping<?, ?>) mapping);
+                       } else if (mapping instanceof ContinuousMapping) {
+                               copyMapping = 
createContinuous((ContinuousMapping<?, ?>) mapping);
+                       } else if (mapping instanceof DiscreteMapping) {
+                               copyMapping = 
createDiscrete((DiscreteMapping<?, ?>) mapping);
+                       }
 
-                       // TODO: clone mappings
-                       // copy.addVisualMappingFunction(mapping);
+                       if (copyMapping != null)
+                               copy.addVisualMappingFunction(mapping);
                }
        }
+
+       @SuppressWarnings({ "rawtypes", "unchecked" })
+       private <K,V> VisualMappingFunction<K, V> createPassthrough(final 
PassthroughMapping<K, V> originalMapping) {
+
+               final String attrName = originalMapping.getMappingColumnName();
+               final Class<K> colType = originalMapping.getMappingColumnType();
+
+               final PassthroughMapping<K, V> copyMapping = new 
PassthroughMappingImpl(attrName, colType,
+                               originalMapping.getMappingTable(), 
originalMapping.getVisualProperty());
+               return copyMapping;
+       }
+
+       @SuppressWarnings({ "unchecked", "rawtypes" })
+       private <K,V> VisualMappingFunction<K, V> createContinuous(final 
ContinuousMapping<K, V> originalMapping) {
+               final String attrName = originalMapping.getMappingColumnName();
+               final Class<?> colType = originalMapping.getMappingColumnType();
+               
+               final ContinuousMapping<K,V> copyMapping = new 
ContinuousMappingImpl(attrName, colType,
+                               originalMapping.getMappingTable(), 
originalMapping.getVisualProperty());
+               List<ContinuousMappingPoint<K, V>> points = 
originalMapping.getAllPoints();
+               for(ContinuousMappingPoint<K, V> point: points)
+                        copyMapping.addPoint(point.getValue(), 
point.getRange());
+               
+               return copyMapping;
+       }
+
+       @SuppressWarnings({ "rawtypes", "unchecked" })
+       private <K,V> VisualMappingFunction<K,V> createDiscrete(final 
DiscreteMapping<K, V> originalMapping) {
+               final String attrName = originalMapping.getMappingColumnName();
+               final Class<K> colType = originalMapping.getMappingColumnType();
+
+               final DiscreteMapping<K, V> copyMapping = new 
DiscreteMappingImpl(attrName, colType,
+                               originalMapping.getMappingTable(), 
originalMapping.getVisualProperty());
+               
+               copyMapping.putAll(originalMapping.getAll());
+               return copyMapping;
+       }
 }

Modified: 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/mappings/ContinuousMappingImpl.java
===================================================================
--- 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/mappings/ContinuousMappingImpl.java
      2012-05-04 00:04:55 UTC (rev 29102)
+++ 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/mappings/ContinuousMappingImpl.java
      2012-05-04 01:35:46 UTC (rev 29103)
@@ -70,7 +70,7 @@
        // Contains List of Data Points
        private List<ContinuousMappingPoint<K, V>> points;
 
-       ContinuousMappingImpl(final String attrName, final Class<K> attrType, 
final CyTable table, final VisualProperty<V> vp) {
+       public ContinuousMappingImpl(final String attrName, final Class<K> 
attrType, final CyTable table, final VisualProperty<V> vp) {
                super(attrName, attrType, table, vp);
                
                // Validate type.  K is always a number.

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