public void mouseMoved(MouseEvent me) {
      GraphNode n;
      Dimension d = m_gp.getPreferredSize();
      //System.out.println("Preferred Size: "+this.getPreferredSize()+
      //                   " Actual Size: "+this.getSize());
      x=y=nx=ny=0;
      
      if(d.width < m_gp.getWidth())
        nx = (int)((nx + m_gp.getWidth()/2 - d.width/2)/scale);
      if(d.height < m_gp.getHeight())
        ny = (int)((ny + m_gp.getHeight()/2 - d.height/2)/scale);
      
      r=new Rectangle(0, 0, 
                     (int)(paddedNodeWidth*scale), (int)(nodeHeight*scale));
      x += me.getX(); y += me.getY();
      
      int i;
      for(i=0; i<m_nodes.size(); i++) {
        n = (GraphNode) m_nodes.elementAt(i);
        r.x = (int)((nx+n.x)*scale); r.y = (int)((ny+n.y)*scale);
        if(r.contains(x,y)) {
          if(n!=lastNode) {
            m_gp.highLight(n);
            if(lastNode!=null)
              m_gp.highLight(lastNode);
            lastNode = n; //lastIndex = i;
          }
          break;
        }
      }
      if(i==m_nodes.size()  && lastNode!=null) {
        m_gp.repaint();
        //m_gp.highLight(lastNode);
        lastNode=null;
      }
    }