From 88dd747a1a34608c4376c022630f3c6e0cb434ae Mon Sep 17 00:00:00 2001 From: Sergey Bylokhov Date: Thu, 14 May 2015 02:05:02 +0300 Subject: [PATCH] 6368321: MetalRootPaneUI calls to deprecated code Reviewed-by: alexsch, azvegint --- .../share/classes/javax/swing/JApplet.java | 28 +++--- .../share/classes/javax/swing/JDialog.java | 11 +-- .../share/classes/javax/swing/JFrame.java | 8 +- .../swing/plaf/metal/MetalRootPaneUI.java | 28 +++--- .../SilenceOfDeprecatedMenuBar.java | 90 +++++++++++++++++++ 5 files changed, 122 insertions(+), 43 deletions(-) create mode 100644 jdk/test/javax/swing/JRootPane/SilenceOfDeprecatedMenuBar/SilenceOfDeprecatedMenuBar.java diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java b/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java index 4e74e411a61..6a00de486d2 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JApplet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -24,14 +24,18 @@ */ package javax.swing; -import java.awt.*; -import java.awt.event.*; import java.applet.Applet; -import java.beans.PropertyChangeListener; -import java.util.Locale; -import java.util.Vector; -import java.io.Serializable; -import javax.accessibility.*; +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 javax.accessibility.Accessible; +import javax.accessibility.AccessibleContext; /** * An extended version of java.applet.Applet that adds support for @@ -243,9 +247,8 @@ public class JApplet extends Applet implements Accessible, * hidden: true * description: The menubar for accessing pulldown menus from this applet. */ - @SuppressWarnings("deprecation") - public void setJMenuBar(JMenuBar menuBar) { - getRootPane().setMenuBar(menuBar); + public void setJMenuBar(final JMenuBar menuBar) { + getRootPane().setJMenuBar(menuBar); } /** @@ -254,9 +257,8 @@ public class JApplet extends Applet implements Accessible, * @return the menubar set on this applet * @see #setJMenuBar */ - @SuppressWarnings("deprecation") public JMenuBar getJMenuBar() { - return getRootPane().getMenuBar(); + return getRootPane().getJMenuBar(); } diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java b/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java index b9eb3e55475..b33bb15f30d 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JDialog.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -849,9 +849,8 @@ public class JDialog extends Dialog implements WindowConstants, * hidden: true * description: The menubar for accessing pulldown menus from this dialog. */ - @SuppressWarnings("deprecation") - public void setJMenuBar(JMenuBar menu) { - getRootPane().setMenuBar(menu); + public void setJMenuBar(final JMenuBar menu) { + getRootPane().setJMenuBar(menu); } /** @@ -860,12 +859,10 @@ public class JDialog extends Dialog implements WindowConstants, * @return the menubar set on this dialog * @see #setJMenuBar */ - @SuppressWarnings("deprecation") public JMenuBar getJMenuBar() { - return getRootPane().getMenuBar(); + return getRootPane().getJMenuBar(); } - /** * Returns whether calls to {@code add} and * {@code setLayout} are forwarded to the {@code contentPane}. diff --git a/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java b/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java index be6b5ba96ba..c8415e70f58 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/JFrame.java @@ -486,9 +486,8 @@ public class JFrame extends Frame implements WindowConstants, * hidden: true * description: The menubar for accessing pulldown menus from this frame. */ - @SuppressWarnings("deprecation") - public void setJMenuBar(JMenuBar menubar) { - getRootPane().setMenuBar(menubar); + public void setJMenuBar(final JMenuBar menubar) { + getRootPane().setJMenuBar(menubar); } /** @@ -497,9 +496,8 @@ public class JFrame extends Frame implements WindowConstants, * * @see #setJMenuBar */ - @SuppressWarnings("deprecation") public JMenuBar getJMenuBar() { - return getRootPane().getMenuBar(); + return getRootPane().getJMenuBar(); } /** diff --git a/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java b/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java index bd5f203f434..1d163f22bfa 100644 --- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java +++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalRootPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 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 @@ -27,15 +27,11 @@ package javax.swing.plaf.metal; import java.awt.event.*; import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import javax.swing.*; -import javax.swing.border.*; import javax.swing.event.*; import javax.swing.plaf.*; import javax.swing.plaf.basic.*; import java.awt.*; -import java.io.*; -import java.security.*; /** * Provides the metal look and feel implementation of RootPaneUI. @@ -441,7 +437,6 @@ public class MetalRootPaneUI extends BasicRootPaneUI * @param the Container for which this layout manager is being used * @return a Dimension object containing the layout's preferred size */ - @SuppressWarnings("deprecation") public Dimension preferredLayoutSize(Container parent) { Dimension cpd, mbd, tpd; int cpWidth = 0; @@ -463,8 +458,8 @@ public class MetalRootPaneUI extends BasicRootPaneUI cpHeight = cpd.height; } - if(root.getMenuBar() != null) { - mbd = root.getMenuBar().getPreferredSize(); + if(root.getJMenuBar() != null) { + mbd = root.getJMenuBar().getPreferredSize(); if (mbd != null) { mbWidth = mbd.width; mbHeight = mbd.height; @@ -494,7 +489,6 @@ public class MetalRootPaneUI extends BasicRootPaneUI * @param the Container for which this layout manager is being used * @return a Dimension object containing the layout's minimum size */ - @SuppressWarnings("deprecation") public Dimension minimumLayoutSize(Container parent) { Dimension cpd, mbd, tpd; int cpWidth = 0; @@ -516,8 +510,8 @@ public class MetalRootPaneUI extends BasicRootPaneUI cpHeight = cpd.height; } - if(root.getMenuBar() != null) { - mbd = root.getMenuBar().getMinimumSize(); + if(root.getJMenuBar() != null) { + mbd = root.getJMenuBar().getMinimumSize(); if (mbd != null) { mbWidth = mbd.width; mbHeight = mbd.height; @@ -546,7 +540,6 @@ public class MetalRootPaneUI extends BasicRootPaneUI * @param the Container for which this layout manager is being used * @return a Dimension object containing the layout's maximum size */ - @SuppressWarnings("deprecation") public Dimension maximumLayoutSize(Container target) { Dimension cpd, mbd, tpd; int cpWidth = Integer.MAX_VALUE; @@ -566,8 +559,8 @@ public class MetalRootPaneUI extends BasicRootPaneUI } } - if(root.getMenuBar() != null) { - mbd = root.getMenuBar().getMaximumSize(); + if(root.getJMenuBar() != null) { + mbd = root.getJMenuBar().getMaximumSize(); if (mbd != null) { mbWidth = mbd.width; mbHeight = mbd.height; @@ -610,7 +603,6 @@ public class MetalRootPaneUI extends BasicRootPaneUI * * @param the Container for which this layout manager is being used */ - @SuppressWarnings("deprecation") public void layoutContainer(Container parent) { JRootPane root = (JRootPane) parent; Rectangle b = root.getBounds(); @@ -640,9 +632,9 @@ public class MetalRootPaneUI extends BasicRootPaneUI } } } - if(root.getMenuBar() != null) { - Dimension mbd = root.getMenuBar().getPreferredSize(); - root.getMenuBar().setBounds(0, nextY, w, mbd.height); + if(root.getJMenuBar() != null) { + Dimension mbd = root.getJMenuBar().getPreferredSize(); + root.getJMenuBar().setBounds(0, nextY, w, mbd.height); nextY += mbd.height; } if(root.getContentPane() != null) { diff --git a/jdk/test/javax/swing/JRootPane/SilenceOfDeprecatedMenuBar/SilenceOfDeprecatedMenuBar.java b/jdk/test/javax/swing/JRootPane/SilenceOfDeprecatedMenuBar/SilenceOfDeprecatedMenuBar.java new file mode 100644 index 00000000000..a59ac067f30 --- /dev/null +++ b/jdk/test/javax/swing/JRootPane/SilenceOfDeprecatedMenuBar/SilenceOfDeprecatedMenuBar.java @@ -0,0 +1,90 @@ +/* + * 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 javax.swing.JFrame; +import javax.swing.JMenuBar; +import javax.swing.JRootPane; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +import static javax.swing.UIManager.getInstalledLookAndFeels; + +/** + * @test + * @bug 6368321 + * @author Sergey Bylokhov + */ +public final class SilenceOfDeprecatedMenuBar implements Runnable { + + public static void main(final String[] args) throws Exception { + for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) { + SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf)); + SwingUtilities.invokeAndWait(new SilenceOfDeprecatedMenuBar()); + } + } + + @Override + public void run() { + final JFrame frame = new DeprecatedFrame(); + try { + final JMenuBar bar = new JMenuBar(); + frame.setJMenuBar(bar); + frame.setBounds(100, 100, 100, 100); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + if (bar != frame.getJMenuBar()) { + throw new RuntimeException("Wrong JMenuBar"); + } + } finally { + frame.dispose(); + } + } + + private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) { + try { + UIManager.setLookAndFeel(laf.getClassName()); + System.out.println("LookAndFeel: " + laf.getClassName()); + } catch (ClassNotFoundException | InstantiationException | + UnsupportedLookAndFeelException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + private static class DeprecatedFrame extends JFrame { + + @Override + protected JRootPane createRootPane() { + return new JRootPane() { + @Override + public JMenuBar getMenuBar() { + throw new RuntimeException("Should not be here"); + } + @Override + public void setMenuBar(final JMenuBar menu) { + throw new RuntimeException("Should not be here"); + } + }; + } + } +}