/*
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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 General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.apple.eawt;
import java.awt.Component;
import java.awt.Window;
import javax.swing.RootPaneContainer;
import com.apple.eawt.event.GestureUtilities;
import sun.lwawt.macosx.CPlatformWindow;
Utility class perform animated full screen actions to top-level Window
s. This class manages the relationship between Window
s and the FullScreenListener
s attached to them. It's design is similar to the Java SE 6u10 com.sun.awt.AWTUtilities
class which adds additional functionality to AWT Windows, without adding new API to the Window
class. Full screen operations can only be performed on top-level Window
s that are also RootPaneContainer
s. See Also: Since: Java for Mac OS X 10.7 Update 1
/**
* Utility class perform animated full screen actions to top-level {@link Window}s.
*
* This class manages the relationship between {@link Window}s and the {@link FullScreenListener}s
* attached to them. It's design is similar to the Java SE 6u10 {@code com.sun.awt.AWTUtilities}
* class which adds additional functionality to AWT Windows, without adding new API to the
* {@link java.awt.Window} class.
*
* Full screen operations can only be performed on top-level {@link Window}s that are also {@link RootPaneContainer}s.
*
* @see FullScreenAdapter
* @see GestureUtilities
*
* @since Java for Mac OS X 10.7 Update 1
*/
public final class FullScreenUtilities {
FullScreenUtilities() {
// package private
}
Marks a Window
as able to animate into or out of full screen mode. Only top-level Window
s which are RootPaneContainer
s are able to be animated into and out of full screen mode. The Window
must be marked as full screen-able before the native peer is created with Component.addNotify()
. Params: - window –
- canFullScreen –
Throws: - IllegalArgumentException – if window is not a
RootPaneContainer
/**
* Marks a {@link Window} as able to animate into or out of full screen mode.
*
* Only top-level {@link Window}s which are {@link RootPaneContainer}s are able to be animated into and out of full screen mode.
* The {@link Window} must be marked as full screen-able before the native peer is created with {@link Component#addNotify()}.
*
* @param window
* @param canFullScreen
* @throws IllegalArgumentException if window is not a {@link RootPaneContainer}
*/
public static void setWindowCanFullScreen(final Window window, final boolean canFullScreen) {
if (!(window instanceof RootPaneContainer)) throw new IllegalArgumentException("Can't mark a non-RootPaneContainer as full screen-able");
final RootPaneContainer rpc = (RootPaneContainer)window;
rpc.getRootPane().putClientProperty(CPlatformWindow.WINDOW_FULLSCREENABLE, Boolean.valueOf(canFullScreen));
}
Attaches a FullScreenListener
to the specified top-level Window
. Params: - window – to attach the
FullScreenListener
to - listener – to be notified when a full screen event occurs
Throws: - IllegalArgumentException – if window is not a
RootPaneContainer
/**
* Attaches a {@link FullScreenListener} to the specified top-level {@link Window}.
* @param window to attach the {@link FullScreenListener} to
* @param listener to be notified when a full screen event occurs
* @throws IllegalArgumentException if window is not a {@link RootPaneContainer}
*/
public static void addFullScreenListenerTo(final Window window, final FullScreenListener listener) {
if (!(window instanceof RootPaneContainer)) throw new IllegalArgumentException("Can't attach FullScreenListener to a non-RootPaneContainer");
if (listener == null) throw new NullPointerException();
FullScreenHandler.addFullScreenListenerTo((RootPaneContainer)window, listener);
}
Removes a FullScreenListener
from the specified top-level Window
. Params: - window – to remove the
FullScreenListener
from - listener – to be removed
Throws: - IllegalArgumentException – if window is not a
RootPaneContainer
/**
* Removes a {@link FullScreenListener} from the specified top-level {@link Window}.
* @param window to remove the {@link FullScreenListener} from
* @param listener to be removed
* @throws IllegalArgumentException if window is not a {@link RootPaneContainer}
*/
public static void removeFullScreenListenerFrom(final Window window, final FullScreenListener listener) {
if (!(window instanceof RootPaneContainer)) throw new IllegalArgumentException("Can't remove FullScreenListener from non-RootPaneContainer");
if (listener == null) throw new NullPointerException();
FullScreenHandler.removeFullScreenListenerFrom((RootPaneContainer)window, listener);
}
}