javaspringwicket-8

Table column headers are not displaying in TableTree in Wicket


private void myTreePage() {
    private final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("<root>");
    DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
    statusImport();

            ITreeProvider<DefaultMutableTreeNode> modelProvider = new TreeModelProvider<DefaultMutableTreeNode>(treeModel, false) {
                private static final long serialVersionUID = 1L;
                @Override
                public IModel<DefaultMutableTreeNode> model(DefaultMutableTreeNode object) {
                    return Model.of(object);
                }
            };
            
            TableTree<DefaultMutableTreeNode, String> myTestTree = new TableTree<DefaultMutableTreeNode, String>("myTestTreeTable", createColumns(), modelProvider, Long.MAX_VALUE) {
                private static final long serialVersionUID = 1L;
                @Override
                protected Component newContentComponent(String id, IModel<DefaultMutableTreeNode> model) {
                    //return new CheckedFolder<DefaultMutableTreeNode>(id, this, model);
                    return new Folder<DefaultMutableTreeNode>(id, this, model);
                }
            };
           
            myTestTree.setOutputMarkupId(true);
            myTestTree.add(new WindowsTheme());
            myTestTree.getTable().add(AttributeModifier.replace("style", "width: 100%; background-color:white;"));
            addOrReplace(myTestTree);
}

private List<? extends IColumn<DefaultMutableTreeNode, String>> createColumns() {
    columns.add(new TreeColumn<>(new Model("Tree"), "obj.text"));
    columns.add(new PropertyColumn<>(new Model("FileStatus"), "FileStatus", "obj.fileStatus"));
    columns.add(new PropertyColumn<>(new Model("StartDate"), "StartDate", "obj.startDate"));
    columns.add(new PropertyColumn<>(new Model("LastDate"), "LastDate", "obj.lastDate"));
    columns.add(new PropertyColumn<>(new Model("Count"), "Count", "obj.count"));
    return columns;
}

enter image description here

In tree table view, columns headers are not displaying "Tree", "FileStatus", "StartDate", "LastDate", "Count".

Can anyone help here how to display the Tree table column's header in the Tree table? It will be more appreciable.


Solution

  • I resolved this issue after adding the ToptoolBar and BottomToolBar in TreeTable.

    **myTestTree.getTable().addTopToolbar(new HeadersToolbar<String>(treeImport.getTable(), testSortableDataProvider()));
    myTestTree.getTable().addBottomToolbar(new NoRecordsToolbar(treeImport.getTable()));**
    
    
    
    private ISortableDataProvider<DefaultMutableTreeNode, String> testSortableDataProvider() {
        ISortableDataProvider<DefaultMutableTreeNode, String> ret = new SortableDataProvider<DefaultMutableTreeNode, String>() {
            private static final long serialVersionUID = 1L;
    
            @SuppressWarnings("unchecked")
            @Override
            public Iterator<? extends DefaultMutableTreeNode> iterator(long arg0, long arg1) {
                return null;
            }
    
            @Override
            public IModel<DefaultMutableTreeNode> model(DefaultMutableTreeNode arg0) {
                return null;
            }
    
            @Override
            public long size() {
                return 0;
            }
        };
        return ret;
    }
    

    If there is a null value in addTopToolbar method then it will not work.

    myTestTree.getTable().addTopToolbar(new HeadersToolbar<String>(treeImport.getTable(), null));
    

    So it should be defined with the sortable data provider which will resolve this issue to display the Tree table column header display issue.

    myTestTree.getTable().addTopToolbar(new HeadersToolbar<String>(treeImport.getTable(), testSortableDataProvider()));