summaryrefslogtreecommitdiff
path: root/src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java')
-rw-r--r--src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java b/src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java
new file mode 100644
index 0000000..20af733
--- /dev/null
+++ b/src/main/java/org/cristalise/gui/collection/AggregationMemberRenderer.java
@@ -0,0 +1,133 @@
+package org.cristalise.gui.collection;
+
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+
+import org.cristalise.gui.ImageLoader;
+import org.cristalise.gui.graph.view.VertexRenderer;
+import org.cristalise.kernel.collection.Aggregation;
+import org.cristalise.kernel.collection.AggregationMember;
+import org.cristalise.kernel.graph.model.GraphPoint;
+import org.cristalise.kernel.graph.model.Vertex;
+import org.cristalise.kernel.utils.Logger;
+
+
+
+/**
+ * @version $Revision: 1.24 $ $Date: 2005/12/01 14:23:15 $
+ * @author $Author: abranson $
+ */
+
+public class AggregationMemberRenderer implements VertexRenderer
+{
+
+ private Aggregation mAggregation = null;
+
+ public AggregationMemberRenderer()
+ {
+ }
+
+ public void setAggregation(Aggregation agg)
+ {
+ mAggregation = agg;
+ }
+
+
+ @Override
+ public void draw(Graphics2D g2d, Vertex vertex)
+ {
+ GraphPoint centre = vertex.getCentrePoint();
+ GraphPoint[] outline = vertex.getOutlinePoints();
+ FontMetrics metrics = g2d.getFontMetrics();
+
+ AggregationMember memberPair = mAggregation.getMemberPair(vertex.getID());
+
+ try
+ {
+ String name = memberPair.getItemName();
+
+ g2d.drawString( name,
+ centre.x-metrics.stringWidth(name)/2,
+ vertex.getID()%2==0?topYOfOutline(outline):bottomYOfOutline(outline)+metrics.getHeight() );
+
+ g2d.drawImage
+ (
+ getImage(memberPair),
+ centre.x - 8,
+ centre.y - 8,
+ null
+ );
+
+
+
+ // Draw the outline of the vertex
+ if(outline.length > 1)
+ {
+ for(int i=0; i<outline.length-1; i++)
+ {
+ g2d.drawLine
+ (
+ outline[i].x,
+ outline[i].y,
+ outline[i+1].x,
+ outline[i+1].y
+ );
+ }
+
+ g2d.drawLine
+ (
+ outline[outline.length-1].x,
+ outline[outline.length-1].y,
+ outline[0].x,
+ outline[0].y
+ );
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ Logger.error("AggregationMemberRenderer::draw() " + ex);
+ }
+ }
+
+
+ int topYOfOutline(GraphPoint[] outline)
+ {
+ int topY = outline[0].y;
+ int i = 0;
+
+
+ for(i=1; i<outline.length; i++)
+ {
+ if(outline[i].y < topY)
+ {
+ topY = outline[i].y;
+ }
+ }
+
+ return topY;
+ }
+
+ int bottomYOfOutline(GraphPoint[] outline)
+ {
+ int bottomY = outline[0].y;
+ int i = 0;
+
+
+ for(i=1; i<outline.length; i++)
+ {
+ if(outline[i].y > bottomY)
+ {
+ bottomY = outline[i].y;
+ }
+ }
+
+ return bottomY;
+ }
+
+ public Image getImage(AggregationMember am) {
+ return ImageLoader.findImage("typeicons/"+am.getProperties().get("Type")+"_16.png").getImage();
+ }
+}