You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/12/13 11:31:46 UTC

[isis] branch master updated: ISIS-2227: for visisbility uses Wicket API directly instead of applying CSS classes

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


The following commit(s) were added to refs/heads/master by this push:
     new 1607690  ISIS-2227: for visisbility uses Wicket API directly instead of applying CSS classes
1607690 is described below

commit 160769048c1228d83c40012838964f2455f6cc1a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 13 12:31:34 2019 +0100

    ISIS-2227: for visisbility uses Wicket API directly instead of applying
    CSS classes
    
    also honors hints only after initialized
---
 .../CollectionContentsAsAjaxTablePanel.java        |  3 +--
 .../ajaxtable/IsisAjaxFallbackDataTable.java       | 11 ++++-----
 .../CollectionContentsMultipleViewsPanel.java      | 26 ++++++----------------
 .../selector/links/EntityLinksSelectorPanel.java   | 14 ++----------
 .../viewer/wicket/ui/panels/PanelAbstract.java     | 20 ++++++++++++++---
 5 files changed, 33 insertions(+), 41 deletions(-)

diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 1ef2447..a0bec7a 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -113,10 +113,9 @@ implements CollectionCountProvider {
 
         addPropertyColumnsIfRequired(columns);
 
-        final CollectionContentsSortableDataProvider dataProvider = new CollectionContentsSortableDataProvider(model);
+        val dataProvider = new CollectionContentsSortableDataProvider(model);
         dataTable = new IsisAjaxFallbackDataTable<>(ID_TABLE, columns, dataProvider, model.getPageSize(), toggleboxColumn);
         addOrReplace(dataTable);
-        dataTable.honourHints();
 
     }
 
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackDataTable.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackDataTable.java
index 51f10ce..84e183d 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackDataTable.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackDataTable.java
@@ -59,10 +59,10 @@ public class IsisAjaxFallbackDataTable<T, S> extends DataTable<T, S> {
     public IsisAjaxFallbackDataTable(
             final String id,
             final List<? extends IColumn<T, S>> columns,
-                    final CollectionContentsSortableDataProvider dataProvider,
-                    final int rowsPerPage,
-                    final ObjectAdapterToggleboxColumn toggleboxColumn)
-    {
+            final CollectionContentsSortableDataProvider dataProvider,
+            final int rowsPerPage,
+            final ObjectAdapterToggleboxColumn toggleboxColumn) {
+        
         super(id, columns, (ISortableDataProvider<T, S>)dataProvider, rowsPerPage);
         this.dataProvider = dataProvider;
         this.toggleboxColumn = toggleboxColumn;
@@ -75,6 +75,7 @@ public class IsisAjaxFallbackDataTable<T, S> extends DataTable<T, S> {
     protected void onInitialize() {
         super.onInitialize();
         buildGui();
+        honorHints();
     }
 
     private void buildGui() {
@@ -174,7 +175,7 @@ public class IsisAjaxFallbackDataTable<T, S> extends DataTable<T, S> {
 
     }
 
-    public void honourHints() {
+    private void honorHints() {
         headersToolbar.honourSortOrderHints();
         navigationToolbar.honourHints();
         honourPageNumberHint();
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
index c2eec73..d5a6e18 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple;
 
 import java.util.List;
 
-import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.IEvent;
@@ -38,19 +37,19 @@ import org.apache.isis.viewer.wicket.ui.components.collection.selector.Collectio
 import org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorPanel;
 import org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorProvider;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
-import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
-import org.apache.isis.viewer.wicket.ui.util.CssClassRemover;
 
 /**
- * Subscribes to events generated by {@link org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorPanel}, rendering the appropriate {@link ComponentType#COLLECTION_CONTENTS}
+ * Subscribes to events generated by 
+ * {@link org.apache.isis.viewer.wicket.ui.components.collection.selector.CollectionSelectorPanel}, 
+ * rendering the appropriate {@link ComponentType#COLLECTION_CONTENTS}
  * view for a backing {@link EntityCollectionModel}.
  */
 public class CollectionContentsMultipleViewsPanel
-extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider {
+extends PanelAbstract<EntityCollectionModel> 
+implements CollectionCountProvider {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String INVISIBLE_CLASS = "link-selector-panel-invisible";
     private static final int MAX_NUM_UNDERLYING_VIEWS = 10;
 
     private static final String UIHINT_VIEW = EntityCollectionModel.HINT_KEY_SELECTED_ITEM;
@@ -132,7 +131,7 @@ extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider
             Component component = underlyingViews[i];
             if(component != null) {
                 if(i != selectedIdx) {
-                    component.add(new CssClassAppender(INVISIBLE_CLASS));
+                    super.setVisible(component, /*visible*/ false);
                 } else {
                     selectedComponent = component;
                 }
@@ -169,7 +168,7 @@ extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider
                 continue;
             }
             final boolean isSelected = i == underlyingViewNum;
-            applyCssVisibility(component, isSelected);
+            setVisible(component, isSelected);
             component.setDefaultModel(isSelected? getModel(): dummyModel);
         }
 
@@ -181,17 +180,6 @@ extends PanelAbstract<EntityCollectionModel> implements CollectionCountProvider
         }
     }
 
-
-    protected static void applyCssVisibility(final Component component, final boolean visible) {
-        if(component == null) {
-            return;
-        }
-        AttributeModifier modifier = visible ? new CssClassRemover(INVISIBLE_CLASS) : new CssClassAppender(INVISIBLE_CLASS);
-        component.add(modifier);
-    }
-
-
-
     @Override
     public Integer getCount() {
         if(selectedComponent instanceof CollectionCountProvider) {
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
index 1253de0..e6ef83d 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
@@ -49,7 +49,6 @@ import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.Addi
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
-import org.apache.isis.viewer.wicket.ui.util.CssClassRemover;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import lombok.val;
@@ -70,7 +69,6 @@ public class EntityLinksSelectorPanel extends PanelAbstract<EntityModel>  {
 
     private static final long serialVersionUID = 1L;
 
-    private static final String INVISIBLE_CLASS = "link-selector-panel-invisible";
     private static final int MAX_NUM_UNDERLYING_VIEWS = 10;
 
     private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
@@ -225,7 +223,7 @@ public class EntityLinksSelectorPanel extends PanelAbstract<EntityModel>  {
                                     continue;
                                 }
                                 final boolean isSelected = i == underlyingViewNum;
-                                applyCssVisibility(component, isSelected);
+                                PanelAbstract.setVisible(component, isSelected);
                                 component.setDefaultModel(isSelected? model: dummyModel);
                             }
 
@@ -303,7 +301,7 @@ public class EntityLinksSelectorPanel extends PanelAbstract<EntityModel>  {
             Component component = underlyingViews[i];
             if(component != null) {
                 if(i != selected) {
-                    component.add(new CssClassAppender(INVISIBLE_CLASS));
+                    super.setVisible(component, /*visible*/ false);
                 } else {
                     selectedComponent = component;
                 }
@@ -335,14 +333,6 @@ public class EntityLinksSelectorPanel extends PanelAbstract<EntityModel>  {
         return model;
     }
 
-    protected static void applyCssVisibility(final Component component, final boolean visible) {
-        if(component == null) {
-            return;
-        }
-        AttributeModifier modifier = visible ? new CssClassRemover(INVISIBLE_CLASS) : new CssClassAppender(INVISIBLE_CLASS);
-        component.add(modifier);
-    }
-
     protected int honourViewHintElseDefault(final List<ComponentFactory> componentFactories, final IModel<?> model) {
         // honour hints ...
         final UiHintContainer hintContainer = getUiHintContainer();
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index 34111d7..271935e 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.viewer.wicket.ui.panels;
 
+import javax.annotation.Nullable;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
@@ -30,11 +32,14 @@ import org.apache.isis.viewer.wicket.ui.util.Components;
 /**
  * Convenience adapter for {@link Panel}s built up using {@link ComponentType}s.
  * @param <M>
+ * @apiNote using raw-types here, to not further complicate generic type constraints on PanelAbstract
  */
-public abstract class PanelAbstract<T extends IModel<?>> extends PanelBase/*<IModel<X>>*/ {
+@SuppressWarnings("rawtypes")
+public abstract class PanelAbstract<T extends IModel<?>> 
+extends PanelBase/*<IModel<X>>*/ {
 
     private static final long serialVersionUID = 1L;
-
+    
     private ComponentType componentType;
 
     public PanelAbstract(final ComponentType componentType) {
@@ -49,6 +54,7 @@ public abstract class PanelAbstract<T extends IModel<?>> extends PanelBase/*<IMo
         this(componentType.getWicketId(), model);
     }
 
+    @SuppressWarnings("unchecked")
     public PanelAbstract(final String id, final IModel<?> model) {
         super(id, model);
         this.componentType = ComponentType.lookup(id);
@@ -91,11 +97,19 @@ public abstract class PanelAbstract<T extends IModel<?>> extends PanelBase/*<IMo
         Components.permanentlyHide(this, ids);
     }
     
+    protected static void setVisible(@Nullable Component component, boolean visible) {
+        if(component == null) {
+            return;
+        }
+        component.setVisible(visible);
+    }
+    
     protected void addConfirmationDialogIfAreYouSureSemantics(
             Component component, 
             SemanticsOf semanticsOf) {
         
-        PanelUtil.addConfirmationDialogIfAreYouSureSemantics(super.getTranslationService(), component, semanticsOf);
+        PanelUtil.addConfirmationDialogIfAreYouSureSemantics(
+                super.getTranslationService(), component, semanticsOf);
     }