/** * Remove the overlay component. */ private void removeOverlay() { if (overlay != null) { Window window = getAncestorWindow(getComponent()); window.removeWindowListener(overlayWindowAdapter); overlay = null; } }
/** * Install an overlay component. * * @param overlay overlay window */ private void addOverlay(Window overlay) { if (overlay != null) { this.overlay = overlay; Window window = getAncestorWindow(getComponent()); if (window != null) { window.addWindowListener(overlayWindowAdapter); } else { // This should not be possible } } }
/** * Enable/disable the overlay component if there is one. * * @param enable whether to enable the overlay or disable it */ public void enable(boolean enable) { requestedOverlay = enable; if (overlay != null) { if (enable) { if (!overlay.isVisible()) { Component component = getComponent(); component.getBounds(bounds); bounds.setLocation(component.getLocationOnScreen()); overlay.setBounds(bounds); Window window = getAncestorWindow(component); window.addComponentListener(overlayComponentAdapter); overlay.setVisible(true); } } else { if (overlay.isVisible()) { overlay.setVisible(false); Window window = getAncestorWindow(getComponent()); window.removeComponentListener(overlayComponentAdapter); } } } }