001 package net.databinder.components.tree.hib;
002
003 import javax.swing.tree.DefaultMutableTreeNode;
004
005 import org.apache.wicket.ajax.AjaxRequestTarget;
006 import org.apache.wicket.ajax.markup.html.AjaxLink;
007
008
009 /**
010 * Add a new child to the selected tree node.
011 *
012 * @author Thomas Kappler
013 */
014 public class DataTreeNewChildLink extends AjaxLink {
015
016 private DataTree<?> tree;
017 private DefaultMutableTreeNode parentNode;
018
019 public DataTreeNewChildLink(String id, DataTree tree, DefaultMutableTreeNode node) {
020 super(id);
021 this.tree = tree;
022 this.parentNode = node;
023 }
024
025 protected DefaultMutableTreeNode getParentNode() {
026 return parentNode;
027 }
028
029 @Override
030 public boolean isEnabled() {
031 return getParentNode() != null;
032 }
033
034 @Override
035 public void onClick(AjaxRequestTarget target) {
036 DefaultMutableTreeNode newNode = tree.addNewChildNode(getParentNode());
037 tree.getTreeState().selectNode(newNode, true);
038 tree.repaint(target);
039 tree.updateDependentComponents(target, newNode);
040 }
041
042 public static class SingleSelection extends DataTreeNewChildLink {
043 private SingleSelectionDataTree<?> tree;
044
045 public SingleSelection(String id, SingleSelectionDataTree<?> tree) {
046 super(id, tree, null);
047 this.tree = tree;
048 }
049 @Override
050 protected DefaultMutableTreeNode getParentNode() {
051 return tree.getSelectedTreeNode();
052 }
053 }
054 }