OpenJDK / loom / loom
changeset 49085:cf931670015b
5076761: JList.setSelectedValue(null, ...) doesn't do anything
Reviewed-by: serb, ssadetsky, psadhukhan
author | pbansal |
---|---|
date | Thu, 15 Feb 2018 14:20:44 +0530 |
parents | c372651def0e |
children | 96ea4dff640e |
files | src/java.desktop/share/classes/javax/swing/JList.java test/jdk/javax/swing/JList/SetSelectedValueTest.java |
diffstat | 2 files changed, 79 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.desktop/share/classes/javax/swing/JList.java Mon Feb 12 10:31:42 2018 -0800 +++ b/src/java.desktop/share/classes/javax/swing/JList.java Thu Feb 15 14:20:44 2018 +0530 @@ -2359,6 +2359,7 @@ /** * Selects the specified object from the list. + * If the object passed is {@code null}, the selection is cleared. * * @param anObject the object to select * @param shouldScroll {@code true} if the list should scroll to display @@ -2366,7 +2367,7 @@ */ public void setSelectedValue(Object anObject,boolean shouldScroll) { if(anObject == null) - setSelectedIndex(-1); + clearSelection(); else if(!anObject.equals(getSelectedValue())) { int i,c; ListModel<E> dm = getModel();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/javax/swing/JList/SetSelectedValueTest.java Thu Feb 15 14:20:44 2018 +0530 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 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. + */ +/* + * @test + * @key headful + * @bug 5076761 + * @summary Verifies that the selection is cleared when setSelectedValue is + * called with null + * @run main SetSelectedValueTest + */ + +import javax.swing.SwingUtilities; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.ListSelectionModel; +import java.util.Collections; +import java.util.List; + +public class SetSelectedValueTest { + public static void main(String[] args) throws Exception { + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + // Create a JList with 2 elements + DefaultListModel dlm = new DefaultListModel(); + JList list = new JList<String>(dlm); + list.setSelectionMode( + ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + dlm.addElement("1"); + dlm.addElement("2"); + + // Select both the elements added in list + list.setSelectionInterval(0, 1); + checkSelectionByList(list, List.of("1", "2")); + + // Set the selected value as null. This should clear the + // selection + list.setSelectedValue(null, true); + checkSelectionByList(list, Collections.emptyList()); + + // Select both the elements added in list + list.setSelectionInterval(0, 1); + checkSelectionByList(list, List.of("1", "2")); + } + }); + } + + static void checkSelectionByList(JList list, List<String> selectionList) + throws RuntimeException { + List<String> listSelection = list.getSelectedValuesList(); + if (!listSelection.equals(selectionList)) { + System.out.println("Expected: " + selectionList); + System.out.println("Actual: " + listSelection); + throw new RuntimeException("Wrong selection"); + } + } +}