/* * (c) 2005-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved. * Licencia en license/bsd.txt / License in license/bsd.txt * * Created at regulus on 19-jul-2005 19:53:02 * as file Node.java on package org.f2o.absurdum.puck.graph */ package org.f2o.absurdum.puck.gui.graph; import java.awt.Graphics; import java.awt.Rectangle; import java.util.List; import javax.swing.JPanel; import org.f2o.absurdum.puck.gui.config.PuckConfiguration; import org.f2o.absurdum.puck.gui.panels.GraphElementPanel; /** * @author carlos * * Created at regulus, 19-jul-2005 19:53:02 */ public abstract class Node implements GraphElement, Comparable { public abstract Object clone(); public abstract Rectangle getBounds(); public abstract List getArrows(); public abstract void addArrow ( Arrow a ); public abstract void removeArrow ( Arrow a ); public abstract String getName(); public abstract void paint ( Graphics g , int x , int y , double zoom ); private boolean selected; public void setSelected ( boolean selected ) { this.selected = selected; } public boolean isSelected() { return selected; } private boolean highlighted; public void setHighlighted ( boolean highlighted ) { this.highlighted = highlighted; } public boolean isHighlighted() { return highlighted; } public void setLocation ( int x , int y ) { getBounds().setLocation ( x , y ); } public void paint ( Graphics g ) { paint ( g , (int) getBounds().getX() , (int) getBounds().getY() ); } public void paintToView ( Graphics g , double viewZoom , double viewXOffset , double viewYOffset ) { int viewXCoord = (int)(( (int) getBounds().getX() - viewXOffset ) * viewZoom); int viewYCoord = (int)(( (int) getBounds().getY() - viewYOffset ) * viewZoom); paint ( g , viewXCoord , viewYCoord , viewZoom ); } //overrides bounds, good for prototypes public void paint ( Graphics g , int x , int y ) { paint ( g , x , y , 1.0 ); } public abstract void setExplicitSize ( int size ); public static float getNameFontSize() { String sizeProp = PuckConfiguration.getInstance().getProperty("graphNodeFontSize"); if ( sizeProp != null ) { try { return Float.valueOf(sizeProp); } catch ( NumberFormatException nfe ) { return (float) 11.0; } } else return (float) 11.0; } public int compareTo(Object o) { Node n = (Node)o; String n1 = this.getName(); String n2 = n.getName(); if ( n1 == null || n2 == null ) return 0; return n1.compareTo(n2); } }