List of usage examples for org.apache.wicket.extensions.markup.html.repeater.tree TableTree setItemReuseStrategy
@Override public final TableTree<T, S> setItemReuseStrategy(final IItemReuseStrategy strategy)
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); }