/*
* $Id$
*
* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*/
package org.jdesktop.swingx;
import java.awt.BorderLayout;
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.UIManager;
import junit.framework.TestCase;
import org.jdesktop.swingx.icon.EmptyIcon;
import org.jdesktop.swingx.plaf.LookAndFeelAddons;
import org.jdesktop.swingx.plaf.metal.MetalLookAndFeelAddons;
import org.jdesktop.test.PropertyChangeReport;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class JXTaskPaneTest extends TestCase {
@Test
public void testBean() throws Exception {
PropertyChangeReport report = new PropertyChangeReport();
JXTaskPane group = new JXTaskPane();
group.setAnimated(false);
group.addPropertyChangeListener(report);
// ANIMATED PROPERTY
group.setAnimated(true);
assertTrue(group.isAnimated());
assertEquals(JXTaskPane.ANIMATED_CHANGED_KEY, report.getLastEvent()
.getPropertyName());
assertTrue(report.getLastNewBooleanValue());
group.setAnimated(false);
assertFalse(group.isAnimated());
assertFalse(report.getLastNewBooleanValue());
UIManager.put("TaskPane.animate", Boolean.FALSE);
JXTaskPane anotherGroup = new JXTaskPane();
assertFalse(anotherGroup.isAnimated());
UIManager.put("TaskPane.animate", null);
anotherGroup = new JXTaskPane();
assertTrue(anotherGroup.isAnimated());
// TITLE
group.setTitle("the title");
assertEquals("the title", group.getTitle());
assertEquals(JXTaskPane.TITLE_CHANGED_KEY, report.getLastEvent()
.getPropertyName());
assertEquals("the title", report.getLastNewValue());
// ICON
assertNull(group.getIcon());
Icon icon = new EmptyIcon();
group.setIcon(icon);
assertNotNull(group.getIcon());
assertEquals(JXTaskPane.ICON_CHANGED_KEY, report.getLastEvent()
.getPropertyName());
assertEquals(icon, report.getLastNewValue());
group.setIcon(null);
assertEquals(icon, report.getLastOldValue());
assertNull(report.getLastNewValue());
// SPECIAL
assertFalse(group.isSpecial());
group.setSpecial(true);
assertTrue(group.isSpecial());
assertEquals(JXTaskPane.SPECIAL_CHANGED_KEY, report.getLastEvent()
.getPropertyName());
assertTrue(report.getLastNewBooleanValue());
assertFalse(report.getLastOldBooleanValue());
// SCROLL ON EXPAND
assertFalse(group.isScrollOnExpand());
group.setScrollOnExpand(true);
assertTrue(group.isScrollOnExpand());
assertEquals(JXTaskPane.SCROLL_ON_EXPAND_CHANGED_KEY, report.getLastEvent()
.getPropertyName());
assertTrue(report.getLastNewBooleanValue());
assertFalse(report.getLastOldBooleanValue());
// EXPANDED
assertFalse(group.isCollapsed());
group.setCollapsed(true);
assertTrue(group.isCollapsed());
PropertyChangeEvent event = report.getLastEvent("collapsed");
// assertEquals("expanded", report.getLastEvent()
// .getPropertyName());
assertTrue((Boolean) event.getNewValue());
assertFalse((Boolean) event.getOldValue());
}
@Test
public void testContentPane() {
JXTaskPane group = new JXTaskPane();
assertEquals(0, group.getContentPane().getComponentCount());
// Objects are not added to the taskPane but to its contentPane
JButton button = new JButton();
group.add(button);
assertEquals(group.getContentPane(), button.getParent());
group.remove(button);
assertNull(button.getParent());
assertEquals(0, group.getContentPane().getComponentCount());
group.add(button);
group.removeAll();
assertEquals(0, group.getContentPane().getComponentCount());
group.add(button);
group.remove(0);
assertEquals(0, group.getContentPane().getComponentCount());
BorderLayout layout = new BorderLayout();
group.setLayout(layout);
assertEquals(layout, group.getContentPane().getLayout());
assertFalse(layout == group.getLayout());
}
@Test
public void testActions() throws Exception {
JXTaskPane taskPane = new JXTaskPane();
Action action = new AbstractAction() {
public void actionPerformed(java.awt.event.ActionEvent e) {}
};
assertEquals(0, taskPane.getContentPane().getComponentCount());
Component component = taskPane.add(action);
assertEquals(taskPane.getContentPane(), component.getParent());
assertEquals(1, taskPane.getContentPane().getComponentCount());
}
@Test
public void testAddon() throws Exception {
// move around all addons
TestUtilities.cycleAddons(new JXTaskPane());
}
@Test
public void testIssue344() throws Exception {
new JXTaskPane();
LookAndFeelAddons.setAddon(new MetalLookAndFeelAddons());
String uiClass = UIManager.getString(JXTaskPane.uiClassID);
boolean found = "org.jdesktop.swingx.plaf.metal.MetalTaskPaneUI".equals(uiClass)
|| "org.jdesktop.swingx.plaf.misc.GlossyTaskPaneUI".equals(uiClass);
assertTrue("Failed to locate UI class for " + uiClass, found);
}
//
// /**
// * Issue #835-swingx: event notification on expanded.
// * Here: two events fired on setExpanded
// * @deprecated (pre-0.9.3) remove with {@link JXTaskPane#setExpanded(boolean)}
// */
// @Deprecated
// @Test
// public void testSingleExpanded() {
// JXTaskPane pane = new JXTaskPane();
// PropertyChangeReport report = new PropertyChangeReport();
// pane.addPropertyChangeListener(report);
// pane.setExpanded(!pane.isExpanded());
// TestUtils.assertPropertyChangeEvent(report, "expanded",
// !pane.isExpanded(), pane.isExpanded(), false);
// }
}