Project: ceres
/*
 * Copyright (C) 2010 Brockmann Consult GmbH ([email protected]
 * 
 * This program is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU General Public License as published by the Free 
 * Software Foundation; either version 3 of the License, or (at your option) 
 * any later version. 
 * This program 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 for 
 * more details. 
 * 
 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, see http://www.gnu.org/licenses/ 
 */
 
package com.bc.ceres.swing; 
 
import junit.framework.TestCase; 
 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTree; 
import javax.swing.tree.DefaultMutableTreeNode; 
import javax.swing.tree.DefaultTreeModel; 
import javax.swing.tree.TreeModel; 
import java.awt.event.MouseListener; 
 
public class TreeCellExtenderTest extends TestCase { 
 
    public void testActiveState() { 
        JTree tree = new JTree(); 
        TreeCellExtender extender = new TreeCellExtender(tree); 
        assertSame(tree, extender.getTree()); 
        assertEquals(false, extender.isActive()); 
 
        MouseListener[] listeners = tree.getMouseListeners(); 
        assertNotNull(listeners); 
        int oldLength = listeners.length; 
 
        extender.setActive(true); 
        assertEquals(true, extender.isActive()); 
 
        listeners = tree.getMouseListeners(); 
        int newLength = listeners.length; 
        assertEquals(oldLength + 1, newLength); 
 
 
    } 
 
    public void testEquip() { 
        JTree tree = new JTree(); 
        TreeCellExtender extender = TreeCellExtender.equip(tree); 
        assertNotNull(extender); 
        assertSame(tree, extender.getTree()); 
        assertEquals(true, extender.isActive()); 
    } 
 
    public static void main(String[] args) { 
        final JFrame frame = new JFrame(TreeCellExtender.class.getSimpleName()); 
 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        final JTree tree = new JTree(getDefaultTreeModel()); 
        TreeCellExtender.equip(tree); 
 
        frame.getContentPane().add(new JScrollPane(tree)); 
        frame.setSize(200200); 
        frame.setVisible(true); 
    } 
 
    /**
     * Creates and returns a sample <code>TreeModel</code>. 
     * Used primarily for beanbuilders to show something interesting. 
     * 
     * @return the default <code>TreeModel</code> 
     */
 
    protected static TreeModel getDefaultTreeModel() { 
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("JTree"); 
        DefaultMutableTreeNode parent; 
 
        parent = new DefaultMutableTreeNode("colors colors colors colors colors"); 
        root.add(parent); 
        parent.add(new DefaultMutableTreeNode("blue")); 
        parent.add(new DefaultMutableTreeNode("violet")); 
        parent.add(new DefaultMutableTreeNode("red")); 
        parent.add(new DefaultMutableTreeNode("yellow")); 
 
        parent = new DefaultMutableTreeNode("sports sports sports sports sports sports"); 
        root.add(parent); 
        parent.add(new DefaultMutableTreeNode("basketball")); 
        parent.add(new DefaultMutableTreeNode("soccer")); 
        parent.add(new DefaultMutableTreeNode("football football football football football football")); 
        parent.add(new DefaultMutableTreeNode("hockey")); 
 
        parent = new DefaultMutableTreeNode("food"); 
        root.add(parent); 
        parent.add(new DefaultMutableTreeNode("hot dogs")); 
        parent.add(new DefaultMutableTreeNode("pizza")); 
        parent.add(new DefaultMutableTreeNode("ravioli ravioli ravioli ravioli ravioli ravioli ravioli ravioli ravioli ravioli ravioli ravioli")); 
        parent.add(new DefaultMutableTreeNode("bananas")); 
        return new DefaultTreeModel(root); 
    } 
 
}