Author: kono
Date: 2012-02-01 16:35:22 -0800 (Wed, 01 Feb 2012)
New Revision: 28181

Modified:
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Bend.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Handle.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BendImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/HandleImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/EdgeBendVisualProperty.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/ding/EdgeBendTest.java
Log:
Serializer/Parser had been added for Edge Bend. 

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Bend.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Bend.java
        2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Bend.java
        2012-02-02 00:35:22 UTC (rev 28181)
@@ -45,4 +45,10 @@
         * @return Index of the given Handle
         */
        int getIndex(final Handle handle);
+       
+       /**
+        * Create string representation of this object for parsing.
+        * @return
+        */
+       String getSerializableString();
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Handle.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Handle.java
      2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/Handle.java
      2012-02-02 00:35:22 UTC (rev 28181)
@@ -33,4 +33,10 @@
         * @param y Absolute value for Y-location.
         */
        void defineHandle(final DEdgeView edgeView, final double x, final 
double y);
+       
+       /**
+        * Create string representation of this object for parsing.
+        * @return
+        */
+       String getSerializableString();
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BendImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BendImpl.java
       2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BendImpl.java
       2012-02-02 00:35:22 UTC (rev 28181)
@@ -12,6 +12,8 @@
  */
 public class BendImpl implements Bend {
        
+       private static final String DELIMITER ="|";
+       
        // List of Bends included in this Bend
        private final List<Handle> handles;
        
@@ -53,4 +55,42 @@
        public String toString() {
                return "Handles[ " + handles.size() + " ]" ;
        }
+
+       @Override
+       public String getSerializableString() {
+               final StringBuilder builder = new StringBuilder();
+               for(Handle handle:handles)
+                       builder.append(handle.getSerializableString() + 
DELIMITER);
+               final String serialized = builder.toString();
+               
+               //System.out.println("Serialized String: " + serialized);
+               
+               if(serialized.length() == 0)
+                       return "";
+               else
+                       return serialized.substring(0, serialized.length()-1);
+       }
+       
+       public static Bend parseSerializableString(String strRepresentation) {
+               
+               //System.out.println("Parsing String: " + strRepresentation);
+               
+               final Bend bend = new BendImpl();
+               // Validate
+               if (strRepresentation == null)
+                       return bend;
+
+               final String[] parts = strRepresentation.split("\\|");
+               
+               for(int i=0; i<parts.length; i++) {
+                       final String str = parts[i];
+                       final Handle handle = 
HandleImpl.parseSerializableString(str);
+                       //System.out.println("Got handle: " + handle);
+                       if(handle != null)
+                               bend.insertHandleAt(i, handle);
+               }
+
+               //System.out.println("Got Bend: " + bend.toString());
+               return bend;
+       }
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/HandleImpl.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/HandleImpl.java
     2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/HandleImpl.java
     2012-02-02 00:35:22 UTC (rev 28181)
@@ -13,10 +13,12 @@
  */
 public class HandleImpl implements Handle {
        
-       double cosTheta;
-       double sinTheta;
-       double ratio;
+       private static final String DELIMITER =",";
        
+       private Double cosTheta;
+       private Double sinTheta;
+       private Double ratio;
+       
        // Original handle location
        private double x = 0;
        private double y = 0;
@@ -142,4 +144,55 @@
 //             System.out.println("** theta rad = " + theta);
 //             System.out.println("** theta degree = " + (theta* 180 / 
Math.PI));
        }
+
+
+       /**
+        * Serialized string is "cos,sin,ratio".
+        */
+       @Override
+       public String getSerializableString() {
+               if(cosTheta == null || sinTheta  == null || ratio == null)
+                       return null;
+               return cosTheta.toString() + DELIMITER + sinTheta.toString() + 
DELIMITER + ratio;
+       }
+       
+       private void setCos(final Double cos) {
+               this.cosTheta = cos;
+       }
+       
+       private void setSin(final Double sin) {
+               this.sinTheta = sin;
+       }
+       
+       private void setRatio(final Double ratio) {
+               this.ratio = ratio;
+       }
+       
+       /**
+        * @param strRepresentation
+        * @return returns null for invalid inputs.
+        */
+       public static Handle parseSerializableString(final String 
strRepresentation) {
+               // Validate
+               if(strRepresentation == null)
+                       return null;
+               
+               final String[] parts = strRepresentation.split(DELIMITER);
+               if(parts.length != 3)
+                       return null;
+               
+               try {
+                       final Double cos = Double.parseDouble(parts[0]);
+                       final Double sin = Double.parseDouble(parts[1]);
+                       final Double ratio = Double.parseDouble(parts[2]);
+                       
+                       HandleImpl handle = new HandleImpl(0, 0);
+                       handle.setSin(sin);
+                       handle.setCos(cos);
+                       handle.setRatio(ratio);
+                       return handle;
+               } catch (Exception ex) {
+                       return null;
+               }               
+       }
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/EdgeBendVisualProperty.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/EdgeBendVisualProperty.java
  2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/visualproperty/EdgeBendVisualProperty.java
  2012-02-02 00:35:22 UTC (rev 28181)
@@ -22,13 +22,14 @@
 
        @Override
        public String toSerializableString(final Bend value) {
-               
-               
-               return value.toString();
+               return value.getSerializableString();
        }
 
        @Override
        public Bend parseSerializableString(String value) {
-               return DEFAULT_EDGE_BEND;
+               if(value == null)
+                       return DEFAULT_EDGE_BEND;
+               else
+                       return BendImpl.parseSerializableString(value);
        }
 }

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/ding/EdgeBendTest.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/ding/EdgeBendTest.java
        2012-02-02 00:22:50 UTC (rev 28180)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/ding/EdgeBendTest.java
        2012-02-02 00:35:22 UTC (rev 28181)
@@ -2,6 +2,8 @@
 
 import static org.junit.Assert.*;
 
+import org.cytoscape.ding.impl.BendImpl;
+import org.cytoscape.ding.impl.HandleImpl;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -18,6 +20,9 @@
 
        @Test
        public void testEdgeBend() {
+               Bend bend1 = new BendImpl();
+               
+               bend1.insertHandleAt(0, new HandleImpl(10, 20));
        }
 
 }

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