package sushi.application.components.tree;
import java.util.Set;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.extensions.markup.html.repeater.tree.NestedTree;
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.model.IModel;
/**
* tree component for visualization of hierarchical elements
* nodes are not selectable
*
* @param <T> the type of nodes to be stored in the tree
*/
public class SushiLabelTree<T> extends NestedTree<T> {
/**
* constructor
*
* @param id wicket identifier used in the corresponding HTML file
* @param provider see sushi.application.components.tree.NestedTreeProvider
* @param state see sushi.application.components.tree.NestedTreeExpansionModel
*/
public SushiLabelTree(String id, ITreeProvider<T> provider, IModel<Set<T>> state) {
super(id, provider, state);
setTheme();
}
@Override
protected Component newContentComponent(String id, IModel<T> model) {
return new Label(id, model);
}
protected void setTheme() {
this.add(new Behavior() {
Behavior theme = new HumanTheme();
@Override
public void onComponentTag(Component component, ComponentTag tag) {
theme.onComponentTag(component, tag);
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
theme.renderHead(component, response);
}
});
}
}