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 --- .../gui/graph/controller/DeletionController.java | 16 ++++--- .../controller/EdgeConstructionController.java | 3 +- .../controller/MultiSelectionDragController.java | 51 ++++++++++++---------- .../graph/controller/StartVertexController.java | 12 ++--- .../controller/VertexConstructionController.java | 3 +- 5 files changed, 49 insertions(+), 36 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/graph/controller') 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); } -- cgit v1.2.3