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 --- src/main/java/com/c2kernel/gui/MainFrame.java | 12 ++ src/main/java/com/c2kernel/gui/MenuBuilder.java | 2 +- .../controller/VertexConstructionController.java | 7 +- .../gui/graph/view/VertexPropertyPanel.java | 4 +- .../gui/lifecycle/chooser/ActivityChooser.java | 194 +++++++++++++++++++++ .../gui/lifecycle/chooser/LDAPEntryChooser.java | 70 ++++++++ .../gui/lifecycle/chooser/LDAPFileChooser.java | 121 +++++++++++++ .../gui/lifecycle/chooser/WorkflowDialogue.java | 20 +++ .../lifecycle/desc/CompActDefOutcomeHandler.java | 6 +- .../gui/lifecycle/desc/WfEdgeDefFactory.java | 30 ++++ .../gui/lifecycle/desc/WfVertexDefFactory.java | 98 +++++++++++ .../gui/lifecycle/instance/WfEdgeFactory.java | 35 ++++ .../gui/lifecycle/instance/WfVertexFactory.java | 92 ++++++++++ .../com/c2kernel/gui/tabs/DomainPathAdmin.java | 2 +- .../java/com/c2kernel/gui/tabs/PropertiesPane.java | 4 +- .../java/com/c2kernel/gui/tabs/ViewpointPane.java | 4 +- .../java/com/c2kernel/gui/tabs/WorkflowPane.java | 6 +- .../gui/tabs/execution/ActivityViewer.java | 8 +- .../tabs/outcome/form/MultiLinePasteAdapter.java | 3 +- .../gui/tabs/outcome/form/field/ComboField.java | 4 +- .../tabs/outcome/form/field/ImageEditField.java | 4 +- 21 files changed, 701 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPEntryChooser.java create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPFileChooser.java create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/chooser/WorkflowDialogue.java 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 create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/instance/WfEdgeFactory.java create mode 100644 src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java (limited to 'src/main/java/com/c2kernel/gui') diff --git a/src/main/java/com/c2kernel/gui/MainFrame.java b/src/main/java/com/c2kernel/gui/MainFrame.java index 46937d0..b516b2f 100644 --- a/src/main/java/com/c2kernel/gui/MainFrame.java +++ b/src/main/java/com/c2kernel/gui/MainFrame.java @@ -19,11 +19,14 @@ import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; +import org.omg.CORBA.UserException; + import com.c2kernel.entity.proxy.AgentProxy; import com.c2kernel.gui.tabs.execution.DefaultExecutor; import com.c2kernel.gui.tabs.execution.Executor; @@ -306,4 +309,13 @@ public class MainFrame extends javax.swing.JFrame { return splitPane; } + static public void exceptionDialog(Exception ex) + { + String className = ex.getClass().getSimpleName(); + String error = ex.getMessage(); + if (ex instanceof UserException) + error = error.substring(error.indexOf(' ') + 1); + JOptionPane.showMessageDialog(null, error, className, JOptionPane.ERROR_MESSAGE); + } + } diff --git a/src/main/java/com/c2kernel/gui/MenuBuilder.java b/src/main/java/com/c2kernel/gui/MenuBuilder.java index 255e7c1..22b7e7b 100644 --- a/src/main/java/com/c2kernel/gui/MenuBuilder.java +++ b/src/main/java/com/c2kernel/gui/MenuBuilder.java @@ -270,7 +270,7 @@ public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+e.getURL().toString()); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } diff --git a/src/main/java/com/c2kernel/gui/graph/controller/VertexConstructionController.java b/src/main/java/com/c2kernel/gui/graph/controller/VertexConstructionController.java index cd6d455..5d5dd5f 100644 --- a/src/main/java/com/c2kernel/gui/graph/controller/VertexConstructionController.java +++ b/src/main/java/com/c2kernel/gui/graph/controller/VertexConstructionController.java @@ -4,6 +4,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import com.c2kernel.graph.model.GraphModelManager; +import com.c2kernel.gui.MainFrame; import com.c2kernel.gui.graph.view.EditorModeListener; import com.c2kernel.gui.graph.view.EditorToolBar; @@ -40,7 +41,11 @@ public class VertexConstructionController extends MouseAdapter implements Editor { if(mCreatingVertices && (mGraphModelManager != null) && (mEditorToolBar != null) && mGraphModelManager.isEditable()) { - mGraphModelManager.getModel().createVertex(me.getPoint(), mEditorToolBar.getSelectedVertexType()); + try { + mGraphModelManager.getModel().createVertex(me.getPoint(), mEditorToolBar.getSelectedVertexType()); + } catch (Exception e) { + MainFrame.exceptionDialog(e); + } mEditorToolBar.enterSelectMode(); } } diff --git a/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java b/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java index c4b6303..4f250a8 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java +++ b/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java @@ -28,9 +28,9 @@ import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.GraphableEdge; import com.c2kernel.graph.model.GraphableVertex; import com.c2kernel.graph.model.Vertex; +import com.c2kernel.gui.MainFrame; import com.c2kernel.gui.tabs.EntityTabPane; import com.c2kernel.utils.Language; -import com.c2kernel.utils.Logger; /************************************************************************** * @@ -244,7 +244,7 @@ public class VertexPropertyPanel extends JPanel implements Observer, TableModelL Object[] initParams = { typeInitVal[newPropType.getSelectedIndex()] }; mPropertyModel.addProperty(newPropName.getText(), init.newInstance(initParams)); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } else if (e.getSource() == delPropButton) { diff --git a/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java b/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java new file mode 100644 index 0000000..5ca7d2e --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java @@ -0,0 +1,194 @@ +/* + * Created on 1 sept. 2003 + * + * To change the template for this generated file go to Window>Preferences>Java>Code Generation>Code and Comments + */ +package com.c2kernel.gui.lifecycle.chooser; + +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Image; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.HashMap; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import com.c2kernel.utils.Language; +import com.c2kernel.utils.Logger; +import com.c2kernel.utils.Resource; + +/** + * @author Developpement + * + * To change the template for this generated type comment go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +public class ActivityChooser extends JFrame +{ + private LDAPFileChooser mLDAPFileChooserActivity = null; + + private JButton mButtonOK = null; + + private JButton mButtonCancel = null; + + private JPanel mJPanelVertical = null; + + private JPanel mJPanelHorizontal = null; + + private String mMessage = "Choose or modify"; + + private WorkflowDialogue mParent = null; + + private JLabel label = null; + + HashMap mhashmap = null; + + public ActivityChooser(String message, String title, Image img, WorkflowDialogue parent, HashMap hashmap) + { + super(title); + mMessage = message; + img = Resource.findImage("graph/newvertex_large.png").getImage(); + setIconImage(img); + mParent = parent; + mhashmap = hashmap; + initialize(); + } + + private JButton getJButtonOK() + { + if (mButtonOK == null) + mButtonOK = new JButton(Language.translate("OK")); + return mButtonOK; + } + + private JButton getJButtonCancel() + { + if (mButtonCancel == null) + mButtonCancel = new JButton(Language.translate("Cancel")); + return mButtonCancel; + } + + private LDAPFileChooser getLDAPFileChooserActivity() + { + if (mLDAPFileChooserActivity == null) + { + try + { + mLDAPFileChooserActivity = new LDAPFileChooser(LDAPFileChooser.ACTIVITY_CHOOSER); + mLDAPFileChooserActivity.setName("LDAPFileChooserRouting"); + mLDAPFileChooserActivity.setEditable(false); + //mLDAPFileChooserActivity.setBounds(125, 13, 400, 19); + } catch (Exception mExc) + { + Logger.error(mExc); + } + } + return mLDAPFileChooserActivity; + } + + private void initialize() + { + getJButtonOK().addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + Logger.debug(5, "mLDAPFileChooserActivity.getEntryName()" + mLDAPFileChooserActivity.getEntryName()); + setCursor(new Cursor(Cursor.WAIT_CURSOR)); + mParent.loadThisWorkflow(mLDAPFileChooserActivity.getEntryName(), mhashmap); + setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + close(); + } + }); + getJButtonCancel().addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + close(); + } + }); + //getContentPane().add(getJPanelVertical()); + Container contentPane = getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); + contentPane.add(getJPanelVertical()); + contentPane.add(getJPanelHorizontal()); + contentPane.add(Box.createGlue()); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation((d.width - getWidth()) / 2, (d.height - getHeight()) / 2); + setResizable(true); + pack(); + setSize(new Dimension(getWidth(), getJButtonCancel().getHeight() + getLDAPFileChooserActivity().getHeight() + label.getHeight() + 100)); + setVisible(true); + setVisible(true); + } + + private void close() + { + mParent = null; + this.setEnabled(false); + this.setVisible(false); + } + + private JPanel getJPanelVertical() + { + if (mJPanelVertical == null) + { + try + { + Logger.debug(8, "Panel button"); + mJPanelVertical = new JPanel(); + mJPanelVertical.setName("JPanelV"); + mJPanelVertical.setLayout(new BoxLayout(mJPanelVertical, BoxLayout.Y_AXIS)); + label = new JLabel(mMessage); + JPanel labelP = new JPanel(); + labelP.setLayout(new BoxLayout(labelP, BoxLayout.X_AXIS)); + labelP.add(label); + labelP.add(Box.createGlue()); + mJPanelVertical.add(labelP); + mJPanelVertical.add(Box.createRigidArea(new Dimension(0, 5))); + mJPanelVertical.add(getLDAPFileChooserActivity(), getLDAPFileChooserActivity().getName()); + //mJPanelVertical.add(Box.createRigidArea(new Dimension(0, + // 10))); + mJPanelVertical.add(Box.createGlue()); + mJPanelVertical.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + mJPanelVertical.setVisible(true); + } catch (java.lang.Throwable mExc) + { + //handleException(mExc); + } + } + return mJPanelVertical; + } + + private JPanel getJPanelHorizontal() + { + if (mJPanelHorizontal == null) + { + try + { + Logger.debug(8, "Panel button"); + mJPanelHorizontal = new JPanel(); + mJPanelHorizontal.setName("JPanelH"); + mJPanelHorizontal.setLayout(new BoxLayout(mJPanelHorizontal, BoxLayout.X_AXIS)); + mJPanelHorizontal.add(getJButtonOK(), getJButtonOK().getName()); + mJPanelHorizontal.add(Box.createRigidArea(new Dimension(10, 0))); + mJPanelHorizontal.add(getJButtonCancel(), getJButtonCancel().getName()); + mJPanelHorizontal.setVisible(true); + } catch (java.lang.Throwable mExc) + { + //handleException(mExc); + } + } + return mJPanelHorizontal; + } +} \ No newline at end of file diff --git a/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPEntryChooser.java b/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPEntryChooser.java new file mode 100644 index 0000000..8a2c0cc --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPEntryChooser.java @@ -0,0 +1,70 @@ +package com.c2kernel.gui.lifecycle.chooser; +/** + * @version $Revision: 1.2 $ $Date: 2005/12/01 14:23:15 $ + * @author $Author: abranson $ + */ + +import java.awt.Dimension; +import com.c2kernel.gui.MainFrame; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; + +import javax.swing.JComboBox; + +import com.c2kernel.lookup.DomainPath; +import com.c2kernel.process.Gateway; + +public class LDAPEntryChooser extends JComboBox +{ + + DomainPath mDomainPath = null; + ArrayList allItems = new ArrayList(); + + public LDAPEntryChooser(DomainPath domPath, boolean editable) + { + super(); + setEditable(editable); + mDomainPath = domPath; + initialise(); + } + + private void initialise() + { + try + { + Enumeration children = Gateway.getLDAPLookup().searchAliases(mDomainPath); + while (children.hasMoreElements()) + { + DomainPath domPath = (DomainPath)children.nextElement(); + allItems.add(domPath.getName()); + } + } + catch (Exception ex) + { + MainFrame.exceptionDialog(ex); + } + + Collections.sort(allItems); + addItem(""); + for (String element : allItems) { + addItem(element); + } + + } + + public void reload() + { + removeAllItems(); + initialise(); + } + + @Override + public synchronized Dimension getSize() + { + if ("1".equals(Gateway.getProperty("ResizeCombo"))) + return new Dimension(super.getSize().width<400?400:super.getSize().width,super.getSize().height); + return super.getSize(); + } + +} diff --git a/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPFileChooser.java b/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPFileChooser.java new file mode 100644 index 0000000..b0d28a0 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/chooser/LDAPFileChooser.java @@ -0,0 +1,121 @@ +package com.c2kernel.gui.lifecycle.chooser; +import java.awt.Dimension; +import java.awt.event.ItemListener; +import java.util.HashMap; + +import javax.swing.BoxLayout; +import javax.swing.JPanel; + +import com.c2kernel.lookup.DomainPath; +import com.c2kernel.persistency.ClusterStorage; +import com.c2kernel.utils.Logger; + +//import fr.agilium.gui.tabs.wfPropertiesViewer.JPanelTabbedProperties; +/** + * @version $Revision: 1.2 $ $Date: 2005/06/27 15:16:12 $ + * @author $Author: abranson $ + */ + +public class LDAPFileChooser extends JPanel +{ + public static String SCRIPT_CHOOSER = "Script"; + public static String SCHEMA_CHOOSER = "Schema"; + public static String ACTIVITY_CHOOSER = "Activity"; + private String chooserMode = null; + private HashMap mHashList = null; + public LDAPEntryChooser mLec; + private boolean mEditable = false; + DomainPath domainPath; + String itemQuery = null; + boolean showversion = true; + + public LDAPFileChooser(String choose) + { + super(); + chooserMode = choose; + initialise(); + } + + private void initialise() + { + if (chooserMode.equals(SCHEMA_CHOOSER)) + { + itemQuery = ClusterStorage.VIEWPOINT + "/Schema/all"; + domainPath = new DomainPath("/desc/OutcomeDesc/"); + } + else if (chooserMode.equals(SCRIPT_CHOOSER)) + { + itemQuery = ClusterStorage.VIEWPOINT + "/Script/all"; + domainPath = new DomainPath("/desc/Script/"); + } + else if (chooserMode.equals(ACTIVITY_CHOOSER)) + { + domainPath = new DomainPath("/desc/ActivityDesc/"); + showversion = false; + } + else + return; + mLec = new LDAPEntryChooser(domainPath, mEditable); + + mLec.setPreferredSize(new Dimension(220, 19)); + mLec.setMaximumSize(new Dimension(3000, 22)); + mLec.setMinimumSize(new Dimension(50, 19)); + //mLec.getRenderer().getListCellRendererComponent(); + + BoxLayout blyt = new BoxLayout(this, BoxLayout.X_AXIS); + setLayout(blyt); + add(mLec); + mLec.setVisible(true); + this.validate(); + this.setVisible(true); + + } + + public String getEntryName() + { + return (String) mLec.getSelectedItem(); + } + + public void addItemListener(ItemListener il) + { + mLec.addItemListener(il); + } + public void setSelectedItem(String name, String version) + { + Logger.debug(5,"setSelectedItem " + name + " " + version); + if (name == null||name.equals("-1")) name=""; + mLec.setSelectedItem(name); + } + + public void reload() + { + mLec.reload(); + } + + public void removeAllItems() + { + mLec.removeAllItems(); + } + + /** + * @param b + */ + public void setEditable(boolean b) + { + mEditable = b; + mLec.setEditable(b); + } + + @Override + public void updateUI() + { + if (mLec!=null) mLec.updateUI(); + super.updateUI(); + } + + @Override + public void setEnabled(boolean enabled) + { + mLec.setEnabled(enabled); + } +} diff --git a/src/main/java/com/c2kernel/gui/lifecycle/chooser/WorkflowDialogue.java b/src/main/java/com/c2kernel/gui/lifecycle/chooser/WorkflowDialogue.java new file mode 100644 index 0000000..30a98a2 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/chooser/WorkflowDialogue.java @@ -0,0 +1,20 @@ +/* + * Created on 2 sept. 2003 + * + * To change the template for this generated file go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +package com.c2kernel.gui.lifecycle.chooser; + +import java.util.HashMap; + +/** + * @author Developpement + * + * To change the template for this generated type comment go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +public interface WorkflowDialogue +{ + public void loadThisWorkflow(String name, HashMap hashMap); +} 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; + } +} diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfEdgeFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfEdgeFactory.java new file mode 100644 index 0000000..06f7462 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfEdgeFactory.java @@ -0,0 +1,35 @@ +package com.c2kernel.gui.lifecycle.instance; + +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.instance.WfVertex; + +public class WfEdgeFactory implements EdgeFactory +{ + @Override + public void create + ( + GraphModelManager graphModelManager, + Vertex origin, + Vertex terminus, + TypeNameAndConstructionInfo typeNameAndConstructionInfo + ) + { + if ( validCreation( graphModelManager, origin, terminus ) ) + ((WfVertex)origin).addNext((WfVertex)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/instance/WfVertexFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java new file mode 100644 index 0000000..fa6b427 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java @@ -0,0 +1,92 @@ +package com.c2kernel.gui.lifecycle.instance; +import java.awt.Point; +import com.c2kernel.gui.lifecycle.chooser.ActivityChooser; +import com.c2kernel.gui.lifecycle.chooser.WorkflowDialogue; +import java.io.Serializable; +import java.util.HashMap; + +import javax.swing.JOptionPane; + +import com.c2kernel.graph.model.GraphModelManager; +import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.graph.model.VertexFactory; +import com.c2kernel.lifecycle.ActivityDef; +import com.c2kernel.lifecycle.instance.Activity; +import com.c2kernel.lifecycle.instance.CompositeActivity; +import com.c2kernel.utils.Language; +import com.c2kernel.utils.LocalObjectLoader; +import com.c2kernel.utils.Resource; +public class WfVertexFactory implements VertexFactory, WorkflowDialogue +{ + protected CompositeActivity mRootAct = null; + @Override + public void create(GraphModelManager graphModelManager, Point location, TypeNameAndConstructionInfo typeNameAndConstructionInfo) + { + String vertexTypeId = null; + if (mRootAct != null && typeNameAndConstructionInfo.mInfo instanceof String) + { + vertexTypeId = (String) typeNameAndConstructionInfo.mInfo; + if (vertexTypeId.equals("Atomic") || vertexTypeId.equals("Composite")) + { + 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 activity"), + Language.translate("New " + vertexTypeId + " Activity"), + Resource.findImage("graph/newvertex_large.png").getImage(), + this, + mhm); + a.setVisible(true); + } + else + mRootAct.newChild(vertexTypeId, location); + } + } + @Override + public void setCreationContext(Object newContext) + { + if (newContext != null && newContext instanceof CompositeActivity) + mRootAct = (CompositeActivity) newContext; + } + @Override + public void loadThisWorkflow(String newName, HashMap hashMap) + { + String vertexTypeId = (String) hashMap.get("P1"); + Point location = (Point) hashMap.get("P2"); + if (newName == null) + return; + + + String unicName = newName; + while (mRootAct.search(mRootAct.getPath() + "/" + unicName) != null) + { + unicName = + (String) JOptionPane.showInputDialog( + null, + Language.translate("Activity name not unique. Please give another."), + Language.translate("New " + vertexTypeId + " Activity"), + JOptionPane.QUESTION_MESSAGE, + Resource.findImage("graph/newvertex_large.png"), + null, + null); + if (newName.equals("")) + return; + } + Activity act = null; + try + { + ActivityDef actD = LocalObjectLoader.getActDef(newName, "last"); + act = (Activity)actD.instantiate(unicName); + } + catch (Exception e) + { + } + if (act == null) + mRootAct.newChild(unicName, vertexTypeId, location); + else + mRootAct.newExistingChild(act, unicName, location); + } +} diff --git a/src/main/java/com/c2kernel/gui/tabs/DomainPathAdmin.java b/src/main/java/com/c2kernel/gui/tabs/DomainPathAdmin.java index 408a32c..340ec63 100644 --- a/src/main/java/com/c2kernel/gui/tabs/DomainPathAdmin.java +++ b/src/main/java/com/c2kernel/gui/tabs/DomainPathAdmin.java @@ -101,7 +101,7 @@ public void actionPerformed(ActionEvent e) { try { MainFrame.userAgent.execute(entity, action+"DomainPath", params); } catch (Exception e) { - Logger.exceptionDialog(e); + MainFrame.exceptionDialog(e); return false; } return true; diff --git a/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java b/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java index 4a78581..e5d1dcc 100644 --- a/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/PropertiesPane.java @@ -141,7 +141,7 @@ public class PropertiesPane extends EntityTabPane implements EntityProxyObserver try { ((ItemProxy)sourceEntity.getEntity()).setProperty(MainFrame.userAgent, e.getActionCommand(), newVal); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } } @@ -187,7 +187,7 @@ public class PropertiesPane extends EntityTabPane implements EntityProxyObserver try { MainFrame.userAgent.execute((ItemProxy)sourceEntity.getEntity(), predefStep, params); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } diff --git a/src/main/java/com/c2kernel/gui/tabs/ViewpointPane.java b/src/main/java/com/c2kernel/gui/tabs/ViewpointPane.java index 52c9cb3..6f15bfc 100644 --- a/src/main/java/com/c2kernel/gui/tabs/ViewpointPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/ViewpointPane.java @@ -344,7 +344,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action } catch (Exception ex) { Logger.error(ex); - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } @@ -376,7 +376,7 @@ public class ViewpointPane extends EntityTabPane implements ItemListener, Action MainFrame.userAgent.execute((ItemProxy)sourceEntity.getEntity(), "AddC2KObject", predefParams); } catch (Exception e) { Logger.error(e); - Logger.exceptionDialog(e); + MainFrame.exceptionDialog(e); } } diff --git a/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java b/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java index 1ae4d43..5c3b1ed 100644 --- a/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java @@ -21,13 +21,13 @@ import com.c2kernel.gui.graph.view.EditorPanel; import com.c2kernel.gui.graph.view.VertexPropertyPanel; import com.c2kernel.gui.lifecycle.instance.TransitionPanel; import com.c2kernel.gui.lifecycle.instance.WfDirectedEdgeRenderer; +import com.c2kernel.gui.lifecycle.instance.WfEdgeFactory; import com.c2kernel.gui.lifecycle.instance.WfGraphPanel; +import com.c2kernel.gui.lifecycle.instance.WfVertexFactory; import com.c2kernel.gui.lifecycle.instance.WfVertexRenderer; import com.c2kernel.lifecycle.instance.CompositeActivity; +import com.c2kernel.lifecycle.instance.WfVertexOutlineCreator; import com.c2kernel.lifecycle.instance.Workflow; -import com.c2kernel.lifecycle.instance.gui.model.WfEdgeFactory; -import com.c2kernel.lifecycle.instance.gui.model.WfVertexFactory; -import com.c2kernel.lifecycle.instance.gui.model.WfVertexOutlineCreator; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.process.Gateway; import com.c2kernel.utils.CastorXMLUtility; diff --git a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java index 707f311..34118a3 100644 --- a/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java +++ b/src/main/java/com/c2kernel/gui/tabs/execution/ActivityViewer.java @@ -209,7 +209,7 @@ public class ActivityViewer extends JPanel implements Runnable { } } catch (Exception ex) { Logger.error(ex); - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } }); @@ -230,7 +230,7 @@ public class ActivityViewer extends JPanel implements Runnable { } } catch (Exception ex) { Logger.error(ex); - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } }); @@ -260,7 +260,7 @@ public class ActivityViewer extends JPanel implements Runnable { executingJob = thisJob; new Thread(this).start(); } catch (OutcomeException ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } @@ -278,7 +278,7 @@ public class ActivityViewer extends JPanel implements Runnable { } catch (Exception e) { Logger.error(e); status.setText(Language.translate("Error during execution")); - Logger.exceptionDialog(e); + MainFrame.exceptionDialog(e); } enableAllButtons(true); } diff --git a/src/main/java/com/c2kernel/gui/tabs/outcome/form/MultiLinePasteAdapter.java b/src/main/java/com/c2kernel/gui/tabs/outcome/form/MultiLinePasteAdapter.java index 3c5da27..13112ac 100644 --- a/src/main/java/com/c2kernel/gui/tabs/outcome/form/MultiLinePasteAdapter.java +++ b/src/main/java/com/c2kernel/gui/tabs/outcome/form/MultiLinePasteAdapter.java @@ -6,6 +6,7 @@ import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; +import com.c2kernel.gui.MainFrame; import java.util.StringTokenizer; import javax.swing.JComponent; @@ -133,7 +134,7 @@ public class MultiLinePasteAdapter implements ActionListener { } } } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } diff --git a/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ComboField.java b/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ComboField.java index 2c4ce05..3be29f5 100644 --- a/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ComboField.java +++ b/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ComboField.java @@ -1,6 +1,7 @@ package com.c2kernel.gui.tabs.outcome.form.field; import java.awt.Component; +import com.c2kernel.gui.MainFrame; import java.util.Enumeration; import java.util.StringTokenizer; @@ -16,7 +17,6 @@ import org.exolab.castor.xml.schema.SimpleType; import com.c2kernel.gui.tabs.outcome.form.StructuralException; import com.c2kernel.scripting.Script; -import com.c2kernel.utils.Logger; /******************************************************************************* * @@ -117,7 +117,7 @@ public class ComboField extends StringEditField { lovscript.setInputParamValue("LOV", vals); lovscript.execute(); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } diff --git a/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ImageEditField.java b/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ImageEditField.java index 716a073..8eb9368 100644 --- a/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ImageEditField.java +++ b/src/main/java/com/c2kernel/gui/tabs/outcome/form/field/ImageEditField.java @@ -16,7 +16,7 @@ import javax.swing.JLabel; import org.apache.xerces.impl.dv.util.Base64; -import com.c2kernel.utils.Logger; +import com.c2kernel.gui.MainFrame; public class ImageEditField extends StringEditField { @@ -70,7 +70,7 @@ public class ImageEditField extends StringEditField { imageLabel.setIcon(newImage); encodedImage = Base64.encode(bArray); } catch (Exception ex) { - Logger.exceptionDialog(ex); + MainFrame.exceptionDialog(ex); } } } -- cgit v1.2.3