private final void addDragAndDrop(final TreeBinder<TreeNode> binder) {
final Tree tree = binder.getTree();
// D 'n' D:
TreeDragSource dragSource = new TreeDragSource(binder);
dragSource.addDNDListener(new DNDListener() {
@SuppressWarnings("unchecked")
public void dragStart(DNDEvent e) {
List selection = (List) e.data;
if (!isValid(selection)) {
e.doit = false;
e.status.setStatus(false);
}
}
});
TreeDropTarget dropTarget = new TreeDropTarget(binder);
dropTarget.setAllowSelfAsSource(true);
dropTarget.setFeedback(Feedback.APPEND);
dropTarget.setOperation(Operation.MOVE);
dropTarget.addDNDListener(new DNDListener() {
public void dragDrop(final DNDEvent e) {
final TreeItem target = tree.findItem(e.getTarget());
if (target != null) {
XObject wrappedObj = browserModel.getWrappedXObject((TreeNode) target.getModel());
if (wrappedObj instanceof XStaticFolder) {