/* * $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.renderer; import java.awt.Font; import java.util.logging.Logger; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.LookAndFeel; import javax.swing.UIManager; import org.jdesktop.swingx.InteractiveTestCase; import org.jdesktop.swingx.JXTable; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * CellContext related tests.<p> * * PENDING JW: should move all bare context related tests here - currently they are spread * across the rendererxxtests, hard to find. * * @author Jeanette Winzenburg */ @RunWith(JUnit4.class) public class CellContextTest extends InteractiveTestCase { @SuppressWarnings("unused") private static final Logger LOG = Logger.getLogger(CellContextTest.class .getName()); @Test public void testNameInContext() { assertEquals("cellRenderer", new CellContext().getCellRendererName()); assertEquals("Table.cellRenderer", new TableCellContext().getCellRendererName()); assertEquals("Tree.cellRenderer", new TreeCellContext().getCellRendererName()); assertEquals("List.cellRenderer", new ListCellContext().getCellRendererName()); } @Test public void testDefaultVisualsSetName() { CellContext context = new TableCellContext(); JLabel label = new JLabel(); new DefaultVisuals<JLabel>().configureVisuals(label, context); assertEquals("DefaultVisuals must set name", "Table.cellRenderer", label.getName()); } @Test public void testDefaultVisualsUseContextFont() { JXTable table = new JXTable(); final Font font = table.getFont().deriveFont(50f); TableCellContext context = new TableCellContext() { @Override protected Font getFont() { return font; } }; context.installContext(table, -1, -1, -1, false, false, false, false); JLabel label = new JLabel(); new DefaultVisuals<JLabel>().configureVisuals(label, context); assertEquals(font, label.getFont()); } @Test public void testFontWithoutComponent() { CellContext context = new CellContext(); assertNull(context.getFont()); } @Test public void testFontWithComponent() { final JLabel label = new JLabel(); CellContext context = new CellContext() { @Override public JComponent getComponent() { return label; } }; assertNotNull("sanity", label.getFont()); assertEquals(label.getFont(), context.getFont()); } /** * Issue #1151-swingx: Nimbus border not used in renderer. * @throws Exception */ @Test public void testListContextNoFocusBorder() throws Exception { assertNimbusNoFocusBorder(new ListCellContext()); } /** * Issue #1151-swingx: Nimbus border not used in renderer. * @throws Exception */ @Test public void testTableContextNoFocusBorder() throws Exception { assertNimbusNoFocusBorder(new TableCellContext()); } /** * Issue #1151-swingx: Nimbus border not used. * @throws Exception */ private void assertNimbusNoFocusBorder(CellContext context) throws Exception { if (!hasLookAndFeel("Nimbus")) { LOG.fine("can't run - no Nimbus"); return; } LookAndFeel lf = UIManager.getLookAndFeel(); try { setLookAndFeel("Nimbus"); context.installState(null, -1, -1, false, false, false, false); assertEquals(UIManager.getBorder(context.getUIPrefix() + "cellNoFocusBorder"), context.getBorder()); } finally { UIManager.setLookAndFeel(lf); } } @Override @Before public void setUp() throws Exception { } }