protected void initSimulator(ForceSimulator fsim) { // make sure we have force items to work with TupleSet t = (TupleSet) m_vis.getGroup(m_group); t.addColumns(ANCHORITEM_SCHEMA); t.addColumns(FORCEITEM_SCHEMA); Iterator iter = m_vis.visibleItems(m_nodeGroup); while (iter.hasNext()) { VisualItem item = (VisualItem) iter.next(); // get force item ForceItem fitem = (ForceItem) item.get(FORCEITEM); if (fitem == null) { fitem = new ForceItem(); item.set(FORCEITEM, fitem); } fitem.location[0] = (float) item.getEndX(); fitem.location[1] = (float) item.getEndY(); fitem.mass = getMassValue(item); // get spring anchor ForceItem aitem = (ForceItem) item.get(ANCHORITEM); if (aitem == null) { aitem = new ForceItem(); item.set(ANCHORITEM, aitem); aitem.location[0] = fitem.location[0]; aitem.location[1] = fitem.location[1]; } fsim.addItem(fitem); fsim.addSpring(fitem, aitem, 0); } }
public void clear() { // System.err.println("run clear"); ForceSimulator fsim = getForceSimulator(); fsim.clear(); // make sure we have force items to work with TupleSet t = (TupleSet) m_vis.getGroup(m_nodeGroup); Iterator iter = m_vis.visibleItems(m_nodeGroup); while (iter.hasNext()) { VisualItem item = (VisualItem) iter.next(); if (!item.canGet(ANCHORITEM, ForceItem.class)) break; // get force item ForceItem fitem = (ForceItem) item.get(FORCEITEM); if (fitem != null) { fitem.location[0] = (float) item.getEndX(); fitem.location[1] = (float) item.getEndY(); fitem.mass = getMassValue(item); // get spring anchor ForceItem aitem = (ForceItem) item.get(ANCHORITEM); // only reset if an anchor exists if (aitem != null) { aitem.location[0] = fitem.location[0]; aitem.location[1] = fitem.location[1]; fsim.addItem(fitem); fsim.addSpring(fitem, aitem, 0); } } } }