@Override public void nodeClicked( File file, AbstractTree<File> tree, final AjaxRequestTarget target) { if (selected != null) { tree.updateNode(selected.getObject(), target); selected.detach(); selected = null; } selected = provider.model(file); tree.updateNode(file, target); }
/** * Collapse the given node, tries to update the affected branch if the change happens on an * {@link AjaxRequestTarget}. * * @param t * the object to collapse * * @see #getModelObject() * @see Set#remove(Object) * @see #updateBranch(Object, IPartialPageRequestHandler) */ public void collapse(T t) { modelChanging(); getModelObject().remove(t); modelChanged(); getRequestCycle().find(IPartialPageRequestHandler.class).ifPresent( target -> updateBranch(t, target) ); }
tree.updateNode(object, target); tree.updateBranch(object, target);
/** * Get the style class depending on the current {@link State} of this node. * * @see #getExpandedStyleClass(Object) * @see #getCollapsedStyleClass() * @see #getOtherStyleClass() * @return the style class */ protected String getStyleClass() { T t = getModelObject(); if (tree.getProvider().hasChildren(t)) { if (tree.getState(t) == State.EXPANDED) { return getExpandedStyleClass(t); } else { return getCollapsedStyleClass(); } } return getOtherStyleClass(); }
/** * Clickable if node can be expanded/collapsed, i.e. has children. * * @see ITreeProvider#hasChildren(Object) */ @Override protected boolean isClickable() { T t = getModelObject(); return tree.getProvider().hasChildren(t); }
/** * Get the given node's {@link State}. * * @param t * the node to get state for * @return state * * @see #getModelObject() * @see Set#contains(Object) */ public State getState(T t) { if (getModelObject().contains(t)) { return State.EXPANDED; } else { return State.COLLAPSED; } }
tree.add(new Behavior() { @Override public void onComponentTag(Component component, ComponentTag tag) {
if (tree.getProvider().hasChildren(t)) if (tree.getState(t) == State.EXPANDED)
@Override public boolean isEnabled() { return tree.getProvider().hasChildren(Node.this.getModelObject()); } };
/** * Expand the given node, tries to update the affected branch if the change happens on an * {@link AjaxRequestTarget}. * * @param t * the node to expand * * @see #getModelObject() * @see Set#add(Object) * @see #updateBranch(Object, IPartialPageRequestHandler) */ public void expand(T t) { modelChanging(); getModelObject().add(t); modelChanged(); getRequestCycle().find(IPartialPageRequestHandler.class).ifPresent( target -> updateBranch(t, target) ); }
@Override public void nodeClicked( File file, AbstractTree<File> tree, final AjaxRequestTarget target) { if (selected != null) { tree.updateNode(selected.getObject(), target); selected.detach(); selected = null; } selected = provider.model(file); tree.updateNode(file, target); }
protected void select(TreeResource resource, AbstractTree<TreeResource> tree, final AjaxRequestTarget target) { if (selected != null) { tree.updateNode(selected.getObject(), target); selected.detach(); selected = null; } selected = provider.model(resource); tree.updateNode(resource, target); }
@Override public void nodeClicked( File file, AbstractTree<File> tree, final AjaxRequestTarget target) { if (isSelected(file)) { selected.remove(file); } else { selected.add(file); } tree.updateNode(file, target); }
@Override public void nodeClicked( File file, AbstractTree<File> tree, final AjaxRequestTarget target) { if (isSelected(file)) { selected.remove(file); } else { selected.add(file); } tree.updateNode(file, target); }