From b086f57f56bf0eb9dab9cf321a0f69aaaae84347 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 30 May 2012 08:37:45 +0200 Subject: Initial Maven Conversion --- .../instance/gui/view/SplitJoinRenderer.java | 142 +++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java (limited to 'src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java new file mode 100644 index 0000000..036f79a --- /dev/null +++ b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java @@ -0,0 +1,142 @@ +package com.c2kernel.lifecycle.instance.gui.view; + +import java.awt.Color; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Paint; + +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.graph.view.VertexRenderer; +import com.c2kernel.lifecycle.instance.AndSplit; +import com.c2kernel.lifecycle.instance.Join; +import com.c2kernel.lifecycle.instance.Loop; +import com.c2kernel.lifecycle.instance.OrSplit; +import com.c2kernel.lifecycle.instance.WfVertex; +import com.c2kernel.lifecycle.instance.XOrSplit; +import com.c2kernel.utils.Language; + +public class SplitJoinRenderer implements VertexRenderer +{ + private Paint mTextPaint = Color.black; + private Paint mBoxPaint = new Color( 204, 204, 204 ); + private Paint mErrorPaint = new Color( 255, 0, 0 ); + private boolean mTextOffsetsNotInitialised = true; + private int mTextYOffset = 0; + private String mAndText = "And"; + private int mAndTextXOffset = 0; + private String mOrText = "Or"; + private int mOrTextXOffset = 0; + private String mLoopText = "Loop"; + private int mLoopTextXOffset = 0; + private String mXOrText = "XOr"; + private int mXOrTextXOffset = 0; + private String mJoinText = "Join"; + private int mJoinTextXOffset = 0; + private String mRouteText = ""; + private int mRouteTextXOffset = 0; + private String mXXXText = "XXX"; + private int mXXXTextXOffset = 0; + + + @Override + public void draw( Graphics2D g2d, Vertex vertex) + { + GraphPoint centrePoint = vertex.getCentrePoint(); + String text = null; + int textXOffset = 0; + int vertexHeight = vertex.getHeight(); + int vertexWidth = vertex.getWidth(); + + + if ( mTextOffsetsNotInitialised ) + { + initialiseTextOffsets( g2d ); + mTextOffsetsNotInitialised = false; + } + if ( vertex instanceof AndSplit ) + { + text = Language.translate(mAndText); + textXOffset = mAndTextXOffset; + } + else if ( vertex instanceof OrSplit ) + { + text = Language.translate(mOrText); + textXOffset = mOrTextXOffset; + } + else if ( vertex instanceof Loop ) + { + text = Language.translate(mLoopText); + textXOffset = mLoopTextXOffset; + } + else if ( vertex instanceof XOrSplit ) + { + text = Language.translate(mXOrText); + textXOffset = mXOrTextXOffset; + } + else if ( vertex instanceof Join ) + { + text = Language.translate(mJoinText); + textXOffset = mJoinTextXOffset; + } + else if ( vertex instanceof Join) + { + String type= (String)((Join)vertex).getProperties().get("Type"); + if (type!=null && type.equals("Route")) + { + text = mRouteText; + textXOffset = mRouteTextXOffset; + } + else + { + text = Language.translate(mJoinText); + textXOffset = mJoinTextXOffset; + } + } + else + { + text = mXXXText; + textXOffset = mXXXTextXOffset; + } + + boolean hasErrors = ((WfVertex)vertex).verify(); + g2d.setPaint( hasErrors ? mBoxPaint : mErrorPaint ); + g2d.fillRect + ( + centrePoint.x - vertexWidth / 2, + centrePoint.y - vertexHeight / 2, + vertexWidth, + vertexHeight + ); + g2d.setPaint( mTextPaint ); + g2d.drawRect + ( + centrePoint.x - vertexWidth / 2, + centrePoint.y - vertexHeight / 2, + vertexWidth, + vertexHeight + ); + g2d.drawString( text, centrePoint.x - textXOffset, centrePoint.y + mTextYOffset ); + + if (!hasErrors) { + g2d.setPaint( mErrorPaint ); + String errors = Language.translate(((WfVertex)vertex).getErrors()); + int errorWidth = g2d.getFontMetrics().stringWidth( errors ); + g2d.drawString( errors, centrePoint.x - ( errorWidth / 2), centrePoint.y + vertexHeight ); + } + } + + private void initialiseTextOffsets( Graphics2D g2d ) + { + FontMetrics metrics = g2d.getFontMetrics(); + + + mTextYOffset = metrics.getHeight() / 3; + mAndTextXOffset = metrics.stringWidth( Language.translate(mAndText) ) / 2; + mOrTextXOffset = metrics.stringWidth( Language.translate(mOrText) ) / 2; + mXOrTextXOffset = metrics.stringWidth( Language.translate(mXOrText) ) / 2; + mJoinTextXOffset = metrics.stringWidth( Language.translate(mJoinText) ) / 2; + mLoopTextXOffset = metrics.stringWidth( Language.translate(mLoopText) ) / 2; + } +} + -- cgit v1.2.3