--- old/src/java.desktop/share/classes/java/awt/peer/DesktopPeer.java 2015-11-19 18:20:29.717554049 +0300 +++ new/src/java.desktop/share/classes/java/awt/peer/DesktopPeer.java 2015-11-19 18:20:29.593554046 +0300 @@ -22,14 +22,25 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package java.awt.peer; - import java.io.File; import java.io.IOException; import java.net.URI; import java.awt.Desktop.Action; +import java.awt.Window; +import java.awt.desktop.AboutHandler; +import java.awt.desktop.FileManager; +import java.awt.desktop.FullScreenListener; +import java.awt.desktop.SystemEventListener; +import java.awt.desktop.OpenFilesHandler; +import java.awt.desktop.OpenURIHandler; +import java.awt.desktop.PreferencesHandler; +import java.awt.desktop.PrintFilesHandler; +import java.awt.desktop.QuitHandler; +import java.awt.desktop.QuitStrategy; +import javax.swing.JMenuBar; +import javax.swing.RootPaneContainer; /** * The {@code DesktopPeer} interface provides methods for the operation @@ -104,4 +115,228 @@ * or it fails to be launched. */ void browse(URI uri) throws IOException; + + /** + * Adds sub-types of {@link SystemEventListener} to listen for notifications + * from the native system. + * + * @param listener listener + * @see java.awt.desktop.AppForegroundListener + * @see java.awt.desktop.AppHiddenListener + * @see java.awt.desktop.AppReopenedListener + * @see java.awt.desktop.ScreenSleepListener + * @see java.awt.desktop.SystemSleepListener + * @see java.awt.desktop.UserSessionListener + */ + default void addAppEventListener(final SystemEventListener listener) { + } + + /** + * Removes sub-types of {@link SystemEventListener} to listen for notifications + * from the native system. + * + * @param listener listener + * @see java.awt.desktop.AppForegroundListener + * @see java.awt.desktop.AppHiddenListener + * @see java.awt.desktop.AppReopenedListener + * @see java.awt.desktop.ScreenSleepListener + * @see java.awt.desktop.SystemSleepListener + * @see java.awt.desktop.UserSessionListener + */ + default void removeAppEventListener(final SystemEventListener listener) { + } + + /** + * Installs a handler to show a custom About window for your application. + *
+ * Setting the {@link AboutHandler} to null
reverts it to the
+ * default behavior.
+ *
+ * @param aboutHandler the handler to respond to the
+ * {@link AboutHandler#handleAbout} )} message
+ */
+ default void setAboutHandler(final AboutHandler aboutHandler) {
+ }
+
+ /**
+ * Installs a handler to show a custom Preferences window for your
+ * application.
+ *
+ * Setting the {@link PreferencesHandler} to null
reverts it to
+ * the default behavior
+ *
+ * @param preferencesHandler the handler to respond to the
+ * {@link PreferencesHandler#handlePreferences(PreferencesEvent)}
+ */
+ default void setPreferencesHandler(final PreferencesHandler preferencesHandler) {
+ }
+
+ /**
+ * Installs the handler which is notified when the application is asked to
+ * open a list of files.
+ *
+ * @param openFileHandler handler
+ */
+ default void setOpenFileHandler(final OpenFilesHandler openFileHandler) {
+ }
+
+ /**
+ * Installs the handler which is notified when the application is asked to
+ * print a list of files.
+ *
+ * @param printFileHandler handler
+ */
+ default void setPrintFileHandler(final PrintFilesHandler printFileHandler) {
+ }
+
+ /**
+ * Installs the handler which is notified when the application is asked to
+ * open a URL.
+ *
+ * Setting the handler to null
causes all
+ * {@link OpenURIHandler#openURI(AppEvent.OpenURIEvent)} requests to be
+ * enqueued until another handler is set.
+ *
+ * @param openURIHandler handler
+ */
+ default void setOpenURIHandler(final OpenURIHandler openURIHandler) {
+ }
+
+ /**
+ * Installs the handler which determines if the application should quit. The
+ * handler is passed a one-shot {@link QuitResponse} which can cancel or
+ * proceed with the quit. Setting the handler to null
causes
+ * all quit requests to directly perform the default {@link QuitStrategy}.
+ *
+ * @param quitHandler the handler that is called when the application is
+ * asked to quit
+ */
+ default void setQuitHandler(final QuitHandler quitHandler) {
+ }
+
+ /**
+ * Sets the default strategy used to quit this application. The default is
+ * calling SYSTEM_EXIT_0.
+ *
+ * @param strategy the way this application should be shutdown
+ */
+ default void setQuitStrategy(final QuitStrategy strategy) {
+ }
+
+ /**
+ * Enables this application to be suddenly terminated.
+ *
+ * Call this method to indicate your application's state is saved, and
+ * requires no notification to be terminated. Letting your application
+ * remain terminatable improves the user experience by avoiding re-paging in
+ * your application when it's asked to quit.
+ *
+ * Note: enabling sudden termination will allow your application to be
+ * quit without notifying your QuitHandler, or running any shutdown
+ * hooks.
+ * E.g. user initiated Cmd-Q, logout, restart, or shutdown requests will
+ * effectively "kill -KILL" your application.
+ *
+ * @see #disableSuddenTermination()
+ */
+ default void enableSuddenTermination() {
+ }
+
+ /**
+ * Prevents this application from being suddenly terminated.
+ *
+ * Call this method to indicate that your application has unsaved state, and
+ * may not be terminated without notification.
+ *
+ * @see #enableSuddenTermination()
+ */
+ default void disableSuddenTermination() {
+ }
+
+ /**
+ * Requests this application to move to the foreground.
+ *
+ * @param allWindows if all windows of this application should be moved to
+ * the foreground, or only the foremost one
+ */
+ default void requestForeground(final boolean allWindows) {
+ }
+
+ /**
+ * Opens the native help viewer application.
+ */
+ default void openHelpViewer() {
+ }
+
+ /**
+ * Sets the default menu bar to use when there are no active frames.
+ *
+ * @param menuBar to use when no other frames are active
+ */
+ default void setDefaultMenuBar(final JMenuBar menuBar) {
+ }
+
+ /**
+ * 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}
+ */
+ default void addWindowFullScreenListener(final Window window,
+ final FullScreenListener listener) {
+ }
+
+ /**
+ * 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}
+ */
+ default void removeWindowFullScreenListener(final Window window,
+ final FullScreenListener listener) {
+ }
+
+ /**
+ * 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 window
+ * @param canFullScreen flag
+ * @throws IllegalArgumentException if window is not a
+ * {@link RootPaneContainer}
+ */
+ default void setWindowCanFullScreen(final Window window,
+ final boolean canFullScreen) {
+ }
+
+ /**
+ * Requests that a {@link Window} should get into or out of full screen
+ * mode. Only {@link Window}s marked as full screenable by
+ * {@link #setWindowCanFullScreen(Window, boolean)} can be toggled.
+ *
+ * @param window to animate into or out of full screen mode
+ */
+ default void requestToggleFullScreen(final Window window) {
+ }
+
+ /**
+ * Returns the Mac specific FileManager.
+ * @return FileManager
+ * @see FileManager
+ */
+ default FileManager getFileManager() {
+ return null;
+ }
+
}