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 dfe84e10c740cfadb19fe6bb68f6b15248227d43
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Fri May 4 11:56:18 2018 +0200

    ISIS-898: hardcode AjaxFallbackLink to be enabled in hierarchy
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-898
---
 .../components/tree/IsisToWicketTreeAdapter.java   | 70 ++++++++++++++++++++--
 1 file changed, 66 insertions(+), 4 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 021d447..020d4ef 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
@@ -7,6 +7,7 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.isis.applib.internal.collections._Lists;
+import org.apache.isis.applib.internal.exceptions._Exceptions;
 import org.apache.isis.applib.tree.TreeAdapter;
 import org.apache.isis.applib.tree.TreeNode;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -19,8 +20,12 @@ import 
org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ValueModel;
 import 
org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconAndTitlePanel;
 import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
 import org.apache.wicket.extensions.markup.html.repeater.tree.NestedTree;
+import org.apache.wicket.extensions.markup.html.repeater.tree.Node;
 import 
org.apache.wicket.extensions.markup.html.repeater.tree.theme.WindowsTheme;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
@@ -37,6 +42,9 @@ class IsisToWicketTreeAdapter {
        
        // -- RENDERING
        
+       /**
+        * Wicket's Tree Component implemented for Isis
+        */
        private static class EntityTree extends NestedTree<EntityModel> {
 
                private static final long serialVersionUID = 1L;
@@ -44,6 +52,9 @@ class IsisToWicketTreeAdapter {
                public EntityTree(String id, ITreeProvider<EntityModel> 
provider) {
                        super(id, provider);
                        add(new WindowsTheme()); // TODO not required if Isis 
provides it's own css styles for tree-nodes
+                       
+                       super.setEnabled(true);
+                       super.setVisible(true);
                }
                
                /**
@@ -52,7 +63,50 @@ class IsisToWicketTreeAdapter {
                @Override
                protected Component newContentComponent(String id, 
IModel<EntityModel> node) {
                        final EntityModel entityModel = node.getObject();
-                       return new EntityIconAndTitlePanel(id, entityModel);
+                       final Component entityIconAndTitle = new 
EntityIconAndTitlePanel(id, entityModel);
+                       return entityIconAndTitle;
+               }
+               
+               /**
+                * To hardcode Node's 
<pre>AjaxFallbackLink.isEnabledInHierarchy()->true</pre> we override this 
method.
+                */
+               @Override
+               public Component newNodeComponent(String id, 
IModel<EntityModel> model) {
+                       return new Node<EntityModel>(id, this, model)
+                       {
+                               private static final long serialVersionUID = 1L;
+
+                               @Override
+                               protected Component createContent(String id, 
IModel<EntityModel> model) {
+                                       return 
EntityTree.this.newContentComponent(id, model);
+                               }
+                               
+                               @Override
+                               protected MarkupContainer 
createJunctionComponent(String id) {
+                                       
+                                       final Node<EntityModel> self = this;
+                                       
+                                       return new AjaxFallbackLink<Void>(id) {
+                                               private static final long 
serialVersionUID = 1L;
+                                               
+                                               @Override
+                                               public void 
onClick(AjaxRequestTarget target) {
+                                                       toggle();
+                                               }
+
+                                               @Override
+                                               public boolean isEnabled() {
+                                                       return 
EntityTree.this.getProvider().hasChildren(self.getModelObject());
+                                               }
+                                               
+                                               @Override
+                                               public boolean 
isEnabledInHierarchy() {
+                                                       return true;
+                                               }
+                                               
+                                       };
+                               }
+                       };
                }
 
                
@@ -123,7 +177,9 @@ class IsisToWicketTreeAdapter {
                
        }
 
-       
+       /**
+        * Wicket's ITreeProvider implemented for Isis
+        */
        private static class EntityModelTreeProvider implements 
ITreeProvider<EntityModel> {
 
                private static final long serialVersionUID = 1L;
@@ -162,6 +218,10 @@ class IsisToWicketTreeAdapter {
                
        }
        
+       /**
+        * @param model
+        * @return Wicket's ITreeProvider
+        */
        private static ITreeProvider<EntityModel> 
toITreeProvider(ModelAbstract<ObjectAdapter> model) {
                
                final TreeNode tree = (TreeNode) model.getObject().getObject();
@@ -183,7 +243,8 @@ class IsisToWicketTreeAdapter {
 
                @Override
                protected EntityModel load() {
-                       return null; //TODO [ahuber] load model by id, possibly 
not required
+                       //FIXME load EntityModel by id
+                       throw _Exceptions.notImplemented();
                }
 
                /**
@@ -192,7 +253,8 @@ class IsisToWicketTreeAdapter {
                @Override
                public boolean equals(Object obj) {
                        if (obj instanceof EntityModel) {
-                               return ((EntityModel) 
obj).getObject().getOid().equals(id);
+                               final EntityModel other = (EntityModel) obj;
+                               return other.getObject().getOid().equals(id);
                        }
                        return false;
                }

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

Reply via email to