@@ -58,6 +58,7 @@ import org.apache.tools.ant.gui.acs.ElementTreeSelectionModel;
import org.apache.tools.ant.gui.acs.ElementTreeModel;
import org.apache.tools.ant.gui.acs.ACSProjectElement;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import java.awt.GridLayout;
@@ -65,6 +66,7 @@ import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import java.beans.PropertyChangeEvent;
/**
* Module for navigating build file elemenets.
@@ -132,27 +134,37 @@ public class ElementNavigator extends AntModule {
* it should be cancelled.
*/
public boolean eventPosted(EventObject event) {
ACSProjectElement project = null;
if(event instanceof ProjectSelectedEvent) {
ProjectSelectedEvent e = (ProjectSelectedEvent) event;
project = e.getSelectedProject();
}
if(project == null) {
// The project has been closed.
// XXX this needs to be tested against
// different version of Swing...
_tree.setModel(null);
_tree.setSelectionModel(null);
// Send an empty selection event to notify others that
// nothing is selected.
ElementSelectionEvent.createEvent(getContext(), null);
if(event instanceof PropertyChangeEvent) {
// The project node has changed.
// XXX This won't work until ACSTreeNodeElement.getParent() is fixed
// ElementTreeModel model = (ElementTreeModel)_tree.getModel();
// model.nodeChanged((TreeNode)model.getRoot());
}
else {
_tree.setModel(new ElementTreeModel(project));
_selections = new ElementTreeSelectionModel();
_selections.addTreeSelectionListener(new SelectionForwarder());
_tree.setSelectionModel(_selections);
ACSProjectElement project = null;
if(event instanceof ProjectSelectedEvent) {
ProjectSelectedEvent e = (ProjectSelectedEvent) event;
project = e.getSelectedProject();
}
if(project == null) {
// The project has been closed.
// XXX this needs to be tested against
// different version of Swing...
_tree.setModel(null);
_tree.setSelectionModel(null);
// Send an empty selection event to notify others that
// nothing is selected.
ElementSelectionEvent.createEvent(getContext(), null);
}
else {
_tree.setModel(new ElementTreeModel(project));
_selections = new ElementTreeSelectionModel();
_selections.addTreeSelectionListener(
new SelectionForwarder());
_tree.setSelectionModel(_selections);
}
}
return true;
}
@@ -177,7 +189,8 @@ public class ElementNavigator extends AntModule {
*/
public boolean accept(EventObject event) {
return event instanceof ProjectSelectedEvent ||
event instanceof ProjectClosedEvent;
event instanceof ProjectClosedEvent ||
event instanceof PropertyChangeEvent;
}
}