/** * Registers ChangeListeners and sets back references in <code>PanelModel</code> and its children. */ private void repair() { // traverse PanelModel and create all event links Iterator iter = panelIterator(); while (iter.hasNext()) { PanelHolder ph = (PanelHolder) iter.next(); ph.removeAllChangeListeners(); ph.addChangeListener(this); ph.setPanelModel(this); Iterator dgIter = ph.dataGroupIterator(); while (dgIter.hasNext()) { DataGroup dg = (DataGroup) dgIter.next(); dg.removeAllChangeListeners(); dg.addChangeListener(ph); dg.setPanelHolder(ph); dg.getXAxisHolder().removeAllChangeListeners(); dg.getXAxisHolder().addChangeListener(dg); dg.getXAxisHolder().setDataGroup(dg); dg.getYAxisHolder().removeAllChangeListeners(); dg.getYAxisHolder().addChangeListener(dg); dg.getYAxisHolder().setDataGroup(dg); } Iterator lbIter = ph.labelIterator(); while (lbIter.hasNext()) { Label lb = (Label) lbIter.next(); lb.removeAllChangeListeners(); lb.addChangeListener(ph); lb.setPanelHolder(ph); } Iterator lgIter = ph.legendIterator(); while (lgIter.hasNext()) { Legend lg = (Legend) lgIter.next(); lg.removeAllChangeListeners(); lg.addChangeListener(ph); lg.setPanelHolder(ph); } } }