package sushi.application.components.tree;
import java.util.List;
import java.util.Set;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.extensions.markup.html.repeater.tree.TableTree;
import org.apache.wicket.extensions.markup.html.repeater.tree.theme.HumanTheme;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
/**
* tree table component for visualization of hierarchical elements
* nodes are not selectable
*
* @param <T> the type of nodes to be stored in the tree
* @param <S> the type of the sort property
*/
public class SushiLabelTreeTable<T, S> extends TableTree<T, S> {
private static final long serialVersionUID = 1L;
/**
* constructor
*
* @param id wicket identifier used in the corresponding HTML file
* @param columns list of IColumn objects
* @param provider provider see sushi.application.components.tree.NestedTreeProvider
* @param rowsPerPage number of rows per page
* @param state state see sushi.application.components.tree.NestedTreeExpansionModel
*/
public SushiLabelTreeTable(String id, List<? extends IColumn<T, S>> columns, ITreeProvider<T> provider, long rowsPerPage, IModel<Set<T>> state) {
super(id, columns, provider, rowsPerPage, state);
getTable().add(new AttributeAppender("class", Model.of("table table-striped")));
setTheme();
}
@Override
protected Component newContentComponent(String id, IModel<T> model) {
return new Label(id, model);
}
@Override
protected Item<T> newRowItem(String id, int index, IModel<T> model) {
return new Item<T>(id, index, model);
}
protected void setTheme() {
this.add(new Behavior() {
private static final long serialVersionUID = 1L;
Behavior theme = new HumanTheme();
@Override
public void onComponentTag(Component component, ComponentTag tag) {
super.onComponentTag(component, tag);
theme.onComponentTag(component, tag);
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
theme.renderHead(component, response);
}
});
}
}