2009-10-02 3 views
2

я, наконец, удалось получить события, если пользователь расширяет узел моей стороне клиента обрабатывается дерево, используя следующий метод:Есть ли событие для свертывания узла rich: tree?

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.

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

ответ

2

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

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

EDIT:

Первый changeExpandListener должен быть delared как атрибут для <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"); 
    } 
    } 
} 

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

+0

Как я могу отличить коллапс от расширения? Я использую коллимацию на стороне клиента, и прослушиватель событий запускается после отправки дерева - например, при изменении выделения. В этот момент я получаю одно событие на один расширенный узел ... пока не видел ни одного свернутого узла. –

+0

Спасибо! Это поможет. –

Смежные вопросы