ItemDescriptionGenerator для vaadin TreeTable возвращает только ноль для столбца - PullRequest
1 голос
/ 22 декабря 2011

Я использую TreeTable vaadin и пытаюсь добавить всплывающие подсказки для своих строк. Вот как они говорят, что это должно быть сделано, но propertyId всегда равен нулю, поэтому я не могу получить правильный столбец? И да, я запускаю это в отладчике затмения, а также =)

Код, относящийся к этой части:

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 Ответ

1 голос
/ 02 апреля 2015

Я передал исходный объект как itemId при добавлении элемента в дерево.

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

при этом в качестве идентификатора используется объект "узел".Который затем позволяет мне приводить itemId в качестве экземпляра Node в методе generateDescription.

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

Возможно, не лучшее решение, но оно работает для меня.С другой стороны, я добавляю элементы непосредственно в дерево, а не использую DataContainer.

...