87c87,91 < * Removes the figure from the drawing and releases it. --- > * Removes a figure from the figure list, but > * doesn't release it. Use this method to temporarily > * manipulate a figure outside of the drawing. > * > * @param figure that is part of the drawing and should be added 89,90c93,94 < < public synchronized Figure remove(Figure figure) { --- > public synchronized Figure orphan(Figure figure) { > Figure orphanedFigure = super.orphan(figure); 92,94c96,97 < if (figure.listener() != null) { < figure.listener().figureRequestRemove(new FigureChangeEvent(figure, null)); < return figure; --- > if (orphanedFigure.listener() != null) { > orphanedFigure.listener().figureRequestRemove(new FigureChangeEvent(orphanedFigure, null)); 96c99 < return null; --- > return orphanedFigure; 99,114c102,106 < /** < * Handles a removeFromDrawing request that < * is passed up the figure container hierarchy. < * @see FigureChangeListener < */ < public void figureRequestRemove(FigureChangeEvent e) { < Figure figure = e.getFigure(); < if (fFigures.contains(figure)) { < // Bugfix: This call will cleans up the quad-tree as well [JY] < super.remove(figure); < //fFigures.removeElement(figure); < //figure.removeFromContainer(this); // will invalidate figure < figure.release(); < } < else { < System.err.println("Attempt to remove non-existing figure"); --- > public synchronized Figure add(Figure figure) { > Figure addedFigure = super.add(figure); > if (addedFigure.listener() != null) { > addedFigure.listener().figureRequestUpdate(new FigureChangeEvent(figure, null)); > return addedFigure; 115a108 > return addedFigure; 133c126 < * Forces an update --- > * Forces an update of the drawing change listeners.