package prefuse.action.layout; import java.util.Iterator; import prefuse.visual.VisualItem; /** * Layout Action that sets x, y coordinates for a visual item by simply * looking them up from another data field. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class SpecifiedLayout extends Layout { private String m_xfield = null; private String m_yfield = null; private String m_fixedfield = null; /** * Create a new SpecifiedLayout. * @param group the data group to layout * @param xField the field from which to lookup x coordinate values * @param yField the field from which to lookup y coordinate values */ public SpecifiedLayout(String group, String xField, String yField) { super(group); m_xfield = xField; m_yfield = yField; } // ------------------------------------------------------------------------ /** * Get the field to lookup to set the x-coordinate. * @return the x-value field. If null, this action * does not set the x-coordiante. */ public String getXField() { return m_xfield; } /** * Set the field to lookup to set the x-coordinate. * @param xField the x-value field to use. If null, this action * will not set the x-coordiante. */ public void setXField(String xField) { m_xfield = xField; } /** * Get the field to lookup to set the y-coordinate. * @return the y-value field. If null, this action * does not set the y-coordiante. */ public String getYField() { return m_yfield; } /** * Set the field to lookup to set the y-coordinate. * @param yField the y-value field to use. If null, this action * will not set the y-coordiante. */ public void setYField(String yField) { m_yfield = yField; } /** * Get the field to lookup to set the fixed property. * @return the fixed field. If null, this action * does not set the fixed field. */ public String getFixedField() { return m_fixedfield; } /** * Set the field to lookup to set the fixed property. * @param fixedField the fixed field to use. If null, this action * will not set the fixed field. */ public void setFixedField(String fixedField) { m_fixedfield = fixedField; } /** * @see prefuse.action.Action#run(double) */ public void run(double frac) { Iterator iter = m_vis.items(m_group); while ( iter.hasNext() ) { VisualItem item = (VisualItem)iter.next(); try { if ( m_xfield != null ) setX(item, null, item.getDouble(m_xfield)); if ( m_yfield != null ) setY(item, null, item.getDouble(m_yfield)); if ( m_fixedfield != null ) item.setFixed(item.getBoolean(m_fixedfield)); } catch ( Exception e ) { } } } } // end of class SpecifiedLayout