This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit fca655be46c02207087f1b38f8e996ae010f2e9a
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Tue May 8 14:39:49 2018 +0200

    ISIS-1944: Tree View: propagate expand/collapse events to tree's state
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1944
---
 .../components/tree/IsisToWicketTreeAdapter.java   | 44 ++++++++++++++++++++--
 1 file changed, 41 insertions(+), 3 deletions(-)

diff --git 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
index 90e7776..dc504df 100644
--- 
a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
+++ 
b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/tree/IsisToWicketTreeAdapter.java
@@ -126,8 +126,8 @@ class IsisToWicketTreeAdapter {
                }
                
                /**
-                * To utilize the custom TreeExpansionModel for deciding a 
node's collapse/expand state we 
-                * override this method.
+                * To utilize the custom TreeExpansionModel for deciding a 
node's collapse/expand state,
+                * we override this method.
                 */
                @Override
                public State getState(TreeModel t) {
@@ -135,6 +135,28 @@ class IsisToWicketTreeAdapter {
                        return treeExpansionModel.contains(t.getTreePath()) ? 
State.EXPANDED : State.COLLAPSED;
                }
                
+               /**
+                * To utilize the custom TreeExpansionModel for hooking into a 
node's expand event,
+                * we override this method.
+                */
+               @Override
+               public void expand(TreeModel t) {
+                       final TreeExpansionModel treeExpansionModel = 
(TreeExpansionModel) getModel();
+                       treeExpansionModel.onExpand(t);
+                       super.expand(t);
+               }
+               
+               /**
+                * To utilize the custom TreeExpansionModel for hooking into a 
node's collapse event,
+                * we override this method.
+                */
+               @Override
+               public void collapse(TreeModel t) {
+                       final TreeExpansionModel treeExpansionModel = 
(TreeExpansionModel) getModel();
+                       treeExpansionModel.onCollapse(t);
+                       super.collapse(t);
+               }
+               
        }
        
        // -- ISIS' TREE-MODEL
@@ -386,12 +408,28 @@ class IsisToWicketTreeAdapter {
                        return new TreeExpansionModel(expandedTreePaths);
                }
 
+               /**
+                * Happens on user interaction via UI.
+                * @param t
+                */
+               public void onExpand(TreeModel t) {
+                       expandedTreePaths.add(t.getTreePath());
+               }
+               
+               /**
+                * Happens on user interaction via UI.
+                * @param t
+                */
+               public void onCollapse(TreeModel t) {
+                       expandedTreePaths.remove(t.getTreePath());
+               }
+
                public boolean contains(TreePath treePath) {
                        return expandedTreePaths.contains(treePath);
                }
 
                private final Set<TreePath> expandedTreePaths;
-               private final Set<TreeModel> expandedNodes; //TODO [ahuber] 
possibly not used within this readonly model 
+               private final Set<TreeModel> expandedNodes; 
                
                private TreeExpansionModel(Set<TreePath> expandedTreePaths) {
                        this.expandedTreePaths = expandedTreePaths;

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to