/* * Copyright (c) 2009, 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 6823603 @summary Generics: JList @author Florian Brunner @run main bug6823603 */ import java.util.Arrays; import java.util.List; import java.util.Vector; import java.util.Enumeration; import java.awt.*; import javax.swing.*; public class bug6823603 { private static final String TEST_ELEMENT = "Test1"; /** * @param args the command line arguments */ @SuppressWarnings("unchecked") public static void main(String[] args) { testRawSignatures(); testGenericSignatures(); testGetSelectedValuesList(); // new method } @SuppressWarnings("unchecked") private static void testRawSignatures() { // Test JList ListModel rawTestModel = new DefaultListModel(); new JList(); new JList(rawTestModel); new JList(new Object[]{TEST_ELEMENT}); JList rawTestList = new JList(new Vector()); rawTestList.getPrototypeCellValue(); rawTestList.setPrototypeCellValue(TEST_ELEMENT); rawTestList.getCellRenderer(); rawTestList.setCellRenderer(new DefaultListCellRenderer()); rawTestList.getModel(); rawTestList.setModel(rawTestModel); rawTestList.setListData(new Object[]{TEST_ELEMENT}); rawTestList.setListData(new Vector()); @SuppressWarnings("deprecation") Object[] selectedValues = rawTestList.getSelectedValues(); rawTestList.getSelectedValue(); // Test ListCellRenderer ListCellRenderer rawTestCellRenderer = new DefaultListCellRenderer(); String testEntry = "Test"; @SuppressWarnings("unchecked") JList rawJList = new JList(new Object[]{testEntry}); rawTestCellRenderer.getListCellRendererComponent(rawJList, testEntry, 0, true, true); // Test ListModel DefaultListModel testModel = new DefaultListModel(); testModel.addElement(TEST_ELEMENT); rawTestModel = testModel; rawTestModel.getElementAt(0); // Test DefaultListModel DefaultListModel defaultListModel = new DefaultListModel(); defaultListModel.addElement(TEST_ELEMENT); defaultListModel.getElementAt(0); defaultListModel.elements(); defaultListModel.elementAt(0); defaultListModel.firstElement(); defaultListModel.lastElement(); String testElement2 = "Test2"; defaultListModel.setElementAt(testElement2, 0); defaultListModel.insertElementAt(TEST_ELEMENT, 0); defaultListModel.get(0); defaultListModel.set(0, testElement2); defaultListModel.add(0, TEST_ELEMENT); defaultListModel.remove(0); // Test AbstractListModel @SuppressWarnings("serial") ListModel abstractListModel = new AbstractListModel() { public int getSize() { throw new UnsupportedOperationException("Not supported yet."); } public Object getElementAt(int index) { throw new UnsupportedOperationException("Not supported yet."); } }; // Test DefaultListCellRenderer DefaultListCellRenderer cellRenderer = new DefaultListCellRenderer(); @SuppressWarnings("unchecked") JList list = new JList(new Object[]{testEntry}); cellRenderer.getListCellRendererComponent(rawJList, testEntry, 0, true, true); } private static <E> void testGenericSignatures() { // Test JList ListModel<String> stringListModel = new DefaultListModel<String>(); new JList<String>(); new JList<String>(stringListModel); new JList<String>(new String[]{TEST_ELEMENT}); JList<String> stringTestList = new JList<String>(new Vector<String>()); stringTestList.getPrototypeCellValue(); stringTestList.setPrototypeCellValue(TEST_ELEMENT); ListCellRenderer<? super String> cellRenderer = stringTestList.getCellRenderer(); stringTestList.setCellRenderer(new DefaultListCellRenderer()); ListModel<String> model = stringTestList.getModel(); stringTestList.setModel(stringListModel); stringTestList.setListData(new String[]{TEST_ELEMENT}); stringTestList.setListData(new Vector<String>()); @SuppressWarnings("deprecation") Object[] selectedValues = stringTestList.getSelectedValues(); stringTestList.getSelectedValue(); // Test ListCellRenderer ListCellRenderer<Object> stringTestCellRenderer = new DefaultListCellRenderer(); String testEntry = "Test"; JList<String> stringJList = new JList<String>(new String[]{testEntry}); Component listCellRendererComponent2 = stringTestCellRenderer.getListCellRendererComponent(stringJList, testEntry, 0, true, true); // Test ListModel DefaultListModel<String> testModel = new DefaultListModel<String>(); testModel.addElement(TEST_ELEMENT); stringListModel = testModel; String element1 = stringListModel.getElementAt(0); // Test DefaultListModel DefaultListModel<String> stringTestModel = new DefaultListModel<String>(); stringTestModel.addElement(TEST_ELEMENT); element1 = stringTestModel.getElementAt(0); Enumeration<String> elements = stringTestModel.elements(); String element2 = stringTestModel.elementAt(0); String firstElement = stringTestModel.firstElement(); String lastElement = stringTestModel.lastElement(); String testElement2 = "Test2"; stringTestModel.setElementAt(testElement2, 0); stringTestModel.insertElementAt(TEST_ELEMENT, 0); String element3 = stringTestModel.get(0); String element4 = stringTestModel.set(0, testElement2); stringTestModel.add(0, TEST_ELEMENT); String removedElement = stringTestModel.remove(0); // Test AbstractListModel stringListModel = new AbstractListModel<String>() { public int getSize() { throw new UnsupportedOperationException("Not supported yet."); } public String getElementAt(int index) { throw new UnsupportedOperationException("Not supported yet."); } }; @SuppressWarnings("serial") ListModel<E> genericTestModel = new AbstractListModel<E>() { public int getSize() { throw new UnsupportedOperationException("Not supported yet."); } public E getElementAt(int index) { throw new UnsupportedOperationException("Not supported yet."); } }; // Test DefaultListCellRenderer cellRenderer = new DefaultListCellRenderer(); stringJList = new JList<String>(new String[]{testEntry}); listCellRendererComponent2 = cellRenderer.getListCellRendererComponent(stringJList, testEntry, 0, true, true); } private static void testGetSelectedValuesList() { Vector<Integer> data = new Vector<Integer>(); for (int i = 0; i < 10; i++) { data.add(i); } JList<Integer> list = new JList<Integer>(data); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); list.setSelectedIndices(new int[]{1, 2, 3, 5, 6, 8}); @SuppressWarnings("deprecation") Object[] expectedSelectedValues = list.getSelectedValues(); List<Integer> selectedValuesList = list.getSelectedValuesList(); assertEquals(expectedSelectedValues, selectedValuesList.toArray()); } private static void assertEquals(Object[] expectedArray, Object[] actualArray) { if (!Arrays.equals(expectedArray, actualArray)) { throw new RuntimeException("Expected: " + Arrays.toString( expectedArray) + " but was: " + Arrays.toString(actualArray)); } } }