/*
* (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 org.f2o.absurdum.puck.gui.config.PuckConfiguration;
/**
* @author carlos
*
* Created at regulus, 19-jul-2005 19:53:02
*/
public abstract class Arrow implements GraphElement
{
public abstract Object clone();
public abstract Node getSource();
public abstract Node getDestination();
public abstract void setSource ( Node n );
public abstract void setDestination ( Node n );
public abstract void paintTo ( Graphics g , int x , int y ); //with null source
public abstract int[] getPaintingCoords();
public abstract void paint ( Graphics g , int srcX , int srcY , int dstX , int dstY );
public abstract String getName();
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 paint(Graphics g)
{
int [] coords = getPaintingCoords();
paint(g,(int)coords[0],(int)coords[1],(int)coords[2],(int)coords[3]);
}
public void paintToView ( Graphics g , double viewZoom , double viewXOffset , double viewYOffset )
{
int [] coords = getPaintingCoords();
//transform coords
coords[0] = (int)(( (int) coords[0] - viewXOffset ) * viewZoom);
coords[1] = (int)(( (int) coords[1] - viewYOffset ) * viewZoom);
coords[2] = (int)(( (int) coords[2] - viewXOffset ) * viewZoom);
coords[3] = (int)(( (int) coords[3] - viewYOffset ) * viewZoom);
paint(g,(int)coords[0],(int)coords[1],(int)coords[2],(int)coords[3]);
}
public static float getNameFontSize()
{
String sizeProp = PuckConfiguration.getInstance().getProperty("graphArrowFontSize");
if ( sizeProp != null )
{
try
{
return Float.valueOf(sizeProp);
}
catch ( NumberFormatException nfe )
{
return (float) 10.0;
}
}
else
return (float) 10.0;
}
}