7124338: [macosx] Selection lost if a selected item removed from a java.awt.List
authorkshefov
Fri, 11 Oct 2013 15:39:40 +0400
changeset 21249 39f3a094e3ef
parent 21248 aa402f9056a5
child 21250 12f343590d5a
7124338: [macosx] Selection lost if a selected item removed from a java.awt.List Reviewed-by: serb, anthony
jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.html
jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.html	Fri Oct 11 15:39:40 2013 +0400
@@ -0,0 +1,43 @@
+<html>
+<!--
+  Copyright (c) 2013, 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 6299858
+  @summary PIT. Focused border not shown on List if selected item is removed, XToolkit
+  @author Dmitry.Cherepanov@SUN.COM area=awt.list
+  @run applet FirstItemRemoveTest.html
+  -->
+<head>
+<title>  </title>
+</head>
+<body>
+
+<h1>FirstItemRemoveTest<br>Bug ID: 6299858 </h1>
+
+<p> This is an AUTOMATIC test, simply wait for completion </p>
+
+<APPLET CODE="FirstItemRemoveTest.class" WIDTH=200 HEIGHT=200></APPLET>
+</body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.java	Fri Oct 11 15:39:40 2013 +0400
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2013, 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 6299858 7124338
+  @summary PIT. Focused border not shown on List if selected item is removed, XToolkit
+  @author Dmitry.Cherepanov@SUN.COM area=awt.list
+  @run applet FirstItemRemoveTest.html
+*/
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+
+public class FirstItemRemoveTest extends Applet
+{
+    List list = new List(4, false);
+    Panel panel = new Panel();
+
+    public void init()
+    {
+        list.add("000");
+        list.add("111");
+        list.add("222");
+        list.add("333");
+        list.add("444");
+        list.add("555");
+
+        panel.setLayout(new FlowLayout ());
+        panel.add(list);
+
+        this.add(panel);
+        this.setLayout (new FlowLayout ());
+    }//End  init()
+
+    public void start ()
+    {
+        setSize (200,200);
+        setVisible(true);
+        validate();
+
+        test();
+    }// start()
+
+    private void test(){
+
+        if (sun.awt.OSInfo.getOSType() == sun.awt.OSInfo.OSType.MACOSX) {
+            System.err.println("Skipped. This test is not for OS X.");
+            return;
+        }
+
+        Robot r;
+        try {
+            r = new Robot();
+        } catch(AWTException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+
+        // Removing first item in order to reproduce incorrect behaviour
+        r.delay(1000);
+        list.remove(0);
+        r.delay(1000);
+
+        // Request focus to list
+        Point loc = this.getLocationOnScreen();
+        r.delay(1000);
+
+        r.mouseMove(loc.x+10, loc.y+10);
+        r.delay(10);
+        r.mousePress(InputEvent.BUTTON1_MASK);
+        r.delay(10);
+        r.mouseRelease(InputEvent.BUTTON1_MASK);
+        r.delay(1000);
+
+        list.requestFocusInWindow();
+        r.delay(1000);
+        r.waitForIdle();
+        if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != list){
+            throw new RuntimeException("Test failed - list isn't focus owner.");
+        }
+
+        // The focus index should be set to first item after removing
+        // So if we press VK_SPACE then the selected item will be equals 0.
+        r.delay(100);
+        r.keyPress(KeyEvent.VK_SPACE);
+        r.delay(10);
+        r.keyRelease(KeyEvent.VK_SPACE);
+        r.delay(1000);
+        r.waitForIdle();
+
+        int selectedIndex = list.getSelectedIndex();
+        if (selectedIndex != 0){
+            throw new RuntimeException("Test failed. list.getSelectedIndex() = "+selectedIndex);
+        }
+
+    }
+
+}// class AutomaticAppletTest