From 3069ddf81b3cce2303cc1528e5de4708a798841f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 26 Jun 2012 20:57:49 +0200 Subject: More GUI refactoring --- .../lifecycle/desc/CompActDefOutcomeHandler.java | 6 +- .../gui/lifecycle/desc/WfEdgeDefFactory.java | 30 +++++++ .../gui/lifecycle/desc/WfVertexDefFactory.java | 98 ++++++++++++++++++++++ 3 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java (limited to 'src/main/java/com/c2kernel/gui/lifecycle/desc') diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java index 16a03a4..3a4db01 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java @@ -22,9 +22,7 @@ import com.c2kernel.gui.tabs.outcome.OutcomeException; import com.c2kernel.gui.tabs.outcome.OutcomeHandler; import com.c2kernel.gui.tabs.outcome.OutcomeNotInitialisedException; import com.c2kernel.lifecycle.CompositeActivityDef; -import com.c2kernel.lifecycle.gui.model.WfEdgeDefFactory; -import com.c2kernel.lifecycle.gui.model.WfVertexDefFactory; -import com.c2kernel.lifecycle.gui.model.WfVertexDefOutlineCreator; +import com.c2kernel.lifecycle.WfVertexDefOutlineCreator; import com.c2kernel.process.Gateway; import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.FileStringUtility; @@ -110,7 +108,7 @@ public class CompActDefOutcomeHandler setOutcome(newWf); setUpGraphEditor(); } catch (Exception e) { - Logger.exceptionDialog(e); + MainFrame.exceptionDialog(e); } case JFileChooser.CANCEL_OPTION : case JFileChooser.ERROR_OPTION : diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java new file mode 100644 index 0000000..082a4a2 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfEdgeDefFactory.java @@ -0,0 +1,30 @@ +package com.c2kernel.gui.lifecycle.desc; +import com.c2kernel.graph.model.DirectedEdge; +import com.c2kernel.graph.model.EdgeFactory; +import com.c2kernel.graph.model.GraphModelManager; +import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.graph.model.Vertex; +import com.c2kernel.lifecycle.NextDef; +import com.c2kernel.lifecycle.WfVertexDef; +public class WfEdgeDefFactory implements EdgeFactory +{ + @Override + public void create( + GraphModelManager graphModelManager, + Vertex origin, + Vertex terminus, + TypeNameAndConstructionInfo typeNameAndConstructionInfo) + { + if (validCreation(graphModelManager, origin, terminus)) + { + NextDef nextDef = new NextDef((WfVertexDef) origin, (WfVertexDef) terminus); + graphModelManager.getModel().addEdgeAndCreateId(nextDef, origin, terminus); + } + } + private static boolean validCreation(GraphModelManager graphModelManager, Vertex origin, Vertex terminus) + { + DirectedEdge[] connectingEdgesAToB = graphModelManager.getModel().getConnectingEdges(origin.getID(), terminus.getID()); + DirectedEdge[] connectingEdgesBToA = graphModelManager.getModel().getConnectingEdges(terminus.getID(), origin.getID()); + return (origin != terminus) && (connectingEdgesAToB.length == 0) && (connectingEdgesBToA.length == 0); + } +} diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java new file mode 100644 index 0000000..d942e03 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java @@ -0,0 +1,98 @@ +package com.c2kernel.gui.lifecycle.desc; +import java.awt.Point; +import com.c2kernel.gui.MainFrame; +import java.io.Serializable; +import java.util.HashMap; + +import javax.swing.JOptionPane; + +import com.c2kernel.graph.model.GraphModelManager; +import com.c2kernel.graph.model.GraphPoint; +import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.graph.model.VertexFactory; +import com.c2kernel.gui.lifecycle.chooser.ActivityChooser; +import com.c2kernel.gui.lifecycle.chooser.WorkflowDialogue; +import com.c2kernel.lifecycle.ActivityDef; +import com.c2kernel.lifecycle.CompositeActivityDef; +import com.c2kernel.utils.Language; +import com.c2kernel.utils.LocalObjectLoader; +import com.c2kernel.utils.Logger; +import com.c2kernel.utils.Resource; +public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue +{ + protected CompositeActivityDef mCompositeActivityDef = null; + @Override + public void create(GraphModelManager graphModelManager, Point location, TypeNameAndConstructionInfo typeNameAndConstructionInfo) + { + String vertexTypeId = null; + if (mCompositeActivityDef != null && typeNameAndConstructionInfo.mInfo instanceof String) + { + vertexTypeId = (String) typeNameAndConstructionInfo.mInfo; + if (vertexTypeId.equals("Atomic") || vertexTypeId.equals("Composite")) + { + // ask for a name + HashMap mhm = new HashMap(); + mhm.put("P1", vertexTypeId); + mhm.put("P2", location); + //************************************************ + ActivityChooser a = + new ActivityChooser( + Language.translate("Please enter a Type for the new activityDef"), + Language.translate("New " + vertexTypeId + " Activity"), + Resource.findImage("graph/newvertex_large.png").getImage(), + this, + mhm); + a.setVisible(true); + } + else + mCompositeActivityDef.newChild("", vertexTypeId, location); + } + } + @Override + public void loadThisWorkflow(String newName, HashMap hashMap) + { + String vertexTypeId = (String) hashMap.get("P1"); + Point location = (Point) hashMap.get("P2"); + if (newName == null || newName.equals("")) + return; + Logger.debug(5, newName); + ActivityDef act = (ActivityDef) mCompositeActivityDef.search(mCompositeActivityDef.getID() + "/" + newName); + if (act != null) + { + String unicName = newName; + while (unicName == null + || unicName == "" + || mCompositeActivityDef.search(mCompositeActivityDef.getID() + "/" + unicName) != null) + unicName = + (String) JOptionPane.showInputDialog( + null, + Language.translate("Please type a Name"), + Language.translate("New " + vertexTypeId + " Activity"), + JOptionPane.QUESTION_MESSAGE, + Resource.findImage("graph/newvertex_large.png"), + null, + null); + act = (ActivityDef) mCompositeActivityDef.search(mCompositeActivityDef.getID() + "/" + newName); + mCompositeActivityDef.addExistingActivityDef(unicName, act, new GraphPoint(location.x, location.y)); + } + else + { + try + { + act = LocalObjectLoader.getActDef(newName, "last"); + } + catch (Exception ex) + { + MainFrame.exceptionDialog(ex); + return; + } + mCompositeActivityDef.newChild(newName, vertexTypeId, location); + } + } + @Override + public void setCreationContext(Object newContext) + { + if (newContext != null && newContext instanceof CompositeActivityDef) + mCompositeActivityDef = (CompositeActivityDef) newContext; + } +} -- cgit v1.2.3