From b086f57f56bf0eb9dab9cf321a0f69aaaae84347 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 30 May 2012 08:37:45 +0200 Subject: Initial Maven Conversion --- .../graph/controller/DeletionController.java | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/main/java/com/c2kernel/graph/controller/DeletionController.java (limited to 'src/main/java/com/c2kernel/graph/controller/DeletionController.java') diff --git a/src/main/java/com/c2kernel/graph/controller/DeletionController.java b/src/main/java/com/c2kernel/graph/controller/DeletionController.java new file mode 100644 index 0000000..44ea990 --- /dev/null +++ b/src/main/java/com/c2kernel/graph/controller/DeletionController.java @@ -0,0 +1,92 @@ +package com.c2kernel.graph.controller; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.util.Observable; +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; + + +// The deletion controller is responsible for deleting the present +// selection within the graph. +// +// The controller listens to: +// * The graph model to determine if there is a selection +// * The delete button +// * The graph panel for the typing of the delete key +// +// The controller modifies: +// * The graph model to delete the current selection +// * The delete button to enable it only when there is a selection +public class DeletionController extends KeyAdapter implements Observer, ActionListener +{ + private GraphModelManager mGraphModelManager = null; + private JButton mDeleteButton = null; + + + public void setGraphModelManager(GraphModelManager graphModelManager) + { + mGraphModelManager = graphModelManager; + mGraphModelManager.addObserver(this); + } + + + public void setDeleteButton(JButton deleteButton) + { + mDeleteButton = deleteButton; + mDeleteButton.addActionListener(this); + } + + + // Invoked by the graph model + @Override + public void update(Observable o, Object arg) + { + SelectionChangedEvent event = null; + DirectedEdge selectedEdge = null; + Vertex[] selectedVertices = null; + + + // If the selected edge has changed + if(arg instanceof SelectionChangedEvent && mDeleteButton != null && mGraphModelManager.isEditable()) + { + // Enable the button if a single edge or single vertex is selected + event = (SelectionChangedEvent)arg; + + selectedEdge = event.mSelection.mEdge; + selectedVertices = event.mSelection.mVertices; + + mDeleteButton.setEnabled((selectedEdge != null) || (selectedVertices != null)); + } + } + + + // Invoked by the graph panel + @Override + public void keyPressed(KeyEvent e) + { + if(e.getKeyCode() == KeyEvent.VK_DELETE && mGraphModelManager.isEditable()) + { + mGraphModelManager.getModel().deleteSelection(); + } + } + + + // Invoked by the delete button + @Override + public void actionPerformed(ActionEvent ae) + { + if(mGraphModelManager != null && mGraphModelManager.isEditable()) + { + mGraphModelManager.getModel().deleteSelection(); + } + } +} -- cgit v1.2.3