package org.oddjob.monitor.control;
import javax.swing.JTree;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import org.oddjob.monitor.model.DetailModel;
import org.oddjob.monitor.model.JobTreeNode;
import org.oddjob.monitor.view.DetailView;
/**
* Controller for the detail pane of the monitor. This listens
* tree selection change event in the view and updates the detail
* model so correct state, log, properties are displayed.
*
* @author Rob Gordon
*/
public class DetailController implements TreeSelectionListener {
/** The model. */
private final DetailModel detailModel;
/** The view. */
private final DetailView detailView;
/** The current/last node */
private JobTreeNode currentNode;
/**
* Constructor
*/
public DetailController(DetailModel detailModel, DetailView detailView) {
this.detailModel = detailModel;
this.detailView = detailView;
// create detailed view
detailView.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if (currentNode != null) {
DetailController.this.detailModel.setTabSelected(
DetailController.this.detailView.getSelectedIndex());
}
}
});
}
/*
* (non-Javadoc)
* @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
*/
public void valueChanged(TreeSelectionEvent event) {
JTree tree = (JTree)event.getSource();
currentNode = (JobTreeNode)tree.getLastSelectedPathComponent();
if (currentNode == null) {
detailModel.setSelectedContext(null);
}
else {
detailModel.setSelectedContext(
currentNode.getExplorerContext());
}
}
}