From 5e4034b5cba89460a62fa958fc78c2b85acb3d5f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:33 +0200 Subject: Repackage to org.cristalise --- .../graph/controller/StartVertexController.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/main/java/org/cristalise/gui/graph/controller/StartVertexController.java (limited to 'src/main/java/org/cristalise/gui/graph/controller/StartVertexController.java') diff --git a/src/main/java/org/cristalise/gui/graph/controller/StartVertexController.java b/src/main/java/org/cristalise/gui/graph/controller/StartVertexController.java new file mode 100644 index 0000000..b98620b --- /dev/null +++ b/src/main/java/org/cristalise/gui/graph/controller/StartVertexController.java @@ -0,0 +1,82 @@ +package org.cristalise.gui.graph.controller; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Observable; +import java.util.Observer; + +import javax.swing.JButton; + +import org.cristalise.gui.graph.event.SelectionChangedEvent; +import org.cristalise.kernel.graph.model.GraphModelManager; +import org.cristalise.kernel.graph.model.Vertex; + + + +// The start vertex controller is responsible for selecting +// the vertex at the start of the graph. +// +// The controller listens to: +// * The graph model to determine if there is a single +// vertex selected +// * The start vertex button +// +// The controller modifies: +// * The graph model to select the start vertex +// * The start button to enable it only when there is a +// single vertex selected +public class StartVertexController implements Observer, ActionListener +{ + private GraphModelManager mGraphModelManager = null; + private JButton mStartButton = null; + private Vertex selectedVertex = null; + + + public void setGraphModelManager(GraphModelManager graphModelManager) + { + mGraphModelManager = graphModelManager; + mGraphModelManager.addObserver(this); + } + + + public void setStartButton(JButton startButton) + { + mStartButton = startButton; + mStartButton.addActionListener(this); + } + + + @Override + public void update(Observable o, Object arg) + { + SelectionChangedEvent event = null; + Vertex[] selectedVertices = null; + + // If the selected vertex has changed + if(arg instanceof SelectionChangedEvent && mStartButton != null) + { + event = (SelectionChangedEvent)arg; + selectedVertices = event.mSelection.mVertices; + + if(selectedVertices == null || selectedVertices.length != 1) + { + mStartButton.setEnabled(false); + } + else if (mGraphModelManager.isEditable()) + { + mStartButton.setEnabled(true); + selectedVertex = selectedVertices[0]; + } + } + } + + + @Override + public void actionPerformed(ActionEvent ae) + { + if(selectedVertex != null) + { + mGraphModelManager.getModel().setStartVertexId(selectedVertex.getID()); + } + } +} -- cgit v1.2.3