Browse Source

Added support for updating display based on property change events in the data

model.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268439 13f79535-47bb-0310-9956-ffa450edef68
master
metasim 24 years ago
parent
commit
11b6cebd07
2 changed files with 45 additions and 20 deletions
  1. +33
    -20
      src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java
  2. +12
    -0
      src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java

+ 33
- 20
src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java View File

@@ -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.ElementTreeModel;
import org.apache.tools.ant.gui.acs.ACSProjectElement; import org.apache.tools.ant.gui.acs.ACSProjectElement;
import javax.swing.*; import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.TreeSelectionListener; import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionEvent;
import java.awt.GridLayout; import java.awt.GridLayout;
@@ -65,6 +66,7 @@ import java.awt.Dimension;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.EventObject; import java.util.EventObject;
import java.beans.PropertyChangeEvent;


/** /**
* Module for navigating build file elemenets. * Module for navigating build file elemenets.
@@ -132,27 +134,37 @@ public class ElementNavigator extends AntModule {
* it should be cancelled. * it should be cancelled.
*/ */
public boolean eventPosted(EventObject event) { 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 { 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; return true;
} }
@@ -177,7 +189,8 @@ public class ElementNavigator extends AntModule {
*/ */
public boolean accept(EventObject event) { public boolean accept(EventObject event) {
return event instanceof ProjectSelectedEvent || return event instanceof ProjectSelectedEvent ||
event instanceof ProjectClosedEvent;
event instanceof ProjectClosedEvent ||
event instanceof PropertyChangeEvent;
} }
} }




+ 12
- 0
src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java View File

@@ -80,6 +80,8 @@ public class PropertyEditor extends AntModule {
private JPanel _container = null; private JPanel _container = null;
/** Scroll area containing contents. */ /** Scroll area containing contents. */
private JScrollPane _scroller = null; private JScrollPane _scroller = null;
/** Property change forwarder. */
private PropertyChangeForwarder _forwarder = new PropertyChangeForwarder();


/** /**
* Default ctor. * Default ctor.
@@ -108,6 +110,7 @@ public class PropertyEditor extends AntModule {
*/ */
private void updateDisplay(ACSElement[] items) { private void updateDisplay(ACSElement[] items) {
if(_customizer != null) { if(_customizer != null) {
_customizer.removePropertyChangeListener(_forwarder);
_container.remove((Component)_customizer); _container.remove((Component)_customizer);
_customizer = null; _customizer = null;
} }
@@ -123,6 +126,7 @@ public class PropertyEditor extends AntModule {
getCustomizerClass().newInstance(); getCustomizerClass().newInstance();
_customizer.setObject(item); _customizer.setObject(item);
_container.add(BorderLayout.CENTER, (Component) _customizer); _container.add(BorderLayout.CENTER, (Component) _customizer);
_customizer.addPropertyChangeListener(_forwarder);
} }
catch(Exception ex) { catch(Exception ex) {
// XXX log me. // XXX log me.
@@ -176,4 +180,12 @@ public class PropertyEditor extends AntModule {
return event instanceof ElementSelectionEvent; return event instanceof ElementSelectionEvent;
} }
} }

/** Class for forwarding property change events to the event bus. */
private class PropertyChangeForwarder implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent e) {
getContext().getEventBus().postEvent(e);
}
}

} }

Loading…
Cancel
Save