Hi,
I'm trying to get the content of a cell when I click on it?.
I've the next code to create de treetable:
|public class DocTreeTable extends TreeTable {
private static final long serialVersionUID = 8799304134058383380L;
public DocTreeTable(String id, TreeModel model) {
super(id, model, createColumns());
}
private static IColumn[] createColumns() {
IColumn columns[] = new IColumn[] {
new PropertyRenderableColumn<Integer>(new ColumnLocation(
Alignment.LEFT, 3, Unit.EM), "Id",
"userObject.idDoc"),
new PropertyTreeColumn<String>(new ColumnLocation(
Alignment.MIDDLE, 50, Unit.PROPORTIONAL),
"Fichero",
"userObject.data.name"),
new PropertyRenderableColumn<String>(new ColumnLocation(
Alignment.MIDDLE, 25, Unit.PROPORTIONAL),
"Descripción", "userObject.data.desc"),
new PropertyRenderableColumn<String>(new ColumnLocation(
Alignment.RIGHT, 25, Unit.PERCENT), "Fase",
"userObject.data.phase.data.name"), };
return columns;
}
@Override
protected void populateTreeItem(final WebMarkupContainer item,
final int level) {
super.populateTreeItem(item, level);
item.add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(final AjaxRequestTarget target) {
final TreeNode node = (TreeNode)
item.getDefaultModelObject();
rowClickSelect(node,item.getDefaultModelObject());
}
});
}
private void rowClickSelect(TreeNode node, Object obj) {
node.toString();
if (this.getTreeState().isNodeSelected(node)) {
DocTO doc = (DocTO) obj; // *HERE IS THE ERROR, AND I DON'T
KNOW HOW SOLVE IT.*
if (node.isLeaf())
getWebPage()
.setResponsePage(
new DocViewPage(doc));
}
}
}|
And I have de next code to create the page with treetable, after reading
the database content of a docs:
|
public DocsPage(PageParameters pageParameters) {
super(pageParameters);
DocTreeTable() tree = new DocTreeTable("docs", createTreeModel());
tree.setRootLess(false);
tree.getTreeState().setAllowSelectMultiple(false);
add(tree);
}
public DocsPage() {
this(null);
}
private TreeModel createTreeModel(){
List docs = docService.findMainFolders();
return convertToTreeModel(docs);
}
private TreeModel convertToTreeModel(List<Object> list){
TreeModel model = null;
DefaultMutableTreeNode rootNode = new
DefaultMutableTreeNode((DocTO)list.get(0));
addNode(rootNode, list);
model = new DefaultTreeModel(rootNode);
return model;
}
private void addNode(DefaultMutableTreeNode parent, List sub){
for(Object obj : sub){
if(((DocTO)obj).getData().getFolder()){
DefaultMutableTreeNode child = new
DefaultMutableTreeNode((DocTO)obj);
parent.add(child);
addNode(child, docService.findFolderChilds((DocTO)obj));
}else{
DefaultMutableTreeNode child = new
DefaultMutableTreeNode((DocTO)obj);
parent.add(child);
}
}
}
|
Thank you in advance,
Pablo.