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

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

Introduction

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

Prototype

@Override
public final TableTree<T, S> setItemReuseStrategy(final IItemReuseStrategy strategy) 

Source Link

Document

Sets the item reuse strategy.

Usage

From source file:com.evolveum.midpoint.web.page.admin.orgs.OrgTreePanel.java

License:Apache License

private void initLayout() {
    WebMarkupContainer treeHeader = new WebMarkupContainer(ID_TREE_HEADER);
    treeHeader.setOutputMarkupId(true);/*from   w w  w  . ja  v a2  s.  com*/
    add(treeHeader);

    String title = StringUtils.isEmpty(treeTitleKey) ? "TreeTablePanel.hierarchy" : treeTitleKey;
    Label treeTitle = new Label(ID_TREE_TITLE, createStringResource(title));
    treeHeader.add(treeTitle);

    InlineMenu treeMenu = new InlineMenu(ID_TREE_MENU, new Model<>((Serializable) createTreeMenuInternal()));
    treeHeader.add(treeMenu);

    ISortableTreeProvider provider = new OrgTreeProvider(this, getModel()) {
        @Override
        protected List<InlineMenuItem> createInlineMenuItems() {
            return createTreeChildrenMenu();
        }
    };
    List<IColumn<SelectableBean<OrgType>, String>> columns = new ArrayList<>();

    if (selectable) {
        columns.add(new CheckBoxHeaderColumn<SelectableBean<OrgType>>());
    }

    columns.add(
            new TreeColumn<SelectableBean<OrgType>, String>(createStringResource("TreeTablePanel.hierarchy")));
    columns.add(new InlineMenuHeaderColumn(createTreeChildrenMenu()));

    WebMarkupContainer treeContainer = new WebMarkupContainer(ID_TREE_CONTAINER) {

        @Override
        public void renderHead(IHeaderResponse response) {
            super.renderHead(response);

            // method computes height based on document.innerHeight() -
            // screen height;
            Component form = OrgTreePanel.this.getParent().get("memberPanel");
            if (form != null) {
                response.render(OnDomReadyHeaderItem
                        .forScript("updateHeight('" + getMarkupId() + "', ['#" + form.getMarkupId() + "'], ['#"
                                + OrgTreePanel.this.get(ID_TREE_HEADER).getMarkupId() + "'])"));
            }
        }
    };
    add(treeContainer);

    TableTree<SelectableBean<OrgType>, String> tree = new TableTree<SelectableBean<OrgType>, String>(ID_TREE,
            columns, provider, Integer.MAX_VALUE, new TreeStateModel(this, provider)) {

        @Override
        protected Component newContentComponent(String id, IModel<SelectableBean<OrgType>> model) {
            return new SelectableFolderContent(id, this, model, selected) {

                @Override
                protected void onClick(AjaxRequestTarget target) {
                    super.onClick(target);

                    MidPointAuthWebSession session = OrgTreePanel.this.getSession();
                    SessionStorage storage = session.getSessionStorage();
                    storage.getUsers().setSelectedItem(selected.getObject());

                    selectTreeItemPerformed(selected.getObject(), target);
                }
            };
        }

        @Override
        protected Item<SelectableBean<OrgType>> newRowItem(String id, int index,
                final IModel<SelectableBean<OrgType>> model) {
            Item<SelectableBean<OrgType>> item = super.newRowItem(id, index, model);
            item.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {

                @Override
                public String getObject() {
                    SelectableBean<OrgType> itemObject = model.getObject();
                    if (itemObject != null && itemObject.equals(selected.getObject())) {
                        return "success";
                    }

                    return null;
                }
            }));
            return item;
        }

        @Override
        public void collapse(SelectableBean<OrgType> collapsedItem) {
            super.collapse(collapsedItem);
            MidPointAuthWebSession session = OrgTreePanel.this.getSession();
            SessionStorage storage = session.getSessionStorage();
            Set<SelectableBean<OrgType>> items = storage.getUsers().getExpandedItems();
            if (items != null && items.contains(collapsedItem)) {
                items.remove(collapsedItem);
            }
            storage.getUsers().setExpandedItems((TreeStateSet) items);
            storage.getUsers().setCollapsedItem(collapsedItem);
        }

        @Override
        protected void onModelChanged() {
            super.onModelChanged();

            Set<SelectableBean<OrgType>> items = getModelObject();

            MidPointAuthWebSession session = OrgTreePanel.this.getSession();
            SessionStorage storage = session.getSessionStorage();
            storage.getUsers().setExpandedItems((TreeStateSet<SelectableBean<OrgType>>) items);
        }
    };
    tree.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
    tree.getTable().add(AttributeModifier.replace("class", "table table-striped table-condensed"));
    tree.add(new WindowsTheme());
    // tree.add(AttributeModifier.replace("class", "tree-midpoint"));
    treeContainer.add(tree);
}

From source file:wicketdnd.examples.TableTreeExample.java

License:Apache License

public TableTreeExample(String id) {
    super(id);//from   www  .ja v  a  2  s .co  m

    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);
}