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.