From 5c0e57f4e126e3c6560f8eab695eb2d591a8c335 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 12 Jul 2012 14:55:03 +0200 Subject: Take getVertex(point) and getEdge(point) from GraphModel --- .../com/c2kernel/gui/graph/view/GraphPanel.java | 58 ++++++++++++++++++++-- 1 file changed, 55 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java') 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 a234d65..ca309b1 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java +++ b/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java @@ -9,9 +9,6 @@ import java.awt.Paint; 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; @@ -27,7 +24,10 @@ import com.c2kernel.graph.model.Vertex; 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.ElasticBandResizedEvent; +import com.c2kernel.gui.graph.event.ElasticBandSetEvent; import com.c2kernel.gui.graph.event.SelectionChangedEvent; +import com.c2kernel.gui.graph.event.SelectionMovedEvent; public class GraphPanel extends JPanel implements Observer { // There should always be a Selection object @@ -316,6 +316,58 @@ public class GraphPanel extends JPanel implements Observer mSelection.mBottomRightY = newTopLeftY + selectionHeight; mGraphModelManager.notifyObservers(mSelectionMovedEvent); } + + // If the specified point is within more than one vertex, + // then the smallest vertex is returned. + public Vertex getVertex(GraphPoint p) { + Object[] vertexObjs = mGraphModelManager.getModel().getVertices(); + Vertex vertex = null; + Vector vertexVector = new Vector(10, 10); + int numVerticesFound = 0; + Vertex smallestVertex = null; + int sizeOfSmallestVertex = 0; + int sizeOfVertex = 0; + int i = 0; + for (i = 0; i < vertexObjs.length; i++) { + vertex = (Vertex)vertexObjs[i]; + if (vertex.containsPoint(p)) { + vertexVector.add(vertex); + } + } + numVerticesFound = vertexVector.size(); + if (numVerticesFound == 0) { + return null; + } + else { + smallestVertex = vertexVector.elementAt(0); + sizeOfSmallestVertex = smallestVertex.getHeight() * smallestVertex.getWidth(); + // Determine the smallest vertex + for (i = 1; i < numVerticesFound; i++) { + vertex = vertexVector.elementAt(i); + sizeOfVertex = vertex.getHeight() * vertex.getWidth(); + if (sizeOfVertex < sizeOfSmallestVertex) { + smallestVertex = vertex; + sizeOfSmallestVertex = sizeOfVertex; + } + } + return smallestVertex; + } + } + + public DirectedEdge getEdge(GraphPoint p) { + Object[] edgeObjs = mGraphModelManager.getModel().getEdges(); + DirectedEdge edge = null; + int i = 0; + for (i = 0; i < edgeObjs.length; i++) { + edge = (DirectedEdge)edgeObjs[i]; + if (edge.containsPoint(p)) { + return edge; + } + } + return null; + } + + public void setSelection(Selection s) { // If the there is a change if (selectionChanged(s)) { -- cgit v1.2.3