|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.api.nodes2looks;
import java.beans.PropertyChangeListener;
import junit.framework.*;
import junit.textui.TestRunner;
import java.util.*;
import java.util.Arrays;
import org.netbeans.spi.looks.*;
import org.openide.nodes.*;
import org.netbeans.junit.*;
import org.openide.modules.ModuleInfo;
import org.openide.util.Lookup;
import org.openide.util.LookupListener;
import org.openide.util.lookup.*;
/** Tests whether notification to NodeListener is fired under Mutex.writeAccess
*
* @author Jiri Rechtacek
*/
public class IsLeafTest extends NbTestCase {
public IsLeafTest(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
TestUtil.setUpRegistryToDefault();
}
public static void main(String[] args) {
TestRunner.run(new NbTestSuite (IsLeafTest.class));
}
public void testChangeLeafToNonLeafRepObjects () {
Children ch = new Children.Array ();
Object repLeaf = new AbstractNode (Children.LEAF);
Object repRoot = new AbstractNode (ch);
Look look = Nodes.nodeLook();
Node lnLeaf = Nodes.node( repLeaf, look );
Node lnRoot = Nodes.node( repRoot, look );
Node n = (Node)repLeaf;
assertTrue ("NODE - Leaf is Leaf.", lnLeaf.isLeaf () );
assertTrue ("NODE - Root is not Leaf.", !lnRoot.isLeaf () );
assertTrue ("LOOK - Leaf is Leaf.", look.isLeaf ( repLeaf, Lookup.EMPTY ) );
assertTrue ("LOOK - Root is not Leaf.", !look.isLeaf ( repRoot, Lookup.EMPTY ) );
assertEquals ("Leaf has no children.", 0, look.getChildObjects (repLeaf, Lookup.EMPTY).size());
assertEquals ("Root has no children.", 0, look.getChildObjects (repRoot, Lookup.EMPTY).size());
ch.add (new Node[] { new AbstractNode (Children.LEAF) } );
assertTrue ("NODE - Leaf is Leaf.", lnLeaf.isLeaf () );
assertTrue ("NODE - Root is not Leaf.", !lnRoot.isLeaf () );
assertTrue ("LOOK - Leaf is Leaf.", look.isLeaf ( repLeaf, Lookup.EMPTY ) );
assertTrue ("LOOK - Root is not Leaf.", !look.isLeaf ( repRoot, Lookup.EMPTY ) );
assertEquals ("Leaf has no children.", 0, look.getChildObjects (repLeaf, Lookup.EMPTY).size());
assertEquals ("Root has children.", 1, look.getChildObjects (repRoot, Lookup.EMPTY).size());
}
public void testChangeLeafToNonLeaf () {
javax.swing.JTextField rep = new javax.swing.JTextField( TestIsLeafLook.LEAF );
TestIsLeafLook look = new TestIsLeafLook ("LeafTestLook");
Node node = Nodes.node (rep, look);
Listener l = new Listener ();
node.addNodeListener (l);
// initially is leaf
assertTrue ("Look is leaf.", look.isLeaf ( rep, Lookup.EMPTY ));
assertTrue ("LookNode is leaf.", node.isLeaf ());
if (look.getChildObjects (rep, Lookup.EMPTY ) != null)
assertEquals ("Look has no child objects.", 0, look.getChildObjects ( rep, Lookup.EMPTY ).size ());
l.assertEvents ("No property change", 0);
// set children
rep.setText ( TestIsLeafLook.PARENT );
look.refreshChildren( rep );
assertTrue ("Look is not leaf.", !look.isLeaf (rep, Lookup.EMPTY ));
assertTrue ("LookNode is not leaf.", !node.isLeaf ());
if (look.getChildObjects ( rep, Lookup.EMPTY ) != null)
assertEquals ("Look has one child object.", 1, look.getChildObjects ( rep, Lookup.EMPTY ).size ());
else
fail ("Look has one child object.");
l.assertEvents ("One property change", 1);
// check vasted events
look.refreshChildren ( rep );
look.refreshChildren ( rep );
look.refreshChildren ( rep );
look.refreshChildren ( rep );
l.assertEvents ("No property change", 0);
// no children
rep.setText (TestIsLeafLook.LEAF);
look.refreshChildren ( rep );
assertTrue ("Look is leaf.", look.isLeaf ( rep, Lookup.EMPTY ));
assertTrue ("LookNode is leaf.", node.isLeaf ());
if (look.getChildObjects ( rep, Lookup.EMPTY ) != null)
assertEquals ("Look has no child objects.", 0, look.getChildObjects ( rep, Lookup.EMPTY ).size ());
l.assertEvents ("One property change", 1);
// check vasted events
look.refreshChildren ( rep );
look.refreshChildren ( rep );
look.refreshChildren ( rep );
look.refreshChildren ( rep );
l.assertEvents ("No property change", 0);
// set children
rep.setText (TestIsLeafLook.PARENT);
look.refreshChildren ( rep );
look.refreshChildren ( rep );
assertTrue ("Look is not leaf.", !look.isLeaf ( rep, Lookup.EMPTY ));
assertTrue ("LookNode is not leaf.", !node.isLeaf ());
if (look.getChildObjects ( rep, Lookup.EMPTY ) != null)
assertEquals ("Look has one child object.", 1, look.getChildObjects ( rep, Lookup.EMPTY ).size ());
else
fail ("Look has one child object.");
l.assertEvents ("One property change", 1);
}
private static class Listener extends Object implements NodeListener {
private int leafs = 0;
public void assertEvents (String txt, int eventsCount) {
if (leafs != -1)
assertEquals (txt + " leafs", eventsCount, leafs);
leafs = 0;
}
public void propertyChange (java.beans.PropertyChangeEvent evt) {
if (Node.PROP_LEAF == evt.getPropertyName()) {
leafs++;
}
}
public void childrenAdded(NodeMemberEvent ev) {}
public void childrenRemoved(NodeMemberEvent ev) {}
public void childrenReordered(NodeReorderEvent ev) {}
public void objectDestroyed(NodeEvent ev) {}
public void nodeDestroyed(NodeEvent ev) {
}
} // end of Listener
// substitute with public fireChildrenChange() method
private static class TestIsLeafLook extends Look {
final static String LEAF = "Leaf";
final static String PARENT = "Parent";
TestIsLeafLook( String name ) {
super( name );
}
public List getChildObjects( Object ro, Lookup env ) {
String s = ((javax.swing.JTextField)ro).getText ();
if (LEAF.equals (s)) {
return null;
} else {
return Arrays.asList (new Object[] {"Child"});
}
}
public boolean isLeaf ( Object ro, Lookup env ) {
return getChildObjects (ro, env) == null ? true : getChildObjects (ro, env).size () == 0;
}
public void refreshChildren( Object o ) {
fireChange( o, Look.GET_CHILD_OBJECTS );
}
};
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.