summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2012-07-12 14:55:03 +0200
committerAndrew Branson <andrew.branson@cern.ch>2012-07-12 14:55:03 +0200
commit5c0e57f4e126e3c6560f8eab695eb2d591a8c335 (patch)
tree3aae863338016ecce125f6adbb70d48924bf553e /src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java
parenteacd6cecdeeb14f9c96e74fafbacbc7f7c4804b8 (diff)
Take getVertex(point) and getEdge(point) from GraphModel
Diffstat (limited to 'src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java')
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/GraphPanel.java58
1 files changed, 55 insertions, 3 deletions
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<Vertex> vertexVector = new Vector<Vertex>(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)) {