/* * $Id$ * * Copyright 2009 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ package org.jdesktop.swingx.plaf; import java.util.logging.Logger; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.LookAndFeel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jdesktop.swingx.InteractiveTestCase; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.util.OS; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Test related to WindowsLookAndFeelAddons. * * @author Jeanette Winzenburg */ @RunWith(JUnit4.class) public class WindowsLookAndFeelAddonIssues extends InteractiveTestCase { @SuppressWarnings("unused") private static final Logger LOG = Logger .getLogger(WindowsLookAndFeelAddonIssues.class.getName()); /** * Issue #1305-swingx: popup closing must not consume mousePressed. * * It's a core issue (#6753637) which is easily fixed by setting * the ui property. Test if it's done. * * Reverted: different native behaviour of combos vs standalone popups. A * single ui property can serve one of those only, core opted for combos. * Should be consistent. * * @throws UnsupportedLookAndFeelException */ @Test public void testWindowsNotConsumeEventOnClose() throws Exception { if (!OS.isWindows()) { LOG.fine("not on windows, can run windowsLAF specific test"); return; } LookAndFeel old = UIManager.getLookAndFeel(); assertTrue(LookAndFeelAddons.isTrackingLookAndFeelChanges()); try { setLookAndFeel("Windows"); assertEquals(Boolean.FALSE, UIManager.get("PopupMenu.consumeEventOnClose")); setLookAndFeel("Motif"); assertEquals(Boolean.TRUE, UIManager.get("PopupMenu.consumeEventOnClose")); } finally { UIManager.setLookAndFeel(old); } } //--------------------- interactive public static void main(String[] args) { WindowsLookAndFeelAddonIssues test = new WindowsLookAndFeelAddonIssues(); try { test.runInteractiveTests(); } catch (Exception e) { e.printStackTrace(); } } /** * Issue #1305-swingx: popup closing must not consume mousePressed. * * Most visible effect: combo editor in table - open editor, click * somewhere else, edit must be terminated (for windows and metal) */ public void interactivePopupNotConsumesOnPressed() { JXTable table = new JXTable(10, 6); JComboBox box = new JComboBox(new Object[] {1, 2, 3}); table.getColumn(0).setCellEditor(new DefaultCellEditor(box)); showWithScrollingInFrame(table, "combo editor in first"); } }