14a15,15 > import CH.ifa.draw.standard.NullDrawingView; 22a25,25 > import java.util.ListIterator; 39a43,43 > private DesktopEventService myDesktopEventService; 42,46d45 < /** < * The usage of this List for listeners is not thread safe, but should not < * need to be. < */ < private java.util.List listeners; 48a48,48 > setDesktopEventService(createDesktopEventService()); 49,49c17,17 < listeners = CH.ifa.draw.util.CollectionsFactory.current().createList(); --- > import CH.ifa.draw.util.CollectionsFactory; 84a84,85 > DrawingView oldView = getActiveDrawingView(); > setActiveDrawingView(NullDrawingView.getManagedDrawingView(oldView.editor())); 85,85d83 < setActiveDrawingView(null); 86,86c86,86 < fireDrawingViewSelectedEvent(getActiveDrawingView()); --- > fireDrawingViewSelectedEvent(oldView, getActiveDrawingView()); 113a114,114 > DrawingView oldView = getActiveDrawingView(); 115,115c116,116 < fireDrawingViewSelectedEvent(getActiveDrawingView()); --- > fireDrawingViewSelectedEvent(oldView, getActiveDrawingView()); 123a125,125 > getDesktopEventService().fireDrawingViewAddedEvent(dv); 124,132d124 < java.util.ListIterator li= listeners.listIterator(listeners.size()); < DesktopEvent dpe = null; < while(li.hasPrevious()){ < if (dpe == null) { < dpe = new DesktopEvent(MDIDesktopPane.this, dv); < } < DesktopListener dpl = (DesktopListener)li.previous(); < dpl.drawingViewAdded(dpe); < } 135a129,129 > getDesktopEventService().fireDrawingViewRemovedEvent(dv); 136,144d128 < java.util.ListIterator li= listeners.listIterator(listeners.size()); < DesktopEvent dpe = null; < while(li.hasPrevious()){ < if (dpe == null) { < dpe = new DesktopEvent(MDIDesktopPane.this, dv); < } < DesktopListener dpl = (DesktopListener)li.previous(); < dpl.drawingViewRemoved(dpe); < } 146a132,133 > protected void fireDrawingViewSelectedEvent(final DrawingView oldView, final DrawingView newView) { > getDesktopEventService().fireDrawingViewSelectedEvent(oldView, newView); 147,156d131 < protected void fireDrawingViewSelectedEvent(final DrawingView dv) { < java.util.ListIterator li= listeners.listIterator(listeners.size()); < DesktopEvent dpe = null; < while(li.hasPrevious()){ < if (dpe == null) { < dpe = new DesktopEvent(MDIDesktopPane.this, dv); < } < DesktopListener dpl = (DesktopListener)li.previous(); < dpl.drawingViewSelected(dpe); < } 219,221d195 < // ricardo_padilha: since retval is never used, < // there is no point in creating it < //Component retval = super.add(frame); 303a278,289 > protected DesktopEventService getDesktopEventService() { > return myDesktopEventService; > } > > private void setDesktopEventService(DesktopEventService newDesktopEventService) { > myDesktopEventService = newDesktopEventService; > } > > protected DesktopEventService createDesktopEventService() { > return new DesktopEventService(this, this); > } > 304a291,291 > getDesktopEventService().addDesktopListener(dpl); 305,305d290 < listeners.add(dpl); 308a295,295 > getDesktopEventService().removeDesktopListener(dpl); 309,309d294 < listeners.remove(dpl);