SuperX-Kernmodul
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

132 lines
3.3 KiB

package de.memtext.dlg;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeNode;
import de.memtext.util.WindowUtils;
/**
* A dialog that presents a tree and allows the selection of
* one node or to clear the selection
*/
public class NodeSelectionDlg extends OkCancelClearDlg {
private JTree tree;
private Object selectedNode = null;
private String title;
public NodeSelectionDlg(Frame owner, String title, JTree tree) {
super(owner, title);
this.tree = tree;
this.title = title;
this.setCenter(new JScrollPane(tree));
selectedNode = null;
if (tree.getLastSelectedPathComponent() != null) selectedNode = (TreeNode) tree.getLastSelectedPathComponent();
this.pack();
WindowUtils.center(this);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
exit();
}
});
}
/**
* called if window is closed, does nothing by default,
* subclasses can override
*
*/
@Override
protected void exit() {
}
public NodeSelectionDlg(Frame owner, String title, DefaultTreeModel treeModel) {
this(owner, title, new JTree(treeModel));
}
public NodeSelectionDlg(Frame owner, String title, TreeNode node) {
this(owner, title, new JTree(node));
}
/**
* can be overriden by subclasses to perform a check if
* the selected node is OK
* @return
*/
protected boolean isSelectedNodeOk(TreeNode testme) {
return true;
}
@Override
protected void performOk() {
if (!isSelectedNodeOk((TreeNode) tree.getLastSelectedPathComponent())) return;
selectedNode = tree.getLastSelectedPathComponent();
this.setVisible(false);
}
@Override
protected void performCancel() {
this.setVisible(false);
}
public TreeNode getSelectedNode() {
return selectedNode == null ? null : (TreeNode) selectedNode;
}
@Override
protected void performClear() {
selectedNode = null;
tree.clearSelection();
this.setVisible(false);
}
@Override
public void setSize(Dimension dim) {
super.setSize(dim);
WindowUtils.center(this);
}
@Override
public void setSize(int x, int y) {
super.setSize(x, y);
WindowUtils.center(this);
}
public static void main(String a[]) {
NodeSelectionDlg t = new NodeSelectionDlg(null, "adsf", new JTree());
t.pack();
t.show();
System.out.println(t.getSelectedNode());
t.show();
System.out.println(t.getSelectedNode());
}
public void setNode(TreeNode node) {
tree.setModel(new DefaultTreeModel(node));
selectedNode = null;
}
public void setCellRenderer(TreeCellRenderer renderer) {
tree.setCellRenderer(renderer);
}
@Override
public String getTitle() {
return title;
}
public String getInfoText() {
return title;
}
}
//Created on 17.11.2003