private void setClosingBehaviour(final LayerManagerProxy internalFrame) { final JInternalFrame i = (JInternalFrame) internalFrame; i.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); i.addInternalFrameListener( new InternalFrameAdapter() { public void internalFrameClosing(InternalFrameEvent e) { if (1 == getInternalFramesAssociatedWith((LayerManager) internalFrame.getLayerManager()) .size()) { if (confirmClose( "Close Task", internalFrame.getLayerManager().getLayersWithModifiedFeatureCollections())) { GUIUtil.dispose(i, desktopPane); internalFrame.getLayerManager().dispose(); } } else { GUIUtil.dispose(i, desktopPane); } } }); }