From 5cf672e7784b9a9a82f29977a072b162cc240fd1 Mon Sep 17 00:00:00 2001 From: Phil Race Date: Mon, 14 Jul 2025 20:23:38 +0000 Subject: [PATCH] 8359053: Implement JEP 504 - Remove the Applet API Reviewed-by: aivanov, kizune, kcr, achung, serb --- .../share/jfc/J2Ddemo/java2d/RunWindow.java | 2 +- src/demo/share/jfc/J2Ddemo/java2d/Tools.java | 7 - src/demo/share/jfc/SwingSet2/SwingSet2.java | 7 +- .../com/apple/laf/AquaInternalFrameUI.java | 4 - .../classes/sun/lwawt/LWWindowPeer.java | 2 +- .../sun/lwawt/macosx/CPlatformWindow.java | 2 - .../macosx/native/libawt_lwawt/awt/AWTEvent.m | 2 +- .../native/libawt_lwawt/awt/DnDUtilities.m | 1 - .../com/sun/java/swing/SwingUtilities3.java | 16 +- .../sun/media/sound/JavaSoundAudioClip.java | 43 +- .../share/classes/java/applet/Applet.java | 609 ------------------ .../classes/java/applet/AppletContext.java | 200 ------ .../share/classes/java/applet/AppletStub.java | 111 ---- .../share/classes/java/applet/AudioClip.java | 55 -- .../classes/java/applet/package-info.java | 47 -- .../share/classes/java/awt/Component.java | 22 +- .../share/classes/java/awt/Container.java | 4 +- .../share/classes/java/awt/Dialog.java | 9 +- .../share/classes/java/awt/EventQueue.java | 9 - .../share/classes/java/awt/Frame.java | 2 - .../classes/java/awt/GraphicsEnvironment.java | 3 +- .../java/awt/KeyboardFocusManager.java | 14 +- .../share/classes/java/awt/Polygon.java | 2 +- .../share/classes/java/awt/SystemTray.java | 5 +- .../share/classes/java/awt/Toolkit.java | 14 +- .../share/classes/java/awt/Window.java | 6 +- .../classes/java/awt/doc-files/FocusSpec.html | 17 - .../classes/java/awt/doc-files/Modality.html | 13 +- .../classes/java/beans/AppletInitializer.java | 90 --- .../share/classes/java/beans/Beans.java | 305 +-------- .../share/classes/java/beans/DesignMode.java | 2 +- .../metadata/IIOMetadataFormatImpl.java | 2 +- .../javax/imageio/spi/IIORegistry.java | 4 +- .../swing/BufferStrategyPaintManager.java | 37 +- .../share/classes/javax/swing/JApplet.java | 580 ----------------- .../share/classes/javax/swing/JComponent.java | 36 +- .../classes/javax/swing/JEditorPane.java | 3 +- .../classes/javax/swing/JOptionPane.java | 12 +- .../share/classes/javax/swing/JRootPane.java | 26 +- .../share/classes/javax/swing/JTable.java | 5 +- .../share/classes/javax/swing/JViewport.java | 2 +- .../classes/javax/swing/KeyboardManager.java | 6 +- .../classes/javax/swing/PopupFactory.java | 22 +- .../classes/javax/swing/RepaintManager.java | 37 +- .../javax/swing/RootPaneContainer.java | 7 +- .../swing/SwingPaintEventDispatcher.java | 2 +- .../classes/javax/swing/SwingUtilities.java | 35 +- .../share/classes/javax/swing/Timer.java | 2 +- .../classes/javax/swing/ToolTipManager.java | 5 +- .../share/classes/javax/swing/UIManager.java | 10 +- .../swing/beaninfo/images/JAppletColor16.gif | Bin 146 -> 0 bytes .../swing/beaninfo/images/JAppletColor32.gif | Bin 1041 -> 0 bytes .../swing/beaninfo/images/JAppletMono16.gif | Bin 78 -> 0 bytes .../swing/beaninfo/images/JAppletMono32.gif | Bin 146 -> 0 bytes .../javax/swing/doc-files/JRootPane-1.gif | Bin 5515 -> 0 bytes .../javax/swing/doc-files/JRootPane-1.svg | 112 ++++ .../classes/javax/swing/package-info.java | 6 +- .../swing/plaf/basic/BasicPopupMenuUI.java | 8 +- .../share/classes/module-info.java | 1 - .../share/classes/sun/awt/AppContext.java | 26 +- .../share/classes/sun/awt/EmbeddedFrame.java | 60 +- .../share/classes/sun/awt/SunToolkit.java | 6 +- .../sun/awt/util/PerformanceLogger.java | 12 +- .../classes/sun/font/SunFontManager.java | 4 +- .../unix/classes/sun/awt/X11/XWindow.java | 2 +- .../sun/awt/windows/WEmbeddedFrame.java | 4 +- .../native/libawt/windows/awt_Dialog.h | 3 +- .../native/libawt/windows/awt_GDIObject.cpp | 1 - .../native/libawt/windows/awt_PrintJob.cpp | 4 +- test/hotspot/jtreg/TEST.quick-groups | 1 - .../jit/misctests/fpustack/GraphApplet.java | 156 ----- .../jit/misctests/fpustack/GraphPanel.java | 111 ---- .../jit/misctests/fpustack/Node.java | 34 - .../jit/misctests/fpustack/ilayout.java | 33 - .../jit/misctests/fpustack/layout.java | 46 -- .../vmTestbase/jit/removal_candidates.txt | 1 - .../TranslucentJAppletTest.java | 123 ---- .../awt/applet/Applet/AppletFlipBuffer.java | 93 --- .../awt/applet/Applet/HeadlessApplet.java | 49 -- .../Introspector/4520754/Test4520754.java | 3 +- .../beans/Performance/TestIntrospector.java | 3 +- .../PropertyChangeSupport/Test4682386.java | 2 - .../sampled/Clip/AudioContentHandlers.java | 14 +- .../sampled/Clip/AutoCloseTimeCheck.java | 8 +- .../sampled/Clip/DataPusherThreadCheck.java | 6 +- .../javax/swing/Headless/HeadlessJApplet.java | 44 -- 86 files changed, 296 insertions(+), 3138 deletions(-) delete mode 100644 src/java.desktop/share/classes/java/applet/Applet.java delete mode 100644 src/java.desktop/share/classes/java/applet/AppletContext.java delete mode 100644 src/java.desktop/share/classes/java/applet/AppletStub.java delete mode 100644 src/java.desktop/share/classes/java/applet/AudioClip.java delete mode 100644 src/java.desktop/share/classes/java/applet/package-info.java delete mode 100644 src/java.desktop/share/classes/java/beans/AppletInitializer.java delete mode 100644 src/java.desktop/share/classes/javax/swing/JApplet.java delete mode 100644 src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor16.gif delete mode 100644 src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor32.gif delete mode 100644 src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono16.gif delete mode 100644 src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono32.gif delete mode 100644 src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.gif create mode 100644 src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.svg delete mode 100644 test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphApplet.java delete mode 100644 test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphPanel.java delete mode 100644 test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/Node.java delete mode 100644 test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/ilayout.java delete mode 100644 test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/layout.java delete mode 100644 test/jdk/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java delete mode 100644 test/jdk/java/awt/applet/Applet/AppletFlipBuffer.java delete mode 100644 test/jdk/java/awt/applet/Applet/HeadlessApplet.java delete mode 100644 test/jdk/javax/swing/Headless/HeadlessJApplet.java diff --git a/src/demo/share/jfc/J2Ddemo/java2d/RunWindow.java b/src/demo/share/jfc/J2Ddemo/java2d/RunWindow.java index 7ac88261277..21cef121b61 100644 --- a/src/demo/share/jfc/J2Ddemo/java2d/RunWindow.java +++ b/src/demo/share/jfc/J2Ddemo/java2d/RunWindow.java @@ -362,7 +362,7 @@ public class RunWindow extends JPanel implements Runnable, ActionListener { /** * This class contains initial values for instance variables of 'RunWindow' class, * and its instance is used in creation of 'RunWindow' object. Values parsed from - * certain command line options of the demo or from the demo applet parameters are + * certain command line options of the demo * set to the fields of this class instance. It is a part of the fix which changed * static variables for instance variables in certain demo classes. * diff --git a/src/demo/share/jfc/J2Ddemo/java2d/Tools.java b/src/demo/share/jfc/J2Ddemo/java2d/Tools.java index 3c01042adf4..9535b8c741e 100644 --- a/src/demo/share/jfc/J2Ddemo/java2d/Tools.java +++ b/src/demo/share/jfc/J2Ddemo/java2d/Tools.java @@ -406,13 +406,6 @@ public final class Tools extends JPanel implements ActionListener, if (pDialogState) { printJob.print(aset); } - } catch (@SuppressWarnings("removal") java.security.AccessControlException ace) { - String errmsg = "Applet access control exception; to allow " - + "access to printer, set\n" - + "permission for \"queuePrintJob\" in " - + "RuntimePermission."; - JOptionPane.showMessageDialog(this, errmsg, "Printer Access Error", - JOptionPane.ERROR_MESSAGE); } catch (Exception ex) { Logger.getLogger(Tools.class.getName()).log(Level.SEVERE, null, ex); diff --git a/src/demo/share/jfc/SwingSet2/SwingSet2.java b/src/demo/share/jfc/SwingSet2/SwingSet2.java index 75eeb4e3657..fa78d5b6edc 100644 --- a/src/demo/share/jfc/SwingSet2/SwingSet2.java +++ b/src/demo/share/jfc/SwingSet2/SwingSet2.java @@ -131,7 +131,7 @@ public class SwingSet2 extends JPanel { private JEditorPane demoSrcPane = null; - // contentPane cache, saved from the applet or application frame + // contentPane cache, saved from the application frame Container contentPane = null; @@ -177,7 +177,7 @@ public class SwingSet2 extends JPanel { /** - * SwingSet2 Main. Called only if we're an application, not an applet. + * SwingSet2 Main. */ public static void main(final String[] args) { // must run in EDT when constructing the GUI components @@ -716,8 +716,7 @@ public class SwingSet2 extends JPanel { } /** - * Returns the content pane whether we're in an applet - * or application + * Returns the content pane */ public Container getContentPane() { if(contentPane == null) { diff --git a/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java b/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java index bdf9809ea68..ac2d01aa8dc 100644 --- a/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java +++ b/src/java.desktop/macosx/classes/com/apple/laf/AquaInternalFrameUI.java @@ -431,7 +431,6 @@ public class AquaInternalFrameUI extends BasicInternalFrameUI implements SwingCo } @Override - @SuppressWarnings("removal") public void mouseReleased(final MouseEvent e) { if (didForwardEvent(e)) return; @@ -467,9 +466,6 @@ public class AquaInternalFrameUI extends BasicInternalFrameUI implements SwingCo ((JFrame)frame.getTopLevelAncestor()).getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); ((JFrame)frame.getTopLevelAncestor()).getGlassPane().setVisible(false); - } else if (c instanceof JApplet) { - ((JApplet)c).getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - ((JApplet)c).getGlassPane().setVisible(false); } else if (c instanceof JWindow) { ((JWindow)c).getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); ((JWindow)c).getGlassPane().setVisible(false); diff --git a/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java b/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java index 054e74dcef2..73e13908fbf 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java @@ -825,7 +825,7 @@ public class LWWindowPeer topmostPlatformWindow != null ? topmostPlatformWindow.getPeer() : null; // topmostWindowPeer == null condition is added for the backward - // compatibility with applets. It can be removed when the + // compatibility. It can be removed when the // getTopmostPlatformWindowUnderMouse() method will be properly // implemented in CPlatformEmbeddedFrame class if (topmostWindowPeer == this || topmostWindowPeer == null) { diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java index 615fcec9a77..c91491ac53f 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java @@ -433,7 +433,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo // If the target is a dialog, popup or tooltip we want it to ignore the brushed metal look. if (isPopup) { styleBits = SET(styleBits, TEXTURED, false); - // Popups in applets don't activate applet's process styleBits = SET(styleBits, NONACTIVATING, true); styleBits = SET(styleBits, IS_POPUP, true); } @@ -714,7 +713,6 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo boolean isPopup = (target.getType() == Window.Type.POPUP); execute(ptr -> { if (isPopup) { - // Popups in applets don't activate applet's process CWrapper.NSWindow.orderFrontRegardless(ptr); } else { CWrapper.NSWindow.orderFront(ptr); diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m index d26def5694f..e81335c0d9e 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m @@ -49,7 +49,7 @@ * when we get a punctuation char what was the real hardware key was that * was pressed? Although '&' often comes from Shift-7 the keyboard can be * remapped! I don't think there really is a good answer, and hopefully - * all good applets are only interested in logical key typed events not + * all good applications are only interested in logical key typed events not * press/release. Meanwhile, we are hard-coding the shifted punctuation * to trigger the virtual keys that are the expected ones under a standard * keymapping. Looking at Windows & Mac, they don't actually do this, the diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m index 6c7f3aee8fa..7eb7b104bcd 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m @@ -43,7 +43,6 @@ There are several problems with Drag and Drop - notably, the mismatch between Ja @implementation DnDUtilities // Make sure we don't let other apps see local drags by using a process unique pasteboard type. -// This may not work in the Applet case, since they are all running in the same VM + (NSString *) javaPboardType { static NSString *customJavaPboardType = nil; if (customJavaPboardType == nil) diff --git a/src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java b/src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java index 8040120695d..277b00ba4cf 100644 --- a/src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java +++ b/src/java.desktop/share/classes/com/sun/java/swing/SwingUtilities3.java @@ -25,7 +25,6 @@ package com.sun.java.swing; -import java.applet.Applet; import java.awt.Component; import java.awt.Container; import java.awt.Graphics; @@ -53,9 +52,7 @@ import static sun.java2d.pipe.Region.clipRound; * releases and even patch releases. You should not rely on this class even * existing. * - * This is a second part of sun.swing.SwingUtilities2. It is required - * to provide services for JavaFX applets. - * + * This is a second part of sun.swing.SwingUtilities2. */ public class SwingUtilities3 { /** @@ -91,14 +88,12 @@ public class SwingUtilities3 { * depends on current RepaintManager's RepaintManager.PaintManager * and on the capabilities of the graphics hardware/software and what not. * - * @param rootContainer topmost container. Should be either {@code Window} - * or {@code Applet} + * @param rootContainer topmost container. Should be {@code Window} * @param isRequested the value to set vsyncRequested state to */ - @SuppressWarnings("removal") public static void setVsyncRequested(Container rootContainer, boolean isRequested) { - assert (rootContainer instanceof Applet) || (rootContainer instanceof Window); + assert (rootContainer instanceof Window); if (isRequested) { vsyncedMap.put(rootContainer, Boolean.TRUE); } else { @@ -109,12 +104,11 @@ public class SwingUtilities3 { /** * Checks if vsync painting is requested for {@code rootContainer} * - * @param rootContainer topmost container. Should be either Window or Applet + * @param rootContainer topmost container. Should be Window * @return {@code true} if vsync painting is requested for {@code rootContainer} */ - @SuppressWarnings("removal") public static boolean isVsyncRequested(Container rootContainer) { - assert (rootContainer instanceof Applet) || (rootContainer instanceof Window); + assert (rootContainer instanceof Window); return Boolean.TRUE == vsyncedMap.get(rootContainer); } diff --git a/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java b/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java index fa90f92f0ab..6b81eaf008e 100644 --- a/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java +++ b/src/java.desktop/share/classes/com/sun/media/sound/JavaSoundAudioClip.java @@ -25,16 +25,17 @@ package com.sun.media.sound; -import java.applet.AudioClip; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; +import javax.sound.SoundClip; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaEventListener; import javax.sound.midi.MetaMessage; @@ -59,8 +60,7 @@ import javax.sound.sampled.UnsupportedAudioFileException; * @author Arthur van Hoff, Kara Kytle, Jan Borgersen * @author Florian Bomers */ -@SuppressWarnings("removal") -public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, LineListener { +public final class JavaSoundAudioClip implements MetaEventListener, LineListener { private long lastPlayCall = 0; private static final int MINIMUM_PLAY_DELAY = 30; @@ -103,24 +103,28 @@ public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, L return clip; } - public static JavaSoundAudioClip create(final URLConnection uc) { - JavaSoundAudioClip clip = new JavaSoundAudioClip(); + /* Used [only] by sun.awt.www.content.MultiMediaContentHandlers */ + public static SoundClip create(final URLConnection uc) { + File tmpFile = null; try { - clip.init(uc.getInputStream()); - } catch (final Exception ignored) { - // Playing the clip will be a no-op if an exception occured in inititialization. + tmpFile = File.createTempFile("javaurl", ".aud"); + } catch (IOException e) { + return null; } - return clip; - } - public static JavaSoundAudioClip create(final URL url) { - JavaSoundAudioClip clip = new JavaSoundAudioClip(); - try { - clip.init(url.openStream()); - } catch (final Exception ignored) { - // Playing the clip will be a no-op if an exception occurred in inititialization. + try (InputStream in = uc.getInputStream(); + FileOutputStream out = new FileOutputStream(tmpFile)) { + in.transferTo(out); + } catch (IOException e) { } - return clip; + + try { + return SoundClip.createSoundClip(tmpFile); + } catch (IOException e) { + } finally { + tmpFile.delete(); + } + return null; } private void init(InputStream in) throws IOException { @@ -167,7 +171,6 @@ public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, L return false; } - @Override public synchronized void play() { if (!success) { return; @@ -175,7 +178,6 @@ public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, L startImpl(false); } - @Override public synchronized void loop() { if (!success) { return; @@ -184,7 +186,7 @@ public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, L } private synchronized void startImpl(boolean loop) { - // hack for some applets that call the start method very rapidly... + // hack for some applications that call the start method very rapidly... long currentTime = System.currentTimeMillis(); long diff = currentTime - lastPlayCall; if (diff < MINIMUM_PLAY_DELAY) { @@ -247,7 +249,6 @@ public final class JavaSoundAudioClip implements AudioClip, MetaEventListener, L } } - @Override public synchronized void stop() { if (!success) { return; diff --git a/src/java.desktop/share/classes/java/applet/Applet.java b/src/java.desktop/share/classes/java/applet/Applet.java deleted file mode 100644 index 56b2392f0e2..00000000000 --- a/src/java.desktop/share/classes/java/applet/Applet.java +++ /dev/null @@ -1,609 +0,0 @@ -/* - * Copyright (c) 1995, 2025, 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 java.applet; - -import java.awt.Dimension; -import java.awt.GraphicsEnvironment; -import java.awt.HeadlessException; -import java.awt.Image; -import java.awt.Panel; -import java.awt.event.ComponentEvent; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.Serial; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Locale; - -import javax.accessibility.AccessibleContext; -import javax.accessibility.AccessibleRole; -import javax.accessibility.AccessibleState; -import javax.accessibility.AccessibleStateSet; - -import com.sun.media.sound.JavaSoundAudioClip; - -/** - * An applet is a small program that is intended not to be run on its own, but - * rather to be embedded inside another application. - *

- * The {@code Applet} class must be the superclass of any applet that is to be - * embedded in a Web page or viewed by the Java Applet Viewer. The - * {@code Applet} class provides a standard interface between applets and their - * environment. - * - * @author Arthur van Hoff - * @author Chris Warth - * @since 1.0 - * @deprecated The Applet API is deprecated, no replacement. - */ -@Deprecated(since = "9", forRemoval = true) -@SuppressWarnings("removal") -public class Applet extends Panel { - - /** - * Constructs a new Applet. - *

- * Note: Many methods in {@code java.applet.Applet} may be invoked by the - * applet only after the applet is fully constructed; applet should avoid - * calling methods in {@code java.applet.Applet} in the constructor. - * - * @throws HeadlessException if {@code GraphicsEnvironment.isHeadless()} - * returns {@code true} - * @see java.awt.GraphicsEnvironment#isHeadless - * @since 1.4 - */ - public Applet() throws HeadlessException { - if (GraphicsEnvironment.isHeadless()) { - throw new HeadlessException(); - } - } - - /** - * Applets can be serialized but the following conventions MUST be followed: - *

- * Before Serialization: An applet must be in STOPPED state. - *

- * After Deserialization: The applet will be restored in STOPPED state (and - * most clients will likely move it into RUNNING state). The stub field will - * be restored by the reader. - */ - private transient AppletStub stub; - - /** - * Use serialVersionUID from JDK 1.0 for interoperability. - */ - @Serial - private static final long serialVersionUID = -5836846270535785031L; - - /** - * Read an applet from an object input stream. - * - * @param s the {@code ObjectInputStream} to read - * @throws ClassNotFoundException if the class of a serialized object could - * not be found - * @throws IOException if an I/O error occurs - * @throws HeadlessException if {@code GraphicsEnvironment.isHeadless()} - * returns {@code true} - * - * @see java.awt.GraphicsEnvironment#isHeadless - * @since 1.4 - */ - @Serial - private void readObject(ObjectInputStream s) - throws ClassNotFoundException, IOException, HeadlessException { - if (GraphicsEnvironment.isHeadless()) { - throw new HeadlessException(); - } - s.defaultReadObject(); - } - - /** - * Sets this applet's stub. This is done automatically by the system. - * - * @param stub the new stub - */ - public final void setStub(AppletStub stub) { - this.stub = stub; - } - - /** - * Determines if this applet is active. An applet is marked active just - * before its {@code start} method is called. It becomes inactive just - * before its {@code stop} method is called. - * - * @return {@code true} if the applet is active; {@code false} otherwise - * @see java.applet.Applet#start() - * @see java.applet.Applet#stop() - */ - public boolean isActive() { - if (stub != null) { - return stub.isActive(); - } else { // If stub field not filled in, applet never active - return false; - } - } - - /** - * Gets the {@code URL} of the document in which this applet is embedded. - * For example, suppose an applet is contained within the document: - *

-     *    http://www.oracle.com/technetwork/java/index.html
-     * 
- * The document base is: - *
-     *    http://www.oracle.com/technetwork/java/index.html
-     * 
- * - * @return the {@link java.net.URL} of the document that contains this - * applet - * @see java.applet.Applet#getCodeBase() - */ - public URL getDocumentBase() { - return stub.getDocumentBase(); - } - - /** - * Gets the base {@code URL}. This is the {@code URL} of the directory which - * contains this applet. - * - * @return the base {@link java.net.URL} of the directory which contains - * this applet - * @see java.applet.Applet#getDocumentBase() - */ - public URL getCodeBase() { - return stub.getCodeBase(); - } - - /** - * Returns the value of the named parameter in the HTML tag. For example, if - * this applet is specified as - *
-     * <applet code="Clock" width=50 height=50>
-     * <param name=Color value="blue">
-     * </applet>
-     * 
- *

- * then a call to {@code getParameter("Color")} returns the value - * {@code "blue"}. - *

- * The {@code name} argument is case insensitive. - * - * @param name a parameter name - * @return the value of the named parameter, or {@code null} if not set - */ - public String getParameter(String name) { - return stub.getParameter(name); - } - - /** - * Determines this applet's context, which allows the applet to query and - * affect the environment in which it runs. - *

- * This environment of an applet represents the document that contains the - * applet. - * - * @return the applet's context - */ - public AppletContext getAppletContext() { - return stub.getAppletContext(); - } - - /** - * Requests that this applet be resized. - * - * @param width the new requested width for the applet - * @param height the new requested height for the applet - */ - @SuppressWarnings("deprecation") - public void resize(int width, int height) { - Dimension d = size(); - if ((d.width != width) || (d.height != height)) { - super.resize(width, height); - if (stub != null) { - stub.appletResize(width, height); - } - } - } - - /** - * Requests that this applet be resized. - * - * @param d an object giving the new width and height - */ - @SuppressWarnings("deprecation") - public void resize(Dimension d) { - resize(d.width, d.height); - } - - /** - * Indicates if this container is a validate root. - *

- * {@code Applet} objects are the validate roots, and, therefore, they - * override this method to return {@code true}. - * - * @return {@code true} - * @see java.awt.Container#isValidateRoot - * @since 1.7 - */ - @Override - public boolean isValidateRoot() { - return true; - } - - /** - * Requests that the argument string be displayed in the "status window". - * Many browsers and applet viewers provide such a window, where the - * application can inform users of its current state. - * - * @param msg a string to display in the status window - */ - public void showStatus(String msg) { - getAppletContext().showStatus(msg); - } - - /** - * Returns an {@code Image} object that can then be painted on the screen. - * The {@code url} that is passed as an argument must specify an absolute - * {@code URL}. - *

- * This method always returns immediately, whether or not the image exists. - * When this applet attempts to draw the image on the screen, the data will - * be loaded. The graphics primitives that draw the image will incrementally - * paint on the screen. - * - * @param url an absolute {@code URL} giving the location of the image - * @return the image at the specified {@code URL} - * @see java.awt.Image - */ - public Image getImage(URL url) { - return getAppletContext().getImage(url); - } - - /** - * Returns an {@code Image} object that can then be painted on the screen. - * The {@code url} argument must specify an absolute {@code URL}. The - * {@code name} argument is a specifier that is relative to the {@code url} - * argument. - *

- * This method always returns immediately, whether or not the image exists. - * When this applet attempts to draw the image on the screen, the data will - * be loaded. The graphics primitives that draw the image will incrementally - * paint on the screen. - * - * @param url an absolute URL giving the base location of the image - * @param name the location of the image, relative to the {@code url} - * argument - * @return the image at the specified {@code URL} - * @see java.awt.Image - */ - public Image getImage(URL url, String name) { - try { - @SuppressWarnings("deprecation") - var u = new URL(url, name); - return getImage(u); - } catch (MalformedURLException e) { - return null; - } - } - - /** - * Get an audio clip from the given {@code URL}. - * - * @param url points to the audio clip - * @return the audio clip at the specified {@code URL} - * @since 1.2 - */ - public static final AudioClip newAudioClip(URL url) { - return JavaSoundAudioClip.create(url); - } - - /** - * Returns the {@code AudioClip} object specified by the {@code URL} - * argument. - *

- * This method always returns immediately, whether or not the audio clip - * exists. When this applet attempts to play the audio clip, the data will - * be loaded. - * - * @param url an absolute {@code URL} giving the location of the audio clip - * @return the audio clip at the specified {@code URL} - * @see java.applet.AudioClip - */ - public AudioClip getAudioClip(URL url) { - return getAppletContext().getAudioClip(url); - } - - /** - * Returns the {@code AudioClip} object specified by the {@code URL} and - * {@code name} arguments. - *

- * This method always returns immediately, whether or not the audio clip - * exists. When this applet attempts to play the audio clip, the data will - * be loaded. - * - * @param url an absolute {@code URL} giving the base location of the audio - * clip - * @param name the location of the audio clip, relative to the {@code url} - * argument - * @return the audio clip at the specified {@code URL} - * @see java.applet.AudioClip - */ - public AudioClip getAudioClip(URL url, String name) { - try { - @SuppressWarnings("deprecation") - var u = new URL(url, name); - return getAudioClip(u); - } catch (MalformedURLException e) { - return null; - } - } - - /** - * Returns information about this applet. An applet should override this - * method to return a {@code String} containing information about the - * author, version, and copyright of the applet. - *

- * The implementation of this method provided by the {@code Applet} class - * returns {@code null}. - * - * @return a string containing information about the author, version, and - * copyright of the applet - */ - public String getAppletInfo() { - return null; - } - - /** - * Gets the locale of the applet. It allows the applet to maintain its own - * locale separated from the locale of the browser or appletviewer. - * - * @return the locale of the applet; if no locale has been set, the default - * locale is returned - * @since 1.1 - */ - public Locale getLocale() { - Locale locale = super.getLocale(); - if (locale == null) { - return Locale.getDefault(); - } - return locale; - } - - /** - * Returns information about the parameters that are understood by this - * applet. An applet should override this method to return an array of - * strings describing these parameters. - *

- * Each element of the array should be a set of three strings containing the - * name, the type, and a description. For example: - *

-     * String pinfo[][] = {
-     *   {"fps",    "1-10",    "frames per second"},
-     *   {"repeat", "boolean", "repeat image loop"},
-     *   {"imgs",   "url",     "images directory"}
-     * };
-     * 
- *

- * The implementation of this method provided by the {@code Applet} class - * returns {@code null}. - * - * @return an array describing the parameters this applet looks for - */ - public String[][] getParameterInfo() { - return null; - } - - /** - * Plays the audio clip at the specified absolute {@code URL}. Nothing - * happens if the audio clip cannot be found. - * - * @param url an absolute {@code URL} giving the location of the audio clip - */ - public void play(URL url) { - AudioClip clip = getAudioClip(url); - if (clip != null) { - clip.play(); - } - } - - /** - * Plays the audio clip given the {@code URL} and a specifier that is - * relative to it. Nothing happens if the audio clip cannot be found. - * - * @param url an absolute {@code URL} giving the base location of the audio - * clip - * @param name the location of the audio clip, relative to the {@code url} - * argument - */ - public void play(URL url, String name) { - AudioClip clip = getAudioClip(url, name); - if (clip != null) { - clip.play(); - } - } - - /** - * Called by the browser or applet viewer to inform this applet that it has - * been loaded into the system. It is always called before the first time - * that the {@code start} method is called. - *

- * A subclass of {@code Applet} should override this method if it has - * initialization to perform. For example, an applet with threads would use - * the {@code init} method to create the threads and the {@code destroy} - * method to kill them. - *

- * The implementation of this method provided by the {@code Applet} class - * does nothing. - * - * @see java.applet.Applet#destroy() - * @see java.applet.Applet#start() - * @see java.applet.Applet#stop() - */ - public void init() { - } - - /** - * Called by the browser or applet viewer to inform this applet that it - * should start its execution. It is called after the {@code init} method - * and each time the applet is revisited in a Web page. - *

- * A subclass of {@code Applet} should override this method if it has any - * operation that it wants to perform each time the Web page containing it - * is visited. For example, an applet with animation might want to use the - * {@code start} method to resume animation, and the {@code stop} method to - * suspend the animation. - *

- * Note: some methods, such as {@code getLocationOnScreen}, can only provide - * meaningful results if the applet is showing. Because {@code isShowing} - * returns {@code false} when the applet's {@code start} is first called, - * methods requiring {@code isShowing} to return {@code true} should be - * called from a {@code ComponentListener}. - *

- * The implementation of this method provided by the {@code Applet} class - * does nothing. - * - * @see java.applet.Applet#destroy() - * @see java.applet.Applet#init() - * @see java.applet.Applet#stop() - * @see java.awt.Component#isShowing() - * @see java.awt.event.ComponentListener#componentShown(ComponentEvent) - */ - public void start() { - } - - /** - * Called by the browser or applet viewer to inform this applet that it - * should stop its execution. It is called when the Web page that contains - * this applet has been replaced by another page, and also just before the - * applet is to be destroyed. - *

- * A subclass of {@code Applet} should override this method if it has any - * operation that it wants to perform each time the Web page containing it - * is no longer visible. For example, an applet with animation might want to - * use the {@code start} method to resume animation, and the {@code stop} - * method to suspend the animation. - *

- * The implementation of this method provided by the {@code Applet} class - * does nothing. - * - * @see java.applet.Applet#destroy() - * @see java.applet.Applet#init() - */ - public void stop() { - } - - /** - * Called by the browser or applet viewer to inform this applet that it is - * being reclaimed and that it should destroy any resources that it has - * allocated. The {@code stop} method will always be called before - * {@code destroy}. - *

- * A subclass of {@code Applet} should override this method if it has any - * operation that it wants to perform before it is destroyed. For example, - * an applet with threads would use the {@code init} method to create the - * threads and the {@code destroy} method to kill them. - *

- * The implementation of this method provided by the {@code Applet} class - * does nothing. - * - * @see java.applet.Applet#init() - * @see java.applet.Applet#start() - * @see java.applet.Applet#stop() - */ - public void destroy() { - } - - // - // Accessibility support - // - - /** - * @serial The accessible context associated with this {@code Applet}. - */ - @SuppressWarnings("serial") // Not statically typed as Serializable - AccessibleContext accessibleContext = null; - - /** - * Gets the {@code AccessibleContext} associated with this {@code Applet}. - * For applets, the {@code AccessibleContext} takes the form of an - * {@code AccessibleApplet}. A new {@code AccessibleApplet} instance is - * created if necessary. - * - * @return an {@code AccessibleApplet} that serves as the - * {@code AccessibleContext} of this {@code Applet} - * @since 1.3 - */ - public AccessibleContext getAccessibleContext() { - if (accessibleContext == null) { - accessibleContext = new AccessibleApplet(); - } - return accessibleContext; - } - - /** - * This class implements accessibility support for the {@code Applet} class. - * It provides an implementation of the Java Accessibility API appropriate - * to applet user-interface elements. - * - * @since 1.3 - */ - protected class AccessibleApplet extends AccessibleAWTPanel { - - /** - * Use serialVersionUID from JDK 1.3 for interoperability. - */ - @Serial - private static final long serialVersionUID = 8127374778187708896L; - - /** - * Constructs an {@code AccessibleApplet}. - */ - protected AccessibleApplet() {} - - /** - * Get the role of this object. - * - * @return an instance of {@code AccessibleRole} describing the role of - * the object - */ - public AccessibleRole getAccessibleRole() { - return AccessibleRole.FRAME; - } - - /** - * Get the state of this object. - * - * @return an instance of {@code AccessibleStateSet} containing the - * current state set of the object - * @see AccessibleState - */ - public AccessibleStateSet getAccessibleStateSet() { - AccessibleStateSet states = super.getAccessibleStateSet(); - states.add(AccessibleState.ACTIVE); - return states; - } - } -} diff --git a/src/java.desktop/share/classes/java/applet/AppletContext.java b/src/java.desktop/share/classes/java/applet/AppletContext.java deleted file mode 100644 index 792bfa05bfd..00000000000 --- a/src/java.desktop/share/classes/java/applet/AppletContext.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 1995, 2021, 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 java.applet; - -import java.awt.Image; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Enumeration; -import java.util.Iterator; - -/** - * This interface corresponds to an applet's environment: the document - * containing the applet and the other applets in the same document. - *

- * The methods in this interface can be used by an applet to obtain information - * about its environment. - * - * @author Arthur van Hoff - * @since 1.0 - * @deprecated The Applet API is deprecated, no replacement. - */ -@Deprecated(since = "9", forRemoval = true) -@SuppressWarnings("removal") -public interface AppletContext { - - /** - * Creates an audio clip. - * - * @param url an absolute {@code URL} giving the location of the audio clip - * @return the audio clip at the specified {@code URL} - */ - AudioClip getAudioClip(URL url); - - /** - * Returns an {@code Image} object that can then be painted on the screen. - * The {@code url} argument that is passed as an argument must specify an - * absolute {@code URL}. - *

- * This method always returns immediately, whether or not the image exists. - * When the applet attempts to draw the image on the screen, the data will - * be loaded. The graphics primitives that draw the image will incrementally - * paint on the screen. - * - * @param url an absolute {@code URL} giving the location of the image - * @return the image at the specified {@code URL} - * @see java.awt.Image - */ - Image getImage(URL url); - - /** - * Finds and returns the applet in the document represented by this applet - * context with the given name. The name can be set in the HTML tag by - * setting the {@code name} attribute. - * - * @param name an applet name - * @return the applet with the given name, or {@code null} if not found - */ - Applet getApplet(String name); - - /** - * Finds all the applets in the document represented by this applet context. - * - * @return an enumeration of all applets in the document represented by this - * applet context - */ - Enumeration getApplets(); - - /** - * Requests that the browser or applet viewer show the Web page indicated by - * the {@code url} argument. The browser or applet viewer determines which - * window or frame to display the Web page. This method may be ignored by - * applet contexts that are not browsers. - * - * @param url an absolute {@code URL} giving the location of the document - */ - void showDocument(URL url); - - /** - * Requests that the browser or applet viewer show the Web page indicated by - * the {@code url} argument. The {@code target} argument indicates in which - * HTML frame the document is to be displayed. The target argument is - * interpreted as follows: - * - * - * - * - * - * - * - * - * - * - * - * - * - *
Target arguments and their descriptions
Target Argument - * Description - *
{@code "_self"} - * Show in the window and frame that contain the applet. - *
{@code "_parent"} - * Show in the applet's parent frame. If the applet's frame has no - * parent frame, acts the same as "_self". - *
{@code "_top"} - * Show in the top-level frame of the applet's window. If the - * applet's frame is the top-level frame, acts the same as "_self". - *
{@code "_blank"} - * Show in a new, unnamed top-level window. - *
name - * Show in the frame or window named name. If a target named - * name does not already exist, a new top-level window with the - * specified name is created, and the document is shown there. - *
- *

- * An applet viewer or browser is free to ignore {@code showDocument}. - * - * @param url an absolute {@code URL} giving the location of the document - * @param target a {@code String} indicating where to display the page - */ - public void showDocument(URL url, String target); - - /** - * Requests that the argument string be displayed in the "status window". - * Many browsers and applet viewers provide such a window, where the - * application can inform users of its current state. - * - * @param status a string to display in the status window - */ - void showStatus(String status); - - /** - * Associates the specified stream with the specified key in this applet - * context. If the applet context previously contained a mapping for this - * key, the old value is replaced. - *

- * For security reasons, mapping of streams and keys exists for each - * codebase. In other words, applet from one codebase cannot access the - * streams created by an applet from a different codebase - * - * @param key key with which the specified value is to be associated - * @param stream stream to be associated with the specified key. If this - * parameter is {@code null}, the specified key is removed in this - * applet context. - * @throws IOException if the stream size exceeds a certain size limit. Size - * limit is decided by the implementor of this interface. - * @since 1.4 - */ - public void setStream(String key, InputStream stream) throws IOException; - - /** - * Returns the stream to which specified key is associated within this - * applet context. Returns {@code null} if the applet context contains no - * stream for this key. - *

- * For security reasons, mapping of streams and keys exists for each - * codebase. In other words, applet from one codebase cannot access the - * streams created by an applet from a different codebase. - * - * @param key key whose associated stream is to be returned - * @return the stream to which this applet context maps the key - * @since 1.4 - */ - public InputStream getStream(String key); - - /** - * Finds all the keys of the streams in this applet context. - *

- * For security reasons, mapping of streams and keys exists for each - * codebase. In other words, applet from one codebase cannot access the - * streams created by an applet from a different codebase. - * - * @return an {@code Iterator} of all the names of the streams in this - * applet context - * @since 1.4 - */ - public Iterator getStreamKeys(); -} diff --git a/src/java.desktop/share/classes/java/applet/AppletStub.java b/src/java.desktop/share/classes/java/applet/AppletStub.java deleted file mode 100644 index fea295e727f..00000000000 --- a/src/java.desktop/share/classes/java/applet/AppletStub.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 1995, 2021, 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 java.applet; - -import java.net.URL; - -/** - * When an applet is first created, an applet stub is attached to it using the - * applet's {@code setStub} method. This stub serves as the interface between - * the applet and the browser environment or applet viewer environment in which - * the application is running. - * - * @author Arthur van Hoff - * @see java.applet.Applet#setStub(java.applet.AppletStub) - * @since 1.0 - * @deprecated The Applet API is deprecated, no replacement. - */ -@Deprecated(since = "9", forRemoval = true) -@SuppressWarnings("removal") -public interface AppletStub { - - /** - * Determines if the applet is active. An applet is active just before its - * {@code start} method is called. It becomes inactive just before its - * {@code stop} method is called. - * - * @return {@code true} if the applet is active; {@code false} otherwise - */ - boolean isActive(); - - /** - * Gets the {@code URL} of the document in which the applet is embedded. For - * example, suppose an applet is contained within the document: - *

-     *    http://www.oracle.com/technetwork/java/index.html
-     * 
- * The document base is: - *
-     *    http://www.oracle.com/technetwork/java/index.html
-     * 
- * - * @return the {@link java.net.URL} of the document that contains the applet - * @see java.applet.AppletStub#getCodeBase() - */ - URL getDocumentBase(); - - /** - * Gets the base {@code URL}. This is the {@code URL} of the directory which - * contains the applet. - * - * @return the base {@link java.net.URL} of the directory which contains the - * applet - * @see java.applet.AppletStub#getDocumentBase() - */ - URL getCodeBase(); - - /** - * Returns the value of the named parameter in the HTML tag. For example, if - * an applet is specified as - *
-     * <applet code="Clock" width=50 height=50>
-     * <param name=Color value="blue">
-     * </applet>
-     * 
- *

- * then a call to {@code getParameter("Color")} returns the value - * {@code "blue"}. - * - * @param name a parameter name - * @return the value of the named parameter, or {@code null} if not set - */ - String getParameter(String name); - - /** - * Returns the applet's context. - * - * @return the applet's context - */ - AppletContext getAppletContext(); - - /** - * Called when the applet wants to be resized. - * - * @param width the new requested width for the applet - * @param height the new requested height for the applet - */ - void appletResize(int width, int height); -} diff --git a/src/java.desktop/share/classes/java/applet/AudioClip.java b/src/java.desktop/share/classes/java/applet/AudioClip.java deleted file mode 100644 index 50638ec215e..00000000000 --- a/src/java.desktop/share/classes/java/applet/AudioClip.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 1995, 2021, 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 java.applet; - -/** - * The {@code AudioClip} interface is a simple abstraction for playing a sound - * clip. Multiple {@code AudioClip} items can be playing at the same time, and - * the resulting sound is mixed together to produce a composite. - * - * @author Arthur van Hoff - * @since 1.0 - * @deprecated The Applet API is deprecated, no replacement. - */ -@Deprecated(since = "9", forRemoval = true) -public interface AudioClip { - - /** - * Starts playing this audio clip. Each time this method is called, the clip - * is restarted from the beginning. - */ - void play(); - - /** - * Starts playing this audio clip in a loop. - */ - void loop(); - - /** - * Stops playing this audio clip. - */ - void stop(); -} diff --git a/src/java.desktop/share/classes/java/applet/package-info.java b/src/java.desktop/share/classes/java/applet/package-info.java deleted file mode 100644 index 492edbcff08..00000000000 --- a/src/java.desktop/share/classes/java/applet/package-info.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1998, 2021, 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. - */ - -/** - * Provides the classes necessary to create an applet and the classes an applet - * uses to communicate with its applet context. - *

- * The applet framework involves two entities: the applet and the - * applet context. An applet is an embeddable window (see the Panel - * class) with a few extra methods that the applet context can use to - * initialize, start, and stop the applet. - *

- * The applet context is an application that is responsible for loading and - * running applets. For example, the applet context could be a Web browser or an - * applet development environment. - *

- * This package has been deprecated and may be removed in - * a future version of the Java Platform. There is no replacement. - * All of the classes and interfaces in this package have been terminally - * deprecated. - * Users are advised to migrate their applications to other technologies. - * - * @since 1.0 - */ -package java.applet; diff --git a/src/java.desktop/share/classes/java/awt/Component.java b/src/java.desktop/share/classes/java/awt/Component.java index 55fb06247af..e78cab2a14c 100644 --- a/src/java.desktop/share/classes/java/awt/Component.java +++ b/src/java.desktop/share/classes/java/awt/Component.java @@ -25,7 +25,6 @@ package java.awt; -import java.applet.Applet; import java.awt.dnd.DropTarget; import java.awt.event.ActionEvent; import java.awt.event.AdjustmentEvent; @@ -237,8 +236,7 @@ public abstract class Component implements ImageObserver, MenuContainer, transient Container parent; /** - * The {@code AppContext} of the component. Applets/Plugin may - * change the AppContext. + * The {@code AppContext} of the component. */ transient AppContext appContext; @@ -3937,10 +3935,9 @@ public abstract class Component implements ImageObserver, MenuContainer, /** * Inner class for flipping buffers on a component. That component must - * be a {@code Canvas} or {@code Window} or {@code Applet}. + * be a {@code Canvas} or {@code Window}. * @see Canvas * @see Window - * @see Applet * @see java.awt.image.BufferStrategy * @author Michael Martak * @since 1.4 @@ -3988,11 +3985,9 @@ public abstract class Component implements ImageObserver, MenuContainer, /** * Creates a new flipping buffer strategy for this component. - * The component must be a {@code Canvas} or {@code Window} or - * {@code Applet}. + * The component must be a {@code Canvas} or {@code Window}. * @see Canvas * @see Window - * @see Applet * @param numBuffers the number of buffers * @param caps the capabilities of the buffers * @throws AWTException if the capabilities supplied could not be @@ -4010,11 +4005,10 @@ public abstract class Component implements ImageObserver, MenuContainer, throws AWTException { if (!(Component.this instanceof Window) && - !(Component.this instanceof Canvas) && - !(Component.this instanceof Applet)) + !(Component.this instanceof Canvas)) { throw new ClassCastException( - "Component must be a Canvas or Window or Applet"); + "Component must be a Canvas or Window"); } this.numBuffers = numBuffers; this.caps = caps; @@ -8161,12 +8155,6 @@ public abstract class Component implements ImageObserver, MenuContainer, focusLog.finer("default component is " + toFocus); } } - if (toFocus == null) { - Applet applet = EmbeddedFrame.getAppletIfAncestorOf(this); - if (applet != null) { - toFocus = applet; - } - } candidate = toFocus; } if (focusLog.isLoggable(PlatformLogger.Level.FINER)) { diff --git a/src/java.desktop/share/classes/java/awt/Container.java b/src/java.desktop/share/classes/java/awt/Container.java index 9bfb41a871e..683c24f9d13 100644 --- a/src/java.desktop/share/classes/java/awt/Container.java +++ b/src/java.desktop/share/classes/java/awt/Container.java @@ -1557,8 +1557,8 @@ public class Container extends Component { * as a {@code Frame} object) should be used to restore the validity of the * component hierarchy. *

- * The {@code Window} class and the {@code Applet} class are the validate - * roots in AWT. Swing introduces more validate roots. + * The {@code Window} class is the validate root in AWT. + * Swing introduces more validate roots. * * @return whether this container is a validate root * @see #invalidate diff --git a/src/java.desktop/share/classes/java/awt/Dialog.java b/src/java.desktop/share/classes/java/awt/Dialog.java index 95d32161b36..0fa4a74b61a 100644 --- a/src/java.desktop/share/classes/java/awt/Dialog.java +++ b/src/java.desktop/share/classes/java/awt/Dialog.java @@ -165,18 +165,11 @@ public class Dialog extends Window { /** * An {@code APPLICATION_MODAL} dialog blocks all top-level windows * from the same Java application except those from its own child hierarchy. - * If there are several applets launched in a browser, they can be - * treated either as separate applications or a single one. This behavior - * is implementation-dependent. */ APPLICATION_MODAL, /** * A {@code TOOLKIT_MODAL} dialog blocks all top-level windows run - * from the same toolkit except those from its own child hierarchy. If there - * are several applets launched in a browser, all of them run with the same - * toolkit; thus, a toolkit-modal dialog displayed by an applet may affect - * other applets and all windows of the browser instance which embeds the - * Java runtime environment for this toolkit. + * from the same toolkit except those from its own child hierarchy. */ TOOLKIT_MODAL } diff --git a/src/java.desktop/share/classes/java/awt/EventQueue.java b/src/java.desktop/share/classes/java/awt/EventQueue.java index f79ff285a79..be13548e998 100644 --- a/src/java.desktop/share/classes/java/awt/EventQueue.java +++ b/src/java.desktop/share/classes/java/awt/EventQueue.java @@ -67,15 +67,6 @@ import java.util.concurrent.atomic.AtomicInteger; * dispatched before event A. * *

- * Some browsers partition applets in different code bases into - * separate contexts, and establish walls between these contexts. - * In such a scenario, there will be one {@code EventQueue} - * per context. Other browsers place all applets into the same - * context, implying that there will be only a single, global - * {@code EventQueue} for all applets. This behavior is - * implementation-dependent. Consult your browser's documentation - * for more information. - *

* For information on the threading issues of the event dispatch * machinery, see AWT Threading Issues. diff --git a/src/java.desktop/share/classes/java/awt/Frame.java b/src/java.desktop/share/classes/java/awt/Frame.java index fcdb4d5e032..85ccf3efa45 100644 --- a/src/java.desktop/share/classes/java/awt/Frame.java +++ b/src/java.desktop/share/classes/java/awt/Frame.java @@ -1123,8 +1123,6 @@ public class Frame extends Window implements MenuContainer { /** * Returns an array of all {@code Frame}s created by this application. - * If called from an applet, the array includes only the {@code Frame}s - * accessible by that applet. *

* Warning: this method may return system created frames, such * as a shared, hidden frame which is used by Swing. Applications diff --git a/src/java.desktop/share/classes/java/awt/GraphicsEnvironment.java b/src/java.desktop/share/classes/java/awt/GraphicsEnvironment.java index 4936d5d396d..ecaf5ae4e27 100644 --- a/src/java.desktop/share/classes/java/awt/GraphicsEnvironment.java +++ b/src/java.desktop/share/classes/java/awt/GraphicsEnvironment.java @@ -292,8 +292,7 @@ public abstract class GraphicsEnvironment { * be used in constructing new {@code Font}s by name or family name, * and is enumerated by {@link #getAvailableFontFamilyNames} and * {@link #getAllFonts} within the execution context of this - * application or applet. This means applets cannot register fonts in - * a way that they are visible to other applets. + * application. *

* Reasons that this method might not register the font and therefore * return {@code false} are: diff --git a/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java b/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java index ede4d385a80..6c6e4044131 100644 --- a/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java +++ b/src/java.desktop/share/classes/java/awt/KeyboardFocusManager.java @@ -71,16 +71,6 @@ import sun.awt.AWTAccessor; * dispatcher for all FocusEvents, WindowEvents related to focus, and * KeyEvents. *

- * Some browsers partition applets in different code bases into separate - * contexts, and establish walls between these contexts. In such a scenario, - * there will be one KeyboardFocusManager per context. Other browsers place all - * applets into the same context, implying that there will be only a single, - * global KeyboardFocusManager for all applets. This behavior is - * implementation-dependent. Consult your browser's documentation for more - * information. No matter how many contexts there may be, however, there can - * never be more than one focus owner, focused Window, or active Window, per - * ClassLoader. - *

* Please see * * How to Use the Focus Subsystem, @@ -1177,7 +1167,7 @@ public abstract class KeyboardFocusManager * following: *

    *
  • whether the KeyboardFocusManager is currently managing focus - * for this application or applet's browser context + * for this application * ("managingFocus")
  • *
  • the focus owner ("focusOwner")
  • *
  • the permanent focus owner ("permanentFocusOwner")
  • @@ -1262,7 +1252,7 @@ public abstract class KeyboardFocusManager * following: *
      *
    • whether the KeyboardFocusManager is currently managing focus - * for this application or applet's browser context + * for this application * ("managingFocus")
    • *
    • the focus owner ("focusOwner")
    • *
    • the permanent focus owner ("permanentFocusOwner")
    • diff --git a/src/java.desktop/share/classes/java/awt/Polygon.java b/src/java.desktop/share/classes/java/awt/Polygon.java index e74ce5cb10f..3c91aaba90f 100644 --- a/src/java.desktop/share/classes/java/awt/Polygon.java +++ b/src/java.desktop/share/classes/java/awt/Polygon.java @@ -160,7 +160,7 @@ public class Polygon implements Shape, java.io.Serializable { if (npoints < 0) { throw new NegativeArraySizeException("npoints < 0"); } - // Fix 6343431: Applet compatibility problems if arrays are not + // Fix 6343431: compatibility problems if arrays are not // exactly npoints in length this.npoints = npoints; this.xpoints = Arrays.copyOf(xpoints, npoints); diff --git a/src/java.desktop/share/classes/java/awt/SystemTray.java b/src/java.desktop/share/classes/java/awt/SystemTray.java index abf8c97abda..b51702bd125 100644 --- a/src/java.desktop/share/classes/java/awt/SystemTray.java +++ b/src/java.desktop/share/classes/java/awt/SystemTray.java @@ -306,10 +306,7 @@ public class SystemTray { /** * Returns an array of all icons added to the tray by this * application. You can't access the icons added by another - * application. Some browsers partition applets in different - * code bases into separate contexts, and establish walls between - * these contexts. In such a scenario, only the tray icons added - * from this context will be returned. + * application. * *

      The returned array is a copy of the actual array and may be * modified in any way without affecting the system tray. To diff --git a/src/java.desktop/share/classes/java/awt/Toolkit.java b/src/java.desktop/share/classes/java/awt/Toolkit.java index d3d8fa2e268..1ca5cdd8112 100644 --- a/src/java.desktop/share/classes/java/awt/Toolkit.java +++ b/src/java.desktop/share/classes/java/awt/Toolkit.java @@ -1350,22 +1350,16 @@ public abstract class Toolkit { } /** - * Get the application's or applet's EventQueue instance. - * Depending on the Toolkit implementation, different EventQueues - * may be returned for different applets. Applets should - * therefore not assume that the EventQueue instance returned - * by this method will be shared by other applets or the system. - * - * @return the {@code EventQueue} object + * {@return the {@code EventQueue} for this application} */ public final EventQueue getSystemEventQueue() { return getSystemEventQueueImpl(); } /** - * Gets the application's or applet's {@code EventQueue} - * instance, without checking access. For security reasons, - * this can only be called from a {@code Toolkit} subclass. + * A method used by toolkit subclasses to get the {@code EventQueue}. + * This may be more direct or more efficient than calling + * {@code getSystemEventQueue()}. * @return the {@code EventQueue} object */ protected abstract EventQueue getSystemEventQueueImpl(); diff --git a/src/java.desktop/share/classes/java/awt/Window.java b/src/java.desktop/share/classes/java/awt/Window.java index 329e2574473..b41409a138e 100644 --- a/src/java.desktop/share/classes/java/awt/Window.java +++ b/src/java.desktop/share/classes/java/awt/Window.java @@ -1520,8 +1520,6 @@ public class Window extends Container implements Accessible { /** * Returns an array of all {@code Window}s, both owned and ownerless, * created by this application. - * If called from an applet, the array includes only the {@code Window}s - * accessible by that applet. *

      * Warning: this method may return system created windows, such * as a print dialog. Applications should not assume the existence of @@ -1543,8 +1541,6 @@ public class Window extends Container implements Accessible { * Returns an array of all {@code Window}s created by this application * that have no owner. They include {@code Frame}s and ownerless * {@code Dialog}s and {@code Window}s. - * If called from an applet, the array includes only the {@code Window}s - * accessible by that applet. *

      * Warning: this method may return system created windows, such * as a print dialog. Applications should not assume the existence of @@ -3865,7 +3861,7 @@ public class Window extends Container implements Accessible { if (content != null) { content.setOpaque(isOpaque); - // Iterate down one level to see whether we have a JApplet + // Iterate down one level to see whether we have (eg) a JInternalFrame // (which is also a RootPaneContainer) which requires processing int numChildren = content.getComponentCount(); if (numChildren > 0) { diff --git a/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html b/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html index 9e9dc8dcca2..22df108b91a 100644 --- a/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html +++ b/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html @@ -81,7 +81,6 @@ across platforms. This document has the following sections:

      • Overview of KeyboardFocusManager -
      • KeyboardFocusManager and Browser Contexts
      • KeyEventDispatcher
      • FocusEvent and WindowEvent
      • Event Delivery @@ -213,22 +212,6 @@ implementation in the DefaultKeyboardFocusManager class. - -

        KeyboardFocusManager and Browser Contexts

        -

        -Some browsers partition applets in different code bases into separate -contexts, and establish walls between these contexts. Each thread and -each Component is associated with a particular context and cannot -interfere with threads or access Components in other contexts. In such -a scenario, there will be one KeyboardFocusManager per context. Other -browsers place all applets into the same context, implying that there -will be only a single, global KeyboardFocusManager for all -applets. This behavior is implementation-dependent. Consult your -browser's documentation for more information. No matter how many -contexts there may be, however, there can never be more than one focus -owner, focused Window, or active Window, per ClassLoader. - -

        KeyEventDispatcher and KeyEventPostProcessor

        diff --git a/src/java.desktop/share/classes/java/awt/doc-files/Modality.html b/src/java.desktop/share/classes/java/awt/doc-files/Modality.html index df8131c0fc5..94491dd3edc 100644 --- a/src/java.desktop/share/classes/java/awt/doc-files/Modality.html +++ b/src/java.desktop/share/classes/java/awt/doc-files/Modality.html @@ -117,16 +117,9 @@

      • Application-modal dialogs
        An application-modal dialog blocks all windows from the same application except for those from its child hierarchy. - If there are several applets launched in a browser, they can be - treated either as separate applications or a single application. - This behavior is implementation-dependent.
      • Toolkit-modal dialogs
        A toolkit-modal dialog blocks all windows that run in the same - toolkit except those from its child hierarchy. If there - are several applets launched all of them run with the same toolkit, - so a toolkit-modal dialog shown from an applet may affect other - applets and all windows of the browser instance which embeds the - Java runtime environment for this toolkit. + toolkit except those from its child hierarchy.
      • Modality priority is arranged by the strength of blocking: modeless, @@ -356,8 +349,8 @@ calls: Dialog.setModal(true), Dialog(owner, true), etc. Prior to JDK 6 the default type was toolkit-modal, - but the only distinction between application- and toolkit-modality is for - applets and applications launched from Java Web Start. + and now with single application per-VM there is no + distinction between application- and toolkit-modality.

        Examples

        diff --git a/src/java.desktop/share/classes/java/beans/AppletInitializer.java b/src/java.desktop/share/classes/java/beans/AppletInitializer.java deleted file mode 100644 index 36f89836c28..00000000000 --- a/src/java.desktop/share/classes/java/beans/AppletInitializer.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 1997, 2021, 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 java.beans; - -import java.applet.Applet; - -import java.beans.beancontext.BeanContext; - -/** - * This interface is designed to work in collusion with java.beans.Beans.instantiate. - * The interface is intended to provide mechanism to allow the proper - * initialization of JavaBeans that are also Applets, during their - * instantiation by java.beans.Beans.instantiate(). - * - * @see java.beans.Beans#instantiate - * - * @since 1.2 - * - * @deprecated The Applet API is deprecated. See the - * java.applet package - * documentation for further information. - */ -@Deprecated(since = "9", forRemoval = true) -public interface AppletInitializer { - - /** - *

        - * If passed to the appropriate variant of java.beans.Beans.instantiate - * this method will be called in order to associate the newly instantiated - * Applet (JavaBean) with its AppletContext, AppletStub, and Container. - *

        - *

        - * Conformant implementations shall: - *

          - *
        1. Associate the newly instantiated Applet with the appropriate - * AppletContext. - * - *
        2. Instantiate an AppletStub() and associate that AppletStub with - * the Applet via an invocation of setStub(). - * - *
        3. If BeanContext parameter is null, then it shall associate the - * Applet with its appropriate Container by adding that Applet to its - * Container via an invocation of add(). If the BeanContext parameter is - * non-null, then it is the responsibility of the BeanContext to associate - * the Applet with its Container during the subsequent invocation of its - * addChildren() method. - *
        - * - * @param newAppletBean The newly instantiated JavaBean - * @param bCtxt The BeanContext intended for this Applet, or - * null. - */ - @SuppressWarnings("removal") - void initialize(Applet newAppletBean, BeanContext bCtxt); - - /** - *

        - * Activate, and/or mark Applet active. Implementors of this interface - * shall mark this Applet as active, and optionally invoke its start() - * method. - *

        - * - * @param newApplet The newly instantiated JavaBean - */ - @SuppressWarnings("removal") - void activate(Applet newApplet); -} diff --git a/src/java.desktop/share/classes/java/beans/Beans.java b/src/java.desktop/share/classes/java/beans/Beans.java index 5320d12ecd2..313bfe98515 100644 --- a/src/java.desktop/share/classes/java/beans/Beans.java +++ b/src/java.desktop/share/classes/java/beans/Beans.java @@ -27,11 +27,6 @@ package java.beans; import com.sun.beans.finder.ClassFinder; -import java.applet.Applet; -import java.applet.AppletContext; -import java.applet.AppletStub; -import java.applet.AudioClip; - import java.awt.Image; import java.beans.beancontext.BeanContext; @@ -82,7 +77,7 @@ public class Beans { */ public static Object instantiate(ClassLoader cls, String beanName) throws IOException, ClassNotFoundException { - return Beans.instantiate(cls, beanName, null, null); + return Beans.instantiate(cls, beanName, null); } /** @@ -109,73 +104,6 @@ public class Beans { public static Object instantiate(ClassLoader cls, String beanName, BeanContext beanContext) throws IOException, ClassNotFoundException { - return Beans.instantiate(cls, beanName, beanContext, null); - } - - /** - * Instantiate a bean. - *

        - * The bean is created based on a name relative to a class-loader. - * This name should be a dot-separated name such as "a.b.c". - *

        - * In Beans 1.0 the given name can indicate either a serialized object - * or a class. Other mechanisms may be added in the future. In - * beans 1.0 we first try to treat the beanName as a serialized object - * name then as a class name. - *

        - * When using the beanName as a serialized object name we convert the - * given beanName to a resource pathname and add a trailing ".ser" suffix. - * We then try to load a serialized object from that resource. - *

        - * For example, given a beanName of "x.y", Beans.instantiate would first - * try to read a serialized object from the resource "x/y.ser" and if - * that failed it would try to load the class "x.y" and create an - * instance of that class. - *

        - * If the bean is a subtype of java.applet.Applet, then it is given - * some special initialization. First, it is supplied with a default - * AppletStub and AppletContext. Second, if it was instantiated from - * a classname the applet's "init" method is called. (If the bean was - * deserialized this step is skipped.) - *

        - * Note that for beans which are applets, it is the caller's responsibility - * to call "start" on the applet. For correct behaviour, this should be done - * after the applet has been added into a visible AWT container. - *

        - * Note that applets created via beans.instantiate run in a slightly - * different environment than applets running inside browsers. In - * particular, bean applets have no access to "parameters", so they may - * wish to provide property get/set methods to set parameter values. We - * advise bean-applet developers to test their bean-applets against both - * the JDK appletviewer (for a reference browser environment) and the - * BDK BeanBox (for a reference bean container). - * - * @return a JavaBean - * @param cls the class-loader from which we should create - * the bean. If this is null, then the system - * class-loader is used. - * @param beanName the name of the bean within the class-loader. - * For example "sun.beanbox.foobah" - * @param beanContext The BeanContext in which to nest the new bean - * @param initializer The AppletInitializer for the new bean - * - * @throws ClassNotFoundException if the class of a serialized - * object could not be found. - * @throws IOException if an I/O error occurs. - * @since 1.2 - * - * @deprecated It is recommended to use - * {@link #instantiate(ClassLoader, String, BeanContext)}, - * because the Applet API is deprecated. See the - * java.applet package - * documentation for further information. - */ - @Deprecated(since = "9", forRemoval = true) - @SuppressWarnings("removal") - public static Object instantiate(ClassLoader cls, String beanName, - BeanContext beanContext, - AppletInitializer initializer) - throws IOException, ClassNotFoundException { InputStream ins; ObjectInputStream oins = null; @@ -249,101 +177,7 @@ public class Beans { } if (result != null) { - - // Ok, if the result is an applet initialize it. - - AppletStub stub = null; - - if (result instanceof Applet) { - Applet applet = (Applet) result; - boolean needDummies = initializer == null; - - if (needDummies) { - - // Figure our the codebase and docbase URLs. We do this - // by locating the URL for a known resource, and then - // massaging the URL. - - // First find the "resource name" corresponding to the bean - // itself. So a serialized bean "a.b.c" would imply a - // resource name of "a/b/c.ser" and a classname of "x.y" - // would imply a resource name of "x/y.class". - - final String resourceName; - - if (serialized) { - // Serialized bean - resourceName = beanName.replace('.','/').concat(".ser"); - } else { - // Regular class - resourceName = beanName.replace('.','/').concat(".class"); - } - - URL objectUrl = null; - URL codeBase = null; - URL docBase = null; - - // Now get the URL corresponding to the resource name. - if (cls == null) { - objectUrl = ClassLoader.getSystemResource(resourceName); - } else - objectUrl = cls.getResource(resourceName); - - // If we found a URL, we try to locate the docbase by taking - // of the final path name component, and the code base by taking - // of the complete resourceName. - // So if we had a resourceName of "a/b/c.class" and we got an - // objectURL of "file://bert/classes/a/b/c.class" then we would - // want to set the codebase to "file://bert/classes/" and the - // docbase to "file://bert/classes/a/b/" - - if (objectUrl != null) { - String s = objectUrl.toExternalForm(); - - if (s.endsWith(resourceName)) { - int ix = s.length() - resourceName.length(); - codeBase = newURL(s.substring(0,ix)); - docBase = codeBase; - - ix = s.lastIndexOf('/'); - - if (ix >= 0) { - docBase = newURL(s.substring(0,ix+1)); - } - } - } - - // Setup a default context and stub. - BeansAppletContext context = new BeansAppletContext(applet); - - stub = (AppletStub)new BeansAppletStub(applet, context, codeBase, docBase); - applet.setStub(stub); - } else { - initializer.initialize(applet, beanContext); - } - - // now, if there is a BeanContext, add the bean, if applicable. - - if (beanContext != null) { - unsafeBeanContextAdd(beanContext, result); - } - - // If it was deserialized then it was already init-ed. - // Otherwise we need to initialize it. - - if (!serialized) { - // We need to set a reasonable initial size, as many - // applets are unhappy if they are started without - // having been explicitly sized. - applet.setSize(100,100); - applet.init(); - } - - if (needDummies) { - ((BeansAppletStub)stub).active = true; - } else initializer.activate(applet); - - } else if (beanContext != null) unsafeBeanContextAdd(beanContext, result); + if (beanContext != null) unsafeBeanContextAdd(beanContext, result); } return result; @@ -482,138 +316,3 @@ class ObjectInputStreamWithLoader extends ObjectInputStream return ClassFinder.resolveClass(cname, this.loader); } } - -/** - * Package private support class. This provides a default AppletContext - * for beans which are applets. - */ -@Deprecated(since = "9", forRemoval = true) -@SuppressWarnings("removal") -class BeansAppletContext implements AppletContext { - Applet target; - Hashtable imageCache = new Hashtable<>(); - - BeansAppletContext(Applet target) { - this.target = target; - } - - public AudioClip getAudioClip(URL url) { - // We don't currently support audio clips in the Beans.instantiate - // applet context, unless by some luck there exists a URL content - // class that can generate an AudioClip from the audio URL. - try { - return (AudioClip) url.getContent(); - } catch (Exception ex) { - return null; - } - } - - public synchronized Image getImage(URL url) { - Object o = imageCache.get(url); - if (o != null) { - return (Image)o; - } - try { - o = url.getContent(); - if (o == null) { - return null; - } - if (o instanceof Image) { - imageCache.put(url, o); - return (Image) o; - } - // Otherwise it must be an ImageProducer. - Image img = target.createImage((java.awt.image.ImageProducer)o); - imageCache.put(url, img); - return img; - - } catch (Exception ex) { - return null; - } - } - - public Applet getApplet(String name) { - return null; - } - - public Enumeration getApplets() { - Vector applets = new Vector<>(); - applets.addElement(target); - return applets.elements(); - } - - public void showDocument(URL url) { - // We do nothing. - } - - public void showDocument(URL url, String target) { - // We do nothing. - } - - public void showStatus(String status) { - // We do nothing. - } - - public void setStream(String key, InputStream stream)throws IOException{ - // We do nothing. - } - - public InputStream getStream(String key){ - // We do nothing. - return null; - } - - public Iterator getStreamKeys(){ - // We do nothing. - return null; - } -} - -/** - * Package private support class. This provides an AppletStub - * for beans which are applets. - */ -@Deprecated(since = "9", forRemoval = true) -@SuppressWarnings("removal") -class BeansAppletStub implements AppletStub { - transient boolean active; - transient Applet target; - transient AppletContext context; - transient URL codeBase; - transient URL docBase; - - BeansAppletStub(Applet target, - AppletContext context, URL codeBase, - URL docBase) { - this.target = target; - this.context = context; - this.codeBase = codeBase; - this.docBase = docBase; - } - - public boolean isActive() { - return active; - } - - public URL getDocumentBase() { - // use the root directory of the applet's class-loader - return docBase; - } - - public URL getCodeBase() { - // use the directory where we found the class or serialized object. - return codeBase; - } - - public String getParameter(String name) { - return null; - } - - public AppletContext getAppletContext() { - return context; - } - - public void appletResize(int width, int height) { - // we do nothing. - } -} diff --git a/src/java.desktop/share/classes/java/beans/DesignMode.java b/src/java.desktop/share/classes/java/beans/DesignMode.java index bcc9f756848..36cff7a41e1 100644 --- a/src/java.desktop/share/classes/java/beans/DesignMode.java +++ b/src/java.desktop/share/classes/java/beans/DesignMode.java @@ -34,7 +34,7 @@ package java.beans; * The JavaBeans specification defines the notion of design time as is a * mode in which JavaBeans instances should function during their composition * and customization in a interactive design, composition or construction tool, - * as opposed to runtime when the JavaBean is part of an applet, application, + * as opposed to runtime when the JavaBean is part of an application, * or other live Java executable abstraction. * * @author Laurence P. G. Cable diff --git a/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java b/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java index ed9444b83af..9f47a582e5b 100644 --- a/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java +++ b/src/java.desktop/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java @@ -952,7 +952,7 @@ public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat { * are intended to be delivered by the subclasser - ie supplier of the * metadataformat. For the standard format and all standard plugins that * is the JDK. For 3rd party plugins that they will supply their own. - * This includes plugins bundled with applets/applications. + * This includes plugins bundled with applications. * In all cases this means it is sufficient to search for those resource * in the module that is providing the MetadataFormatImpl subclass. */ diff --git a/src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java b/src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java index 18a73ebce1f..5286464617a 100644 --- a/src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java +++ b/src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java @@ -110,9 +110,7 @@ public final class IIORegistry extends ServiceRegistry { * the Image I/O API. This instance should be used for all * registry functions. * - *

        Each {@code ThreadGroup} will receive its own - * instance; this allows different {@code Applet}s in the - * same browser (for example) to each have their own registry. + *

        Each {@code ThreadGroup} will receive its own instance. * * @return the default registry for the current * {@code ThreadGroup}. diff --git a/src/java.desktop/share/classes/javax/swing/BufferStrategyPaintManager.java b/src/java.desktop/share/classes/javax/swing/BufferStrategyPaintManager.java index 2cb6a0cbb67..02df96b435d 100644 --- a/src/java.desktop/share/classes/javax/swing/BufferStrategyPaintManager.java +++ b/src/java.desktop/share/classes/javax/swing/BufferStrategyPaintManager.java @@ -534,8 +534,7 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager { Container root = c; xOffset = yOffset = 0; while (root != null && - (!(root instanceof Window) && - !SunToolkit.isInstanceOf(root, "java.applet.Applet"))) { + (!(root instanceof Window))) { xOffset += root.getX(); yOffset += root.getY(); root = root.getParent(); @@ -687,7 +686,7 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager { } /** - * Returns the Root (Window or Applet) that this BufferInfo references. + * Returns the Root (Window) that this BufferInfo references. */ public Container getRoot() { return (root == null) ? null : root.get(); @@ -793,30 +792,14 @@ class BufferStrategyPaintManager extends RepaintManager.PaintManager { null); } BufferStrategy bs = null; - if (SunToolkit.isInstanceOf(root, "java.applet.Applet")) { - try { - AWTAccessor.ComponentAccessor componentAccessor - = AWTAccessor.getComponentAccessor(); - componentAccessor.createBufferStrategy(root, 2, caps); - bs = componentAccessor.getBufferStrategy(root); - } catch (AWTException e) { - // Type is not supported - if (LOGGER.isLoggable(PlatformLogger.Level.FINER)) { - LOGGER.finer("createBufferStrategy failed", - e); - } - } - } - else { - try { - ((Window)root).createBufferStrategy(2, caps); - bs = ((Window)root).getBufferStrategy(); - } catch (AWTException e) { - // Type not supported - if (LOGGER.isLoggable(PlatformLogger.Level.FINER)) { - LOGGER.finer("createBufferStrategy failed", - e); - } + try { + ((Window)root).createBufferStrategy(2, caps); + bs = ((Window)root).getBufferStrategy(); + } catch (AWTException e) { + // Type not supported + if (LOGGER.isLoggable(PlatformLogger.Level.FINER)) { + LOGGER.finer("createBufferStrategy failed", + e); } } return bs; diff --git a/src/java.desktop/share/classes/javax/swing/JApplet.java b/src/java.desktop/share/classes/javax/swing/JApplet.java deleted file mode 100644 index d5169f0df11..00000000000 --- a/src/java.desktop/share/classes/javax/swing/JApplet.java +++ /dev/null @@ -1,580 +0,0 @@ -/* - * Copyright (c) 1997, 2021, 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 javax.swing; - -import java.applet.Applet; -import java.awt.AWTEvent; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Container; -import java.awt.Graphics; -import java.awt.HeadlessException; -import java.awt.LayoutManager; -import java.beans.BeanProperty; -import java.beans.JavaBean; - -import javax.accessibility.Accessible; -import javax.accessibility.AccessibleContext; - -/** - * An extended version of java.applet.Applet that adds support for - * the JFC/Swing component architecture. - * You can find task-oriented documentation about using JApplet - * in The Java Tutorial, - * in the section - * How to Make Applets. - *

        - * The JApplet class is slightly incompatible with - * java.applet.Applet. JApplet contains a - * JRootPane as its only child. The contentPane - * should be the parent of any children of the JApplet. - * As a convenience, the {@code add}, {@code remove}, and {@code setLayout} - * methods of this class are overridden, so that they delegate calls - * to the corresponding methods of the {@code ContentPane}. - * For example, you can add a child component to an applet as follows: - *

        - *       applet.add(child);
        - * 
        - * - * And the child will be added to the contentPane. - * The contentPane will always be non-null. - * Attempting to set it to null will cause the - * JApplet to throw an exception. The default - * contentPane will have a BorderLayout - * manager set on it. - * Refer to {@link javax.swing.RootPaneContainer} - * for details on adding, removing and setting the LayoutManager - * of a JApplet. - *

        - * Please see the JRootPane documentation for a - * complete description of the contentPane, glassPane, - * and layeredPane properties. - *

        - * Warning: Swing is not thread safe. For more - * information see Swing's Threading - * Policy. - *

        - * Warning: - * Serialized objects of this class will not be compatible with - * future Swing releases. The current serialization support is - * appropriate for short term storage or RMI between applications running - * the same version of Swing. As of 1.4, support for long term storage - * of all JavaBeans - * has been added to the java.beans package. - * Please see {@link java.beans.XMLEncoder}. - * - * @see javax.swing.RootPaneContainer - * - * @author Arnaud Weber - * @since 1.2 - * - * @deprecated The Applet API is deprecated, no replacement. - */ -@Deprecated(since = "9", forRemoval = true) -@JavaBean(defaultProperty = "JMenuBar", description = "Swing's Applet subclass.") -@SwingContainer(delegate = "getContentPane") -@SuppressWarnings({"serial", "removal"}) // Same-version serialization only -public class JApplet extends Applet implements Accessible, - RootPaneContainer, - TransferHandler.HasGetTransferHandler -{ - /** - * The JRootPane instance that manages the - * contentPane. - * - * @see #getRootPane - * @see #setRootPane - */ - protected JRootPane rootPane; - - /** - * If true then calls to add and setLayout - * will be forwarded to the contentPane. This is initially - * false, but is set to true when the JApplet is constructed. - * - * @see #isRootPaneCheckingEnabled - * @see #setRootPaneCheckingEnabled - * @see javax.swing.RootPaneContainer - */ - protected boolean rootPaneCheckingEnabled = false; - - /** - * The TransferHandler for this applet. - */ - private TransferHandler transferHandler; - - /** - * Creates a swing applet instance. - *

        - * This constructor sets the component's locale property to the value - * returned by JComponent.getDefaultLocale. - * - * @throws HeadlessException if GraphicsEnvironment.isHeadless() - * returns true. - * @see java.awt.GraphicsEnvironment#isHeadless - * @see JComponent#getDefaultLocale - */ - public JApplet() throws HeadlessException { - super(); - // Check the timerQ and restart if necessary. - TimerQueue q = TimerQueue.sharedInstance(); - if(q != null) { - q.startIfNeeded(); - } - - /* Workaround for bug 4155072. The shared double buffer image - * may hang on to a reference to this applet; unfortunately - * Image.getGraphics() will continue to call JApplet.getForeground() - * and getBackground() even after this applet has been destroyed. - * So we ensure that these properties are non-null here. - */ - setForeground(Color.black); - setBackground(Color.white); - - setLocale( JComponent.getDefaultLocale() ); - setLayout(new BorderLayout()); - setRootPane(createRootPane()); - setRootPaneCheckingEnabled(true); - - setFocusTraversalPolicyProvider(true); - sun.awt.SunToolkit.checkAndSetPolicy(this); - - enableEvents(AWTEvent.KEY_EVENT_MASK); - } - - /** - * Called by the constructor methods to create the default rootPane. - * - * @return a new {@code JRootPane} - */ - protected JRootPane createRootPane() { - JRootPane rp = new JRootPane(); - // NOTE: this uses setOpaque vs LookAndFeel.installProperty as there - // is NO reason for the RootPane not to be opaque. For painting to - // work the contentPane must be opaque, therefore the RootPane can - // also be opaque. - rp.setOpaque(true); - return rp; - } - - /** - * Sets the {@code transferHandler} property, which is a mechanism to - * support transfer of data into this component. Use {@code null} - * if the component does not support data transfer operations. - *

        - * If the system property {@code suppressSwingDropSupport} is {@code false} - * (the default) and the current drop target on this component is either - * {@code null} or not a user-set drop target, this method will change the - * drop target as follows: If {@code newHandler} is {@code null} it will - * clear the drop target. If not {@code null} it will install a new - * {@code DropTarget}. - *

        - * Note: When used with {@code JApplet}, {@code TransferHandler} only - * provides data import capability, as the data export related methods - * are currently typed to {@code JComponent}. - *

        - * Please see - * - * How to Use Drag and Drop and Data Transfer, a section in - * The Java Tutorial, for more information. - * - * @param newHandler the new {@code TransferHandler} - * - * @see TransferHandler - * @see #getTransferHandler - * @see java.awt.Component#setDropTarget - * @since 1.6 - */ - @BeanProperty(hidden = true, description - = "Mechanism for transfer of data into the component") - public void setTransferHandler(TransferHandler newHandler) { - TransferHandler oldHandler = transferHandler; - transferHandler = newHandler; - SwingUtilities.installSwingDropTargetAsNecessary(this, transferHandler); - firePropertyChange("transferHandler", oldHandler, newHandler); - } - - /** - * Gets the transferHandler property. - * - * @return the value of the transferHandler property - * - * @see TransferHandler - * @see #setTransferHandler - * @since 1.6 - */ - public TransferHandler getTransferHandler() { - return transferHandler; - } - - /** - * Just calls paint(g). This method was overridden to - * prevent an unnecessary call to clear the background. - */ - public void update(Graphics g) { - paint(g); - } - - /** - * Sets the menubar for this applet. - * @param menuBar the menubar being placed in the applet - * - * @see #getJMenuBar - */ - @BeanProperty(bound = false, hidden = true, description - = "The menubar for accessing pulldown menus from this applet.") - public void setJMenuBar(final JMenuBar menuBar) { - getRootPane().setJMenuBar(menuBar); - } - - /** - * Returns the menubar set on this applet. - * - * @return the menubar set on this applet - * @see #setJMenuBar - */ - public JMenuBar getJMenuBar() { - return getRootPane().getJMenuBar(); - } - - - /** - * Returns whether calls to add and - * setLayout are forwarded to the contentPane. - * - * @return true if add and setLayout - * are forwarded; false otherwise - * - * @see #addImpl - * @see #setLayout - * @see #setRootPaneCheckingEnabled - * @see javax.swing.RootPaneContainer - */ - protected boolean isRootPaneCheckingEnabled() { - return rootPaneCheckingEnabled; - } - - - /** - * Sets whether calls to add and - * setLayout are forwarded to the contentPane. - * - * @param enabled true if add and setLayout - * are forwarded, false if they should operate directly on the - * JApplet. - * - * @see #addImpl - * @see #setLayout - * @see #isRootPaneCheckingEnabled - * @see javax.swing.RootPaneContainer - */ - @BeanProperty(hidden = true, description - = "Whether the add and setLayout methods are forwarded") - protected void setRootPaneCheckingEnabled(boolean enabled) { - rootPaneCheckingEnabled = enabled; - } - - - /** - * Adds the specified child Component. - * This method is overridden to conditionally forward calls to the - * contentPane. - * By default, children are added to the contentPane instead - * of the frame, refer to {@link javax.swing.RootPaneContainer} for - * details. - * - * @param comp the component to be enhanced - * @param constraints the constraints to be respected - * @param index the index - * @throws IllegalArgumentException if index is invalid - * @throws IllegalArgumentException if adding the container's parent - * to itself - * @throws IllegalArgumentException if adding a window to a container - * - * @see #setRootPaneCheckingEnabled - * @see javax.swing.RootPaneContainer - */ - protected void addImpl(Component comp, Object constraints, int index) - { - if(isRootPaneCheckingEnabled()) { - getContentPane().add(comp, constraints, index); - } - else { - super.addImpl(comp, constraints, index); - } - } - - /** - * Removes the specified component from the container. If - * comp is not the rootPane, this will forward - * the call to the contentPane. This will do nothing if - * comp is not a child of the JFrame or - * contentPane. - * - * @param comp the component to be removed - * @throws NullPointerException if comp is null - * @see #add - * @see javax.swing.RootPaneContainer - */ - public void remove(Component comp) { - if (comp == rootPane) { - super.remove(comp); - } else { - getContentPane().remove(comp); - } - } - - - /** - * Sets the LayoutManager. - * Overridden to conditionally forward the call to the - * contentPane. - * Refer to {@link javax.swing.RootPaneContainer} for - * more information. - * - * @param manager the LayoutManager - * @see #setRootPaneCheckingEnabled - * @see javax.swing.RootPaneContainer - */ - public void setLayout(LayoutManager manager) { - if(isRootPaneCheckingEnabled()) { - getContentPane().setLayout(manager); - } - else { - super.setLayout(manager); - } - } - - - /** - * Returns the rootPane object for this applet. - * - * @see #setRootPane - * @see RootPaneContainer#getRootPane - */ - @BeanProperty(bound = false, hidden = true, description - = "the RootPane object for this applet.") - public JRootPane getRootPane() { - return rootPane; - } - - - /** - * Sets the rootPane property. This method is called by the constructor. - * @param root the rootPane object for this applet - * - * @see #getRootPane - */ - protected void setRootPane(JRootPane root) { - if(rootPane != null) { - remove(rootPane); - } - rootPane = root; - if(rootPane != null) { - boolean checkingEnabled = isRootPaneCheckingEnabled(); - try { - setRootPaneCheckingEnabled(false); - add(rootPane, BorderLayout.CENTER); - } - finally { - setRootPaneCheckingEnabled(checkingEnabled); - } - } - } - - - /** - * Returns the contentPane object for this applet. - * - * @see #setContentPane - * @see RootPaneContainer#getContentPane - */ - public Container getContentPane() { - return getRootPane().getContentPane(); - } - - /** - * Sets the contentPane property. This method is called by the constructor. - * @param contentPane the contentPane object for this applet - * - * @throws java.awt.IllegalComponentStateException (a runtime - * exception) if the content pane parameter is null - * @see #getContentPane - * @see RootPaneContainer#setContentPane - */ - @BeanProperty(bound = false, hidden = true, description - = "The client area of the applet where child components are normally inserted.") - public void setContentPane(Container contentPane) { - getRootPane().setContentPane(contentPane); - } - - /** - * Returns the layeredPane object for this applet. - * - * @throws java.awt.IllegalComponentStateException (a runtime - * exception) if the layered pane parameter is null - * @see #setLayeredPane - * @see RootPaneContainer#getLayeredPane - */ - public JLayeredPane getLayeredPane() { - return getRootPane().getLayeredPane(); - } - - /** - * Sets the layeredPane property. This method is called by the constructor. - * @param layeredPane the layeredPane object for this applet - * - * @see #getLayeredPane - * @see RootPaneContainer#setLayeredPane - */ - @BeanProperty(bound = false, hidden = true, description - = "The pane which holds the various applet layers.") - public void setLayeredPane(JLayeredPane layeredPane) { - getRootPane().setLayeredPane(layeredPane); - } - - /** - * Returns the glassPane object for this applet. - * - * @see #setGlassPane - * @see RootPaneContainer#getGlassPane - */ - public Component getGlassPane() { - return getRootPane().getGlassPane(); - } - - /** - * Sets the glassPane property. - * This method is called by the constructor. - * @param glassPane the glassPane object for this applet - * - * @see #getGlassPane - * @see RootPaneContainer#setGlassPane - */ - @BeanProperty(bound = false, hidden = true, description - = "A transparent pane used for menu rendering.") - public void setGlassPane(Component glassPane) { - getRootPane().setGlassPane(glassPane); - } - - /** - * {@inheritDoc} - * - * @since 1.6 - */ - @BeanProperty(bound = false) - public Graphics getGraphics() { - JComponent.getGraphicsInvoked(this); - return super.getGraphics(); - } - - /** - * Repaints the specified rectangle of this component within - * time milliseconds. Refer to RepaintManager - * for details on how the repaint is handled. - * - * @param time maximum time in milliseconds before update - * @param x the x coordinate - * @param y the y coordinate - * @param width the width - * @param height the height - * @see RepaintManager - * @since 1.6 - */ - public void repaint(long time, int x, int y, int width, int height) { - if (RepaintManager.HANDLE_TOP_LEVEL_PAINT) { - RepaintManager.currentManager(this).addDirtyRegion( - this, x, y, width, height); - } - else { - super.repaint(time, x, y, width, height); - } - } - - /** - * Returns a string representation of this JApplet. This method - * is intended to be used only for debugging purposes, and the - * content and format of the returned string may vary between - * implementations. The returned string may be empty but may not - * be null. - * - * @return a string representation of this JApplet. - */ - protected String paramString() { - String rootPaneString = (rootPane != null ? - rootPane.toString() : ""); - String rootPaneCheckingEnabledString = (rootPaneCheckingEnabled ? - "true" : "false"); - - return super.paramString() + - ",rootPane=" + rootPaneString + - ",rootPaneCheckingEnabled=" + rootPaneCheckingEnabledString; - } - - - -///////////////// -// Accessibility support -//////////////// - - /** - * {@code AccessibleContext} associated with this {@code JApplet} - */ - protected AccessibleContext accessibleContext = null; - - /** - * Gets the AccessibleContext associated with this JApplet. - * For JApplets, the AccessibleContext takes the form of an - * AccessibleJApplet. - * A new AccessibleJApplet instance is created if necessary. - * - * @return an AccessibleJApplet that serves as the - * AccessibleContext of this JApplet - */ - public AccessibleContext getAccessibleContext() { - if (accessibleContext == null) { - accessibleContext = new AccessibleJApplet(); - } - return accessibleContext; - } - - /** - * This class implements accessibility support for the - * JApplet class. - */ - protected class AccessibleJApplet extends AccessibleApplet { - - /** - * Constructs an {@code AccessibleJApplet}. - */ - protected AccessibleJApplet() {} - - // everything moved to new parent, AccessibleApplet - } -} diff --git a/src/java.desktop/share/classes/javax/swing/JComponent.java b/src/java.desktop/share/classes/javax/swing/JComponent.java index 92f3f01ab3e..de3d7d128e9 100644 --- a/src/java.desktop/share/classes/javax/swing/JComponent.java +++ b/src/java.desktop/share/classes/javax/swing/JComponent.java @@ -25,7 +25,6 @@ package javax.swing; -import java.applet.Applet; import java.awt.AWTEvent; import java.awt.AWTKeyStroke; import java.awt.Color; @@ -106,8 +105,7 @@ import static javax.swing.ClientPropertyKey.JComponent_TRANSFER_HANDLER; * you must place the component in a containment hierarchy * whose root is a top-level Swing container. * Top-level Swing containers -- - * such as JFrame, JDialog, - * and JApplet -- + * such as JFrame and JDialog -- * are specialized components * that provide a place for other Swing components to paint themselves. * For an explanation of containment hierarchies, see @@ -609,7 +607,6 @@ public abstract class JComponent extends Container implements Serializable, * @see #setComponentPopupMenu * @since 1.5 */ - @SuppressWarnings("removal") public JPopupMenu getComponentPopupMenu() { if(!getInheritsPopupMenu()) { @@ -623,8 +620,7 @@ public abstract class JComponent extends Container implements Serializable, if(parent instanceof JComponent) { return ((JComponent)parent).getComponentPopupMenu(); } - if(parent instanceof Window || - parent instanceof Applet) { + if(parent instanceof Window) { // Reached toplevel, break and return null break; } @@ -2838,11 +2834,6 @@ public abstract class JComponent extends Container implements Serializable, * Returns the default locale used to initialize each JComponent's * locale property upon creation. * - * The default locale has "AppContext" scope so that applets (and - * potentially multiple lightweight applications running in a single VM) - * can have their own setting. An applet can safely alter its default - * locale because it will have no affect on other applets (or the browser). - * * @return the default Locale. * @see #setDefaultLocale * @see java.awt.Component#getLocale @@ -2865,10 +2856,6 @@ public abstract class JComponent extends Container implements Serializable, * Sets the default locale used to initialize each JComponent's locale * property upon creation. The initial value is the VM's default locale. * - * The default locale has "AppContext" scope so that applets (and - * potentially multiple lightweight applications running in a single VM) - * can have their own setting. An applet can safely alter its default - * locale because it will have no affect on other applets (or the browser). * Passing {@code null} will reset the current locale back * to VM's default locale. * @@ -2978,7 +2965,7 @@ public abstract class JComponent extends Container implements Serializable, * @param pressed true if the key is pressed * @return true if there is a key binding for e */ - @SuppressWarnings({"deprecation", "removal"}) + @SuppressWarnings("deprecation") boolean processKeyBindings(KeyEvent e, boolean pressed) { if (!SwingUtilities.isValidKeyEventForKeyBindings(e)) { return false; @@ -3015,8 +3002,7 @@ public abstract class JComponent extends Container implements Serializable, * asking the same component twice. */ Container parent = this; - while (parent != null && !(parent instanceof Window) && - !(parent instanceof Applet)) { + while (parent != null && !(parent instanceof Window)) { if(parent instanceof JComponent) { if(ksE != null && ((JComponent)parent).processKeyBinding(ksE, e, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, pressed)) @@ -4534,12 +4520,11 @@ public abstract class JComponent extends Container implements Serializable, * return value for this method * @see #getVisibleRect */ - @SuppressWarnings("removal") static final void computeVisibleRect(Component c, Rectangle visibleRect) { Container p = c.getParent(); Rectangle bounds = c.getBounds(); - if (p == null || p instanceof Window || p instanceof Applet) { + if (p == null || p instanceof Window) { visibleRect.setBounds(0, 0, bounds.width, bounds.height); } else { computeVisibleRect(p, visibleRect); @@ -4694,8 +4679,8 @@ public abstract class JComponent extends Container implements Serializable, /** - * Returns the top-level ancestor of this component (either the - * containing Window or Applet), + * Returns the top-level ancestor of this component (the + * containing Window) * or null if this component has not * been added to any container. * @@ -4703,10 +4688,9 @@ public abstract class JComponent extends Container implements Serializable, * or null if not in any container */ @BeanProperty(bound = false) - @SuppressWarnings("removal") public Container getTopLevelAncestor() { for(Container p = this; p != null; p = p.getParent()) { - if(p instanceof Window || p instanceof Applet) { + if(p instanceof Window) { return p; } } @@ -5126,7 +5110,7 @@ public abstract class JComponent extends Container implements Serializable, JComponent paintingComponent = this; RepaintManager repaintManager = RepaintManager.currentManager(this); - // parent Container's up to Window or Applet. First container is + // parent Container's up to Window. First container is // the direct parent. Note that in testing it was faster to // alloc a new Vector vs keeping a stack of them around, and gc // seemed to have a minimal effect on this. @@ -5156,7 +5140,7 @@ public abstract class JComponent extends Container implements Serializable, } Component child; for (c = this, child = null; - c != null && !(c instanceof Window) && !(c instanceof Applet); + c != null && !(c instanceof Window); child = c, c = c.getParent()) { JComponent jc = (c instanceof JComponent) ? (JComponent)c : null; diff --git a/src/java.desktop/share/classes/javax/swing/JEditorPane.java b/src/java.desktop/share/classes/javax/swing/JEditorPane.java index ff23b4f5589..e715b88603f 100644 --- a/src/java.desktop/share/classes/javax/swing/JEditorPane.java +++ b/src/java.desktop/share/classes/javax/swing/JEditorPane.java @@ -1339,8 +1339,7 @@ public class JEditorPane extends JTextComponent { /** * This is invoked every time the registries are accessed. Loading * is done this way instead of via a static as the static is only - * called once when running in plugin resulting in the entries only - * appearing in the first applet. + * called once when running in an AppContext. */ private static void loadDefaultKitsIfNecessary() { if (SwingUtilities.appContextGet(kitTypeRegistryKey) == null) { diff --git a/src/java.desktop/share/classes/javax/swing/JOptionPane.java b/src/java.desktop/share/classes/javax/swing/JOptionPane.java index 1c1f3ee9ba3..bff597dd22c 100644 --- a/src/java.desktop/share/classes/javax/swing/JOptionPane.java +++ b/src/java.desktop/share/classes/javax/swing/JOptionPane.java @@ -1316,11 +1316,7 @@ public class JOptionPane extends JComponent implements Accessible /* Since all input will be blocked until this dialog is dismissed, * make sure its parent containers are visible first (this component - * is tested below). This is necessary for JApplets, because - * because an applet normally isn't made visible until after its - * start() method returns -- if this method is called from start(), - * the applet will appear to hang while an invisible modal frame - * waits for input. + * is tested below). */ if (dialog.isVisible() && !dialog.isShowing()) { Container parent = dialog.getParent(); @@ -1460,11 +1456,7 @@ public class JOptionPane extends JComponent implements Accessible /* Since all input will be blocked until this dialog is dismissed, * make sure its parent containers are visible first (this component - * is tested below). This is necessary for JApplets, because - * because an applet normally isn't made visible until after its - * start() method returns -- if this method is called from start(), - * the applet will appear to hang while an invisible modal frame - * waits for input. + * is tested below). */ if (dialog.isVisible() && !dialog.isShowing()) { Container parent = dialog.getParent(); diff --git a/src/java.desktop/share/classes/javax/swing/JRootPane.java b/src/java.desktop/share/classes/javax/swing/JRootPane.java index 44eb41248e6..61d3b3e707e 100644 --- a/src/java.desktop/share/classes/javax/swing/JRootPane.java +++ b/src/java.desktop/share/classes/javax/swing/JRootPane.java @@ -34,7 +34,7 @@ import java.io.Serializable; /** * A lightweight container used behind the scenes by * JFrame, JDialog, JWindow, - * JApplet, and JInternalFrame. + * and JInternalFrame. * For task-oriented information on functionality provided by root panes * see How to Use Root Panes, * a section in The Java Tutorial. @@ -42,21 +42,18 @@ import java.io.Serializable; *

        * The following image shows the relationships between * the classes that use root panes. - *

        The following text describes this graphic.

        + * HEIGHT=600 WIDTH=850>

        * The "heavyweight" components (those that delegate to a peer, or native - * component on the host system) are shown with a darker, heavier box. The four - * heavyweight JFC/Swing containers (JFrame, JDialog, - * JWindow, and JApplet) are - * shown in relation to the AWT classes they extend. - * These four components are the - * only heavyweight containers in the Swing library. The lightweight container - * JInternalFrame is also shown. - * All five of these JFC/Swing containers implement the - * RootPaneContainer interface, - * and they all delegate their operations to a - * JRootPane (shown with a little "handle" on top). + * component on the host system) are shown with a heavier box. AWT components in red, + * Swing heavyweights in blue. + * The three heavyweight JFC/Swing containers ({@code JFrame}, {@code JDialog}, and + * {@code JWindow}) are shown in relation to the AWT classes they extend. + * These three components are the only heavyweight containers in the Swing library. + * The lightweight container {@code JInternalFrame} is also shown in green with thin outline. + * All four of these JFC/Swing containers implement the {@code RootPaneContainer} interface, + * and they all delegate their operations to a {@code JRootPane}. *
        * Note: The JComponent method getRootPane * can be used to obtain the JRootPane that contains @@ -179,7 +176,6 @@ import java.io.Serializable; * @see JWindow * @see JFrame * @see JDialog - * @see JApplet * @see JInternalFrame * @see JComponent * @see BoxLayout diff --git a/src/java.desktop/share/classes/javax/swing/JTable.java b/src/java.desktop/share/classes/javax/swing/JTable.java index 3760bdac9ee..653466318a7 100644 --- a/src/java.desktop/share/classes/javax/swing/JTable.java +++ b/src/java.desktop/share/classes/javax/swing/JTable.java @@ -25,7 +25,6 @@ package javax.swing; -import java.applet.Applet; import java.awt.Color; import java.awt.Component; import java.awt.Container; @@ -6122,7 +6121,6 @@ public class JTable extends JComponent implements TableModelListener, Scrollable this.focusManager = fm; } - @SuppressWarnings("removal") public void propertyChange(PropertyChangeEvent ev) { if (!isEditing() || getClientProperty("terminateEditOnFocusLost") != Boolean.TRUE) { return; @@ -6133,8 +6131,7 @@ public class JTable extends JComponent implements TableModelListener, Scrollable if (c == JTable.this) { // focus remains inside the table return; - } else if ((c instanceof Window) || - (c instanceof Applet && c.getParent() == null)) { + } else if (c instanceof Window) { if (c == SwingUtilities.getRoot(JTable.this)) { if (!getCellEditor().stopCellEditing()) { getCellEditor().cancelCellEditing(); diff --git a/src/java.desktop/share/classes/javax/swing/JViewport.java b/src/java.desktop/share/classes/javax/swing/JViewport.java index f7c27314750..e7b1e1eacf0 100644 --- a/src/java.desktop/share/classes/javax/swing/JViewport.java +++ b/src/java.desktop/share/classes/javax/swing/JViewport.java @@ -378,7 +378,7 @@ public class JViewport extends JComponent implements Accessible * To avoid excessive validation when the containment hierarchy is * being created this will not validate if one of the ancestors does not * have a peer, or there is no validate root ancestor, or one of the - * ancestors is not a Window or Applet. + * ancestors is not a Window. *

        * Note that this method will not scroll outside of the * valid viewport; for example, if contentRect is larger diff --git a/src/java.desktop/share/classes/javax/swing/KeyboardManager.java b/src/java.desktop/share/classes/javax/swing/KeyboardManager.java index 2ba5749dcdc..42a6403ddb5 100644 --- a/src/java.desktop/share/classes/javax/swing/KeyboardManager.java +++ b/src/java.desktop/share/classes/javax/swing/KeyboardManager.java @@ -28,7 +28,6 @@ package javax.swing; import java.util.*; import java.awt.*; import java.awt.event.*; -import java.applet.*; import sun.awt.EmbeddedFrame; /** @@ -130,13 +129,12 @@ class KeyboardManager { } /** - * Find the top focusable Window, Applet, or InternalFrame + * Find the top focusable Window, or InternalFrame */ - @SuppressWarnings("removal") private static Container getTopAncestor(JComponent c) { for(Container p = c.getParent(); p != null; p = p.getParent()) { if (p instanceof Window && ((Window)p).isFocusableWindow() || - p instanceof Applet || p instanceof JInternalFrame) { + p instanceof JInternalFrame) { return p; } diff --git a/src/java.desktop/share/classes/javax/swing/PopupFactory.java b/src/java.desktop/share/classes/javax/swing/PopupFactory.java index 682cdbd005b..2b274c816b1 100644 --- a/src/java.desktop/share/classes/javax/swing/PopupFactory.java +++ b/src/java.desktop/share/classes/javax/swing/PopupFactory.java @@ -25,7 +25,6 @@ package javax.swing; -import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; @@ -274,7 +273,6 @@ public class PopupFactory { * Obtains the appropriate Popup based on * popupType. */ - @SuppressWarnings("removal") private Popup getPopup(Component owner, Component contents, int ownerX, int ownerY, int popupType) { if (GraphicsEnvironment.isHeadless()) { @@ -288,10 +286,6 @@ public class PopupFactory { return getMediumWeightPopup(owner, contents, ownerX, ownerY); case HEAVY_WEIGHT_POPUP: Popup popup = getHeavyWeightPopup(owner, contents, ownerX, ownerY); - if ((OSInfo.getOSType() == OSInfo.OSType.MACOSX) && (owner != null) && - (EmbeddedFrame.getAppletIfAncestorOf(owner) != null)) { - ((HeavyWeightPopup)popup).setCacheEnabled(false); - } return popup; } return null; @@ -626,7 +620,6 @@ public class PopupFactory { * Returns true if popup can fit the screen and the owner's top parent. * It determines can popup be lightweight or mediumweight. */ - @SuppressWarnings("removal") boolean fitsOnScreen() { boolean result = false; Component component = getComponent(); @@ -656,12 +649,6 @@ public class PopupFactory { result = parentBounds .contains(x, y, popupWidth, popupHeight); } - } else if (parent instanceof JApplet) { - Rectangle parentBounds = parent.getBounds(); - Point p = parent.getLocationOnScreen(); - parentBounds.x = p.x; - parentBounds.y = p.y; - result = parentBounds.contains(x, y, popupWidth, popupHeight); } } return result; @@ -795,7 +782,6 @@ public class PopupFactory { recycleLightWeightPopup(this); } - @SuppressWarnings("removal") public void show() { Container parent = null; @@ -817,11 +803,6 @@ public class PopupFactory { parent = p; } break; - } else if (p instanceof JApplet) { - // Painting code stops at Applets, we don't want - // to add to a Component above an Applet otherwise - // you'll never see it painted. - break; } } @@ -948,7 +929,6 @@ public class PopupFactory { recycleMediumWeightPopup(this); } - @SuppressWarnings("removal") public void show() { Component component = getComponent(); Container parent = null; @@ -961,7 +941,7 @@ public class PopupFactory { if it has a layered pane, add to that, otherwise add to the window. */ - while (!(parent instanceof Window || parent instanceof Applet) && + while (!(parent instanceof Window) && (parent!=null)) { parent = parent.getParent(); } diff --git a/src/java.desktop/share/classes/javax/swing/RepaintManager.java b/src/java.desktop/share/classes/javax/swing/RepaintManager.java index 8d9548d19e5..cf0f70da014 100644 --- a/src/java.desktop/share/classes/javax/swing/RepaintManager.java +++ b/src/java.desktop/share/classes/javax/swing/RepaintManager.java @@ -30,7 +30,6 @@ import java.awt.event.*; import java.awt.image.VolatileImage; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; -import java.applet.*; import sun.awt.AWTAccessor; import sun.awt.AppContext; @@ -52,8 +51,8 @@ import sun.swing.SwingUtilities2.RepaintListener; * requests into a single repaint for members of a component tree. *

        * As of 1.6 RepaintManager handles repaint requests - * for Swing's top level components (JApplet, - * JWindow, JFrame and JDialog). + * for Swing's top level components + * (JWindow, JFrame and JDialog). * Any calls to repaint on one of these will call into the * appropriate addDirtyRegion method. * @@ -406,7 +405,6 @@ public class RepaintManager * * @see JComponent#repaint */ - @SuppressWarnings("removal") private void addDirtyRegion0(Container c, int x, int y, int w, int h) { /* Special cases we don't have to bother with. */ @@ -424,7 +422,7 @@ public class RepaintManager return; } - /* Make sure that c and all it ancestors (up to an Applet or + /* Make sure that c and all it ancestors (up to a * Window) are visible. This loop has the same effect as * checking c.isShowing() (and note that it's still possible * that c is completely obscured by an opaque ancestor in @@ -440,7 +438,7 @@ public class RepaintManager if (!p.isVisible() || !p.isDisplayable()) { return; } - if ((p instanceof Window) || (p instanceof Applet)) { + if (p instanceof Window) { // Iconified frames are still visible! if (p instanceof Frame && (((Frame)p).getExtendedState() & Frame.ICONIFIED) == @@ -508,29 +506,6 @@ public class RepaintManager addDirtyRegion0(window, x, y, w, h); } - /** - * Adds applet to the list of Components that - * need to be repainted. - * - * @param applet Applet to repaint, null results in nothing happening. - * @param x X coordinate of the region to repaint - * @param y Y coordinate of the region to repaint - * @param w Width of the region to repaint - * @param h Height of the region to repaint - * @see JApplet#repaint - * @since 1.6 - * - * @deprecated The Applet API is deprecated. See the - * java.applet package - * documentation for further information. - */ - @Deprecated(since = "9", forRemoval = true) - @SuppressWarnings("removal") - public void addDirtyRegion(Applet applet, int x, int y, int w, int h) { - addDirtyRegion0(applet, x, y, w, h); - } - - @SuppressWarnings("removal") void scheduleHeavyWeightPaints() { Map hws; @@ -547,10 +522,6 @@ public class RepaintManager addDirtyRegion((Window)hw, dirty.x, dirty.y, dirty.width, dirty.height); } - else if (hw instanceof Applet) { - addDirtyRegion((Applet)hw, dirty.x, dirty.y, - dirty.width, dirty.height); - } else { // SwingHeavyWeight addDirtyRegion0(hw, dirty.x, dirty.y, dirty.width, dirty.height); diff --git a/src/java.desktop/share/classes/javax/swing/RootPaneContainer.java b/src/java.desktop/share/classes/javax/swing/RootPaneContainer.java index b05e0c52e55..b81c80dbf35 100644 --- a/src/java.desktop/share/classes/javax/swing/RootPaneContainer.java +++ b/src/java.desktop/share/classes/javax/swing/RootPaneContainer.java @@ -31,7 +31,7 @@ import java.awt.Container; /** * This interface is implemented by components that have a single - * JRootPane child: JDialog, JFrame, JWindow, JApplet, JInternalFrame. + * JRootPane child: JDialog, JFrame, JWindow, JInternalFrame. * The methods in this interface are just covers for the JRootPane * properties, e.g. getContentPane() is generally implemented * like this:

        @@ -46,7 +46,7 @@ import java.awt.Container;
          * as frame.getContentPane().add(child).
          * 

        * As a convenience, the standard classes that implement this interface - * (such as {@code JFrame}, {@code JDialog}, {@code JWindow}, {@code JApplet}, + * (such as {@code JFrame}, {@code JDialog}, {@code JWindow}, * and {@code JInternalFrame}) have their {@code add}, {@code remove}, * and {@code setLayout} methods overridden, so that they delegate calls * to the corresponding methods of the {@code ContentPane}. @@ -62,7 +62,7 @@ import java.awt.Container; * The behavior of the add and * setLayout methods for * JFrame, JDialog, JWindow, - * JApplet and JInternalFrame is controlled by + * and JInternalFrame is controlled by * the rootPaneCheckingEnabled property. If this property is * true (the default), then calls to these methods are * forwarded to the contentPane; if false, these @@ -73,7 +73,6 @@ import java.awt.Container; * @see JFrame * @see JDialog * @see JWindow - * @see JApplet * @see JInternalFrame * * @author Hans Muller diff --git a/src/java.desktop/share/classes/javax/swing/SwingPaintEventDispatcher.java b/src/java.desktop/share/classes/javax/swing/SwingPaintEventDispatcher.java index 6bd0400fd8d..329fe52ade5 100644 --- a/src/java.desktop/share/classes/javax/swing/SwingPaintEventDispatcher.java +++ b/src/java.desktop/share/classes/javax/swing/SwingPaintEventDispatcher.java @@ -34,7 +34,7 @@ import sun.awt.event.IgnorePaintEvent; /** * Swing's PaintEventDispatcher. If the component specified by the PaintEvent - * is a top level Swing component (JFrame, JWindow, JDialog, JApplet), this + * is a top level Swing component (JFrame, JWindow, JDialog), this * will forward the request to the RepaintManager for eventual painting. * */ diff --git a/src/java.desktop/share/classes/javax/swing/SwingUtilities.java b/src/java.desktop/share/classes/javax/swing/SwingUtilities.java index c5b5bd051ff..ebf39ac0283 100644 --- a/src/java.desktop/share/classes/javax/swing/SwingUtilities.java +++ b/src/java.desktop/share/classes/javax/swing/SwingUtilities.java @@ -27,8 +27,6 @@ package javax.swing; import sun.swing.SwingUtilities2; import sun.swing.UIAction; -import java.applet.*; - import java.awt.*; import java.awt.event.*; import java.awt.dnd.DropTarget; @@ -416,7 +414,6 @@ public class SwingUtilities implements SwingConstants * @param p a Point object (converted to the new coordinate system) * @param c a Component object */ - @SuppressWarnings("removal") public static void convertPointToScreen(Point p,Component c) { Rectangle b; int x,y; @@ -425,8 +422,7 @@ public class SwingUtilities implements SwingConstants if(c instanceof JComponent) { x = c.getX(); y = c.getY(); - } else if(c instanceof java.applet.Applet || - c instanceof java.awt.Window) { + } else if(c instanceof java.awt.Window) { try { Point pp = c.getLocationOnScreen(); x = pp.x; @@ -443,7 +439,7 @@ public class SwingUtilities implements SwingConstants p.x += x; p.y += y; - if(c instanceof java.awt.Window || c instanceof java.applet.Applet) + if(c instanceof java.awt.Window) break; c = c.getParent(); } while(c != null); @@ -456,7 +452,6 @@ public class SwingUtilities implements SwingConstants * @param p a Point object (converted to the new coordinate system) * @param c a Component object */ - @SuppressWarnings("removal") public static void convertPointFromScreen(Point p,Component c) { Rectangle b; int x,y; @@ -465,8 +460,7 @@ public class SwingUtilities implements SwingConstants if(c instanceof JComponent) { x = c.getX(); y = c.getY(); - } else if(c instanceof java.applet.Applet || - c instanceof java.awt.Window) { + } else if (c instanceof java.awt.Window) { try { Point pp = c.getLocationOnScreen(); x = pp.x; @@ -483,7 +477,7 @@ public class SwingUtilities implements SwingConstants p.x -= x; p.y -= y; - if(c instanceof java.awt.Window || c instanceof java.applet.Applet) + if(c instanceof java.awt.Window) break; c = c.getParent(); } while(c != null); @@ -1655,20 +1649,15 @@ public class SwingUtilities implements SwingConstants * Returns the root component for the current component tree. * * @param c the component - * @return the first ancestor of c that's a Window or the last Applet ancestor + * @return the first ancestor of c that's a Window */ - @SuppressWarnings("removal") public static Component getRoot(Component c) { - Component applet = null; for(Component p = c; p != null; p = p.getParent()) { if (p instanceof Window) { return p; } - if (p instanceof Applet) { - applet = p; - } } - return applet; + return null; } static JComponent getPaintingOrigin(JComponent c) { @@ -1698,7 +1687,6 @@ public class SwingUtilities implements SwingConstants * @return true if a binding has found and processed * @since 1.4 */ - @SuppressWarnings("removal") public static boolean processKeyBindings(KeyEvent event) { if (event != null) { if (event.isConsumed()) { @@ -1718,9 +1706,8 @@ public class SwingUtilities implements SwingConstants return ((JComponent)component).processKeyBindings( event, pressed); } - if ((component instanceof Applet) || - (component instanceof Window)) { - // No JComponents, if Window or Applet parent, process + if (component instanceof Window) { + // No JComponents, if Window parent, process // WHEN_IN_FOCUSED_WINDOW bindings. return JComponent.processKeyBindingsForAllComponents( event, (Container)component, pressed); @@ -2202,8 +2189,7 @@ public class SwingUtilities implements SwingConstants * CellRendererPane}. *

        * The component hierarchy must be displayable up to the toplevel component - * (either a {@code Frame} or an {@code Applet} object.) Otherwise this - * method returns {@code null}. + * (a {@code Frame}). Otherwise this method returns {@code null}. *

        * If the {@code visibleOnly} argument is {@code true}, the found validate * root and all its parents up to the toplevel component must also be @@ -2214,7 +2200,6 @@ public class SwingUtilities implements SwingConstants * @see java.awt.Component#isVisible() * @since 1.7 */ - @SuppressWarnings("removal") static Container getValidateRoot(Container c, boolean visibleOnly) { Container root = null; @@ -2237,7 +2222,7 @@ public class SwingUtilities implements SwingConstants if (!c.isDisplayable() || (visibleOnly && !c.isVisible())) { return null; } - if (c instanceof Window || c instanceof Applet) { + if (c instanceof Window) { return root; } } diff --git a/src/java.desktop/share/classes/javax/swing/Timer.java b/src/java.desktop/share/classes/javax/swing/Timer.java index e5f17af2c05..38ced6f3102 100644 --- a/src/java.desktop/share/classes/javax/swing/Timer.java +++ b/src/java.desktop/share/classes/javax/swing/Timer.java @@ -174,7 +174,7 @@ public class Timer implements Serializable // This field is maintained by TimerQueue. // eventQueued can also be reset by the TimerQueue, but will only ever - // happen in applet case when TimerQueues thread is destroyed. + // happen in an AppContext case when TimerQueues thread is destroyed. // access to this field is synchronized on getLock() lock. transient TimerQueue.DelayedTimer delayedTimer = null; diff --git a/src/java.desktop/share/classes/javax/swing/ToolTipManager.java b/src/java.desktop/share/classes/javax/swing/ToolTipManager.java index 84d62e67c54..1f77980f896 100644 --- a/src/java.desktop/share/classes/javax/swing/ToolTipManager.java +++ b/src/java.desktop/share/classes/javax/swing/ToolTipManager.java @@ -794,7 +794,6 @@ public final class ToolTipManager extends MouseAdapter implements MouseMotionLis // Returns: 0 no adjust // -1 can't fit // >0 adjust value by amount returned - @SuppressWarnings("removal") private int getPopupFitWidth(Rectangle popupRectInScreen, Component invoker){ if (invoker != null){ Container parent; @@ -803,7 +802,7 @@ public final class ToolTipManager extends MouseAdapter implements MouseMotionLis if(parent instanceof JFrame || parent instanceof JDialog || parent instanceof JWindow) { // no check for awt.Frame since we use Heavy tips return getWidthAdjust(parent.getBounds(),popupRectInScreen); - } else if (parent instanceof JApplet || parent instanceof JInternalFrame) { + } else if (parent instanceof JInternalFrame) { if (popupFrameRect == null){ popupFrameRect = new Rectangle(); } @@ -828,7 +827,7 @@ public final class ToolTipManager extends MouseAdapter implements MouseMotionLis if(parent instanceof JFrame || parent instanceof JDialog || parent instanceof JWindow) { return getHeightAdjust(parent.getBounds(),popupRectInScreen); - } else if (parent instanceof JApplet || parent instanceof JInternalFrame) { + } else if (parent instanceof JInternalFrame) { if (popupFrameRect == null){ popupFrameRect = new Rectangle(); } diff --git a/src/java.desktop/share/classes/javax/swing/UIManager.java b/src/java.desktop/share/classes/javax/swing/UIManager.java index 752b37a5238..e86d9caee6d 100644 --- a/src/java.desktop/share/classes/javax/swing/UIManager.java +++ b/src/java.desktop/share/classes/javax/swing/UIManager.java @@ -180,10 +180,8 @@ public class UIManager implements Serializable * Swing applications the fields in this class could just as well * be static members of UIManager however we give them * "AppContext" - * scope instead so that applets (and potentially multiple lightweight - * applications running in a single VM) have their own state. For example, - * an applet can alter its look and feel, see setLookAndFeel. - * Doing so has no affect on other applets (or the browser). + * scope instead so that potentially multiple lightweight + * applications running in a single VM have their own state. */ private static class LAFState { @@ -1455,8 +1453,8 @@ public class UIManager implements Serializable /* * This method is called before any code that depends on the - * AppContext specific LAFState object runs. When the AppContext - * corresponds to a set of applets it's possible for this method + * AppContext specific LAFState object runs. + * In some AppContext cases, it's possible for this method * to be re-entered, which is why we grab a lock before calling * initialize(). */ diff --git a/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor16.gif b/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor16.gif deleted file mode 100644 index 6de0a1f14ad11935ea3fe014cf45841e0c76b8c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbhEHb6krfw*v!E29|UIpXGr_cVEmtf;S3NkFr=lW83O?W2pl+Y08E33A3uI5 z{$ycfVBlxa0r5d*II!4%IO(}ONGv?|erV^n!f^FMk)U~xUkSDaRkW8@shwJvRDM;m jKW~cSJ(lK4LSHq{6i8>3e4Y~|G--lTfpKn$AcHjkxa2hP diff --git a/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor32.gif b/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletColor32.gif deleted file mode 100644 index 464ee9dce110fafc69a9daac8b1fd528105d4515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmchW%S+Tz6vxjDhS~!n4Jsri3QDmOj)q!P$XJFDWKdE;&E_tWELuq9q6sTXf=p|1 zk-$KAMw1p5)r18$$~CkHZVIAEp+%2HI7M{(%>5&}i-CL3Ip6br{ATB_9o037n8ajG zaz{msh!t@nKHOEss8|)J;zL=D7$eq*GvY(HS}|6v6=%hVVRd4hSSQYj4_NBOc(Gob z7ayQiKw^|$irjL?s9II0>ce90#;7&wjQYTXvaxEdI;%d=qT4vNPMuR9STbz9TCdKl z52O(RYiPm?B5Ye#-CE4a2L_-RiD*Iutf2`nh_D%GumNM5cIrHEoV7k!i9!~0ch36YEP~-d*?H@O(ZoUy z7?0Cfi-jVoP>## z3<-^th=m+59;dMuFR=rb4C4m|pcsje1`F2Egcn5E3^dq)F-<#l9ysAk{NF#>YSiEH(Hi#6KNoJx#diB+B4 zl9}v`UmRRm5ij^~t}#*(IdZ6`sqgt2sr&M-`L!8ssysH+pBbLr)>E>2{=DyNO5@#& zJL;ay43$ZL_3^Uu->HG5ELgwfbL~)~^hRu~w*JxZ?6cw6*=VwNDmgWHv~ag;zu&Sy zeX8idrFGW_UOnA&ukCW@gNirjH!jt-!LE;uk+u7}rToWGGBq77P51UBR^BPDpZl5F zR5^QV>%pR`@vhdEw^hr>|7KTwn|wcg`o+s-pJw7$TW^m|wEvO2>4%5&^JMcsD|EU{ diff --git a/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono16.gif b/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono16.gif deleted file mode 100644 index 1112f96cdd7c2efe08782ee5a9c8a790db6319ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmZ?wbhEHb6krfwX!y_Y|Nnmm1_m7<2J!_M9GG-l`o$N{nRj4T+9A>GWmg~ltDVHA hsQO}w;C0XCR}ZMPcIH*~{rr)#hcoDh+;S!cYXB$X9>V|t diff --git a/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono32.gif b/src/java.desktop/share/classes/javax/swing/beaninfo/images/JAppletMono32.gif deleted file mode 100644 index 80b2a08efb9b8a88d186683df79ccb0d58cf3347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmV;D0B!$ANk%w1VITk?0D%7h|Ns90001li0000W03ZNB0&#?osmm7+pNg@`1_DNP zJD+q5rHLV_WtVrQo6B;m`hf;KLXK`xIf{`0Z!;QWNVKVnMB7Qvz9OtwCWx}!GmOOFNh;uq9+mQ)k7lyj4%w^0B9JDGYs A7XSbN diff --git a/src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.gif b/src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.gif deleted file mode 100644 index 2c4cca175c884a7f4d9886b22da2945314d50552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5515 zcmV;66?E!HNk%w1VRZuJ0kZ%A0001h0001h0Dyo1004l10Du61fWW}OfPjGi00030 z0RR60009600RI60|NsC0EC2ui0CfW70RRO4@X1N5y*TU5yZ>M)j$~<`XsWJk>%MR- z&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v&*-#z&2GEj z@VI)^iI0$xk{*qdmY0}^jf|O{o}YG=prfRv zWsat)s;gG0tgo=KM6R;6wzo6@xVyZ)C$zr7!ow4~#K&8k%FE2n&d<-k(9_h_&|bjE z+KSfQ-qt4H;^WNN+vii+Nt`9>NbFt4=<`hONAM%|M)+Lv^#A+(E#VhJUlD>@1Oi+L z#NaH48XyWmn2@2xh6>k7#IO-##$^5%L+C>oSNldL!^}|*U zUOAq%DmLOwqyxjsEts)vF%WB)<|TVp*Io%Mou;kwcP>(?Kr#Ox9;wlJ7- zU$%gMx@s&LaAb#-(-|JU0rB0=#!#g$w)*tskD)0@?5uh5=FFHGzby=fH))sl6lX?l zTQ+XoiiID|x|O!$)t(8H~5PK!|_pI4( zpHKg}^x@&zGoMNJy#MdUq5f6fI`F}#k6qt&hu&*?g~L=`wIN5`eYxp(T@x1;2+)E3 z6?fcYtkFW-a^yXDRCu?+1DS{dW*C=-zYRD;d!B`J;tMoB;UbLa$S6aOS>5=OkNfaQ z8j&ynNuH1`g2lG^Si>?&M`X zZN{`_SaC{IBAQ|rIcHSl^x3C_c#@Ilp1b&I=r@2`Ip{2e9=7O^B_1m2G=es2RGkh+ zI_ak6jPaK4XSX_#>uo3CQYY=W z%$|F#xudRID!et&>+U7#HmGc^U)X!^B>7q>?!5i}Yf->z$=j;GF)(Z}BnXo@@WSRi zyimmBP0VXN7Bhq~UkYywQpXoNY}T+TnJg8_9;=+~zT0NuGRvCGtggny+T0e+B`>?G z&s6BlGa(<#hH^kcpFDKSK-1MUnoBdyuUJV-9CXxD$4vFp7-F3@yD)>Th}S(&{j=FR zl3ljeXS1EQ+W!%yKN|ERP;aL6hFOmn^VqYwyzt$7|2+5M z^Z9)o+Lzx)`d5Lk{$c0C!T$83*Khy*;>7>P{MnE1ss3)@-&_PJpa1y}eeYwEt+)li zHarSkz54?JxnjUGOt5-Cnpp(>a6!r}&7gSk!Ncrakz;36Vl?!l8THhLhdm4;8JqFNYo&2yS=8d0n%G6X z#V3k?oMRb7V#5j{5rlfo&=^?3by_ z(h>~(lX)axERAGLXSNEOh_u}+b=jL@HnWut3?SC3xizSPbCcmD89CebC2XF; zc3xX&^}boHXv#01^qglm-TA?Lj2gw`aTYuF|$8hWA^N@kXAB&an#*dbef2p=F45Jed%&7n0kj;aaJ zAQwcPm3By{|KTYVdwNcL?hl`4VG>RmM4_ell%olXVNjvEoSC9Pr+Pv*7FD4-{AW_PYM-telBn$LsE680R)bo`s$dYQS#65ZpVIY1|8Z(LC3?`Y za`lgJ{U|z1sMlxpHKJss&vumZ&=$dzmfV5q7~g`|L-MY%qmU;T8^YPMz7v>y-REFC zJIRrNG=QKTrfTCF6tDR5wMS){XmvGP#Tqqry3OZk+iBWE zQ!Xs6#9B1+L72i=<)2myr|R}Yf)CSfD!Kd2;#Ty!2HWk)#EU5N(v*Ygm2R}y+YRsH z5x)0Q?@4;=+Qq^%zw#|Db=`Ya4nj8(`V}y7n`_+b9=K-wUG9Jxd|v!|E5R~lu5Zx_ zhzAz}!-?%Kf%8hVbAec}6W*|M1L0w!1vtYg?(c8cXW|!!xV#j8uOM2yV;iG*!76UB zg^zXOy#iUr9PaRieQabA=eWQuUUGz|d*pKAHV-^zF_YCYWr1E&a(&R(W-DA0WV=RfCp&U>b@ox7}H zG9!7#J0>)vVO(WICt1mh26UrwTxK0dI@5>Vucl%5V!H3`ZBM$}*oZ~-suS(z6^0U$pagfpXGw9+JW*hN#3f1>Sw~Mk(V+-$?X~rM zX)VsE9KaxVEs1#Uet$gQP3E|{*)4NYqTFQfKDNSj&G7y~XE2H>=ZDP8&GL#*+~Pq5 zIuu1Y$Bys2=@^;xjjuUk&ptO7RFQZiFD~*n2D06-QHaWizEc-Y5$t$wWypz6^(T|~ z%s-c6#3Sy*shGX)NIyH%A&K{yXS{_U=XyrzTi;6(z8dze2;3W%^{4Nhkzw@r(gWJ5 zPY#tDPRBRS4-XE*bN(7t$D+1R{^xFYd*umpA}&)(qQ zLx{}hX1RvDUYzYY8NS_T`|Vg(pYhG?>1CI1`ORm(MV}vh(#;#I0`2wh?|Xd34C|$5>HEf_XP|XD4_1#(^CeS|NB36WA}C z7lV42fHVks{#O|fh$Ba+CoYH$Dg%TFh;HF_bFoJfQ;0k}=zU|zEz9I{q>zK}_kv~^ zhP$(ZWq5m4$TvoqhI7a$ci0pF2#42aU2#Zcd^mt|c!ieYhATse=J$tySci&87)e-& zc8G{i@`%y1e&3RZ6G4ft6Dy3^hqWh({?}uPtb>WZLW=Dpis)jBi6?@kh>EkLilOI+ zvDi4k^m(>;i@2DJy10wHI4N#dJfK()niz_l=m}~ldY&k6W@L=8_>0KsjBzuH!AO6N z2!Tami0#mfohE?WXho?wjS{Gha^;G-BaS4OjDa>%vsOFF)QhL5EAFUrvl5RqL67oS zR-rN=EoP52!jH_skDeEg<7grN_&D|ABKx>@Ij3{+wrOp*RfL6ojCY8iC3WIAa`8tj zqm%NZkZZ^Ob}0#Ksy37oS(FsHlgQSSOG#Tm>5x^~k#0ehRJe(} z);_{UdMK$=rni-DVv+|@7zyT-6htlG1}4p-Od`3G{!&?6i6Ca#6?>B(93>ukX_Z*n zm)S@+YH<_r)YdN1{CiJ5Rr=|PvdJ!na6a^;u*=b5zznxko$!x2fc znIBqrZU!YB%DHg}(JQisnsn)MTqS!v#hX9bQes6`f2EYRnVktzAH`{JF6CC=8I+?b z9zSS+lZAj(S)0NsnmPUjAl8{4@=2X-Wu1YAk78JfM+ufnB~^gcRG*oVunC(>by)n# zkl@)J;yFbx9Lktc*_d=GBp`~R z_jsP@Nu1iLpc;x3D05P-0UkQKqq>nC!8wyG%2YgRp9hMaoY|o>nxP5$pgKCD3R)lU z2%S(#d>!Q-LK>bt>Y9}~pkg|ZG2^%@uAGc9=U;0&{si!JZqN^#Sk!7Xl0V3vkkBefO|H+dZ`irb0bR8L}2}ny< z%BpZWpT5eT>$!FC>78*ZPJEh^R63Q@+Kt{>p=mjmzbUGKIj-^wj(X~!4uq5*A*_`7 zuJanNb|nqN8lPQPR0{TFS8vo3a@zvnzX~EDN&u+NU(Rr5J0VHVd>g zORz-y{;?D5Q7_xGF*~$1%d|0imGm00IeWBvsYU=9knR{d0=X(ztFm%bkekx7!DF@d zs7hOlwY`Y8yy&qHi;lawwCM`7@2Rmfd$PA_lM!pKD`c`FE4K?9v`uTbfr}-FnYRvf za;ti?+GMd|`m=;uvUe+!Q9HTSXtvl0w}i{L6S0?cJGh(6wo+@fjCZ+0E4ZE;CY%en zPwTjo`(RQ!I|)0oB-^>Ao4Fl(yN4Th$;G%o3bpQPx{ph{I6J(<=#lsmyMFt(PW!vI z>$Sv-iPNUApIf)hi?YDGx{#~5pb|ENb=F(GMccN5xU-00zwN5J!ArpHE4=mUy5|_c$g8xN3%~D+ zx}Yn+{|mr|Aix4Vz{`8U25i0s%dQ>Pz>+Jz61=|<{Ja!Qfs1*;BFw%IT*Bnbx*j~W znzr z#sL<_+&h>ojK^BM#r!M9gPg#1yuf7K#^CG2U2Md2+reo}!*(3PfUL-i?8W|ajKt3C zzbcHbe{9J`tiy0z$W$B?g%*dr&6T8Z2 zd~A-KT#J>A%ejonj||3Dv z`^K+q%G5i}t$WA|$IRdy%5gl(<~+{4Y{lq&kdJ`Pfvm^AoXmY3E%ob&eNKK;``9sblpJ=8>9)JA>O zNS)M5z0^$I)J{E*5*^i2J=IiQ)mA;xN_f>;z13XZ)m|;p%<|P@J=SDh)@D69PyNnm zz1HE()^6R(Z=Kc^9oM)s*L1x)c74~Klh=C9IDFmLe)HFW4L5>4*kn`KhOJhKz1E1m z*s0~%PuE9o$+n+{8^yyM5f}VBE^BA{$Sqfy&>Dx-o&#c@EzY{ zJKwS+-}Zgq^_|~)z2E%p*Z%$AfgRuiPS^xq;KhB`iHqP;qQ(rqArAiFcoX3g-Xj!V z;oBfm>5btB3(OpjU>E-3#Gv6KzT6>R;@W-UDBcSgwT@8jmMe}7Ek4U08qE0+<6E*; zT`EF`1g$tuCOXbm(H2QN-khikus>cXL7uCfnx#VJsg%3nNsgjzNqKFW9;PRt^oitC zZVNL$qrqxdc-Q}SYk;+P`P!3s!%Hw9PDxT;#xaf=?h(Y}5ALi)(l75MZUg>*y>6jjg%Dm~EUg(~_ zcpe_=oTT9FP3j=5gQ#xloxbX?sOhebFO(kZz}V`v4luKR>j9kWx_-gD-s>d>>%e~K zwm$5;F6_qc>&Tw$!Cvgl-t3_M?A<)-(*BGGUG1h8?bz<@+_>$Z#_irddfFcD*Zvjc z4(-%_?yd0a>R!^F-0s<)?(p6>;6Cr}&W83L?~$JG-Cn``p33t6@4~q30`E`tUhwBT z?g&4K3cv8{PVf#7@zx&k2H)@$Pwy6g@z%HR8t;e_-|_zbi69T~96$0a9q=Z<#AY3*^Sg#Vuj)A;^my3vME~$cfAm-L@k+n+ zN#FD*KlD(q@*+R=F8}jZkMTU8^=@M7g3k3|ANFED_GDl7W`Fi*pZ03M_H5twZvXah NANO)^(h&dv06V^5RUZHV diff --git a/src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.svg b/src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.svg new file mode 100644 index 00000000000..aed766b841f --- /dev/null +++ b/src/java.desktop/share/classes/javax/swing/doc-files/JRootPane-1.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + Window + + + + + Frame + + + + + Dialog + + + + + JFrame + + + + + JDialog + + + + + JWindow + + + + + JInternalFrame + + + + + JRootPane + + + + + + + + + + + + + + + + + + + + + + + + AWT classes + Swing classes + implementing the + RootPaneContainer + interface + + diff --git a/src/java.desktop/share/classes/javax/swing/package-info.java b/src/java.desktop/share/classes/javax/swing/package-info.java index 3723c5a66e9..a1492cb7b28 100644 --- a/src/java.desktop/share/classes/javax/swing/package-info.java +++ b/src/java.desktop/share/classes/javax/swing/package-info.java @@ -44,10 +44,10 @@ * developers are not impacted by the restriction. *

        * Where the impact lies, however, is in constructing and showing a Swing - * application. Calls to an application's {@code main} method, or methods in - * {@code Applet}, are not invoked on the event dispatching thread. As such, + * application. Calls to an application's {@code main} method, + * are not invoked on the event dispatching thread. As such, * care must be taken to transfer control to the event dispatching thread when - * constructing and showing an application or applet. The preferred way to + * constructing and showing an application. The preferred way to * transfer control and begin working with Swing is to use {@code invokeLater}. * The {@code invokeLater} method schedules a {@code Runnable} to be processed * on the event dispatching thread. The following two examples work equally well diff --git a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java index 3869da4ee2b..e518f509c5a 100644 --- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java +++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java @@ -29,8 +29,6 @@ import javax.swing.*; import javax.swing.event.*; import javax.swing.plaf.*; -import java.applet.Applet; - import java.awt.Component; import java.awt.ComponentOrientation; import java.awt.KeyboardFocusManager; @@ -916,10 +914,9 @@ public class BasicPopupMenuUI extends PopupMenuUI { } } - @SuppressWarnings("removal") boolean isInPopup(Component src) { for (Component c=src; c!=null; c=c.getParent()) { - if (c instanceof Applet || c instanceof Window) { + if (c instanceof Window) { break; } else if (c instanceof JPopupMenu) { return true; @@ -1131,7 +1128,6 @@ public class BasicPopupMenuUI extends PopupMenuUI { } } - @SuppressWarnings("removal") public void stateChanged(ChangeEvent ev) { if (!(UIManager.getLookAndFeel() instanceof BasicLookAndFeel)) { uninstall(); @@ -1171,8 +1167,6 @@ public class BasicPopupMenuUI extends PopupMenuUI { invoker = ((JFrame)c).getRootPane(); } else if(c instanceof JDialog) { invoker = ((JDialog)c).getRootPane(); - } else if(c instanceof JApplet) { - invoker = ((JApplet)c).getRootPane(); } else { while (!(c instanceof JComponent)) { if (c == null) { diff --git a/src/java.desktop/share/classes/module-info.java b/src/java.desktop/share/classes/module-info.java index 884ac624956..6d34d934194 100644 --- a/src/java.desktop/share/classes/module-info.java +++ b/src/java.desktop/share/classes/module-info.java @@ -61,7 +61,6 @@ module java.desktop { requires transitive java.datatransfer; requires transitive java.xml; - exports java.applet; exports java.awt; exports java.awt.color; exports java.awt.desktop; diff --git a/src/java.desktop/share/classes/sun/awt/AppContext.java b/src/java.desktop/share/classes/sun/awt/AppContext.java index 3b93f1d2755..040861ce8a4 100644 --- a/src/java.desktop/share/classes/sun/awt/AppContext.java +++ b/src/java.desktop/share/classes/sun/awt/AppContext.java @@ -53,7 +53,7 @@ import java.util.function.Supplier; * The AppContext is a table referenced by ThreadGroup which stores * application service instances. (If you are not writing an application * service, or don't know what one is, please do not use this class.) - * The AppContext allows applet access to what would otherwise be + * The AppContext allows a context access to what would otherwise be * potentially dangerous services, such as the ability to peek at * EventQueues or change the look-and-feel of a Swing application.

        * @@ -79,7 +79,7 @@ import java.util.function.Supplier; * }

        * * The problem with the above is that the Foo service is global in scope, - * so that applets and other untrusted code can execute methods on the + * so that untrusted code can execute methods on the * single, shared Foo instance. The Foo service therefore either needs * to block its use by untrusted code using a SecurityManager test, or * restrict its capabilities so that it doesn't matter if untrusted code @@ -104,20 +104,14 @@ import java.util.function.Supplier; * Since a separate AppContext can exist for each ThreadGroup, trusted * and untrusted code have access to different Foo instances. This allows * untrusted code access to "system-wide" services -- the service remains - * within the AppContext "sandbox". For example, say a malicious applet + * within the AppContext "sandbox". For example, say malicious code * wants to peek all of the key events on the EventQueue to listen for * passwords; if separate EventQueues are used for each ThreadGroup - * using AppContexts, the only key events that applet will be able to - * listen to are its own. A more reasonable applet request would be to + * using AppContexts, the only key events that code will be able to + * listen to are its own. A more reasonable request would be to * change the Swing default look-and-feel; with that default stored in - * an AppContext, the applet's look-and-feel will change without - * disrupting other applets or potentially the browser itself.

        - * - * Because the AppContext is a facility for safely extending application - * service support to applets, none of its methods may be blocked by a - * a SecurityManager check in a valid Java implementation. Applets may - * therefore safely invoke any of its methods without worry of being - * blocked. + * an AppContext, the look-and-feel will change without + * disrupting other contexts. * * @author Thomas Ball * @author Fred Ecks @@ -155,7 +149,7 @@ public final class AppContext { /* The main "system" AppContext, used by everything not otherwise contained in another AppContext. It is implicitly created for - standalone apps only (i.e. not applets) + standalone apps only. */ private static volatile AppContext mainAppContext; @@ -283,9 +277,7 @@ public final class AppContext { ThreadGroup threadGroup = currentThreadGroup; // Special case: we implicitly create the main app context - // if no contexts have been created yet. This covers standalone apps - // and excludes applets because by the time applet starts - // a number of contexts have already been created by the plugin. + // if no contexts have been created yet. synchronized (getAppContextLock) { if (numAppContexts.get() == 0) { if (System.getProperty("javaplugin.version") == null && diff --git a/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java b/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java index 8c0669fa386..654cd04ff93 100644 --- a/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java +++ b/src/java.desktop/share/classes/sun/awt/EmbeddedFrame.java @@ -25,7 +25,6 @@ package sun.awt; -import java.applet.Applet; import java.awt.AWTKeyStroke; import java.awt.Component; import java.awt.Container; @@ -49,11 +48,11 @@ import java.io.Serial; import java.util.Set; /** - * A generic container used for embedding Java components, usually applets. + * A generic container used for embedding Java components. * An EmbeddedFrame has two related uses: * * . Within a Java-based application, an EmbeddedFrame serves as a sort of - * firewall, preventing the contained components or applets from using + * firewall, preventing the contained components from using * getParent() to find parent components, such as menubars. * * . Within a C-based application, an EmbeddedFrame contains a window handle @@ -71,7 +70,7 @@ public abstract class EmbeddedFrame extends Frame private boolean isCursorAllowed = true; private boolean supportsXEmbed = false; @SuppressWarnings("serial") // Not statically typed as Serializable - private KeyboardFocusManager appletKFM; + private KeyboardFocusManager appKFM; /** * Use serialVersionUID from JDK 1.1 for interoperability. @@ -139,12 +138,12 @@ public abstract class EmbeddedFrame extends Frame return; } - // should be the same as appletKFM + // should be the same as appKFM removeTraversingOutListeners((KeyboardFocusManager)evt.getSource()); - appletKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + appKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); if (isVisible()) { - addTraversingOutListeners(appletKFM); + addTraversingOutListeners(appKFM); } } @@ -169,44 +168,44 @@ public abstract class EmbeddedFrame extends Frame * EmbeddedFrame is first created or shown, we can't automatically determine * the correct KeyboardFocusManager to attach to as KeyEventDispatcher. * Those who want to use the functionality of traversing out of the EmbeddedFrame - * must call this method on the Applet's AppContext. After that, all the changes + * must call this method on the AppContext. After that, all the changes * can be handled automatically, including possible replacement of * KeyboardFocusManager. */ public void registerListeners() { - if (appletKFM != null) { - removeTraversingOutListeners(appletKFM); + if (appKFM != null) { + removeTraversingOutListeners(appKFM); } - appletKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + appKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); if (isVisible()) { - addTraversingOutListeners(appletKFM); + addTraversingOutListeners(appKFM); } } /** * Needed to avoid memory leak: we register this EmbeddedFrame as a listener with - * KeyboardFocusManager of applet's AppContext. We don't want the KFM to keep + * KeyboardFocusManager of an AppContext. We don't want the KFM to keep * reference to our EmbeddedFrame forever if the Frame is no longer in use, so we * add listeners in show() and remove them in hide(). */ @SuppressWarnings("deprecation") public void show() { - if (appletKFM != null) { - addTraversingOutListeners(appletKFM); + if (appKFM != null) { + addTraversingOutListeners(appKFM); } super.show(); } /** * Needed to avoid memory leak: we register this EmbeddedFrame as a listener with - * KeyboardFocusManager of applet's AppContext. We don't want the KFM to keep + * KeyboardFocusManager of an AppContext. We don't want the KFM to keep * reference to our EmbeddedFrame forever if the Frame is no longer in use, so we * add listeners in show() and remove them in hide(). */ @SuppressWarnings("deprecation") public void hide() { - if (appletKFM != null) { - removeTraversingOutListeners(appletKFM); + if (appKFM != null) { + removeTraversingOutListeners(appKFM); } super.hide(); } @@ -511,31 +510,6 @@ public abstract class EmbeddedFrame extends Frame public abstract void registerAccelerator(AWTKeyStroke stroke); public abstract void unregisterAccelerator(AWTKeyStroke stroke); - /** - * Checks if the component is in an EmbeddedFrame. If so, - * returns the applet found in the hierarchy or null if - * not found. - * @return the parent applet or {@code null} - * @since 1.6 - * - * @deprecated The Applet API is deprecated. See the - * java.applet package - * documentation for further information. - */ - @Deprecated(since = "9", forRemoval = true) - @SuppressWarnings("removal") - public static Applet getAppletIfAncestorOf(Component comp) { - Container parent = comp.getParent(); - Applet applet = null; - while (parent != null && !(parent instanceof EmbeddedFrame)) { - if (parent instanceof Applet) { - applet = (Applet)parent; - } - parent = parent.getParent(); - } - return parent == null ? null : applet; - } - /** * This method should be overridden in subclasses. It is * called when window this frame is within should be blocked diff --git a/src/java.desktop/share/classes/sun/awt/SunToolkit.java b/src/java.desktop/share/classes/sun/awt/SunToolkit.java index 9bf805a5808..0f1edaf6a0e 100644 --- a/src/java.desktop/share/classes/sun/awt/SunToolkit.java +++ b/src/java.desktop/share/classes/sun/awt/SunToolkit.java @@ -267,8 +267,7 @@ public abstract class SunToolkit extends Toolkit /* * Create a new AppContext, along with its EventQueue, for a - * new ThreadGroup. Browser code, for example, would use this - * method to create an AppContext & EventQueue for an Applet. + * new ThreadGroup. */ public static AppContext createNewAppContext() { ThreadGroup threadGroup = Thread.currentThread().getThreadGroup(); @@ -1635,9 +1634,6 @@ public abstract class SunToolkit extends Toolkit * But GTK currently has an additional test based on locale which is * not applied by Metal. So mixing GTK in a few locales with Metal * would mean the last one wins. - * This could be stored per-app context which would work - * for different applets, but wouldn't help for a single application - * using GTK and some other L&F concurrently. * But it is expected this will be addressed within GTK and the font * system so is a temporary and somewhat unlikely harmless corner case. */ diff --git a/src/java.desktop/share/classes/sun/awt/util/PerformanceLogger.java b/src/java.desktop/share/classes/sun/awt/util/PerformanceLogger.java index e57bf169275..117ff4bec2a 100644 --- a/src/java.desktop/share/classes/sun/awt/util/PerformanceLogger.java +++ b/src/java.desktop/share/classes/sun/awt/util/PerformanceLogger.java @@ -44,12 +44,12 @@ import java.io.Writer; * analysis is interesting; this class is merely a central container * for those timing values. * Note that, due to the variables in this class being static, - * use of particular time values by multiple applets will cause - * confusing results. For example, if plugin runs two applets - * simultaneously, the initTime for those applets will collide + * use of particular time values by multiple AppContexts will cause + * confusing results. For example, if two contexts run + * simultaneously, the initTime for those will collide * and the results may be undefined. *

        - * To automatically track startup performance in an app or applet, + * To automatically track startup performance in an app * use the command-line parameter sun.perflog as follows:
        *

        {@code
          *     -Dsun.perflog[=file:]
        @@ -167,9 +167,9 @@ public class PerformanceLogger {
         
             /**
              * Sets the start time.  Ideally, this is the earliest time available
        -     * during the startup of a Java applet or application.  This time is
        +     * during the startup of an application.  This time is
              * later used to analyze the difference between the initial startup
        -     * time and other events in the system (such as an applet's init time).
        +     * time and other events in the system.
              */
             public static void setStartTime(String message) {
                 if (loggingEnabled()) {
        diff --git a/src/java.desktop/share/classes/sun/font/SunFontManager.java b/src/java.desktop/share/classes/sun/font/SunFontManager.java
        index 2831cae2573..1194a1c5816 100644
        --- a/src/java.desktop/share/classes/sun/font/SunFontManager.java
        +++ b/src/java.desktop/share/classes/sun/font/SunFontManager.java
        @@ -2481,7 +2481,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE {
              * performed normally. There may be some duplication of effort, but
              * that code is already written to be able to perform properly if called
              * to duplicate work. The main difference is that if we detect we are
        -     * running in an applet/browser/Java plugin environment these new fonts
        +     * in an AppContext environment these new fonts
              * are not placed in the "default" maps but into an AppContext instance.
              * The font lookup mechanism in java.awt.Font.getFont2D() is also updated
              * so that look-up for composite fonts will in that case always
        @@ -2502,7 +2502,7 @@ public abstract class SunFontManager implements FontSupport, FontManagerForSGE {
              * Calling the methods below is "heavyweight" but it is expected that
              * these methods will be called very rarely.
              *
        -     * If _usingAlternateComposites is true, we are not in an "applet"
        +     * If _usingAlternateComposites is true, we are not in an "AppContext"
              * environment and the (single) application has selected
              * an alternate composite font behaviour.
              *
        diff --git a/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java b/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java
        index 78b14bc605d..7165b1701fa 100644
        --- a/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java
        +++ b/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java
        @@ -1441,7 +1441,7 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
                         comp = AWTAccessor.getComponentAccessor().getParent(comp);
                     }
         
        -            // applets, embedded, etc - translate directly
        +            // embedded, etc - translate directly
                     // XXX: override in subclass?
                     if (comp == null || comp instanceof sun.awt.EmbeddedFrame) {
                         return toGlobal(0, 0);
        diff --git a/src/java.desktop/windows/classes/sun/awt/windows/WEmbeddedFrame.java b/src/java.desktop/windows/classes/sun/awt/windows/WEmbeddedFrame.java
        index ad0745a2733..dcdee830edc 100644
        --- a/src/java.desktop/windows/classes/sun/awt/windows/WEmbeddedFrame.java
        +++ b/src/java.desktop/windows/classes/sun/awt/windows/WEmbeddedFrame.java
        @@ -253,8 +253,8 @@ public final class WEmbeddedFrame extends EmbeddedFrame {
              *     super.notifyModalBlocked(blocker, blocked) must be present
              *     when overriding.
              * It may occur that embedded frame is not put into its
        -     *     container at the moment when it is blocked, for example,
        -     *     when running an applet in IE. Then the call to this method
        +     *     container at the moment when it is blocked.
        +     *     Then the call to this method
              *     should be delayed until embedded frame is reparented.
              *
              * NOTE: This method may be called by privileged threads.
        diff --git a/src/java.desktop/windows/native/libawt/windows/awt_Dialog.h b/src/java.desktop/windows/native/libawt/windows/awt_Dialog.h
        index 52e28e4cc57..91886c46a9a 100644
        --- a/src/java.desktop/windows/native/libawt/windows/awt_Dialog.h
        +++ b/src/java.desktop/windows/native/libawt/windows/awt_Dialog.h
        @@ -128,8 +128,7 @@ public:
             static LRESULT CALLBACK MouseHookProc(int code,
                                                   WPARAM wParam, LPARAM lParam);
             // WM_MOUSE hook procedure used in modality, similar to
        -    // MouseHookProc but installed on non-toolkit threads, for
        -    // example on browser's thread when running in Java Plugin
        +    // MouseHookProc but installed on non-toolkit threads
             static LRESULT CALLBACK MouseHookProc_NonTT(int code,
                                                         WPARAM wParam, LPARAM lParam);
         
        diff --git a/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.cpp b/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.cpp
        index b396538455a..90d7854d0c8 100644
        --- a/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.cpp
        +++ b/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.cpp
        @@ -49,7 +49,6 @@
          * Set our limit much lower than that to allow a buffer for objects
          * created beyond the per-thread HDC/Brush/Pen objects we are
          * counting here, including objects created by the overall process
        - * (which could include the browser, in the case of applets)
          */
         #define MAX_GDI_OBJECTS 9000
         
        diff --git a/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp b/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp
        index 9f126bded94..9abe32e0fcc 100644
        --- a/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp
        +++ b/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp
        @@ -1786,8 +1786,8 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WEmbeddedFrame_printBand
         //     ::PatBlt(hDC, destX+1, destY+1, destWidth-2, destHeight-2, PATCOPY);
         //     ::SelectObject(hDC, oldBrush);
         
        -    /* This code is rarely used now. It used to be invoked by Java plugin browser
        -     * printing. Today embedded frames are used only when a toolkit such as SWT
        +    /* This code is rarely used now.
        +     * Today embedded frames are used only when a toolkit such as SWT
              * needs to embed
              */
             TRY;
        diff --git a/test/hotspot/jtreg/TEST.quick-groups b/test/hotspot/jtreg/TEST.quick-groups
        index fa1f7f5634e..32af8486b0f 100644
        --- a/test/hotspot/jtreg/TEST.quick-groups
        +++ b/test/hotspot/jtreg/TEST.quick-groups
        @@ -1603,7 +1603,6 @@ vmTestbase_vm_compiler_quick = \
           vmTestbase/jit/misctests/JitBug1/JitBug1.java \
           vmTestbase/jit/misctests/Pi/Pi.java \
           vmTestbase/jit/misctests/clss14702/clss14702.java \
        -  vmTestbase/jit/misctests/fpustack/GraphApplet.java \
           vmTestbase/jit/misctests/putfield00802/putfield00802.java \
           vmTestbase/jit/misctests/t5/t5.java \
           vmTestbase/jit/overflow/overflow.java \
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphApplet.java b/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphApplet.java
        deleted file mode 100644
        index a648ce348e0..00000000000
        --- a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphApplet.java
        +++ /dev/null
        @@ -1,156 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2020, 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.
        - *
        - * 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.
        - */
        -
        -/*
        - * @test
        - * @key headful
        - *
        - * @summary converted from VM Testbase jit/misctests/fpustack.
        - * VM Testbase keywords: [jit, desktop, jdk_desktop, quick]
        - *
        - * @library /vmTestbase
        - *          /test/lib
        - * @run main/othervm jit.misctests.fpustack.GraphApplet
        - */
        -
        -package jit.misctests.fpustack;
        -
        -import java.util.*;
        -import java.awt.*;
        -import java.applet.Applet;
        -import nsk.share.TestFailure;
        -
        -
        -public class GraphApplet extends Applet {
        -    private GraphPanel panel;
        -    private boolean isApplet = true;
        -    private boolean initialized = false;
        -
        -    /**
        -    ** main method for testing that class
        -    **
        -    **/
        -    public static void main( String[] args )        {
        -        Frame f = new Frame("GraphApplet");
        -        GraphApplet app = new GraphApplet();
        -        app.isApplet = false;
        -        app.setSize(600,400);
        -        f.setLayout( new BorderLayout() );
        -        f.add("Center",app);
        -        f.setSize(600,400);
        -
        -        app.init();
        -        //      f.pack();
        -        f.show(true);
        -        app.start();
        -
        -        try {
        -            Thread.currentThread().sleep(5*1000);
        -        } catch (InterruptedException e) {
        -        }
        -
        -        f.show(false);
        -        app.stop();
        -        f.dispose();
        -        return;
        -    }
        -
        -    /**
        -    ** init-Method in applet's lifecycle.
        -    ** the graphic panel is build up and the date is filled.
        -    **/
        -    public synchronized void init() {
        -        System.out.println( "GraphApplet : init");
        -        setLayout(new BorderLayout());
        -
        -        panel = new GraphPanel(this, new layout() );
        -        fill( panel );
        -        add("Center", panel);
        -        Panel p = new Panel();
        -        add("South", p);
        -        initialized = true;
        -    }
        -
        -    public synchronized void start() {
        -        System.out.println( "GraphApplet : start");
        -        panel.formatNodes();
        -    }
        -    public synchronized void stop() {
        -        initialized = false;
        -        System.out.println( "GraphApplet : stop");
        -    }
        -
        -    public synchronized void destroy() {
        -        System.out.println( "GraphApplet : destroy");
        -    }
        -
        -    /**
        -    ** paint the Applet
        -    **/
        -    public synchronized void paint(Graphics g) {
        -        try {
        -            while ( ! initialized )
        -                Thread.currentThread().sleep(5);
        -        } catch (InterruptedException e) {}
        -        if (g instanceof PrintGraphics )
        -            System.out.println( "printing GraphApplet ...");
        -    }
        -
        -    public synchronized void print(Graphics g) {
        -        try {
        -            while ( ! initialized )
        -                Thread.currentThread().sleep(5);
        -        } catch (InterruptedException e) {}
        -        System.out.println( "Print Applet "  + g);
        -        panel.print(g);
        -    }
        -
        -    public void print() {
        -        // System.out.println( "Print Applet");
        -        Toolkit kit = getToolkit();
        -        try {
        -
        -            PrintJob job = kit.getPrintJob( new Frame("x"), "PrintableFrame print job",
        -                                            null);
        -            // do the printing if the user didn't cancel the print job
        -            if (job != null) {
        -                Graphics g = job.getGraphics();
        -                printAll(g);                                    // not paint(g)
        -                g.dispose();                                    // finish with this page
        -                job.end();                                              // finish with the PrintJob
        -            }
        -        } catch (Exception ex) {
        -            System.out.println( "print exception " + ex);
        -        }
        -    }
        -
        -    /**
        -    **
        -    ** @param      panel   the container for nodes
        -    **
        -    **/
        -    private void
        -        fill(  GraphPanel panel )       {
        -            panel.addNodes("Node1", "Node2", "Node3" );
        -    }
        -}
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphPanel.java b/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphPanel.java
        deleted file mode 100644
        index db36e0a3101..00000000000
        --- a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/GraphPanel.java
        +++ /dev/null
        @@ -1,111 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2018, 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.
        - *
        - * 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 jit.misctests.fpustack;
        -
        -import java.util.*;
        -import java.awt.*;
        -import java.applet.Applet;
        -import nsk.share.TestFailure;
        -
        -public class GraphPanel extends Panel {
        -    private Panel graph;                                                        // the container
        -
        -    private ilayout layout = null;  // the strategy
        -
        -
        -    private int nodesN;                                                         // number of nodes
        -    private Node nodes[] = new Node[200];                       // nodes container
        -
        -    /**
        -    ** constructor
        -    **
        -    ** @param      Panel                   the container
        -    ** @param      layout  a strategy to layout the nodes
        -    **
        -    **/
        -    GraphPanel(Panel graph, layout ls ) {
        -        this.graph = graph;
        -        layout = ls;
        -    }
        -
        -
        -
        -
        -    /**
        -    ** add a node via label text.
        -    **
        -    ** @param      lbl             the label
        -    ** @return     the index of the node in array nodes[]
        -    **
        -    **/
        -
        -    public int addNode(String lbl) {
        -        Node n = new Node();
        -        if (nodesN > 0) {
        -            n.x = nodes[nodesN-1].x + 30;
        -            n.y = nodes[nodesN-1].y + 30;
        -        }
        -        n.lbl = lbl;
        -
        -        nodes[nodesN] = n;
        -        return nodesN++;
        -    }
        -
        -
        -
        -    /**
        -    ** add a node via label text.
        -    **
        -    ** @param      lbl             the label
        -    ** @return     the index of the node in array nodes[]
        -    **
        -    **/
        -
        -    public void addNodes(String lb1, String lb2, String lb3) {
        -        addNode(lb1);
        -        addNode(lb2);
        -        addNode(lb3);
        -    }
        -
        -
        -
        -    /**
        -    ** layout the nodes on the panel. the layout is used
        -    **
        -    **
        -    **/
        -    public synchronized void formatNodes( ) {
        -
        -        // format nodes
        -        FontMetrics fm = getFontMetrics(getFont());
        -        Dimension d = getSize();
        -
        -        Node[] ns = new Node[ nodesN ];
        -        System.arraycopy(nodes, 0, ns, 0, nodesN);
        -        layout.formatNodes( ns, d, fm );
        -
        -    }
        -
        -
        -
        -}
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/Node.java b/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/Node.java
        deleted file mode 100644
        index 8bee7fb7265..00000000000
        --- a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/Node.java
        +++ /dev/null
        @@ -1,34 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2018, 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.
        - *
        - * 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 jit.misctests.fpustack;
        -
        -import nsk.share.TestFailure;
        -
        -public class Node {
        -
        -        double x = 0.0;
        -        double y = 0.0;
        -
        -        String lbl;
        -
        -    }
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/ilayout.java b/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/ilayout.java
        deleted file mode 100644
        index 9550dd08415..00000000000
        --- a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/ilayout.java
        +++ /dev/null
        @@ -1,33 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2018, 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.
        - *
        - * 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 jit.misctests.fpustack;
        -
        -import java.util.*;
        -import java.awt.*;
        -import nsk.share.TestFailure;
        -
        -interface ilayout {
        -
        -    public void formatNodes( Node[] n, Dimension d, FontMetrics fm );
        -
        -}
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/layout.java b/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/layout.java
        deleted file mode 100644
        index feb6e46e375..00000000000
        --- a/test/hotspot/jtreg/vmTestbase/jit/misctests/fpustack/layout.java
        +++ /dev/null
        @@ -1,46 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2018, 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.
        - *
        - * 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 jit.misctests.fpustack;
        -
        -import java.util.*;
        -import java.awt.*;
        -import java.applet.Applet;
        -import nsk.share.TestFailure;
        -
        -public class layout implements ilayout {
        -    public  void formatNodes( Node[] nodes, Dimension d, FontMetrics fm )   {
        -        int h = d.height/2 - 10 ;
        -
        -        double alpha = -Math.PI/2;
        -        for ( int j = 0; j < nodes.length; j++) {
        -            Node n = nodes[j];
        -            int w = d.width/2 - fm.stringWidth( n.lbl )/2;
        -
        -            n.x = d.width/2 + (int)(w*Math.cos( alpha ));
        -
        -            n.y = d.height/2 + (int)(h*Math.sin( alpha ));
        -            alpha += 2*Math.PI/nodes.length;
        -        }
        -    }
        -
        -}
        diff --git a/test/hotspot/jtreg/vmTestbase/jit/removal_candidates.txt b/test/hotspot/jtreg/vmTestbase/jit/removal_candidates.txt
        index f9628bfa685..f1df1ecee05 100644
        --- a/test/hotspot/jtreg/vmTestbase/jit/removal_candidates.txt
        +++ b/test/hotspot/jtreg/vmTestbase/jit/removal_candidates.txt
        @@ -27,7 +27,6 @@ questions.
         * common/misctests/classes
         * common/misctests/FileViewer
         * common/misctests/Foo
        -* common/misctests/fpustack
         * common/misctests/NoHeader
         * common/misctests/noop
         * common/misctests/Pi
        diff --git a/test/jdk/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java b/test/jdk/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
        deleted file mode 100644
        index 44332df94b4..00000000000
        --- a/test/jdk/java/awt/Window/TranslucentJAppletTest/TranslucentJAppletTest.java
        +++ /dev/null
        @@ -1,123 +0,0 @@
        -/*
        - * Copyright (c) 2008, 2021, 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.
        - *
        - * 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.
        - */
        -
        -/*
        - * @test
        - * @key headful
        - * @bug 6683728
        - * @summary Tests that a JApplet in a translucent JFrame works properly
        - * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
        - * @run main/othervm -Dsun.java2d.uiScale=1 TranslucentJAppletTest
        - */
        -
        -import java.awt.*;
        -import java.awt.image.*;
        -
        -import javax.swing.*;
        -
        -public class TranslucentJAppletTest {
        -
        -    private static volatile GraphicsConfiguration graphicsConfig = null;
        -    private static JFrame frame;
        -    private static volatile boolean paintComponentCalled = false;
        -
        -    private static void initAndShowGUI() {
        -        frame = new JFrame(graphicsConfig);
        -        JApplet applet = new JApplet();
        -        applet.setBackground(new Color(0, 0, 0, 0));
        -        JPanel panel = new JPanel() {
        -            protected void paintComponent(Graphics g) {
        -                paintComponentCalled = true;
        -                g.setColor(Color.RED);
        -                g.fillOval(0, 0, getWidth(), getHeight());
        -            }
        -        };
        -        panel.setDoubleBuffered(false);
        -        panel.setOpaque(false);
        -        applet.add(panel);
        -        frame.add(applet);
        -        frame.setBounds(100, 100, 200, 200);
        -        frame.setUndecorated(true);
        -        frame.setBackground(new Color(0, 0, 0, 0));
        -        frame.setVisible(true);
        -    }
        -
        -    public static void main(String[] args)
        -        throws Exception
        -    {
        -
        -        final GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        -        for (GraphicsDevice gd : ge.getScreenDevices()) {
        -            if (gd.isWindowTranslucencySupported(
        -                        GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT))
        -            {
        -                for (GraphicsConfiguration gc : gd.getConfigurations()) {
        -                    if (gc.isTranslucencyCapable()) {
        -                        graphicsConfig = gc;
        -                        break;
        -                    }
        -                }
        -            }
        -            if (graphicsConfig != null) {
        -                break;
        -            }
        -        }
        -        if (graphicsConfig == null) {
        -            System.out.println("The system does not support translucency. Consider the test passed.");
        -            return;
        -        }
        -
        -        Robot r = new Robot();
        -        Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
        -
        -        SwingUtilities.invokeAndWait(new Runnable() {
        -            public void run() {
        -                initAndShowGUI();
        -            }
        -        });
        -        r.waitForIdle();
        -
        -        if (!paintComponentCalled) {
        -            throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
        -        }
        -        Thread.sleep(1500);
        -
        -        Color newColor1 = r.getPixelColor(100, 100);
        -        Color newColor2 = r.getPixelColor(200, 200);
        -
        -        // Frame must be transparent at (100, 100) in screen coords
        -        if (!color1.equals(newColor1)) {
        -            System.err.println("color1 = " + color1);
        -            System.err.println("newColor1 = " + newColor1);
        -            throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
        -        }
        -
        -        // Frame must be RED at (200, 200) in screen coords
        -        if (!newColor2.equals(Color.RED)) {
        -            System.err.println("newColor2 = " + newColor2);
        -            throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
        -        }
        -
        -        System.out.println("Test PASSED");
        -    }
        -}
        diff --git a/test/jdk/java/awt/applet/Applet/AppletFlipBuffer.java b/test/jdk/java/awt/applet/Applet/AppletFlipBuffer.java
        deleted file mode 100644
        index bb541e133be..00000000000
        --- a/test/jdk/java/awt/applet/Applet/AppletFlipBuffer.java
        +++ /dev/null
        @@ -1,93 +0,0 @@
        -/*
        - * Copyright (c) 2015, 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.
        - *
        - * 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.
        - */
        -
        -import java.applet.Applet;
        -import java.awt.AWTException;
        -import java.awt.BufferCapabilities;
        -import java.awt.BufferCapabilities.FlipContents;
        -import java.awt.Frame;
        -import java.awt.ImageCapabilities;
        -import java.util.HashSet;
        -import java.util.Set;
        -
        -import sun.awt.AWTAccessor;
        -import sun.awt.AWTAccessor.ComponentAccessor;
        -
        -import static java.awt.BufferCapabilities.FlipContents.BACKGROUND;
        -import static java.awt.BufferCapabilities.FlipContents.COPIED;
        -import static java.awt.BufferCapabilities.FlipContents.PRIOR;
        -import static java.awt.BufferCapabilities.FlipContents.UNDEFINED;
        -
        -/**
        - * @test
        - * @key headful
        - * @bug 8130390 8134732
        - * @summary Applet fails to launch on virtual desktop
        - * @modules java.desktop/sun.awt
        - * @author Semyon Sadetsky
        - */
        -public final class AppletFlipBuffer {
        -
        -    static final ImageCapabilities[] ics = {new ImageCapabilities(true),
        -                                            new ImageCapabilities(false)};
        -    static final FlipContents[] cntx = {UNDEFINED, BACKGROUND, PRIOR, COPIED};
        -    static final Set bcs = new HashSet<>();
        -
        -    static {
        -        for (final ImageCapabilities icFront : ics) {
        -            for (final ImageCapabilities icBack : ics) {
        -                for (final FlipContents cnt : cntx) {
        -                    bcs.add(new BufferCapabilities(icFront, icBack, cnt));
        -                }
        -            }
        -        }
        -    }
        -
        -    public static void main(final String[] args) throws Exception {
        -        Applet applet = new Applet();
        -        Frame frame = new Frame();
        -        try {
        -            frame.setSize(10, 10);
        -            frame.add(applet);
        -            frame.setUndecorated(true);
        -            frame.setVisible(true);
        -            test(applet);
        -            System.out.println("ok");
        -        } finally {
        -            frame.dispose();
        -        }
        -    }
        -
        -    private static void test(final Applet applet) {
        -        ComponentAccessor acc = AWTAccessor.getComponentAccessor();
        -        for (int i = 1; i < 10; ++i) {
        -            for (final BufferCapabilities caps : bcs) {
        -                try {
        -                    acc.createBufferStrategy(applet, i, caps);
        -                } catch (final AWTException ignored) {
        -                    // this kind of buffer strategy is not supported
        -                }
        -            }
        -        }
        -    }
        -}
        diff --git a/test/jdk/java/awt/applet/Applet/HeadlessApplet.java b/test/jdk/java/awt/applet/Applet/HeadlessApplet.java
        deleted file mode 100644
        index c258e080a22..00000000000
        --- a/test/jdk/java/awt/applet/Applet/HeadlessApplet.java
        +++ /dev/null
        @@ -1,49 +0,0 @@
        -/*
        - * Copyright (c) 2007, 2014, 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.
        - *
        - * 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.
        - */
        -
        -import java.applet.Applet;
        -import java.awt.HeadlessException;
        -
        -/*
        - * @test
        - * @summary Check HeadlessException occurrence when trying to create Applet
        - *          in headless mode
        - * @run main/othervm -Djava.awt.headless=true HeadlessApplet
        - */
        -
        -public class HeadlessApplet {
        -
        -    public static void main(String args[]) {
        -        boolean noExceptions = true;
        -
        -        try {
        -            Applet a = new Applet();
        -        } catch (HeadlessException e) {
        -            noExceptions = false;
        -        }
        -
        -        if (noExceptions) {
        -            throw new RuntimeException("No HeadlessException occured when creating Applet in headless mode");
        -        }
        -    }
        -}
        diff --git a/test/jdk/java/beans/Introspector/4520754/Test4520754.java b/test/jdk/java/beans/Introspector/4520754/Test4520754.java
        index affb71257dc..3ad890c57db 100644
        --- a/test/jdk/java/beans/Introspector/4520754/Test4520754.java
        +++ b/test/jdk/java/beans/Introspector/4520754/Test4520754.java
        @@ -41,7 +41,6 @@ import java.beans.IntrospectionException;
         import java.beans.Introspector;
         import java.beans.PropertyDescriptor;
         
        -import javax.swing.JApplet;
         import javax.swing.JButton;
         import javax.swing.JCheckBox;
         
        @@ -61,7 +60,7 @@ public class Test4520754 {
                 // AWT classes (com.sun.beans.infos.ComponentBeanInfo)
                 test(null, Button.class, Component.class, List.class, Menu.class, Panel.class);
                 // Swing classes (dt.jar)
        -        test(null, JApplet.class, JButton.class, JCheckBox.class);
        +        test(null, JButton.class, JCheckBox.class);
                 // user defined classes
                 test(Boolean.TRUE, Wombat.class, Foo.class, FooBar.class);
             }
        diff --git a/test/jdk/java/beans/Performance/TestIntrospector.java b/test/jdk/java/beans/Performance/TestIntrospector.java
        index 70f68397e66..749a6de5b4c 100644
        --- a/test/jdk/java/beans/Performance/TestIntrospector.java
        +++ b/test/jdk/java/beans/Performance/TestIntrospector.java
        @@ -25,7 +25,7 @@
          * @test
          * @summary Tests just a benchmark of introspector performance
          * @author Mark Davidson
        - * @run main/manual TestIntrospector
        + * @run main TestIntrospector
          */
         
         import java.beans.BeanInfo;
        @@ -43,7 +43,6 @@ public class TestIntrospector {
                     javax.swing.DefaultComboBoxModel.class,
                     javax.swing.DefaultListModel.class,
                     javax.swing.ImageIcon.class,
        -            javax.swing.JApplet.class,
                     javax.swing.JButton.class,
                     javax.swing.JCheckBox.class,
                     javax.swing.JColorChooser.class,
        diff --git a/test/jdk/java/beans/PropertyChangeSupport/Test4682386.java b/test/jdk/java/beans/PropertyChangeSupport/Test4682386.java
        index df912e75e25..72a7c0b5084 100644
        --- a/test/jdk/java/beans/PropertyChangeSupport/Test4682386.java
        +++ b/test/jdk/java/beans/PropertyChangeSupport/Test4682386.java
        @@ -38,7 +38,6 @@ import java.beans.PropertyDescriptor;
         
         import java.lang.reflect.Method;
         
        -import javax.swing.JApplet;
         import javax.swing.JButton;
         import javax.swing.JCheckBox;
         import javax.swing.JComboBox;
        @@ -70,7 +69,6 @@ public class Test4682386 {
             private static final boolean DEBUG = true;
         
             private static final Class[] TYPES = {
        -            JApplet.class,
                     JButton.class,
                     JCheckBox.class,
                     JComboBox.class,
        diff --git a/test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java b/test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java
        index cb0875a5320..702afb34111 100644
        --- a/test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java
        +++ b/test/jdk/javax/sound/sampled/Clip/AudioContentHandlers.java
        @@ -1,5 +1,5 @@
         /*
        - * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
        + * Copyright (c) 2018, 2025, 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
        @@ -21,7 +21,6 @@
          * questions.
          */
         
        -import java.applet.AudioClip;
         import java.io.ByteArrayInputStream;
         import java.io.File;
         import java.io.IOException;
        @@ -31,6 +30,7 @@ import java.util.ArrayList;
         import java.util.LinkedList;
         import java.util.List;
         
        +import javax.sound.SoundClip;
         import javax.sound.sampled.AudioFileFormat;
         import javax.sound.sampled.AudioFormat;
         import javax.sound.sampled.AudioInputStream;
        @@ -44,8 +44,8 @@ import static javax.sound.sampled.AudioFileFormat.Type.WAVE;
         
         /**
          * @test
        - * @bug 8204454
        - * @summary URL.getContent() should return AudioClip for supported formats
        + * @bug 8204454 8359053
        + * @summary URL.getContent() should return SoundClip for supported formats
          * @run main/othervm -Xmx128m AudioContentHandlers
          */
         public final class AudioContentHandlers {
        @@ -77,10 +77,10 @@ public final class AudioContentHandlers {
                         } catch (IOException | IllegalArgumentException ignored) {
                             continue;
                         }
        -                AudioClip content;
        +                SoundClip content;
                         try {
        -                    content = (AudioClip) file.toURL().getContent();
        -                    // We need to generate OOM because the stream in AudioClip
        +                    content = (SoundClip) file.toURL().getContent();
        +                    // We need to generate OOM because the stream in SoundClip
                             // will be closed in finalize().
                             generateOOME();
                         } finally {
        diff --git a/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java b/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
        index 940124b244b..f823175ede8 100644
        --- a/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
        +++ b/test/jdk/javax/sound/sampled/Clip/AutoCloseTimeCheck.java
        @@ -1,5 +1,5 @@
         /*
        - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
        + * Copyright (c) 2018, 2025, 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
        @@ -21,7 +21,6 @@
          * questions.
          */
         
        -import java.applet.AudioClip;
         import java.io.ByteArrayInputStream;
         import java.io.File;
         import java.io.IOException;
        @@ -29,6 +28,7 @@ import java.io.InputStream;
         import java.nio.file.Files;
         import java.util.concurrent.TimeUnit;
         
        +import javax.sound.SoundClip;
         import javax.sound.sampled.AudioFileFormat.Type;
         import javax.sound.sampled.AudioFormat;
         import javax.sound.sampled.AudioInputStream;
        @@ -66,7 +66,7 @@ public final class AutoCloseTimeCheck {
              * and the "Direct Clip" thread will stop.
              */
             private static void testBigDelay(final File file) throws Exception {
        -        AudioClip clip = (AudioClip) file.toURL().getContent();
        +        SoundClip clip = SoundClip.createSoundClip(file);
                 clip.loop();
                 clip.stop();
                 sleep(20000); // 20 sec for slow systems
        @@ -80,7 +80,7 @@ public final class AutoCloseTimeCheck {
              * closed and the "Direct Clip" thread will alive.
              */
             private static void testSmallDelay(final File file) throws IOException {
        -        AudioClip clip = (AudioClip) file.toURL().getContent();
        +        SoundClip clip = SoundClip.createSoundClip(file);
                 long threadID = 0;
                 // Will run the test no more than 15 seconds
                 long endtime = System.nanoTime() + TimeUnit.SECONDS.toNanos(15);
        diff --git a/test/jdk/javax/sound/sampled/Clip/DataPusherThreadCheck.java b/test/jdk/javax/sound/sampled/Clip/DataPusherThreadCheck.java
        index 58e0f0d6011..3e1135ca19c 100644
        --- a/test/jdk/javax/sound/sampled/Clip/DataPusherThreadCheck.java
        +++ b/test/jdk/javax/sound/sampled/Clip/DataPusherThreadCheck.java
        @@ -1,5 +1,5 @@
         /*
        - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
        + * Copyright (c) 2022, 2025, 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
        @@ -30,7 +30,7 @@ import javax.sound.sampled.AudioInputStream;
         import javax.sound.sampled.AudioSystem;
         import javax.sound.sampled.Clip;
         import javax.sound.sampled.DataLine;
        -import java.applet.AudioClip;
        +import javax.sound.SoundClip;
         import java.io.ByteArrayInputStream;
         import java.io.File;
         import java.io.InputStream;
        @@ -70,7 +70,7 @@ public class DataPusherThreadCheck {
             }
         
             private static void checkThread(File file) throws Exception {
        -        AudioClip clip = (AudioClip) file.toURL().getContent();
        +        SoundClip clip = SoundClip.createSoundClip(file);
                 clip.loop();
                 try {
                     Thread.sleep(2000);
        diff --git a/test/jdk/javax/swing/Headless/HeadlessJApplet.java b/test/jdk/javax/swing/Headless/HeadlessJApplet.java
        deleted file mode 100644
        index e0ac858ac09..00000000000
        --- a/test/jdk/javax/swing/Headless/HeadlessJApplet.java
        +++ /dev/null
        @@ -1,44 +0,0 @@
        -/*
        - * Copyright (c) 2007, 2014, 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.
        - *
        - * 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.
        - */
        -
        -import javax.swing.JApplet;
        -import java.awt.HeadlessException;
        -
        -/*
        - * @test
        - * @summary Check that JApplet constructor throws HeadlessException in headless mode
        - * @run main/othervm -Djava.awt.headless=true HeadlessJApplet
        - */
        -
        -public class HeadlessJApplet {
        -    public static void main(String args[]) {
        -        boolean exceptions = false;
        -        try {
        -            new JApplet();
        -        } catch (HeadlessException e) {
        -            exceptions = true;
        -        }
        -        if (!exceptions)
        -            throw new RuntimeException("HeadlessException did not occur when expected");
        -    }
        -}