From 254ee6f47eebfc00462c10756a92066e82cc1a96 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 21 Jun 2011 15:46:02 +0200 Subject: Initial commit --- source/com/c2kernel/graph/view/EditorPanel.java | 100 ++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 source/com/c2kernel/graph/view/EditorPanel.java (limited to 'source/com/c2kernel/graph/view/EditorPanel.java') diff --git a/source/com/c2kernel/graph/view/EditorPanel.java b/source/com/c2kernel/graph/view/EditorPanel.java new file mode 100755 index 0000000..78fb5c9 --- /dev/null +++ b/source/com/c2kernel/graph/view/EditorPanel.java @@ -0,0 +1,100 @@ +package com.c2kernel.graph.view; +import java.awt.BorderLayout; +import java.awt.Dimension; + +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import com.c2kernel.graph.controller.AutoScrollController; +import com.c2kernel.graph.controller.EdgeConstructionController; +import com.c2kernel.graph.controller.MultiSelectionDragController; +import com.c2kernel.graph.controller.VertexConstructionController; +import com.c2kernel.graph.model.*; +public class EditorPanel extends JPanel +{ + // Graph Model + public final GraphModelManager mGraphModelManager = new GraphModelManager(); + // Graph View + public GraphPanel mGraphPanel = null; + protected JScrollPane mGraphScrollPane = null; + // Graph Controllers + protected MultiSelectionDragController mMultiSelectionDragController = new MultiSelectionDragController(); + protected VertexConstructionController mVertexConstructionController = new VertexConstructionController(); + protected EdgeConstructionController mEdgeConstructionController = new EdgeConstructionController(); + protected AutoScrollController mAutoScrollController = new AutoScrollController(); + // Tool bar + protected EditorToolBar mEditorToolBar = null; + protected EditorPanel() + { + } + public EditorPanel(EdgeFactory eFactory, VertexFactory vFactory, VertexOutlineCreator vOutlineCreator, boolean edgeCreationMode, // True + // if + // edges + // can + // be + // created + JButton[] otherButtons, GraphPanel graphPanel) + { + // Create the graph panel and editor tool bar + setDoubleBuffered(true); + mGraphPanel = graphPanel; + mGraphPanel.setGraphModelManager(mGraphModelManager); + mGraphScrollPane = new JScrollPane(mGraphPanel); + mGraphModelManager.setExternalEdgeFactory(eFactory); + mGraphModelManager.setExternalVertexFactory(vFactory); + mGraphModelManager.setVertexOutlineCreator(vOutlineCreator); + mEditorToolBar = new EditorToolBar(edgeCreationMode, otherButtons, graphPanel); + mEditorToolBar.setGraphModelManager(mGraphModelManager); + mEditorToolBar.setGraphPanel(mGraphPanel); + createLayout(); + // The graph panel observes the graph model + 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); + mGraphPanel.addMouseListener(mMultiSelectionDragController); + mGraphPanel.addMouseMotionListener(mMultiSelectionDragController); + mGraphPanel.addKeyListener(mMultiSelectionDragController); + mEditorToolBar.addEditorModeListener(mMultiSelectionDragController); + // The edge construction controller modifies the graph model + // and listens to the graph panel and editor tool bar + mEdgeConstructionController.setGraphModelManager(mGraphModelManager); + mGraphPanel.addMouseListener(mEdgeConstructionController); + mGraphPanel.addMouseMotionListener(mEdgeConstructionController); + mEdgeConstructionController.setEditorToolBar(mEditorToolBar); + // The vertex construction controller modifies the graph model + // and listens to the graph panel and editor tool bar + mVertexConstructionController.setGraphModelManager(mGraphModelManager); + mGraphPanel.addMouseListener(mVertexConstructionController); + mVertexConstructionController.setEditorToolBar(mEditorToolBar); + // The auto scroll controller listens to and modifies the + // graph panel + mAutoScrollController.setGraphPanel(mGraphPanel); + } + + protected void createLayout() + { + setLayout(new BorderLayout()); + add(mEditorToolBar, BorderLayout.NORTH); + mGraphPanel.setPreferredSize(new Dimension(mGraphModelManager.getModel().getWidth(), mGraphModelManager.getModel().getHeight())); + add(mGraphScrollPane, BorderLayout.CENTER); + } + public void enterSelectMode() + { + mEditorToolBar.enterSelectMode(); + } + public void updateEdgeTypes(TypeNameAndConstructionInfo[] typeNameAndConstructionInfo) + { + mEditorToolBar.updateEdgeTypes(typeNameAndConstructionInfo); + } + public void updateVertexTypes(TypeNameAndConstructionInfo[] typeNameAndConstructionInfo) + { + mEditorToolBar.updateVertexTypes(typeNameAndConstructionInfo); + } + public void setEditable(boolean editable) + { + mGraphModelManager.setEditable(editable); + mEditorToolBar.setGraphEditable(editable); + } +} -- cgit v1.2.3