www.pudn.com > JAVIS-0.3.zip > Node.java




package animation;

import animation.VisualElement;
import animation.NodeMark;
import animation.Link;
import java.awt.Graphics;
import java.awt.FontMetrics;
import java.awt.Color;
import math.Vector;
import util.Colour;

public class Node extends VisualElement {

    static final int UP = 1;
    static final int DOWN = 0;

    int m_addr;
    int m_nodeID;
    int m_mcastGroup;
    NodeMark m_nodemark;
    String m_label;
    int m_shape;
    int m_state;
    Vector m_coords;
    Colour m_colour;

    class LinkPair {
      Node other_node;
      Link link;
    }
    java.util.Vector m_links;
  
    
    public Node() {
      m_addr=m_nodeID=m_mcastGroup=m_shape=m_state=0;
      m_coords=new Vector();
      m_nodemark=null;
      m_links=new java.util.Vector();
      m_colour=new Colour();
    }

   
    public void addLink(Node other,Link link) {
      LinkPair l=new LinkPair();

      l.other_node=other;
      l.link=link;

      m_links.addElement(l);
    }

    public Link getLink(int other_id) {

      for (java.util.Enumeration e=m_links.elements();e.hasMoreElements();) {
	LinkPair l=(LinkPair)e.nextElement();
	if (l.other_node.getNodeID()==other_id) return l.link;
      }

      return null;
    }

    public void setAddress(int addr) {
        m_addr=addr;
    }

    public int getAddress() {
        return m_addr;
    }


    public void setStatus(int status) {
        m_state=status;
    }


    public void setNodeID(int id) {
      m_nodeID=id;
    }

    public int getNodeID() {
      return m_nodeID;
    }
  
    public void setX(double x) {
      m_coords.m_value[0]=x;
    }

    public double getX() {
      return m_coords.m_value[0];
    }

    public void setY(double y) {
      m_coords.m_value[1]=y;
    }

    public double getY() {
      return m_coords.m_value[1];
    }

    public void setColour(Colour c) {
      m_colour=c;
    }

    public void move(double dx,double dy) {
      m_coords.translate(dx,dy);
    }


    public void draw(Graphics g,FontMetrics metrics) {

	g.setColor(m_colour.getAWTColor());
	g.drawOval((int)(m_coords.m_value[0])-7,
		   (int)(m_coords.m_value[1])-7,14,14);

	String s=(new Integer(m_nodeID).toString());
	g.setColor(Color.black);
	g.drawString(s,(int)(m_coords.m_value[0])-(metrics.stringWidth(s)>>1),
		       (int)(m_coords.m_value[1])+(metrics.getHeight()>>1));
    }



    public void update(double time) {

    }

  
    public String toString() {
      return "Node A:"+m_addr+" ID:"+m_nodeID+" S:"+m_shape+" "+m_coords;
    }
}