Есть ли событие для свертывания узла rich: tree? - PullRequest
2 голосов
/ 02 октября 2009

Мне наконец удалось получить события, если пользователь развернул узел моего обработанного дерева на стороне клиента, используя следующий метод:

public void processExpansion(NodeExpandedEvent event) throws AbortProcessingException {
 if (event != null && event.getSource() != null && event.getSource() instanceof HtmlTree) {
  this.expandedNodes.add(((UITree) event.getSource()).getRowData());
 }
}

Мне пришлось использовать #getRowData () из-за recursiveTreeNodesAdaptor.

Как я могу получить уведомление об узлах, которые пользователь снова сворачивает? Я не смог найти подходящего слушателя.

1 Ответ

2 голосов
/ 03 октября 2009

Вы можете использовать ChangeExpandListener

<rich:changeExpandListener> представляет метод прослушивателя действий, который уведомляется о событии раскрытия / свертывания на узле.

EDIT:

Первый changeExpandListener должен быть объявлен как атрибут для <rich:treeNode>, если он объявлен для зашифрованного дерева, работает во время записи (событие обрабатывается после события выбора). Итак:

<rich:tree value="#{simpleTreeBean.treeNode}" var="item" >
    <rich:treeNode changeExpandListener="#{simpleTreeBean.processExpansion}">
         <h:outputText value="#{item}" />
    </rich:treeNode>                   
</rich:tree>

processExpansion метод должен принимать NodeExpandedEvent в качестве параметра, но нет необходимости реализовывать интерфейс org.richfaces.event.NodeExpandedListener .

public void processExpansion(NodeExpandedEvent evt) {

  Object source = evt.getSource();
  if (source instanceof HtmlTreeNode) {
    UITree tree = ((HtmlTreeNode) source).getUITree();
    if (tree == null) {
      return;
    }
    // get the row key i.e. id of the given node.
    Object rowKey = tree.getRowKey();
    // get the model node of this node.
    TreeRowKey key = (TreeRowKey) tree.getRowKey();

    TreeState state = (TreeState) tree.getComponentState();
    if (state.isExpanded(key)) {
      System.out.println(rowKey + " - expanded");
    } else {
      System.out.println(rowKey + " - collapsed");
    }
  }
}

Это должно помочь

...