package com.c2kernel.graph.model; import java.awt.Polygon; import java.io.Serializable; import java.util.Vector; public class Vertex implements Serializable { private int mId = -1; private String mName = ""; private GraphPoint mCentrePoint = new GraphPoint(0, 0); private int mHeight = 0; private int mWidth = 0; private Vector mInEdgeIdVector = new Vector(); private Vector mOutEdgeIdVector = new Vector(); private Vector mTags = new Vector(); // The Java Polygon class is used to determine if a point // lies within the outline of a vertex. Unfortunately // both the polygon and the set of outline points need to // kept in memory because a polygon never has 0 points // which is required by Castor's unmarshall object mechanism private Polygon mOutlinePolygon = new Polygon(); private GraphPoint[] mOutlinePoints = new GraphPoint[0]; private GraphModel graphModel; public void setID(int id) { mId = id; } public int getID() { return mId; } public void setName(String n) { mName = n; } public String getName() { return mName; } public void setCentrePoint(GraphPoint p) { mCentrePoint = p; } public GraphPoint getCentrePoint() { return mCentrePoint; } public void setHeight(int h) { mHeight = h; } public int getHeight() { return mHeight; } public void setWidth(int w) { mWidth = w; } public int getWidth() { return mWidth; } // Sets the outline points and re-calculates the // height and width public void setOutlinePoints(GraphPoint[] outline) { int topLeftX = outline[0].x; int topLeftY = outline[0].y; int bottomRightX = 0; int bottomRightY = 0; int i = 0; mOutlinePoints = outline; // Construct a polygon in the outline of the vertex // and calculate the top left and bottom right corners mOutlinePolygon = new Polygon(); for(i=0; i bottomRightX) { bottomRightX = outline[i].x; } if(outline[i].y > bottomRightY) { bottomRightY = outline[i].y; } } // Set the height and width mHeight = bottomRightY - topLeftY; mWidth = bottomRightX - topLeftX; } public GraphPoint[] getOutlinePoints() { return mOutlinePoints; } public void moveAbsolute(GraphPoint p) { int deltaX = p.x - mCentrePoint.x; int deltaY = p.y - mCentrePoint.y; int i = 0; // Update the outline points and the polygon for(i=0; i(10, 10); for(i=0; i(10, 10); for(i=0; i vector) { int[] array = new int[vector.size()]; Integer integer = null; int i = 0; for(i=0; i