< prev index next >

test/java/awt/Frame/MaximizedToUnmaximized/MaximizedToUnmaximized.java

Print this page

        

*** 1,56 **** /* ! * 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.awt.Frame; import java.awt.GraphicsConfiguration; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; - /** - * @test - * @bug 8065739 - * @summary [macosx] Frame warps to lower left of screen when displayed - * @author Alexandr Scherbatiy - */ public class MaximizedToUnmaximized { public static void main(String[] args) throws Exception { testFrame(false); testFrame(true); } ! static void testFrame(boolean isUndecorated) throws Exception { Frame frame = new Frame(); try { Robot robot = new Robot(); robot.setAutoDelay(100); frame.setUndecorated(isUndecorated); ! GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice().getDefaultConfiguration(); Rectangle bounds = gc.getBounds(); Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); int x = bounds.x + insets.left; int y = bounds.y + insets.top; --- 1,65 ---- /* ! * Copyright (c) 2015, 2016 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 ! * @bug 8065739 8129569 ! * @summary [macosx] Frame wraps to lower left of screen when displayed. ! * @library ../../../../lib/testlibrary/ ! * @build jdk.testlibrary.Platform ! * @run main MaximizedToUnmaximized ! */ ! import java.awt.Frame; import java.awt.GraphicsConfiguration; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; + import java.io.BufferedReader; + import java.io.IOException; + import java.io.InputStreamReader; + import jdk.testlibrary.Platform; public class MaximizedToUnmaximized { public static void main(String[] args) throws Exception { testFrame(false); testFrame(true); } ! private static void testFrame(boolean isUndecorated) throws Exception { Frame frame = new Frame(); try { Robot robot = new Robot(); robot.setAutoDelay(100); frame.setUndecorated(isUndecorated); ! GraphicsConfiguration gc = ! GraphicsEnvironment.getLocalGraphicsEnvironment() .getDefaultScreenDevice().getDefaultConfiguration(); Rectangle bounds = gc.getBounds(); Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); int x = bounds.x + insets.left; int y = bounds.y + insets.top;
*** 66,79 **** if (frame.getWidth() <= width / 2 || frame.getHeight() <= height / 2) { throw new RuntimeException("Frame size is small!"); } ! if (!isUndecorated && frame.getExtendedState() != Frame.MAXIMIZED_BOTH) { throw new RuntimeException("Frame state does not equal" ! + " MAXIMIZED_BOTH!"); } } finally { frame.dispose(); } } } --- 75,128 ---- if (frame.getWidth() <= width / 2 || frame.getHeight() <= height / 2) { throw new RuntimeException("Frame size is small!"); } ! if (!isUndecorated && frame.getExtendedState() != getExpectedState()) { throw new RuntimeException("Frame state does not equal" ! + getStateAsString(getExpectedState())); } } finally { frame.dispose(); } } + + /* + * In Mac OS and Ubuntu if window has maximum bounds then window state is + * MAXIMIZED_BOTH state but this is not true for other operating systems. + */ + private static int getExpectedState() { + if (Platform.isOSX()) { + return Frame.MAXIMIZED_BOTH; + } else if (Platform.isLinux() && isUbuntu()) { + return Frame.MAXIMIZED_BOTH; + } + return Frame.NORMAL; + } + + private static String getStateAsString(int state) { + if (Frame.MAXIMIZED_BOTH == state) { + return "MAXIMIZED BOTH STATE"; + } + return "NORMAL STATE"; + } + + private static boolean isUbuntu() { + try { + ProcessBuilder processBuilder = new ProcessBuilder("uname", "-v"); + Process process = processBuilder.start(); + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + StringBuilder builder = new StringBuilder(); + String line = null; + while ((line = reader.readLine()) != null) { + builder.append(line); + builder.append(System.getProperty("line.separator")); + } + return builder.toString().contains("Ubuntu"); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } } +
< prev index next >