summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2012-06-29 16:21:42 +0200
committerAndrew Branson <andrew.branson@cern.ch>2012-06-29 16:21:42 +0200
commitd6f6211306708d22ddcbe4e350f906c63220d7a4 (patch)
tree15bc138b301680b3db240ddc2ca5f8170c6990fa /src
parent3069ddf81b3cce2303cc1528e5de4708a798841f (diff)
More graph gui components. Selection moved from GraphModel to GraphPanel
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/c2kernel/gui/DynamicTreeBuilder.java4
-rw-r--r--src/main/java/com/c2kernel/gui/EntityDetails.java3
-rw-r--r--src/main/java/com/c2kernel/gui/EntityFinder.java5
-rw-r--r--src/main/java/com/c2kernel/gui/LoginBox.java3
-rw-r--r--src/main/java/com/c2kernel/gui/MainFrame.java7
-rw-r--r--src/main/java/com/c2kernel/gui/MenuBuilder.java2
-rw-r--r--src/main/java/com/c2kernel/gui/collection/AggregationMemberRenderer.java8
-rw-r--r--src/main/java/com/c2kernel/gui/graph/controller/DeletionController.java16
-rw-r--r--src/main/java/com/c2kernel/gui/graph/controller/EdgeConstructionController.java3
-rw-r--r--src/main/java/com/c2kernel/gui/graph/controller/MultiSelectionDragController.java51
-rw-r--r--src/main/java/com/c2kernel/gui/graph/controller/StartVertexController.java12
-rw-r--r--src/main/java/com/c2kernel/gui/graph/controller/VertexConstructionController.java3
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/EditorPanel.java4
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java17
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java367
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java2
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/chooser/ActivityChooser.java4
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java6
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/desc/WfVertexDefFactory.java15
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java2
-rw-r--r--src/main/java/com/c2kernel/gui/lifecycle/instance/WfVertexFactory.java16
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/EntityTabPane.java8
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/WorkflowPane.java14
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/collection/AggregationView.java6
-rw-r--r--src/main/java/com/c2kernel/gui/tree/Node.java8
-rw-r--r--src/main/resources/module.xml (renamed from src/main/module.xml)0
26 files changed, 444 insertions, 142 deletions
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<Vertex> verticesInside = new Vector<Vertex>(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<Workflow>
{
// 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<W
(ItemProxy)sourceEntity.getEntity(),
"ReplaceDomainWorkflow",
new String[] { com.c2kernel.utils.CastorXMLUtility.marshall(cact)});
- cact.getChildrenGraphModel().setSelection(new Selection(null,null,0,0,0,0));
+ mEditorPanel.mGraphPanel.setSelection(new Selection(null,null,0,0,0,0));
}
catch (Exception e)
{
diff --git a/src/main/java/com/c2kernel/gui/tabs/collection/AggregationView.java b/src/main/java/com/c2kernel/gui/tabs/collection/AggregationView.java
index bd5e7d0..5c5d00c 100644
--- a/src/main/java/com/c2kernel/gui/tabs/collection/AggregationView.java
+++ b/src/main/java/com/c2kernel/gui/tabs/collection/AggregationView.java
@@ -2,6 +2,7 @@ package com.c2kernel.gui.tabs.collection;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import com.c2kernel.gui.ImageLoader;
import javax.swing.JButton;
import javax.swing.JSplitPane;
@@ -18,15 +19,14 @@ import com.c2kernel.gui.collection.SelectedMemberPanel;
import com.c2kernel.gui.graph.view.EditorPanel;
import com.c2kernel.gui.graph.view.GraphPanel;
import com.c2kernel.utils.Language;
-import com.c2kernel.utils.Resource;
/**
* @version $Revision: 1.5 $ $Date: 2006/09/15 15:02:24 $
* @author $Author: abranson $
*/
public class AggregationView extends CollectionView<AggregationMember>
{
- 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/resources/module.xml
index 92e26cb..92e26cb 100644
--- a/src/main/module.xml
+++ b/src/main/resources/module.xml