From 6d8c74f97fe4289a984bdc6bd635c71653d5421c Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 26 Jun 2012 12:41:56 +0200 Subject: Refactored GUI into separate module --- .../lifecycle/instance/gui/model/WfGraphPanel.java | 59 ------- .../instance/gui/view/ActivityRenderer.java | 117 ------------- .../instance/gui/view/FindActDefPanel.java | 72 -------- .../instance/gui/view/SplitJoinRenderer.java | 142 ---------------- .../instance/gui/view/TransitionPanel.java | 187 --------------------- .../instance/gui/view/WfDirectedEdgeRenderer.java | 130 -------------- .../instance/gui/view/WfVertexRenderer.java | 23 --- 7 files changed, 730 deletions(-) delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/model/WfGraphPanel.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/ActivityRenderer.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/FindActDefPanel.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/TransitionPanel.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfDirectedEdgeRenderer.java delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfVertexRenderer.java (limited to 'src/main/java/com/c2kernel/lifecycle/instance') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/model/WfGraphPanel.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/model/WfGraphPanel.java deleted file mode 100644 index 16c8e16..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/model/WfGraphPanel.java +++ /dev/null @@ -1,59 +0,0 @@ -/*Created on 21 nov. 2003 */ -package com.c2kernel.lifecycle.instance.gui.model; - -import java.awt.Graphics2D; - -import com.c2kernel.graph.model.DirectedEdge; -import com.c2kernel.graph.model.GraphPoint; -import com.c2kernel.graph.view.DirectedEdgeRenderer; -import com.c2kernel.graph.view.GraphPanel; -import com.c2kernel.graph.view.VertexRenderer; -import com.c2kernel.lifecycle.instance.Next; - -/** @author XSeb74*/ -public class WfGraphPanel extends GraphPanel -{ - public WfGraphPanel(DirectedEdgeRenderer d,VertexRenderer v) - { - super(d,v); - } - // Draws the highlight of the specified edge - @Override - protected void drawEdgeHighlight(Graphics2D g2d, DirectedEdge edge) - { - GraphPoint originPoint = edge.getOriginPoint(); - GraphPoint terminusPoint = edge.getTerminusPoint(); - GraphPoint midPoint = new GraphPoint(); - - if ("Straight".equals(((Next)edge).getProperties().get("Type")) || ((Next)edge).getProperties().get("Type") == null) - { - midPoint.x = originPoint.x + (terminusPoint.x - originPoint.x) / 2; - midPoint.y = originPoint.y + (terminusPoint.y - originPoint.y) / 2; - } - else if (("Broken +".equals(((Next)edge).getProperties().get("Type")))) - { - midPoint.x = (originPoint.x + terminusPoint.x) / 2; - midPoint.y = (originPoint.y + terminusPoint.y) / 2; - } - else if (("Broken -".equals(((Next)edge).getProperties().get("Type")))) - { - boolean arrowOnY = !(originPoint.y - terminusPoint.y < 60 && originPoint.y - terminusPoint.y > -60); - midPoint.x = arrowOnY ? terminusPoint.x : (originPoint.x + terminusPoint.x) / 2; - midPoint.y = arrowOnY ? (originPoint.y + terminusPoint.y) / 2 : originPoint.y; - } - else if (("Broken |".equals(((Next)edge).getProperties().get("Type")))) - { - boolean arrowOnY = !(originPoint.y - terminusPoint.y < 60 && originPoint.y - terminusPoint.y > -60); - midPoint.x = arrowOnY ? originPoint.x : (originPoint.x + terminusPoint.x) / 2; - midPoint.y = arrowOnY ? (originPoint.y + terminusPoint.y) / 2 : terminusPoint.y; - } - int minX = midPoint.x - 10; - int minY = midPoint.y - 10; - int maxX = midPoint.x + 10; - int maxY = midPoint.y + 10; - g2d.drawLine(minX, minY, maxX, minY); - g2d.drawLine(maxX, minY, maxX, maxY); - g2d.drawLine(maxX, maxY, minX, maxY); - g2d.drawLine(minX, maxY, minX, minY); - } -} diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/ActivityRenderer.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/ActivityRenderer.java deleted file mode 100644 index 046ed7c..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/ActivityRenderer.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.c2kernel.lifecycle.instance.gui.view; -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.Paint; -import java.awt.Polygon; - -import com.c2kernel.common.GTimeStamp; -import com.c2kernel.graph.model.GraphPoint; -import com.c2kernel.graph.model.Vertex; -import com.c2kernel.graph.view.VertexRenderer; -import com.c2kernel.lifecycle.instance.Activity; -import com.c2kernel.lifecycle.instance.stateMachine.States; -import com.c2kernel.utils.DateUtility; -import com.c2kernel.utils.Language; -public class ActivityRenderer implements VertexRenderer -{ - private Paint mActivePaint = new Color(100, 255, 100); - private Paint mActiveCompPaint = new Color(100, 255, 255); - private Paint mInactivePaint = new Color(255, 255, 255); - private Paint mInactiveCompPaint = new Color(200, 200, 255); - private Paint mErrorPaint = new Color(255, 50, 0); - private Paint mTextPaint = Color.black; - @Override - public void draw(Graphics2D g2d, Vertex vertex) - { - Activity activity = (Activity) vertex; - boolean active = activity.getActive(); - boolean hasError = !activity.verify(); - boolean isComposite = activity.getIsComposite(); - GraphPoint centrePoint = activity.getCentrePoint(); - //String description = activity.getDescription(); - String[] linesOfText = new String[3]; - linesOfText[0] = "(" + activity.getType() + ")"; - linesOfText[1] = activity.getName(); - if (hasError) - linesOfText[2] = Language.translate(activity.getErrors()); - else - { - int cs = activity.getCurrentState(); - if (cs == States.WAITING && activity.getActive()) - linesOfText[2] = - Language.translate(States.getStateName(cs)) - + (((Boolean) activity.getProperties().get("Show time")).booleanValue() - ? " " + getWaitTime(activity.getActiveDate()) - : ""); - else if (cs == States.STARTED) - linesOfText[2] = - Language.translate(States.getStateName(cs)) - + (((Boolean) activity.getProperties().get("Show time")).booleanValue() - ? " " + getWaitTime(activity.getStartDate()) - : ""); - else - linesOfText[2] = Language.translate(States.getStateName(cs)); - } - - FontMetrics metrics = g2d.getFontMetrics(); - int lineWidth = 0; - int lineHeight = metrics.getHeight(); - int linesHeight = lineHeight * linesOfText.length; - int linesStartY = centrePoint.y - linesHeight / 2 + lineHeight * 2 / 3; - int x = 0; - int y = 0; - int i = 0; - GraphPoint[] outline = vertex.getOutlinePoints(); - Paint actColour; - if (hasError) - actColour = mErrorPaint; - else if (active) - if (isComposite) - actColour = mActiveCompPaint; - else - actColour = mActivePaint; - else if (isComposite) - actColour = mInactiveCompPaint; - else - actColour = mInactivePaint; - g2d.setPaint(actColour); - //g2d.fill3DRect( centrePoint.x - mSize.width / 2, centrePoint.y - mSize.height / 2, mSize.width, mSize.height, true ); - g2d.fill(graphPointsToPolygon(outline)); - g2d.setPaint(mTextPaint); - for (i = 0; i < linesOfText.length; i++) - { - lineWidth = metrics.stringWidth(linesOfText[i]); - x = centrePoint.x - lineWidth / 2; - y = linesStartY + i * lineHeight; - g2d.drawString(linesOfText[i], x, y); - } - } - private static Polygon graphPointsToPolygon(GraphPoint[] points) - { - Polygon polygon = new Polygon(); - int i = 0; - for (i = 0; i < points.length; i++) - { - polygon.addPoint(points[i].x, points[i].y); - } - return polygon; - } - private static String getWaitTime(GTimeStamp date) - { - GTimeStamp now = new GTimeStamp(); - DateUtility.setToNow(now); - long diff = DateUtility.diff(now, date); - long secondes = diff % 60; - long minutes = (diff / 60) % 60; - long hours = (diff / 3600) % 24; - long days = (diff / 3600 / 24); - if (days > 0) - return days + " " + Language.translate("d") + " " + hours + " " + Language.translate("h"); - if (hours > 0) - return hours + " " + Language.translate("h") + " " + minutes + " " + Language.translate("min"); - if (minutes > 0) - return minutes + " " + Language.translate("min"); - return secondes + " " + Language.translate("sec"); - } -} diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/FindActDefPanel.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/FindActDefPanel.java deleted file mode 100644 index 4c1a148..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/FindActDefPanel.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.c2kernel.lifecycle.instance.gui.view; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JButton; - -import com.c2kernel.common.ObjectNotFoundException; -import com.c2kernel.graph.model.Vertex; -import com.c2kernel.graph.view.SelectedVertexPanel; -import com.c2kernel.gui.MainFrame; -import com.c2kernel.lifecycle.ActivitySlotDef; -import com.c2kernel.lookup.DomainPath; - -/************************************************************************** - * - * $Revision: 1.3 $ - * $Date: 2005/12/01 14:23:15 $ - * - * Copyright (C) 2003 CERN - European Organization for Nuclear Research - * All rights reserved. - **************************************************************************/ - -public class FindActDefPanel extends SelectedVertexPanel { - - JButton findButton; - ActivitySlotDef currentAct; - - public FindActDefPanel() { - super(); - findButton = new JButton("Open Definition"); - findButton.setEnabled(false); - add(findButton); - findButton.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - try { - DomainPath actPath = (DomainPath)new DomainPath("/desc/ActivityDesc/").find(currentAct.getActivityDef()); - MainFrame.treeBrowser.push(actPath); - } catch (ObjectNotFoundException e1) { } - } - }); - } - - /** - * - */ - - @Override - public void select(Vertex vert) { - if (vert instanceof ActivitySlotDef) { - findButton.setEnabled(true); - currentAct = (ActivitySlotDef)vert; - } - else - clear(); - - } - - /** - * - */ - - @Override - public void clear() { - findButton.setEnabled(false); - currentAct = null; - } - -} 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 deleted file mode 100644 index 036f79a..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/SplitJoinRenderer.java +++ /dev/null @@ -1,142 +0,0 @@ -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; - } -} - diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/TransitionPanel.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/TransitionPanel.java deleted file mode 100644 index 094f900..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/TransitionPanel.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.c2kernel.lifecycle.instance.gui.view; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JOptionPane; - -import com.c2kernel.entity.agent.Job; -import com.c2kernel.entity.proxy.ItemProxy; -import com.c2kernel.graph.model.Vertex; -import com.c2kernel.graph.view.SelectedVertexPanel; -import com.c2kernel.gui.MainFrame; -import com.c2kernel.gui.tabs.EntityTabPane; -import com.c2kernel.gui.tabs.execution.Executor; -import com.c2kernel.lifecycle.instance.Activity; -import com.c2kernel.lifecycle.instance.stateMachine.StateMachine; -import com.c2kernel.lifecycle.instance.stateMachine.States; -import com.c2kernel.lifecycle.instance.stateMachine.Transitions; -import com.c2kernel.utils.Logger; - -/************************************************************************** - * - * $Revision: 1.8 $ - * $Date: 2005/09/07 13:46:31 $ - * - * Copyright (C) 2003 CERN - European Organization for Nuclear Research - * All rights reserved. - **************************************************************************/ - -public class TransitionPanel extends SelectedVertexPanel implements ActionListener { - protected Activity mCurrentAct; - protected GridBagLayout gridbag; - protected GridBagConstraints c; - protected Box transBox; - protected JComboBox executors; - protected JComboBox states = new JComboBox(States.states); - protected JCheckBox active = new JCheckBox(); - protected JLabel status = new JLabel(); - protected ItemProxy mItem; - - public TransitionPanel() { - super(); - gridbag = new GridBagLayout(); - setLayout(gridbag); - c = new GridBagConstraints(); - c.gridx=0; c.gridy=0; - c.weightx=1; c.weighty=0; - c.fill=GridBagConstraints.HORIZONTAL; - - JLabel title = new JLabel("Available Transitions"); - title.setFont(EntityTabPane.titleFont); - gridbag.setConstraints(title, c); - add(title); - - c.gridy++; - gridbag.setConstraints(status, c); - add(status); - c.gridy++; - - transBox = Box.createHorizontalBox(); - gridbag.setConstraints(transBox, c); - add(transBox); - - c.weightx=0; c.gridx++; - executors = MainFrame.getExecutionPlugins(); - if (executors.getItemCount() > 1) { - gridbag.setConstraints(executors, c); - add(executors); - } - - - - if (MainFrame.isAdmin) { - c.gridx=0; c.gridy++; - title = new JLabel("State Hacking"); - title.setFont(EntityTabPane.titleFont); - gridbag.setConstraints(title, c); - add(title); - Box hackBox = Box.createHorizontalBox(); - hackBox.add(states); - hackBox.add(Box.createHorizontalGlue()); - hackBox.add(new JLabel("Active:")); - hackBox.add(active); - c.gridy++; - gridbag.setConstraints(hackBox, c); - add(hackBox); - states.addActionListener(this); - active.addActionListener(this); - } - - clear(); - - } - /** - * - */ - @Override - public void select(Vertex vert) { - clear(); - if (!(vert instanceof Activity)) return; - mCurrentAct = (Activity)vert; - states.setSelectedIndex(mCurrentAct.getCurrentState()); - states.setEnabled(true); - active.setSelected(mCurrentAct.active); - active.setEnabled(true); - Logger.msg("Retrieving possible transitions for activity "+mCurrentAct.getName()); - int[] transitions = mCurrentAct.getMachine().possibleTransition(); - if (transitions.length == 0) { - status.setText("None"); - return; - } - for (int i = 0; i < transitions.length; i++) { - String trans= Transitions.getTransitionName(transitions[i]); - if (!(transitions[i]==Transitions.DONE) && !(transitions[i]==Transitions.COMPLETE)) { - String buttonLabel = trans.substring(0,1).toUpperCase()+trans.substring(1); - JButton thisTrans = new JButton(buttonLabel); - thisTrans.setActionCommand("Trans:"+String.valueOf(transitions[i])); - thisTrans.addActionListener(this); - transBox.add(thisTrans); - transBox.add(Box.createHorizontalGlue()); - } - status.setText(transitions.length+" transitions possible."); - } - revalidate(); - } - - @Override - public void actionPerformed(ActionEvent e) { - if (e.getSource() == active && mCurrentAct != null) { - mCurrentAct.active = active.isSelected(); - return; - } - if (e.getSource() == states && mCurrentAct != null) { - mCurrentAct.getMachine().state = states.getSelectedIndex(); - return; - } - if (!e.getActionCommand().startsWith("Trans:")) return; - int transition = Integer.parseInt(e.getActionCommand().substring(6)); - Logger.msg("Requesting transition "+transition); - Job thisJob = new Job(mItem.getSystemKey(), - mCurrentAct.getPath(), - transition, - new StateMachine(mCurrentAct).simulate(transition), - mCurrentAct.getCurrentState(), - mCurrentAct.getName(), - mCurrentAct.getProperties(), - mCurrentAct.getType(), - MainFrame.userAgent.getName()); - try { - Executor selectedExecutor = (Executor)executors.getSelectedItem(); - selectedExecutor.execute(thisJob, status); - } catch (Exception ex) { - String className = ex.getClass().getName(); - className = className.substring(className.lastIndexOf('.')+1); - Logger.error(ex); - JOptionPane.showMessageDialog(null, ex.getMessage(), className, JOptionPane.ERROR_MESSAGE); - } - - } - - @Override - public void clear() { - mCurrentAct = null; - transBox.removeAll(); - status.setText("No activity selected"); - states.setSelectedIndex(0); - states.setEnabled(false); - active.setSelected(false); - active.setEnabled(false); - revalidate(); - } - - - /** - * @param item The mItem to set. - */ - public void setItem(ItemProxy item) { - mItem = item; - } -} diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfDirectedEdgeRenderer.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfDirectedEdgeRenderer.java deleted file mode 100644 index f39d9a6..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfDirectedEdgeRenderer.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.c2kernel.lifecycle.instance.gui.view; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.GeneralPath; - -import com.c2kernel.graph.model.DirectedEdge; -import com.c2kernel.graph.model.GraphPoint; -import com.c2kernel.graph.view.DirectedEdgeRenderer; -import com.c2kernel.lifecycle.instance.Next; -public class WfDirectedEdgeRenderer implements DirectedEdgeRenderer -{ - private GeneralPath mArrowTemplate = new GeneralPath(); - public WfDirectedEdgeRenderer() - { - mArrowTemplate.moveTo(-5, 5); - mArrowTemplate.lineTo(0, 0); - mArrowTemplate.lineTo(5, 5); - } - @Override - public void draw(Graphics2D g2d, DirectedEdge directedEdge) - { - GraphPoint originPoint = directedEdge.getOriginPoint(); - GraphPoint terminusPoint = directedEdge.getTerminusPoint(); - GraphPoint midPoint = new GraphPoint(); - AffineTransform transform = new AffineTransform(); - Shape arrow = null; - Next next = (Next) directedEdge; - String text = (String) next.getProperties().get("Alias"); - g2d.setPaint(Color.black); - if (("Broken +".equals(next.getProperties().get("Type")))) - { - g2d.drawLine(originPoint.x, originPoint.y, originPoint.x, (originPoint.y + terminusPoint.y) / 2); - g2d.drawLine(originPoint.x, (originPoint.y + terminusPoint.y) / 2, terminusPoint.x, (originPoint.y + terminusPoint.y) / 2); - g2d.drawLine(terminusPoint.x, (originPoint.y + terminusPoint.y) / 2, terminusPoint.x, terminusPoint.y); - midPoint.x = (originPoint.x + terminusPoint.x) / 2; - midPoint.y = (originPoint.y + terminusPoint.y) / 2; - transform.translate(midPoint.x, midPoint.y); - transform.rotate( - calcArrowAngle( - originPoint.x, - originPoint.x - terminusPoint.x > -5 - && originPoint.x - terminusPoint.x < 5 ? originPoint.y : (originPoint.y + terminusPoint.y) / 2, - terminusPoint.x, - originPoint.x - terminusPoint.x > -5 - && originPoint.x - terminusPoint.x < 5 ? terminusPoint.y : (originPoint.y + terminusPoint.y) / 2)); - } - else if (("Broken -".equals(next.getProperties().get("Type")))) - { - g2d.drawLine(originPoint.x, originPoint.y, terminusPoint.x, originPoint.y); - g2d.drawLine(terminusPoint.x, originPoint.y, terminusPoint.x, terminusPoint.y); - boolean arrowOnY = !(originPoint.y - terminusPoint.y < 60 && originPoint.y - terminusPoint.y > -60); - midPoint.x = arrowOnY ? terminusPoint.x : (originPoint.x + terminusPoint.x) / 2; - midPoint.y = arrowOnY ? (originPoint.y + terminusPoint.y) / 2 : originPoint.y; - transform.translate(midPoint.x, midPoint.y); - transform.rotate( - calcArrowAngle( - arrowOnY ? terminusPoint.x : originPoint.x, - arrowOnY ? originPoint.y : originPoint.y, - arrowOnY ? terminusPoint.x : terminusPoint.x, - arrowOnY ? terminusPoint.y : originPoint.y)); - } - else if (("Broken |".equals(next.getProperties().get("Type")))) - { - g2d.drawLine(originPoint.x, originPoint.y, originPoint.x, terminusPoint.y); - g2d.drawLine(originPoint.x, terminusPoint.y, terminusPoint.x, terminusPoint.y); - boolean arrowOnY = !(originPoint.y - terminusPoint.y < 60 && originPoint.y - terminusPoint.y > -60); - midPoint.x = arrowOnY ? originPoint.x : (originPoint.x + terminusPoint.x) / 2; - midPoint.y = arrowOnY ? (originPoint.y + terminusPoint.y) / 2 : terminusPoint.y; - transform.translate(midPoint.x, midPoint.y); - transform.rotate( - calcArrowAngle( - arrowOnY ? terminusPoint.x : originPoint.x, - arrowOnY ? originPoint.y : originPoint.y, - arrowOnY ? terminusPoint.x : terminusPoint.x, - arrowOnY ? terminusPoint.y : originPoint.y)); - } - else - { - g2d.drawLine(originPoint.x, originPoint.y, terminusPoint.x, terminusPoint.y); - midPoint.x = originPoint.x + (terminusPoint.x - originPoint.x) / 2; - midPoint.y = originPoint.y + (terminusPoint.y - originPoint.y) / 2; - transform.translate(midPoint.x, midPoint.y); - transform.rotate(calcArrowAngle(originPoint.x, originPoint.y, terminusPoint.x, terminusPoint.y)); - } - arrow = mArrowTemplate.createTransformedShape(transform); - g2d.draw(arrow); - if (text != null) - g2d.drawString(text, midPoint.x + 10, midPoint.y); - } - private static double calcArrowAngle(int originX, int originY, int terminusX, int terminusY) - { - double width = terminusX - originX; - double height = terminusY - originY; - if ((width == 0) && (height > 0)) - { - return Math.PI; - } - if ((width == 0) && (height < 0)) - { - return 0; - } - if ((width > 0) && (height == 0)) - { - return Math.PI / 2.0; - } - if ((width < 0) && (height == 0)) - { - return -1.0 * Math.PI / 2.0; - } - if ((width > 0) && (height > 0)) - { - return Math.PI / 2.0 + Math.atan(Math.abs(height) / Math.abs(width)); - } - if ((width > 0) && (height < 0)) - { - return Math.atan(Math.abs(width) / Math.abs(height)); - } - if ((width < 0) && (height < 0)) - { - return -1.0 * Math.atan(Math.abs(width) / Math.abs(height)); - } - if ((width < 0) && (height > 0)) - { - return -1.0 * (Math.PI / 2.0 + Math.atan(Math.abs(height) / Math.abs(width))); - } - return 0.0; - } -} diff --git a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfVertexRenderer.java b/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfVertexRenderer.java deleted file mode 100644 index 92a1021..0000000 --- a/src/main/java/com/c2kernel/lifecycle/instance/gui/view/WfVertexRenderer.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.c2kernel.lifecycle.instance.gui.view; - -import java.awt.Graphics2D; - -import com.c2kernel.graph.model.Vertex; -import com.c2kernel.graph.view.VertexRenderer; -import com.c2kernel.lifecycle.instance.Activity; -import com.c2kernel.lifecycle.instance.Join; -import com.c2kernel.lifecycle.instance.Split; - -public class WfVertexRenderer implements VertexRenderer -{ - protected ActivityRenderer mActivityRenderer = new ActivityRenderer(); - protected SplitJoinRenderer mSplitJoinRenderer = new SplitJoinRenderer(); - - @Override - public void draw( Graphics2D g2d, Vertex vertex) - { - if ( vertex instanceof Activity ) { mActivityRenderer.draw( g2d, vertex); } - else if ( ( vertex instanceof Split ) || ( vertex instanceof Join ) ) { mSplitJoinRenderer.draw( g2d, vertex ); } - } -} - -- cgit v1.2.3