Изменение цвета шрифта TreeNode в GXT 3

Как изменить цвет шрифта TreeNode в GXT 3?

Я пытался вернуть SafeHtml из ValueProvider, но, похоже, это вызывает toString() для объекта SafeHtml. Я также пытался получить элемент в ValueProvider.getValue(), но он всегда возвращает ноль.

В GXT 2 мы использовали ModelStringProvider и возвращали HTML, но я не могу найти ничего подобного.

Вот пример кода, который я пробовал:

        tree=new Tree<NavigableModel<Integer>, String>(treeStore, new ValueProvider<NavigableModel<Integer>, String>() {
            public String getValue(NavigableModel<Integer> _model) {
                TreeNode<NavigableModel<Integer>> treeNode=tree.findNode(_model);
                StringBuilder sb=new StringBuilder();
                if (!_model.getActive()) {
                    // All elements return null
                    XElement elem=tree.getView().getElement(treeNode);
                    if(elem!=null) {
                        elem.getStyle().setColor("red");
                    }
//                  treeNode.getElement().getStyle().setColor("red");
//                  treeNode.getTextElement().getStyle().setColor("red");
//                  sb.appendHtmlConstant("<span class=\"item-deleted\">");
                }

                sb.append(_model.get("name"));
                if (idsCheckBox.getValue()) {
                    sb.append(" ("+_model.get("id")+")");
                }

//              if (!_model.getActive()) {
//                  sb.appendHtmlConstant("</span>");
//              }

                return(sb.toString());
            }
            public String getPath() {
                return("name");
            }
            public void setValue(NavigableModel<Integer> object, String value) {
            }
        });

person marktucks    schedule 30.03.2015    source источник


Ответы (1)


Догадаться!

Мне нужно было использовать SafeHtml для ValueProvider и установить ячейку дерева в SafeHtmlCell, например.

tree=new Tree<NavigableModel<Integer>, SafeHtml>(treeStore, new ValueProvider<NavigableModel<Integer>, SafeHtml>() {
  public SafeHtml getValue(NavigableModel<Integer> _model) {
    SafeHtmlBuilder sb=new SafeHtmlBuilder();
    if(_model==null) return sb.toSafeHtml();

    if (!_model.getActive()) {
      // My class to make the text red if this model isn't active
      sb.appendHtmlConstant("<span class=\"item-deleted\">");
    }

    sb.appendEscaped((String)_model.get("name"));

    if (!_model.getActive()) {
      sb.appendHtmlConstant("</span>");
    }
    return(sb.toSafeHtml());
  }
  public void setValue(NavigableModel<Integer> object, SafeHtml value) {
  }
  public String getPath() {
    return("name");
  }
});

// Set the cell to SafeHtmlCell to use the SafeHtml returned by ValueProvider
tree.setCell(new SafeHtmlCell());

Надеюсь, это поможет кому-то другому.

person marktucks    schedule 31.03.2015