package prefuse.action.layout; import java.awt.geom.Rectangle2D; import java.util.Iterator; import java.util.Random; import prefuse.visual.VisualItem; /** * Performs a random layout of items within the layout bounds. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class RandomLayout extends Layout { private Random r = new Random(12345678L); /** * Create a new RandomLayout that processes all items. */ public RandomLayout() { super(); } /** * Create a new RandomLayout. * @param group the data group to layout */ public RandomLayout(String group) { super(group); } /** * Set the seed value for the random number generator. * @param seed the random seed value */ public void setRandomSeed(long seed) { r.setSeed(seed); } /** * @see prefuse.action.Action#run(double) */ public void run(double frac) { Rectangle2D b = getLayoutBounds(); double x, y; double w = b.getWidth(); double h = b.getHeight(); Iterator iter = getVisualization().visibleItems(m_group); while ( iter.hasNext() ) { VisualItem item = (VisualItem)iter.next(); x = (int)(b.getX() + r.nextDouble()*w); y = (int)(b.getY() + r.nextDouble()*h); setX(item,null,x); setY(item,null,y); } } } // end of class RandomLayout