/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.resources; import java.awt.event.WindowListener; import javax.swing.event.InternalFrameEvent; import javax.swing.event.InternalFrameListener; /** * Wraps a {@link WindowListener} into an {@link InternalFrameListener}. This is used * by {@link SwingUtilities} in order to have the same methods working seemless on both * {@link java.awt.Frame} and {@link javax.swing.JInternalFrame}. * * @since 2.0 * @source $URL$ * @version $Id$ * @author Martin Desruisseaux (IRD) */ final class InternalWindowListener implements InternalFrameListener { /** * The underlying {@link WindowListener}. */ private final WindowListener listener; /** * Wrap the specified {@link WindowListener} into an {@link InternalFrameListener}. * If the specified object is already an {@link InternalFrameListener}, then it is * returned as-is. */ public static InternalFrameListener wrap(final WindowListener listener) { if (listener == null) { return null; } if (listener instanceof InternalFrameListener) { return (InternalFrameListener) listener; } return new InternalWindowListener(listener); } /** * Construct a new {@link InternalFrameListener} * wrapping the specified {@link WindowListener}. */ private InternalWindowListener(final WindowListener listener) { this.listener = listener; } /** * Invoked when a internal frame has been opened. */ public void internalFrameOpened(InternalFrameEvent event) { listener.windowOpened(null); } /** * Invoked when an internal frame is in the process of being closed. * The close operation can be overridden at this point. */ public void internalFrameClosing(InternalFrameEvent event) { listener.windowClosing(null); } /** * Invoked when an internal frame has been closed. */ public void internalFrameClosed(InternalFrameEvent event) { listener.windowClosed(null); } /** * Invoked when an internal frame is iconified. */ public void internalFrameIconified(InternalFrameEvent event) { listener.windowIconified(null); } /** * Invoked when an internal frame is de-iconified. */ public void internalFrameDeiconified(InternalFrameEvent event) { listener.windowDeiconified(null); } /** * Invoked when an internal frame is activated. */ public void internalFrameActivated(InternalFrameEvent event) { listener.windowActivated(null); } /** * Invoked when an internal frame is de-activated. */ public void internalFrameDeactivated(InternalFrameEvent event) { listener.windowDeactivated(null); } }