From d6f6211306708d22ddcbe4e350f906c63220d7a4 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 29 Jun 2012 16:21:42 +0200 Subject: More graph gui components. Selection moved from GraphModel to GraphPanel --- pom.xml | 13 +- .../java/com/c2kernel/gui/DynamicTreeBuilder.java | 4 +- src/main/java/com/c2kernel/gui/EntityDetails.java | 3 +- src/main/java/com/c2kernel/gui/EntityFinder.java | 5 +- src/main/java/com/c2kernel/gui/LoginBox.java | 3 +- src/main/java/com/c2kernel/gui/MainFrame.java | 7 +- src/main/java/com/c2kernel/gui/MenuBuilder.java | 2 +- .../gui/collection/AggregationMemberRenderer.java | 8 +- .../gui/graph/controller/DeletionController.java | 16 +- .../controller/EdgeConstructionController.java | 3 +- .../controller/MultiSelectionDragController.java | 51 +-- .../graph/controller/StartVertexController.java | 12 +- .../controller/VertexConstructionController.java | 3 +- .../com/c2kernel/gui/graph/view/EditorPanel.java | 4 +- .../com/c2kernel/gui/graph/view/EditorToolBar.java | 17 +- .../com/c2kernel/gui/graph/view/GraphPanel.java | 367 ++++++++++++++++++--- .../gui/graph/view/VertexPropertyPanel.java | 2 +- .../gui/lifecycle/chooser/ActivityChooser.java | 4 +- .../lifecycle/desc/CompActDefOutcomeHandler.java | 6 +- .../gui/lifecycle/desc/WfVertexDefFactory.java | 15 +- .../gui/lifecycle/instance/TransitionPanel.java | 2 +- .../gui/lifecycle/instance/WfVertexFactory.java | 16 +- .../java/com/c2kernel/gui/tabs/EntityTabPane.java | 8 +- .../java/com/c2kernel/gui/tabs/WorkflowPane.java | 14 +- .../gui/tabs/collection/AggregationView.java | 6 +- src/main/java/com/c2kernel/gui/tree/Node.java | 8 +- src/main/module.xml | 12 - src/main/resources/module.xml | 12 + 28 files changed, 464 insertions(+), 159 deletions(-) delete mode 100644 src/main/module.xml create mode 100644 src/main/resources/module.xml diff --git a/pom.xml b/pom.xml index fd32eb9..97a4654 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cristal cristal-gui - 2.3.1 + 2.3.2-SNAPSHOT cristal-gui CRISTAL Kernel GUI @@ -17,14 +17,14 @@ cristal cristal-kernel - 2.3.1 + 2.3.2-SNAPSHOT - - - src/main + + + src/main/resources META-INF/cristal module.xml @@ -33,6 +33,9 @@ src/main/resources com/c2kernel/gui/resources + + module.xml + diff --git a/src/main/java/com/c2kernel/gui/DynamicTreeBuilder.java b/src/main/java/com/c2kernel/gui/DynamicTreeBuilder.java index 006284a..59ff8f7 100644 --- a/src/main/java/com/c2kernel/gui/DynamicTreeBuilder.java +++ b/src/main/java/com/c2kernel/gui/DynamicTreeBuilder.java @@ -32,8 +32,8 @@ public class DynamicTreeBuilder implements NodeSubscriber { public static final short PARTIAL = 2; public static final short FINISHED = 3; private final DefaultMutableTreeNode loading; - private static ImageIcon loadIcon = Resource.findImage("loading.gif"); - private static ImageIcon pauseIcon = Resource.findImage("reload.gif"); + private static ImageIcon loadIcon = ImageLoader.findImage("loading.gif"); + private static ImageIcon pauseIcon = ImageLoader.findImage("reload.gif"); /** * The newly created DynamicTreeBuilder records its parent node - the one for which it will build child nodes for. diff --git a/src/main/java/com/c2kernel/gui/EntityDetails.java b/src/main/java/com/c2kernel/gui/EntityDetails.java index 56e6edb..93a0f1f 100644 --- a/src/main/java/com/c2kernel/gui/EntityDetails.java +++ b/src/main/java/com/c2kernel/gui/EntityDetails.java @@ -20,7 +20,6 @@ import com.c2kernel.gui.tabs.EntityTabPane; import com.c2kernel.gui.tree.NodeEntity; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /** * The tab pane for each viewed item @@ -134,7 +133,7 @@ public class EntityDetails extends JPanel implements ChangeListener, Runnable { c.anchor = GridBagConstraints.NORTH; c.ipadx = 5; c.ipady = 5; - current = new JLabel(Resource.findImage("typeicons/"+myEntity.getIconName()+"_32.png")); + current = new JLabel(ImageLoader.findImage("typeicons/"+myEntity.getIconName()+"_32.png")); gridbag.setConstraints(current, c); titlePanel.add(current); // Place Name/ID Label diff --git a/src/main/java/com/c2kernel/gui/EntityFinder.java b/src/main/java/com/c2kernel/gui/EntityFinder.java index 0d53545..71903eb 100644 --- a/src/main/java/com/c2kernel/gui/EntityFinder.java +++ b/src/main/java/com/c2kernel/gui/EntityFinder.java @@ -25,7 +25,6 @@ import com.c2kernel.lookup.Path; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; public class EntityFinder extends Box implements Runnable { JTextField inputField; @@ -43,8 +42,8 @@ public class EntityFinder extends Box implements Runnable { static { try { - mNextIcon =Resource.findImage("next.png"); - mFindIcon =Resource.findImage("find.png"); + mNextIcon =ImageLoader.findImage("next.png"); + mFindIcon =ImageLoader.findImage("find.png"); } catch (Exception e) { diff --git a/src/main/java/com/c2kernel/gui/LoginBox.java b/src/main/java/com/c2kernel/gui/LoginBox.java index aee469f..5fe9acc 100644 --- a/src/main/java/com/c2kernel/gui/LoginBox.java +++ b/src/main/java/com/c2kernel/gui/LoginBox.java @@ -32,7 +32,6 @@ import com.c2kernel.entity.proxy.AgentProxy; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; //import com.borland.jbcl.layout.*; @@ -72,7 +71,7 @@ public class LoginBox extends JFrame { javax.swing.ImageIcon imageHolder,MainFrame mainFrame) { String iconFile = Gateway.getProperty("AppIcon"); if (iconFile != null) - this.setIconImage(Resource.findImage(iconFile).getImage()); + this.setIconImage(ImageLoader.findImage(iconFile).getImage()); this.errorLabel.setText(bottomMessage); if (errorMessage.compareTo("")!=0) this.errorLabel.setText(errorMessage); mainFrameFather=mainFrame; diff --git a/src/main/java/com/c2kernel/gui/MainFrame.java b/src/main/java/com/c2kernel/gui/MainFrame.java index b516b2f..577db7b 100644 --- a/src/main/java/com/c2kernel/gui/MainFrame.java +++ b/src/main/java/com/c2kernel/gui/MainFrame.java @@ -36,7 +36,6 @@ import com.c2kernel.lookup.DomainPath; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /** * @version $Revision: 1.83 $ $Date: 2005/09/12 14:56:19 $ * @author $Author: abranson $ @@ -111,7 +110,7 @@ public class MainFrame extends javax.swing.JFrame { pictureUrl = new URL(logoURL); imageHolder = new ImageIcon(pictureUrl); } catch (java.net.MalformedURLException m) { - imageHolder = Resource.findImage(logoURL); + imageHolder = ImageLoader.findImage(logoURL); } LoginBox login = @@ -136,10 +135,10 @@ public class MainFrame extends javax.swing.JFrame { String iconFile = Gateway.getProperty("AppIcon"); if (iconFile != null) - this.setIconImage(Resource.findImage(iconFile).getImage()); + this.setIconImage(ImageLoader.findImage(iconFile).getImage()); //preload loading image - Resource.findImage("loading.gif"); + ImageLoader.findImage("loading.gif"); // close listener addWindowListener(new java.awt.event.WindowAdapter() { @Override diff --git a/src/main/java/com/c2kernel/gui/MenuBuilder.java b/src/main/java/com/c2kernel/gui/MenuBuilder.java index 22b7e7b..b5c41fe 100644 --- a/src/main/java/com/c2kernel/gui/MenuBuilder.java +++ b/src/main/java/com/c2kernel/gui/MenuBuilder.java @@ -258,7 +258,7 @@ public class MenuBuilder extends JMenuBar implements ActionListener, ItemListene myPane.setMessageType(JOptionPane.INFORMATION_MESSAGE); JDialog dialog = myPane.createDialog(null, Language.translate("About")); dialog.setResizable(false); - Icon icon = Resource.findImage(Gateway.getProperty("banner")); + Icon icon = ImageLoader.findImage(Gateway.getProperty("banner")); myPane.setIcon(icon); dialog.pack(); dialog.setVisible(true); diff --git a/src/main/java/com/c2kernel/gui/collection/AggregationMemberRenderer.java b/src/main/java/com/c2kernel/gui/collection/AggregationMemberRenderer.java index 8c4b80f..db1426e 100644 --- a/src/main/java/com/c2kernel/gui/collection/AggregationMemberRenderer.java +++ b/src/main/java/com/c2kernel/gui/collection/AggregationMemberRenderer.java @@ -2,6 +2,8 @@ package com.c2kernel.gui.collection; import java.awt.FontMetrics; import java.awt.Graphics2D; +import java.awt.Image; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.collection.Aggregation; import com.c2kernel.collection.AggregationMember; @@ -49,7 +51,7 @@ public class AggregationMemberRenderer implements VertexRenderer g2d.drawImage ( - memberPair.getImage(), + getImage(memberPair), centre.x - 8, centre.y - 8, null @@ -122,4 +124,8 @@ public class AggregationMemberRenderer implements VertexRenderer return bottomY; } + + public Image getImage(AggregationMember am) { + return ImageLoader.findImage("typeicons/"+am.getProperties().get("Type")+"_16.png").getImage(); + } } diff --git a/src/main/java/com/c2kernel/gui/graph/controller/DeletionController.java b/src/main/java/com/c2kernel/gui/graph/controller/DeletionController.java index 4a8fb47..d83a588 100644 --- a/src/main/java/com/c2kernel/gui/graph/controller/DeletionController.java +++ b/src/main/java/com/c2kernel/gui/graph/controller/DeletionController.java @@ -9,10 +9,11 @@ import java.util.Observer; import javax.swing.JButton; -import com.c2kernel.graph.event.SelectionChangedEvent; import com.c2kernel.graph.model.DirectedEdge; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.Vertex; +import com.c2kernel.gui.graph.event.SelectionChangedEvent; +import com.c2kernel.gui.graph.view.GraphPanel; // The deletion controller is responsible for deleting the present @@ -29,6 +30,7 @@ import com.c2kernel.graph.model.Vertex; public class DeletionController extends KeyAdapter implements Observer, ActionListener { private GraphModelManager mGraphModelManager = null; + private GraphPanel mGraphPanel = null; private JButton mDeleteButton = null; @@ -37,6 +39,11 @@ public class DeletionController extends KeyAdapter implements Observer, ActionLi mGraphModelManager = graphModelManager; mGraphModelManager.addObserver(this); } + + public void setGraphPanel(GraphPanel graphPanel) + { + mGraphPanel = graphPanel; + } public void setDeleteButton(JButton deleteButton) @@ -63,8 +70,7 @@ public class DeletionController extends KeyAdapter implements Observer, ActionLi selectedEdge = event.mSelection.mEdge; selectedVertices = event.mSelection.mVertices; - - mDeleteButton.setEnabled((selectedEdge != null) || (selectedVertices != null)); + mDeleteButton.setEnabled(selectedEdge != null || selectedVertices != null); } } @@ -75,7 +81,7 @@ public class DeletionController extends KeyAdapter implements Observer, ActionLi { if(e.getKeyCode() == KeyEvent.VK_DELETE && mGraphModelManager.isEditable()) { - mGraphModelManager.getModel().deleteSelection(); + mGraphPanel.deleteSelection(); } } @@ -86,7 +92,7 @@ public class DeletionController extends KeyAdapter implements Observer, ActionLi { if(mGraphModelManager != null && mGraphModelManager.isEditable()) { - mGraphModelManager.getModel().deleteSelection(); + mGraphPanel.deleteSelection(); } } } diff --git a/src/main/java/com/c2kernel/gui/graph/controller/EdgeConstructionController.java b/src/main/java/com/c2kernel/gui/graph/controller/EdgeConstructionController.java index f76d314..b200991 100644 --- a/src/main/java/com/c2kernel/gui/graph/controller/EdgeConstructionController.java +++ b/src/main/java/com/c2kernel/gui/graph/controller/EdgeConstructionController.java @@ -66,7 +66,8 @@ public class EdgeConstructionController extends MouseAdapter implements EditorMo { if(mGraphModelManager != null) { - mGraphModelManager.getModel().setNewEdgeEndPoint((Point)data); + Point mouse = (Point)data; + mGraphModelManager.getModel().setNewEdgeEndPoint(new GraphPoint(mouse.x, mouse.y)); } } }; diff --git a/src/main/java/com/c2kernel/gui/graph/controller/MultiSelectionDragController.java b/src/main/java/com/c2kernel/gui/graph/controller/MultiSelectionDragController.java index 2d77996..498f3d9 100644 --- a/src/main/java/com/c2kernel/gui/graph/controller/MultiSelectionDragController.java +++ b/src/main/java/com/c2kernel/gui/graph/controller/MultiSelectionDragController.java @@ -8,20 +8,20 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import com.c2kernel.graph.model.DirectedEdge; -import com.c2kernel.graph.model.ElasticBand; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.GraphPoint; import com.c2kernel.graph.model.GraphableVertex; -import com.c2kernel.graph.model.Selection; import com.c2kernel.graph.model.Vertex; import com.c2kernel.gui.graph.view.EditorModeListener; +import com.c2kernel.gui.graph.view.GraphPanel; public class MultiSelectionDragController extends MouseAdapter implements EditorModeListener, KeyListener { - private class ResizeInf + + private class ResizeInf { public int mMousePressedX = 0; public int mMousePressedY = 0; @@ -49,6 +49,7 @@ implements EditorModeListener, KeyListener } protected GraphModelManager mGraphModelManager = null; + private GraphPanel mGraphPanel = null; /**********/ @@ -97,7 +98,7 @@ implements EditorModeListener, KeyListener mResizeInf.mMousePressedX = mousePoint.x; mResizeInf.mMousePressedY = mousePoint.y; - mResizeInf.mSelectedVertex = mGraphModelManager.getModel().getSelection().mVertices[0]; + mResizeInf.mSelectedVertex = mGraphPanel.getSelection().mVertices[0]; mResizeInf.mOldOutline = mResizeInf.mSelectedVertex.getOutlinePoints(); centre = mResizeInf.mSelectedVertex.getCentrePoint(); mResizeInf.mCentreX = centre.x; @@ -192,7 +193,7 @@ implements EditorModeListener, KeyListener { Selection selection = new Selection((DirectedEdge)data, null, 0, 0, 0, 0); - mGraphModelManager.getModel().setSelection(selection); + mGraphPanel.setSelection(selection); } }; @@ -211,7 +212,7 @@ implements EditorModeListener, KeyListener centrePoint.x, centrePoint.y); - mGraphModelManager.getModel().setSelection(selection); + mGraphPanel.setSelection(selection); mDispForSelection = new DispForSelection(); mDispForSelection.mXDisp = vertexAndDisp.mXDisp; mDispForSelection.mYDisp = vertexAndDisp.mYDisp; @@ -236,13 +237,13 @@ implements EditorModeListener, KeyListener { Vertex vertex = (Vertex)data; - if(mGraphModelManager.getModel().inSelection(vertex)) + if(mGraphPanel.inSelection(vertex)) { - mGraphModelManager.getModel().removeFromSelection(vertex); + mGraphPanel.removeFromSelection(vertex); } else { - mGraphModelManager.getModel().addToSelection(vertex); + mGraphPanel.addToSelection(vertex); } } }; @@ -253,7 +254,7 @@ implements EditorModeListener, KeyListener @Override public void doIt(Object data) { - mGraphModelManager.getModel().selectAll(); + mGraphPanel.selectAll(); } }; @@ -263,9 +264,10 @@ implements EditorModeListener, KeyListener @Override public void doIt(Object data) { - Point fixedCorner = (Point)data; + Point mouse = (Point)data; + GraphPoint fixedCorner = new GraphPoint(mouse.x, mouse.y); - mGraphModelManager.getModel().setElasticBand(new ElasticBand(fixedCorner, fixedCorner)); + mGraphPanel.setElasticBand(new ElasticBand(fixedCorner, fixedCorner)); } }; @@ -279,7 +281,7 @@ implements EditorModeListener, KeyListener int topLeftX = mousePoint.x - mDispForSelection.mXDisp; int topLeftY = mousePoint.y - mDispForSelection.mYDisp; if (mGraphModelManager.isEditable()) { - mGraphModelManager.getModel().moveAbsoluteSelection(topLeftX, topLeftY); + mGraphPanel.moveAbsoluteSelection(topLeftX, topLeftY); } } }; @@ -290,7 +292,8 @@ implements EditorModeListener, KeyListener @Override public void doIt(Object data) { - mGraphModelManager.getModel().resizeElasticBand((Point)data); + Point mouse = (Point)data; + mGraphPanel.resizeElasticBand(new GraphPoint(mouse.x, mouse.y)); } }; @@ -300,7 +303,7 @@ implements EditorModeListener, KeyListener @Override public void doIt(Object data) { - mGraphModelManager.getModel().selectContentsOfElasticBand(); + mGraphPanel.selectContentsOfElasticBand(); } }; @@ -344,8 +347,7 @@ implements EditorModeListener, KeyListener private Integer mState = kWaiting; - - /**************************/ + /**************************/ /* Event processing logic */ /**************************/ @@ -377,11 +379,12 @@ implements EditorModeListener, KeyListener /* Public interface */ /********************/ - public void setGraphModelManager(GraphModelManager graphModelManager) - { - mGraphModelManager = graphModelManager; - } + public MultiSelectionDragController(GraphModelManager graphModelManager, + GraphPanel graphPanel) { + mGraphModelManager = graphModelManager; + mGraphPanel = graphPanel; + } @Override public void editorModeChanged(String idOfNewMode) @@ -448,9 +451,9 @@ implements EditorModeListener, KeyListener } else if(vertex != null) { - if(mGraphModelManager.getModel().inSelection(vertex)) + if(mGraphPanel.inSelection(vertex)) { - selection = mGraphModelManager.getModel().getSelection(); + selection = mGraphPanel.getSelection(); dispForSelection = new DispForSelection(); dispForSelection.mXDisp = mousePoint.x - selection.mTopLeftX; dispForSelection.mYDisp = mousePoint.y - selection.mTopLeftY; @@ -486,7 +489,7 @@ implements EditorModeListener, KeyListener private boolean onResizePad(GraphPoint mouseGPoint) { - Selection selection = mGraphModelManager.getModel().getSelection(); + Selection selection = mGraphPanel.getSelection(); GraphPoint vertexCentre = null; int bottomRightX = 0; int bottomRightY = 0; diff --git a/src/main/java/com/c2kernel/gui/graph/controller/StartVertexController.java b/src/main/java/com/c2kernel/gui/graph/controller/StartVertexController.java index e973132..41a53b3 100644 --- a/src/main/java/com/c2kernel/gui/graph/controller/StartVertexController.java +++ b/src/main/java/com/c2kernel/gui/graph/controller/StartVertexController.java @@ -7,9 +7,9 @@ import java.util.Observer; import javax.swing.JButton; -import com.c2kernel.graph.event.SelectionChangedEvent; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.Vertex; +import com.c2kernel.gui.graph.event.SelectionChangedEvent; // The start vertex controller is responsible for selecting @@ -28,6 +28,7 @@ public class StartVertexController implements Observer, ActionListener { private GraphModelManager mGraphModelManager = null; private JButton mStartButton = null; + private Vertex selectedVertex = null; public void setGraphModelManager(GraphModelManager graphModelManager) @@ -56,13 +57,14 @@ public class StartVertexController implements Observer, ActionListener event = (SelectionChangedEvent)arg; selectedVertices = event.mSelection.mVertices; - if(selectedVertices == null) + if(selectedVertices == null || selectedVertices.length != 1) { mStartButton.setEnabled(false); } else if (mGraphModelManager.isEditable()) { - mStartButton.setEnabled(selectedVertices.length == 1); + mStartButton.setEnabled(true); + selectedVertex = selectedVertices[0]; } } } @@ -71,9 +73,9 @@ public class StartVertexController implements Observer, ActionListener @Override public void actionPerformed(ActionEvent ae) { - if(mGraphModelManager != null) + if(selectedVertex != null) { - mGraphModelManager.getModel().setSelectedVertexToBeStart(); + mGraphModelManager.getModel().setStartVertexId(selectedVertex.getID()); } } } 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 5d5dd5f..849675e 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.graph.model.GraphPoint; import com.c2kernel.gui.MainFrame; import com.c2kernel.gui.graph.view.EditorModeListener; import com.c2kernel.gui.graph.view.EditorToolBar; @@ -42,7 +43,7 @@ public class VertexConstructionController extends MouseAdapter implements Editor if(mCreatingVertices && (mGraphModelManager != null) && (mEditorToolBar != null) && mGraphModelManager.isEditable()) { try { - mGraphModelManager.getModel().createVertex(me.getPoint(), mEditorToolBar.getSelectedVertexType()); + mGraphModelManager.getModel().createVertex(new GraphPoint(me.getPoint().x, me.getPoint().y), mEditorToolBar.getSelectedVertexType()); } catch (Exception e) { MainFrame.exceptionDialog(e); } diff --git a/src/main/java/com/c2kernel/gui/graph/view/EditorPanel.java b/src/main/java/com/c2kernel/gui/graph/view/EditorPanel.java index 1feb691..a27482d 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/EditorPanel.java +++ b/src/main/java/com/c2kernel/gui/graph/view/EditorPanel.java @@ -23,7 +23,7 @@ public class EditorPanel extends JPanel public GraphPanel mGraphPanel = null; protected JScrollPane mGraphScrollPane = null; // Graph Controllers - protected MultiSelectionDragController mMultiSelectionDragController = new MultiSelectionDragController(); + protected MultiSelectionDragController mMultiSelectionDragController; protected VertexConstructionController mVertexConstructionController = new VertexConstructionController(); protected EdgeConstructionController mEdgeConstructionController = new EdgeConstructionController(); protected AutoScrollController mAutoScrollController = new AutoScrollController(); @@ -56,7 +56,7 @@ public class EditorPanel extends JPanel mGraphModelManager.addObserver(mGraphPanel); // The multi selection drag controller modifies the graph model // and listens to the graph panel and editor tool bar - mMultiSelectionDragController.setGraphModelManager(mGraphModelManager); + mMultiSelectionDragController = new MultiSelectionDragController(mGraphModelManager, mGraphPanel); mGraphPanel.addMouseListener(mMultiSelectionDragController); mGraphPanel.addMouseMotionListener(mMultiSelectionDragController); mGraphPanel.addKeyListener(mMultiSelectionDragController); diff --git a/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java b/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java index deeaebb..b60c1ba 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java +++ b/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java @@ -27,11 +27,11 @@ import javax.swing.JToggleButton; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.TypeNameAndConstructionInfo; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.gui.graph.controller.DeletionController; import com.c2kernel.gui.graph.controller.StartVertexController; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /** * Tool bar with mode toggle buttons, start and delete buttons, and the possibility to add other arbitrary buttons at constructions time. */ @@ -62,15 +62,15 @@ public class EditorToolBar extends Box implements Printable protected JComboBox mEdgeTypeBox = new JComboBox(); // Mode buttons protected ButtonGroup mModeButtonGroup = new ButtonGroup(); - protected JToggleButton mVertexModeButton = new JToggleButton(Resource.findImage("graph/newvertex.png")); - protected JToggleButton mSelectModeButton = new JToggleButton(Resource.findImage("graph/selection.gif")); - protected JToggleButton mEdgeModeButton = new JToggleButton(Resource.findImage("graph/edge.png")); + protected JToggleButton mVertexModeButton = new JToggleButton(ImageLoader.findImage("graph/newvertex.png")); + protected JToggleButton mSelectModeButton = new JToggleButton(ImageLoader.findImage("graph/selection.gif")); + protected JToggleButton mEdgeModeButton = new JToggleButton(ImageLoader.findImage("graph/edge.png")); // Normal buttons protected JButton[] mOtherButtons = null; - protected JButton mStartButton = new JButton(Resource.findImage("graph/start.png")); - protected JButton mDeleteButton = new JButton(Resource.findImage("graph/delete.png")); - protected JButton mPrintButton = new JButton(Resource.findImage("graph/print.png")); - protected JButton mCopyButton = new JButton(Resource.findImage("graph/copy.png")); + protected JButton mStartButton = new JButton(ImageLoader.findImage("graph/start.png")); + protected JButton mDeleteButton = new JButton(ImageLoader.findImage("graph/delete.png")); + protected JButton mPrintButton = new JButton(ImageLoader.findImage("graph/print.png")); + protected JButton mCopyButton = new JButton(ImageLoader.findImage("graph/copy.png")); // Controllers protected StartVertexController mStartVertexController = new StartVertexController(); protected DeletionController mDeletionController = new DeletionController(); @@ -309,6 +309,7 @@ public class EditorToolBar extends Box implements Printable public void setGraphPanel(GraphPanel graphPanel) { graphPanel.addKeyListener(mDeletionController); + mDeletionController.setGraphPanel(graphPanel); } public void addEditorModeListener(EditorModeListener listener) { diff --git a/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java b/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java index fa7ed6f..a234d65 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java +++ b/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java @@ -6,33 +6,46 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Paint; -import java.awt.Point; +import java.awt.Polygon; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import com.c2kernel.gui.graph.event.ElasticBandResizedEvent; +import com.c2kernel.gui.graph.event.ElasticBandSetEvent; +import com.c2kernel.gui.graph.event.SelectionMovedEvent; import java.util.Observable; import java.util.Observer; +import java.util.Vector; import javax.swing.JPanel; import com.c2kernel.graph.event.EntireModelChangedEvent; import com.c2kernel.graph.event.GraphModelResizedEvent; import com.c2kernel.graph.model.DirectedEdge; -import com.c2kernel.graph.model.ElasticBand; import com.c2kernel.graph.model.GraphModelManager; import com.c2kernel.graph.model.GraphPoint; -import com.c2kernel.graph.model.Selection; import com.c2kernel.graph.model.Vertex; -import com.c2kernel.utils.Resource; +import com.c2kernel.gui.ImageLoader; +import com.c2kernel.gui.graph.controller.ElasticBand; +import com.c2kernel.gui.graph.controller.Selection; +import com.c2kernel.gui.graph.event.SelectionChangedEvent; public class GraphPanel extends JPanel implements Observer { + // There should always be a Selection object + protected Selection mSelection = new Selection(null, null, 0, 0, 0, 0); + private ElasticBand mElasticBand = null; protected final Paint mSelectionPaint = Color.black; protected final Paint mStartPaint = Color.green; - protected final Image mResizePadImg = Resource.findImage("graph/resizepad.gif").getImage(); + protected final Image mResizePadImg = ImageLoader.findImage("graph/resizepad.gif").getImage(); protected final BasicStroke mDashed = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 5.0f }, 0.0f); protected GraphModelManager mGraphModelManager = null; protected VertexRenderer mVertexRenderer = null; protected DirectedEdgeRenderer mDirectedEdgeRenderer = null; + private final SelectionChangedEvent mSelectionChangedEvent = new SelectionChangedEvent(); + private final SelectionMovedEvent mSelectionMovedEvent = new SelectionMovedEvent(); + private final ElasticBandResizedEvent mElasticBandResizedEvent = new ElasticBandResizedEvent(); + private final ElasticBandSetEvent mElasticBandSetEvent = new ElasticBandSetEvent(); + public GraphPanel(DirectedEdgeRenderer eRenderer, VertexRenderer vRenderer) { mVertexRenderer = vRenderer; @@ -55,6 +68,10 @@ public class GraphPanel extends JPanel implements Observer @Override public void update(Observable o, Object arg) { + if (arg instanceof EntireModelChangedEvent) + { + mSelection = new Selection(null, null, 0, 0, 0, 0); + } if (arg instanceof GraphModelResizedEvent || arg instanceof EntireModelChangedEvent) { setPreferredSize(new Dimension(mGraphModelManager.getModel().getWidth(), mGraphModelManager.getModel().getHeight())); @@ -62,6 +79,282 @@ public class GraphPanel extends JPanel implements Observer } repaint(); } + // Updates the top left and bottom right corners of the selection + private void updateSelectionCorners() { + Vertex vertex = mSelection.mVertices[0]; + GraphPoint centrePoint = vertex.getCentrePoint(); + if (centrePoint == null) return; + mSelection.mTopLeftX = centrePoint.x; + mSelection.mTopLeftY = centrePoint.y; + mSelection.mBottomRightX = centrePoint.x; + mSelection.mBottomRightY = centrePoint.y; + for (Vertex mVertice : mSelection.mVertices) { + vertex = mVertice; + centrePoint = vertex.getCentrePoint(); + if (centrePoint.x < mSelection.mTopLeftX) { + mSelection.mTopLeftX = centrePoint.x; + } + if (centrePoint.y < mSelection.mTopLeftY) { + mSelection.mTopLeftY = centrePoint.y; + } + if (centrePoint.x > mSelection.mBottomRightX) { + mSelection.mBottomRightX = centrePoint.x; + } + if (centrePoint.y > mSelection.mBottomRightY) { + mSelection.mBottomRightY = centrePoint.y; + } + } + } + + public void deleteSelection() { + int i = 0; + if (mSelection.mVertices != null) { + for (i = 0; i < mSelection.mVertices.length; i++) { + mGraphModelManager.getModel().removeVertex(mSelection.mVertices[i]); + } + } + else if (mSelection.mEdge != null) { + mGraphModelManager.getModel().removeEdge(mSelection.mEdge); + } + // Make sure nothing is selected + if ((mSelection.mEdge != null) || (mSelection.mVertices != null)) { + mSelection.mEdge = null; + mSelection.mVertices = null; + mSelectionChangedEvent.mSelection = mSelection; + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + } + + public void selectAll() { + Vertex[] allVertices = mGraphModelManager.getModel().getVertices(); + if (allVertices.length > 0) { + mSelection.mEdge = null; + mSelection.mVertices = allVertices; + updateSelectionCorners(); + mSelectionChangedEvent.mSelection = mSelection; + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + } + + public void selectContentsOfElasticBand() { + if (mElasticBand == null) return; + Polygon bandPolygon = new Polygon(); + Vertex[] allVertices = mGraphModelManager.getModel().getVertices(); + GraphPoint centrePoint = null; + Vector verticesInside = new Vector(10, 10); + int i = 0; + // Create a polygon representing the elastic band + bandPolygon.addPoint(mElasticBand.mFixedCorner.x, mElasticBand.mFixedCorner.y); + bandPolygon.addPoint(mElasticBand.mMovingCorner.x, mElasticBand.mFixedCorner.y); + bandPolygon.addPoint(mElasticBand.mMovingCorner.x, mElasticBand.mMovingCorner.y); + bandPolygon.addPoint(mElasticBand.mFixedCorner.x, mElasticBand.mMovingCorner.y); + // Create a vector of all of the vertices within the elastic band polygon + for (i = 0; i < allVertices.length; i++) { + centrePoint = allVertices[i].getCentrePoint(); + if (bandPolygon.contains(centrePoint.x, centrePoint.y)) { + verticesInside.add(allVertices[i]); + } + } + + // Select the vertices found within the elastic band polygon + if (verticesInside.size() == 0) { + mSelection.mTopLeftX = 0; + mSelection.mTopLeftY = 0; + mSelection.mBottomRightX = 0; + mSelection.mBottomRightY = 0; + mSelection.mEdge = null; + // select parent vertex if we have selected the 'paper' + if (mGraphModelManager.getModel().getContainingVertex() != null) + verticesInside.add(mGraphModelManager.getModel().getContainingVertex()); + else + mSelection.mVertices = null; + } + + if (verticesInside.size() > 0) { + mSelection.mEdge = null; + mSelection.mVertices = new Vertex[verticesInside.size()]; + for (i = 0; i < verticesInside.size(); i++) { + mSelection.mVertices[i] = verticesInside.elementAt(i); + } + updateSelectionCorners(); + } + // Remove the elastic band + mElasticBand = null; + mSelectionChangedEvent.mSelection = mSelection; + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + + + + public void setSelectedVertexToBeStart() { + if (mSelection.mVertices != null) { + if (mSelection.mVertices.length == 1) { + mGraphModelManager.getModel().setStartVertexId(mSelection.mVertices[0].getID()); + } + } + } + + public Selection getSelection() { + return mSelection; + } + + public void setElasticBand(ElasticBand elasticBand) { + mElasticBand = elasticBand; + mGraphModelManager.notifyObservers(mElasticBandSetEvent); + } + + public void resizeElasticBand(GraphPoint movingCorner) { + mElasticBand.mMovingCorner = movingCorner; + mGraphModelManager.notifyObservers(mElasticBandResizedEvent); + } + + public boolean inSelection(Vertex v) { + int i = 0; + if (mSelection.mVertices == null) { + return false; + } + else { + for (i = 0; i < mSelection.mVertices.length; i++) { + if (mSelection.mVertices[i] == v) { + return true; + } + } + return false; + } + } + + // Only use this method to remove one vertex. + // If you wish to remove more, it would + // propably be more efficient to create a + // new Selection object. + public void removeFromSelection(Vertex v) { + Vertex[] vertices = null; + int i = 0; + int j = 0; + if (mSelection.mVertices.length == 1) { + mSelection.mVertices = null; + mSelection.mTopLeftX = 0; + mSelection.mTopLeftY = 0; + mSelection.mBottomRightX = 0; + mSelection.mBottomRightY = 0; + } + else { + vertices = new Vertex[mSelection.mVertices.length - 1]; + for (i = 0; i < mSelection.mVertices.length; i++) { + if (mSelection.mVertices[i] != v) { + vertices[j] = mSelection.mVertices[i]; + j++; + } + } + mSelection.mVertices = vertices; + updateSelectionCorners(); + } + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + + // Only use this method to add one vertex. + // If you wish to add more, it would + // propably be more efficient to create a + // new Selection object. + public void addToSelection(Vertex v) { + Vertex[] vertices = new Vertex[mSelection.mVertices.length + 1]; + GraphPoint centrePoint = null; + int i = 0; + if (mSelection.mVertices == null) { + centrePoint = v.getCentrePoint(); + mSelection.mVertices = new Vertex[] { v }; + mSelection.mTopLeftX = centrePoint.x; + mSelection.mTopLeftY = centrePoint.y; + mSelection.mBottomRightX = centrePoint.x; + mSelection.mBottomRightY = centrePoint.y; + } + else { + for (i = 0; i < mSelection.mVertices.length; i++) { + vertices[i] = mSelection.mVertices[i]; + } + vertices[mSelection.mVertices.length] = v; + mSelection.mVertices = vertices; + updateSelectionCorners(); + } + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + public void moveAbsoluteSelection(int newTopLeftX, int newTopLeftY) { + int selectionHeight = mSelection.mBottomRightY - mSelection.mTopLeftY; + int selectionWidth = mSelection.mBottomRightX - mSelection.mTopLeftX; + int bottomRightX = newTopLeftX + selectionWidth; + int bottomRightY = newTopLeftY + selectionHeight; + GraphPoint oldCentrePoint = null; + GraphPoint newCentrePoint = null; + int distXFromTopLeft = 0; + int distYFromTopLeft = 0; + int i = 0; + // Make sure the selection does not move + // outside the boundaries of the graph + if (newTopLeftX < 0) newTopLeftX = 0; + if (newTopLeftY < 0) newTopLeftY = 0; + int graphWidth = mGraphModelManager.getModel().getWidth(); + if (bottomRightX > graphWidth) newTopLeftX = graphWidth - selectionWidth; + int graphHeight = mGraphModelManager.getModel().getHeight(); + if (bottomRightY > graphHeight) newTopLeftY = graphHeight - selectionHeight; + // For each selected vertex + for (i = 0; i < mSelection.mVertices.length; i++) { + // Calculate the new centre point of the vertex. + // First calculate the distance of the centre point + // from the old top left hand corner of the selection, + // then move the point to the new top left hand + // corner plus the distance. + oldCentrePoint = mSelection.mVertices[i].getCentrePoint(); + distXFromTopLeft = oldCentrePoint.x - mSelection.mTopLeftX; + distYFromTopLeft = oldCentrePoint.y - mSelection.mTopLeftY; + newCentrePoint = new GraphPoint(newTopLeftX + distXFromTopLeft, newTopLeftY + distYFromTopLeft); + mGraphModelManager.getModel().moveAbsoluteVertex(mSelection.mVertices[i], newCentrePoint); + } + // Update the top left and bottom right corners + mSelection.mTopLeftX = newTopLeftX; + mSelection.mTopLeftY = newTopLeftY; + mSelection.mBottomRightX = newTopLeftX + selectionWidth; + mSelection.mBottomRightY = newTopLeftY + selectionHeight; + mGraphModelManager.notifyObservers(mSelectionMovedEvent); + } + public void setSelection(Selection s) { + // If the there is a change + if (selectionChanged(s)) { + mSelection = s; + mSelectionChangedEvent.mSelection = s; + mGraphModelManager.notifyObservers(mSelectionChangedEvent); + } + } + + private boolean selectionChanged(Selection newValue) { + int i = 0; + if (mSelection.mEdge != newValue.mEdge) { + return true; + } + if (mSelection.mVertices == null) { + if (newValue.mVertices == null) { + return false; + } + else { + return true; + } + } + else { + if (newValue.mVertices == null) { + return true; + } + else { + if (mSelection.mVertices.length != newValue.mVertices.length) { + return true; + } + for (i = 0; i < mSelection.mVertices.length; i++) { + if (mSelection.mVertices[i] != newValue.mVertices[i]) { + return true; + } + } + return false; + } + } + } @Override public void paintComponent(Graphics g) { @@ -69,11 +362,9 @@ public class GraphPanel extends JPanel implements Observer DirectedEdge[] edges = null; Vertex[] vertices = null; Vertex startVertex = null; - Selection selection = null; - ElasticBand elasticBand = null; Vertex newEdgeOriginVertex = null; GraphPoint newEdgeOriginPoint = null; - Point newEdgeEndPoint = null; + GraphPoint newEdgeEndPoint = null; GraphPoint vertexCentre = null; int i = 0; super.paintComponent(g); @@ -100,63 +391,59 @@ public class GraphPanel extends JPanel implements Observer { drawVertexHighlight(g2d, startVertex, 1); } - // Get the present selection - selection = mGraphModelManager.getModel().getSelection(); g2d.setPaint(mSelectionPaint); // Draw the outline of the selected // vertices if there are any - if (selection.mVertices != null) + if (mSelection.mVertices != null) { g2d.setStroke(mDashed); - for (i = 0; i < selection.mVertices.length; i++) + for (i = 0; i < mSelection.mVertices.length; i++) { - if (selection.mVertices[i] != mGraphModelManager.getModel().getContainingVertex()) - drawVertexHighlight(g2d, selection.mVertices[i], 5); + if (mSelection.mVertices[i] != mGraphModelManager.getModel().getContainingVertex()) + drawVertexHighlight(g2d, mSelection.mVertices[i], 5); } // Draw the resize pads if there is one and only one vertex selected - if (selection.mVertices.length == 1 && - selection.mVertices[0] != mGraphModelManager.getModel().getContainingVertex()) + if (mSelection.mVertices.length == 1 && + mSelection.mVertices[0] != mGraphModelManager.getModel().getContainingVertex()) { - vertexCentre = selection.mVertices[0].getCentrePoint(); + vertexCentre = mSelection.mVertices[0].getCentrePoint(); g2d.drawImage( mResizePadImg, - vertexCentre.x + selection.mVertices[0].getWidth() / 2, - vertexCentre.y + selection.mVertices[0].getHeight() / 2, + vertexCentre.x + mSelection.mVertices[0].getWidth() / 2, + vertexCentre.y + mSelection.mVertices[0].getHeight() / 2, this); } } // Draw the outline of the selected // edge if there is one - if (selection.mEdge != null) + if (mSelection.mEdge != null) { - drawEdgeHighlight(g2d, selection.mEdge); + drawEdgeHighlight(g2d, mSelection.mEdge); } - // Get the elastic band - elasticBand = mGraphModelManager.getModel().getElasticBand(); // Draw the elastic band if there // is one - if (elasticBand != null) + if (mElasticBand != null) { g2d.drawLine( - elasticBand.mFixedCorner.x, - elasticBand.mFixedCorner.y, - elasticBand.mMovingCorner.x, - elasticBand.mFixedCorner.y); + mElasticBand.mFixedCorner.x, + mElasticBand.mFixedCorner.y, + mElasticBand.mMovingCorner.x, + mElasticBand.mFixedCorner.y); g2d.drawLine( - elasticBand.mMovingCorner.x, - elasticBand.mFixedCorner.y, - elasticBand.mMovingCorner.x, - elasticBand.mMovingCorner.y); + mElasticBand.mMovingCorner.x, + mElasticBand.mFixedCorner.y, + mElasticBand.mMovingCorner.x, + mElasticBand.mMovingCorner.y); g2d.drawLine( - elasticBand.mMovingCorner.x, - elasticBand.mMovingCorner.y, - elasticBand.mFixedCorner.x, - elasticBand.mMovingCorner.y); + mElasticBand.mMovingCorner.x, + mElasticBand.mMovingCorner.y, + mElasticBand.mFixedCorner.x, + mElasticBand.mMovingCorner.y); g2d.drawLine( - elasticBand.mFixedCorner.x, - elasticBand.mMovingCorner.y, - elasticBand.mFixedCorner.x, - elasticBand.mFixedCorner.y); + mElasticBand.mFixedCorner.x, + mElasticBand.mMovingCorner.y, + mElasticBand.mFixedCorner.x, + mElasticBand.mFixedCorner.y); } // Draw the new edge under construction if there is one newEdgeEndPoint = mGraphModelManager.getModel().getNewEdgeEndPoint(); 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 4f250a8..121d0c1 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java +++ b/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java @@ -22,13 +22,13 @@ import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import com.c2kernel.graph.event.EntireModelChangedEvent; -import com.c2kernel.graph.event.SelectionChangedEvent; import com.c2kernel.graph.model.DirectedEdge; 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.graph.event.SelectionChangedEvent; import com.c2kernel.gui.tabs.EntityTabPane; import com.c2kernel.utils.Language; diff --git a/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java b/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java index 5ca7d2e..05d5e86 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java @@ -22,9 +22,9 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /** * @author Developpement @@ -56,7 +56,7 @@ public class ActivityChooser extends JFrame { super(title); mMessage = message; - img = Resource.findImage("graph/newvertex_large.png").getImage(); + img = ImageLoader.findImage("graph/newvertex_large.png").getImage(); setIconImage(img); mParent = parent; mhashmap = 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 3a4db01..3c2f165 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java @@ -4,6 +4,7 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import com.c2kernel.gui.ImageLoader; import java.io.File; import javax.swing.JButton; @@ -27,7 +28,6 @@ import com.c2kernel.process.Gateway; import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.FileStringUtility; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /************************************************************************** * @@ -42,8 +42,8 @@ public class CompActDefOutcomeHandler extends JPanel implements OutcomeHandler { - protected JButton mLoadButton = new JButton(Resource.findImage("graph/load.png")); - protected JButton mLayoutButton = new JButton(Resource.findImage("graph/autolayout.png")); + protected JButton mLoadButton = new JButton(ImageLoader.findImage("graph/load.png")); + protected JButton mLayoutButton = new JButton(ImageLoader.findImage("graph/autolayout.png")); protected JButton[] mOtherToolBarButtons = { mLayoutButton, mLoadButton }; protected CompositeActivityDef mCompActDef = null; diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java index d942e03..2bf058f 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java @@ -1,6 +1,4 @@ package com.c2kernel.gui.lifecycle.desc; -import java.awt.Point; -import com.c2kernel.gui.MainFrame; import java.io.Serializable; import java.util.HashMap; @@ -10,6 +8,8 @@ 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.ImageLoader; +import com.c2kernel.gui.MainFrame; import com.c2kernel.gui.lifecycle.chooser.ActivityChooser; import com.c2kernel.gui.lifecycle.chooser.WorkflowDialogue; import com.c2kernel.lifecycle.ActivityDef; @@ -17,12 +17,11 @@ 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) + public void create(GraphModelManager graphModelManager, GraphPoint location, TypeNameAndConstructionInfo typeNameAndConstructionInfo) { String vertexTypeId = null; if (mCompositeActivityDef != null && typeNameAndConstructionInfo.mInfo instanceof String) @@ -39,7 +38,7 @@ public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue new ActivityChooser( Language.translate("Please enter a Type for the new activityDef"), Language.translate("New " + vertexTypeId + " Activity"), - Resource.findImage("graph/newvertex_large.png").getImage(), + ImageLoader.findImage("graph/newvertex_large.png").getImage(), this, mhm); a.setVisible(true); @@ -52,7 +51,7 @@ public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue public void loadThisWorkflow(String newName, HashMap hashMap) { String vertexTypeId = (String) hashMap.get("P1"); - Point location = (Point) hashMap.get("P2"); + GraphPoint location = (GraphPoint) hashMap.get("P2"); if (newName == null || newName.equals("")) return; Logger.debug(5, newName); @@ -69,11 +68,11 @@ public class WfVertexDefFactory implements VertexFactory, WorkflowDialogue Language.translate("Please type a Name"), Language.translate("New " + vertexTypeId + " Activity"), JOptionPane.QUESTION_MESSAGE, - Resource.findImage("graph/newvertex_large.png"), + ImageLoader.findImage("graph/newvertex_large.png"), null, null); act = (ActivityDef) mCompositeActivityDef.search(mCompositeActivityDef.getID() + "/" + newName); - mCompositeActivityDef.addExistingActivityDef(unicName, act, new GraphPoint(location.x, location.y)); + mCompositeActivityDef.addExistingActivityDef(unicName, act, location); } else { diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java index 1314f2f..b1406c5 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java @@ -110,7 +110,7 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen states.setEnabled(true); active.setSelected(mCurrentAct.active); active.setEnabled(true); - Logger.msg("Retrieving possible transitions for activity "+mCurrentAct.getName()); + Logger.msg(1, "Retrieving possible transitions for activity "+mCurrentAct.getName()); int[] transitions = mCurrentAct.getMachine().possibleTransition(); if (transitions.length == 0) { status.setText("None"); diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java index fa6b427..8a02d6a 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java @@ -1,26 +1,26 @@ 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.GraphPoint; import com.c2kernel.graph.model.TypeNameAndConstructionInfo; import com.c2kernel.graph.model.VertexFactory; +import com.c2kernel.gui.ImageLoader; +import com.c2kernel.gui.lifecycle.chooser.ActivityChooser; +import com.c2kernel.gui.lifecycle.chooser.WorkflowDialogue; 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) + public void create(GraphModelManager graphModelManager, GraphPoint location, TypeNameAndConstructionInfo typeNameAndConstructionInfo) { String vertexTypeId = null; if (mRootAct != null && typeNameAndConstructionInfo.mInfo instanceof String) @@ -36,7 +36,7 @@ public class WfVertexFactory implements VertexFactory, WorkflowDialogue new ActivityChooser( Language.translate("Please enter a Type for the new activity"), Language.translate("New " + vertexTypeId + " Activity"), - Resource.findImage("graph/newvertex_large.png").getImage(), + ImageLoader.findImage("graph/newvertex_large.png").getImage(), this, mhm); a.setVisible(true); @@ -55,7 +55,7 @@ public class WfVertexFactory implements VertexFactory, WorkflowDialogue public void loadThisWorkflow(String newName, HashMap hashMap) { String vertexTypeId = (String) hashMap.get("P1"); - Point location = (Point) hashMap.get("P2"); + GraphPoint location = (GraphPoint) hashMap.get("P2"); if (newName == null) return; @@ -69,7 +69,7 @@ public class WfVertexFactory implements VertexFactory, WorkflowDialogue Language.translate("Activity name not unique. Please give another."), Language.translate("New " + vertexTypeId + " Activity"), JOptionPane.QUESTION_MESSAGE, - Resource.findImage("graph/newvertex_large.png"), + ImageLoader.findImage("graph/newvertex_large.png"), null, null); if (newName.equals("")) diff --git a/src/main/java/com/c2kernel/gui/tabs/EntityTabPane.java b/src/main/java/com/c2kernel/gui/tabs/EntityTabPane.java index 9a30d59..2af96ff 100644 --- a/src/main/java/com/c2kernel/gui/tabs/EntityTabPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/EntityTabPane.java @@ -24,6 +24,7 @@ import javax.swing.SwingConstants; import com.c2kernel.entity.proxy.EntityProxyObserver; import com.c2kernel.gui.EntityDetails; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.gui.MainFrame; import com.c2kernel.gui.tabs.outcome.OutcomeHandler; import com.c2kernel.gui.tabs.outcome.form.OutcomePanel; @@ -31,7 +32,6 @@ import com.c2kernel.gui.tree.NodeEntity; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; /** * Generic item details tabbed pane. * @@ -53,7 +53,7 @@ public class EntityTabPane extends JPanel implements Runnable { protected Box titleBox; static { try { - mReloadIcon = Resource.findImage("reload.gif"); + mReloadIcon = ImageLoader.findImage("reload.gif"); } catch (Exception e) { Logger.warning("Couldn't load images: " + e); } @@ -96,7 +96,7 @@ public class EntityTabPane extends JPanel implements Runnable { if (titleText == null) titleText = tabName; if (titleIcon == null) - titleIcon = Resource.findImage("info.png"); + titleIcon = ImageLoader.findImage("info.png"); JLabel title = new JLabel(titleText, titleIcon, SwingConstants.LEFT); title.setFont(titleFont); title.setForeground(headingColor); @@ -113,7 +113,7 @@ public class EntityTabPane extends JPanel implements Runnable { }); String defaultStartTab = MainFrame.getPref("DefaultStartTab", "Properties"); JToggleButton defaultStart = - new JToggleButton(Resource.findImage("graph/start.png")); + new JToggleButton(ImageLoader.findImage("graph/start.png")); defaultStart.setMargin(new Insets(0, 0, 0, 0)); defaultStart.setToolTipText( Language.translate("Select this tab to be the default one opened when you double click an item")); diff --git a/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java b/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java index 5c3b1ed..40d07de 100644 --- a/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java +++ b/src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java @@ -14,9 +14,10 @@ import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.entity.proxy.MemberSubscription; import com.c2kernel.graph.layout.DefaultGraphLayoutGenerator; import com.c2kernel.graph.model.EdgeFactory; -import com.c2kernel.graph.model.Selection; import com.c2kernel.graph.model.VertexFactory; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.gui.MainFrame; +import com.c2kernel.gui.graph.controller.Selection; import com.c2kernel.gui.graph.view.EditorPanel; import com.c2kernel.gui.graph.view.VertexPropertyPanel; import com.c2kernel.gui.lifecycle.instance.TransitionPanel; @@ -34,17 +35,16 @@ import com.c2kernel.utils.CastorXMLUtility; import com.c2kernel.utils.FileStringUtility; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; public class WorkflowPane extends EntityTabPane implements EntityProxyObserver { // Only for the purpose of loading and saving protected Workflow mWorkflow = null; boolean init = false; TransitionPanel transPanel; - protected JButton mLoadButton = new JButton(Resource.findImage("graph/load.png")); - protected JButton mSaveButton = new JButton(Resource.findImage("graph/save.png")); - protected JButton mLayoutButton = new JButton(Resource.findImage("graph/autolayout.png")); - protected JButton mZoomOutButton = new JButton(Resource.findImage("graph/zoomout.png")); + protected JButton mLoadButton = new JButton(ImageLoader.findImage("graph/load.png")); + protected JButton mSaveButton = new JButton(ImageLoader.findImage("graph/save.png")); + protected JButton mLayoutButton = new JButton(ImageLoader.findImage("graph/autolayout.png")); + protected JButton mZoomOutButton = new JButton(ImageLoader.findImage("graph/zoomout.png")); protected JButton[] mOtherToolBarButtons; // Workflow factories protected EdgeFactory mWfEdgeFactory; @@ -237,7 +237,7 @@ public class WorkflowPane extends EntityTabPane implements EntityProxyObserver { - protected JButton mSaveButton = new JButton(Resource.findImage("graph/save.png")); - protected JButton mHistoryButton = new JButton(Resource.findImage("graph/history.png")); + protected JButton mSaveButton = new JButton(ImageLoader.findImage("graph/save.png")); + protected JButton mHistoryButton = new JButton(ImageLoader.findImage("graph/history.png")); protected JButton[] mOtherToolBarButtons = { mSaveButton, mHistoryButton }; // Graph editor panel protected EditorPanel mEditorPanel; diff --git a/src/main/java/com/c2kernel/gui/tree/Node.java b/src/main/java/com/c2kernel/gui/tree/Node.java index 470eeba..6142851 100644 --- a/src/main/java/com/c2kernel/gui/tree/Node.java +++ b/src/main/java/com/c2kernel/gui/tree/Node.java @@ -14,12 +14,12 @@ import javax.swing.tree.DefaultMutableTreeNode; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.gui.DynamicTreeBuilder; import com.c2kernel.gui.EntityTabManager; +import com.c2kernel.gui.ImageLoader; import com.c2kernel.lookup.AgentPath; import com.c2kernel.lookup.Path; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Language; import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; public abstract class Node implements Runnable { @@ -37,8 +37,8 @@ public abstract class Node implements Runnable { private boolean loaded = false; private String iconName; protected EntityTabManager desktop; - static ImageIcon folder = Resource.findImage("folder.png"); - static ImageIcon emptyLeaf = Resource.findImage("leaf.png"); + static ImageIcon folder = ImageLoader.findImage("folder.png"); + static ImageIcon emptyLeaf = ImageLoader.findImage("leaf.png"); public Node() { } @@ -214,7 +214,7 @@ public abstract class Node implements Runnable { public void setIcon(String icon) { iconName = icon; - this.icon = Resource.findImage("typeicons/"+icon+"_16.png"); + this.icon = ImageLoader.findImage("typeicons/"+icon+"_16.png"); } public JPopupMenu getPopupMenu() { diff --git a/src/main/module.xml b/src/main/module.xml deleted file mode 100644 index 92e26cb..0000000 --- a/src/main/module.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - The default CRISTAL GUI - 2.3.1 - - com/c2kernel/gui/resources/ - com.c2kernel.lifecycle.gui.view.CompActDefOutcomeHandler - com.c2kernel.lifecycle.gui.view.ElemActDefOutcomeHandler - com.c2kernel.gui.tabs.outcome.BasicOutcomeEditor - com.c2kernel.gui.tabs.outcome.BasicOutcomeEditor - about.png - \ No newline at end of file diff --git a/src/main/resources/module.xml b/src/main/resources/module.xml new file mode 100644 index 0000000..92e26cb --- /dev/null +++ b/src/main/resources/module.xml @@ -0,0 +1,12 @@ + + + The default CRISTAL GUI + 2.3.1 + + com/c2kernel/gui/resources/ + com.c2kernel.lifecycle.gui.view.CompActDefOutcomeHandler + com.c2kernel.lifecycle.gui.view.ElemActDefOutcomeHandler + com.c2kernel.gui.tabs.outcome.BasicOutcomeEditor + com.c2kernel.gui.tabs.outcome.BasicOutcomeEditor + about.png + \ No newline at end of file -- cgit v1.2.3