用于vaadin TreeTable的ItemDescriptionGenerator仅为列返回null

时间:2011-12-22 09:28:53

标签: tooltip vaadin treetable

我正在使用vaadin的TreeTable,我试图为我的行添加工具提示。这是他们说应该怎么做但是propertyId总是为null所以我不能得到正确的列?是的,我会在eclipse调试器中运行它aswell =)

与此部分相关的代码:

private void init() {
    setDataSource();
    addGeneratedColumn("title", new TitleColumnGenerator());
    addGeneratedColumn("description", new DescriptionGenerator());
    setColumnExpandRatios();
    setItemDescriptionGenerator(new TooltipGenerator());
}

protected class TooltipGenerator implements ItemDescriptionGenerator{
        private static final long serialVersionUID = 1L;

        @Override
        public String generateDescription(Component source, Object itemId, Object propertyId) {
            TaskRow taskRow = (TaskRow)itemId;
            if("description".equals(propertyId)){
                return taskRow.getDescription();
            }else if("title".equals(propertyId)){
                return taskRow.getTitle();
            }else if("category".equals(propertyId)){
                return taskRow.getCategory().toString();
            }else if("operation".equals(propertyId)){
                return taskRow.getOperation().toString();
            }else if("resourcePointer".equals(propertyId)){
                return taskRow.getResourcePointer();
            }else if("taskState".equals(propertyId)){
                return taskRow.getTaskState().toString();
            }
            return null;
        }       
    }

1 个答案:

答案 0 :(得分:1)

在向树中添加项目时,我已将源对象作为itemId传递。

Node node = ...;
Item item = tree.addItem(node);

这使用对象“node”作为id。然后允许我在generateDescription方法中将itemId作为Node的实例进行转换。

public String generateDescription(Component source, Object itemId, Object propertyId) {
    if (itemId instanceof Node) {
        Node node = (Node) itemId;
        ...

也许不是最好的解决方案,但它对我有用。然后,我再次将项目添加到树而不是使用DataContainer。