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.

Reply via email to