/*
Copyright 2006 by Sean Luke and George Mason University
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
package sim.app.tutorial5;
import sim.field.network.*;
import sim.portrayal.network.*;
import sim.portrayal.*;
import java.awt.*;
public class BandPortrayal2D extends SimpleEdgePortrayal2D
{
private static final long serialVersionUID = 1;
// how our strength should look
java.text.NumberFormat strengthFormat;
public BandPortrayal2D()
{
strengthFormat = java.text.NumberFormat.getInstance();
strengthFormat.setMinimumIntegerDigits(1);
strengthFormat.setMaximumFractionDigits(2);
}
public void draw(Object object, Graphics2D graphics, DrawInfo2D info)
{
// this better be an EdgeDrawInfo2D! :-)
EdgeDrawInfo2D ei = (EdgeDrawInfo2D) info;
// likewise, this better be an Edge!
Edge e = (Edge) object;
// our start (x,y), ending (x,y), and midpoint (for drawing the label)
final int startX = (int)ei.draw.x;
final int startY = (int)ei.draw.y;
final int endX = (int)ei.secondPoint.x;
final int endY = (int)ei.secondPoint.y;
final int midX = (int)((ei.draw.x+ei.secondPoint.x) / 2);
final int midY = (int)((ei.draw.y+ei.secondPoint.y) / 2);
// draw line.
graphics.setColor(Color.black);
graphics.drawLine (startX, startY, endX, endY);
// draw label in blue
graphics.setColor(Color.blue);
graphics.setFont(labelFont); // default font for Edge labels
String information = strengthFormat.format(((Band)(e.info)).strength);
int width = graphics.getFontMetrics().stringWidth(information);
graphics.drawString( information, midX - width / 2, midY );
}
// use the default hitObject -- don't bother writing that one, it works fine
}