Example usage for org.apache.wicket.extensions.markup.html.repeater.tree DefaultTableTree DefaultTableTree

List of usage examples for org.apache.wicket.extensions.markup.html.repeater.tree DefaultTableTree DefaultTableTree

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.repeater.tree DefaultTableTree DefaultTableTree.

Prototype

public DefaultTableTree(String id, List<? extends IColumn<T, S>> columns, ISortableTreeProvider<T, S> provider,
        int rowsPerPage) 

Source Link

Document

Construct.

Usage

From source file:wicketdnd.examples.TableTreeExample.java

License:Apache License

public TableTreeExample(String id) {
    super(id);/*from www.j av  a2s . com*/

    final FooTreeProvider provider = new FooTreeProvider();

    final TableTree<Foo, String> tabletree = new DefaultTableTree<Foo, String>("tabletree", columns(), provider,
            Integer.MAX_VALUE);
    // reuse items or drop following expansion will fail due to new
    // markup ids
    tabletree.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
    tabletree.add(new DragSource() {
        @Override
        public Set<Operation> getOperations() {
            return dragOperations();
        }

        @Override
        public String[] getTypes() {
            return types();
        }

        @Override
        public void onAfterDrop(AjaxRequestTarget target, Transfer transfer) {
            if (transfer.getOperation() == Operation.MOVE) {
                Foo foo = transfer.getData();

                provider.remove(foo);

                foo.remove();

                target.add(tabletree);
            }
        }
    }.drag("tr").initiate("span.tree-content").clone("span.tree-content"));
    tabletree.add(new DropTarget() {
        @Override
        public Set<Operation> getOperations() {
            return dropOperations();
        }

        @Override
        public String[] getTypes() {
            return types();
        }

        @Override
        public void onDrag(AjaxRequestTarget target, Location location) {
            Foo foo = location.getModelObject();
            if (tabletree.getState(foo) == State.COLLAPSED) {
                tabletree.expand(foo);
            }
        }

        @Override
        public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
            Foo foo = location.getModelObject();
            if (foo.isAncestor(transfer.getData())) {
                transfer.reject();
            }

            switch (location.getAnchor()) {
            case CENTER:
                if (foo == transfer.getData()) {
                    transfer.reject();
                }
                provider.add(operate(transfer), foo);
                tabletree.expand(foo);
                break;
            case TOP:
                provider.addBefore(operate(transfer), foo);
                break;
            case BOTTOM:
                provider.addAfter(operate(transfer), foo);
                break;
            default:
                transfer.reject();
            }

            target.add(tabletree);
        }
    }.dropCenter("tbody tr"));
    content.add(tabletree);
}