CustomEdge.java
From Santa Fe Institute Events Wiki
/*
* CustomEdge.java * * Created on January 22, 2005, 5:55 PM * Modified on June 13 2006 * * This class is for the edges in a netwok */
package CoopNetBlue; import java.awt.Color; import uchicago.src.sim.gui.ColorMap;
import uchicago.src.sim.gui.DrawableEdge; import uchicago.src.sim.gui.SimGraphics; import uchicago.src.sim.network.DefaultEdge; import uchicago.src.sim.network.Node; /**
* * @author Jack Waddell */
// DefaultEdge gives us the standard edge methods // DrawableEdge lets us draw it in the GUI public class CustomEdge extends DefaultEdge implements DrawableEdge {
//************************************************************* // Static Parameters
// These are for drawing the edge in GUI public static GUIModel guiModel = null; public static ColorMap redColorMap, blueColorMap; public static final int colorMapSize = 64; public static final int colorMapMax = colorMapSize - 1;
//*********************************************************** //Instance parameters private Color color = Color.red; // Edge color
//*********************************************************** // Methods
//////////////////////////////////////////////////
// Constructor
public CustomEdge() {
}
//////////////////////////////////////////////////
// Constructor (overloaded)
// Inputs: Node from, the (generic class) Node from which the edge emerges
// Node to, the (generic) Node to which the edge points
public CustomEdge(Node from, Node to) {
super(from, to, ""); // Calls DefaultEdge constructor
}
//////////////////////////////////////////////////
// setColor
// Inputs: Color c
// Outputs: none
// Sets edge's color to c, a Java color
public void setColor(Color c) {
color = c;
}
////////////////////////////////////////////////////////
// draw
// Inputs: SimGraphics g
// int fromX, toX, fromY, toY
// Outputs: none
// Required to implement DrawableEdge.
public void draw(SimGraphics g, int fromX, int toX, int fromY, int toY) {
g.drawDirectedLink(color, fromX, toX, fromY, toY);
}
//****************************************************** // Static Methods
////////////////////////////////////////////////////
// setUpEdgeDrawing
// Inputs: GUIModel m, a pointer to the GUIModel instance
// Outputs: none
// Prepares the edge to be drawn in the GUI
public static void setUpEdgeDrawing (GUIModel m) {
//System.out.printf("Setting up Edge Color Map\n"); guiModel = m; redColorMap = new ColorMap(); double minRed = 0.5;
for (int i = 0; i < colorMapSize; i++){ double fracR = minRed + ( (1.0-minRed)*i/colorMapMax ); fracR = 1.0 + minRed - fracR; //System.out.printf("Edge Color Map: i = %d, fR = %f\n", i, fracR); redColorMap.mapColor(i, fracR, 0, 0); }
blueColorMap = new ColorMap();
double minBlue = 0.5;
for (int i = 0; i < colorMapSize; i++){
double fracB = minBlue + ( (1.0-minBlue)*i/colorMapMax );
fracB = 1.0 + minBlue - fracB;
//System.out.printf("Edge Color Map: i = %d, fR = %f\n", i, fracR);
blueColorMap.mapColor(i, 0, 0, fracB);
}
}
}
