This demo adds a tree-will-expand listener
to the TreeExpandEventDemo example
discussed in How to
Write a Tree Expansion Listener.  The code added here 
demonstrates that tree-will-expand listeners prevent node expansions and collapses: The listener will prompt you for confirmation each time you try to expand a node.

 
treeWillCollapse method
     lets the collapse occur, uncontested.
The following snippet shows the code
that this program adds to TreeExpandEventDemo.
The bold line prevents the tree expansion from happening.
You can find all the demo's source code in
TreeExpandEventDemo2.java.
public class TreeExpandEventDemo2 ... {
    ...
    class DemoArea ... implements ... TreeWillExpandListener {
        ...
        public DemoArea() {
            ...
            tree.addTreeWillExpandListener(this);
            ...
        }
        ...
        //Required by TreeWillExpandListener interface.
        public void treeWillExpand(TreeExpansionEvent e) 
                    throws ExpandVetoException {
            saySomething("Tree-will-expand event detected", e);
            //...show a dialog...
            if (/* user said to cancel the expansion */) {
                //Cancel expansion.
                saySomething("Tree expansion cancelled", e);
                throw new ExpandVetoException(e);
            }
        }
        //Required by TreeWillExpandListener interface.
        public void treeWillCollapse(TreeExpansionEvent e) {
            saySomething("Tree-will-collapse event detected", e);
        }
        ...
    }
}
The TreeWillExpandListener Interface
TreeWillExpandListener has no adapter class.
| Method | Purpose | 
|---|---|
| treeWillCollapse(TreeExpansionEvent) | Called just before a tree node collapses.
     To prevent the collapse from occurring,
     your implementation of this method should throw a ExpandVetoExceptionevent. | 
| treeWillExpand(TreeExpansionEvent) | Called just before a tree node expands.
     To prevent the expansion from occurring,
     your implementation of this method should throw a ExpandVetoExceptionevent. | 
See The Tree Expansion
Event API
for information about the
TreeExpansionEvent argument for the preceding methods.
Examples that Use Tree-Will-Expand Listeners
TreeExpandEventDemo2,
featured in this section,
is our only example that uses a tree-will-expand listener.