< prev index next >
test/java/awt/Frame/MaximizedToUnmaximized/MaximizedToUnmaximized.java
Print this page
@@ -1,56 +1,65 @@
/*
- * 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.
- */
+* 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;
-/**
- * @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 {
+ 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()
+ 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,14 +75,54 @@
if (frame.getWidth() <= width / 2
|| frame.getHeight() <= height / 2) {
throw new RuntimeException("Frame size is small!");
}
- if (!isUndecorated && frame.getExtendedState() != Frame.MAXIMIZED_BOTH) {
+ if (!isUndecorated && frame.getExtendedState() != getExpectedState()) {
throw new RuntimeException("Frame state does not equal"
- + " MAXIMIZED_BOTH!");
+ + 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 >