Author: kono
Date: 2012-01-12 11:22:50 -0800 (Thu, 12 Jan 2012)
New Revision: 27995
Added:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/EdgeBendIcon.java
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DArrowShape.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DNodeShape.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/ArrowIcon.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/NodeIcon.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
core3/impl/trunk/ding-impl/graph-render/src/main/java/org/cytoscape/graph/render/immed/GraphGraphics.java
Log:
refs #569 edge arrow icon renderer implemented.
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DArrowShape.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DArrowShape.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DArrowShape.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -35,10 +35,12 @@
package org.cytoscape.ding;
+import java.awt.Shape;
import java.util.Hashtable;
import java.util.Map;
import org.cytoscape.graph.render.immed.GraphGraphics;
+import org.cytoscape.view.presentation.property.values.ArrowShape;
/**
@@ -48,22 +50,23 @@
*
*/
public enum DArrowShape {
- NONE("No Arrow", GraphGraphics.ARROW_NONE),
- DIAMOND("Diamond", GraphGraphics.ARROW_DIAMOND),
- DELTA("Delta", GraphGraphics.ARROW_DELTA),
- ARROW("Arrow", GraphGraphics.ARROW_ARROWHEAD),
- T("T", GraphGraphics.ARROW_TEE),
- CIRCLE("Circle", GraphGraphics.ARROW_DISC),
- HALF_TOP("Half Top", GraphGraphics.ARROW_HALF_TOP),
- HALF_BOTTOM("Half Top", GraphGraphics.ARROW_HALF_BOTTOM);
+ NONE("None", "NONE", GraphGraphics.ARROW_NONE),
+ DIAMOND("Diamond", "DIAMOND", GraphGraphics.ARROW_DIAMOND),
+ DELTA("Delta", "DELTA", GraphGraphics.ARROW_DELTA),
+ ARROW("Arrow", "ARROW", GraphGraphics.ARROW_ARROWHEAD),
+ T("T", "T", GraphGraphics.ARROW_TEE),
+ CIRCLE("Circle", "CIRCLE", GraphGraphics.ARROW_DISC),
+ HALF_TOP("Half Top", "HALF_TOP", GraphGraphics.ARROW_HALF_TOP),
+ HALF_BOTTOM("Half Top", "HALF_BOTTOM", GraphGraphics.ARROW_HALF_BOTTOM);
private final String displayName;
+ private final String serializableString;
private final byte rendererTypeID;
+ private static final Map<Byte, Shape> ARROW_SHAPES;
/** old_key -> ArrowShape */
private static final Map<String, DArrowShape> legacyShapes = new
Hashtable<String, DArrowShape>();
-
static {
// We have to support Cytoscape 2.8 XGMML shapes!
legacyShapes.put("0", NONE);
@@ -74,11 +77,14 @@
legacyShapes.put("15", T);
legacyShapes.put("16", HALF_TOP);
legacyShapes.put("17", HALF_BOTTOM);
+ ARROW_SHAPES = GraphGraphics.getArrowShapes();
}
- private DArrowShape(final String displayName, final byte
rendererTypeID) {
+
+ private DArrowShape(final String displayName, final String
serializableString, final byte rendererTypeID) {
this.displayName = displayName;
this.rendererTypeID = rendererTypeID;
+ this.serializableString = serializableString;
}
/**
@@ -99,6 +105,10 @@
public String getDisplayName() {
return displayName;
}
+
+ public Shape getShape() {
+ return ARROW_SHAPES.get((Byte) rendererTypeID);
+ }
/**
*
@@ -137,10 +147,11 @@
}
- public static DArrowShape getArrowShape(final int rendererTypeID) {
+ public static DArrowShape getArrowShape(final ArrowShape arrowShape) {
+ final String serializedString =
arrowShape.getSerializableString();
// first try for an exact match
for (DArrowShape shape : values()) {
- if (shape.getRendererTypeID() == rendererTypeID)
+ if (shape.serializableString.equals(serializedString))
return shape;
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DNodeShape.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DNodeShape.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/DNodeShape.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -67,8 +67,7 @@
private final String displayName;
private final String serializableString;
- private static final Map<Byte, Shape> nodeShapes = GraphGraphics
- .getNodeShapes();
+ private static final Map<Byte, Shape> nodeShapes =
GraphGraphics.getNodeShapes();
public DNodeShape(final Byte rendererShapeID, final String displayName,
final String serializableString) {
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/ArrowIcon.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/ArrowIcon.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/ArrowIcon.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -47,42 +47,22 @@
/**
* Icon for arrow shape.
- *
- * @version 0.5
- * @since Cytoscape 2.5
- * @author kono
*/
public class ArrowIcon extends VisualPropertyIcon<Shape> {
private final static long serialVersionUID = 1202339877462891L;
- private static final Stroke EDGE_STROKE = new BasicStroke(6.0f,
BasicStroke.CAP_SQUARE,
-
BasicStroke.JOIN_MITER);
+
+ private static final Stroke EDGE_STROKE = new BasicStroke(6.0f,
BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER);
private static final Stroke EDGE_STROKE_SMALL = new BasicStroke(4.0f,
BasicStroke.CAP_SQUARE,
-
BasicStroke.JOIN_MITER);
+ BasicStroke.JOIN_MITER);
protected Graphics2D g2d;
private static final int DEF_L_PAD = 15;
- /**
- * Creates a new ArrowIcon object.
- *
- * @param shape DOCUMENT ME!
- * @param width DOCUMENT ME!
- * @param height DOCUMENT ME!
- * @param name DOCUMENT ME!
- * @param color DOCUMENT ME!
- */
- public ArrowIcon(Shape shape, int width, int height, String name) {
+ public ArrowIcon(final Shape shape, int width, int height, String name)
{
super(shape, width, height, name);
}
- /**
- * Draw icon using Java2D.
- *
- * @param c DOCUMENT ME!
- * @param g DOCUMENT ME!
- * @param x DOCUMENT ME!
- * @param y DOCUMENT ME!
- */
+
public void paintIcon(Component c, Graphics g, int x, int y) {
g2d = (Graphics2D) g;
@@ -99,8 +79,7 @@
if ((width < 20) || (height < 20)) {
g2d.translate(-leftPad, -bottomPad);
g2d.setStroke(EDGE_STROKE_SMALL);
- g2d.drawLine(3, c.getHeight()/2,
- width/2 +10, c.getHeight()/2);
+ g2d.drawLine(3, c.getHeight() / 2, width / 2 +
10, c.getHeight() / 2);
return;
} else {
// g2d.setStroke(EDGE_STROKE);
@@ -135,7 +114,7 @@
}
final double shapeWidth = newShape.getBounds2D().getWidth();
- final double shapeHeight = newShape.getBounds2D().getHeight();
+ final double shapeHeight = newShape.getBounds2D().getHeight()*2;
final double originalXYRatio = shapeWidth / shapeHeight;
Added:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/EdgeBendIcon.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/EdgeBendIcon.java
(rev 0)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/EdgeBendIcon.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -0,0 +1,5 @@
+package org.cytoscape.ding.icon;
+
+public class EdgeBendIcon {
+
+}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/NodeIcon.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/NodeIcon.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/NodeIcon.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -41,7 +41,6 @@
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
/**
@@ -53,19 +52,10 @@
private final static long serialVersionUID = 1202339876280466L;
private Shape newShape;
-
private Graphics2D g2d;
- /**
- * Creates a new NodeShapeIcon object.
- *
- * @param shape DOCUMENT ME!
- * @param width DOCUMENT ME!
- * @param height DOCUMENT ME!
- * @param name DOCUMENT ME!
- * @param color DOCUMENT ME!
- */
+
public NodeIcon(Shape shape, int width, int height, String name) {
super(shape, width, height, name);
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/icon/VisualPropertyIconFactory.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -2,15 +2,19 @@
import java.awt.Color;
import java.awt.Font;
+import java.awt.Shape;
import javax.swing.Icon;
+import org.cytoscape.ding.DArrowShape;
import org.cytoscape.ding.DNodeShape;
import org.cytoscape.ding.ObjectPosition;
import org.cytoscape.ding.customgraphics.CyCustomGraphics;
import org.cytoscape.ding.impl.DLineType;
import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.presentation.property.ArrowShapeVisualProperty;
import org.cytoscape.view.presentation.property.NodeShapeVisualProperty;
+import org.cytoscape.view.presentation.property.values.ArrowShape;
import org.cytoscape.view.presentation.property.values.LineType;
import org.cytoscape.view.presentation.property.values.NodeShape;
@@ -42,10 +46,22 @@
icon = new CustomGraphicsIcon(((CyCustomGraphics)
value), w, h, ((CyCustomGraphics) value).getDisplayName());
} else if(value instanceof ObjectPosition) {
icon = new ObjectPositionIcon((ObjectPosition) value,
w, h, "Label");
- } else if(value instanceof Font) {
+ } else if(value instanceof Font) {
icon = new FontFaceIcon((Font) value, w, h, "");
+ } else if(value instanceof ArrowShape) {
+ final ArrowShape arrowShape = (ArrowShape) value;
+ final DArrowShape dShape;
+ if(ArrowShapeVisualProperty.isDefaultShape(arrowShape))
+ dShape = DArrowShape.getArrowShape(arrowShape);
+ else
+ dShape = DArrowShape.NONE;
+
+ if(dShape.getShape() == null)
+ icon = new TextIcon(value, w, h, ""); // No
arrow
+ else
+ icon = new ArrowIcon(dShape.getShape(), w, h,
dShape.getDisplayName());
} else {
- // If not found, use text as icon.
+ // If not found, use return value of toString() as icon.
icon = new TextIcon(value, w, h, value.toString());
}
Modified:
core3/impl/trunk/ding-impl/graph-render/src/main/java/org/cytoscape/graph/render/immed/GraphGraphics.java
===================================================================
---
core3/impl/trunk/ding-impl/graph-render/src/main/java/org/cytoscape/graph/render/immed/GraphGraphics.java
2012-01-12 18:15:07 UTC (rev 27994)
+++
core3/impl/trunk/ding-impl/graph-render/src/main/java/org/cytoscape/graph/render/immed/GraphGraphics.java
2012-01-12 19:22:50 UTC (rev 27995)
@@ -893,18 +893,18 @@
return shapeMap;
}
-// /**
-// * Get list of arrow heads.
-// *
-// * @return A map of arrow shape bytes to Shape objects.
-// */
-// public static Map<Byte, Shape> getArrowShapes() {
-// final Map<Byte, Shape> shapeMap = new HashMap<Byte, Shape>();
-// for ( Arrow a : arrows.values() )
-// shapeMap.put( a.get.getType(), a.getArrowShape() );
-//
-// return shapeMap;
-// }
+ /**
+ * Get list of arrow heads.
+ *
+ * @return A map of arrow shape bytes to Shape objects.
+ */
+ public static Map<Byte, Shape> getArrowShapes() {
+ final Map<Byte, Shape> shapeMap = new HashMap<Byte, Shape>();
+ for (final Byte key : arrows.keySet()) {
+ shapeMap.put(key, arrows.get(key).getArrowShape() );
+ }
+ return shapeMap;
+ }
/**
* This is the method that will render an edge very quickly. Translucent
--
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.