You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/08/19 12:04:41 UTC

syncope git commit: [SYNCOPE-156] notification panel refresh working with topology + spinner disable working with zoom actions

Repository: syncope
Updated Branches:
  refs/heads/master 9abd35a29 -> e0d493db3


[SYNCOPE-156] notification panel refresh working with topology + spinner disable working with zoom actions


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/e0d493db
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e0d493db
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e0d493db

Branch: refs/heads/master
Commit: e0d493db3b78371efb417d31a3b2b8d7079f1857
Parents: 9abd35a
Author: fmartelli <fa...@gmail.com>
Authored: Wed Aug 19 12:04:23 2015 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Wed Aug 19 12:04:23 2015 +0200

----------------------------------------------------------------------
 .../syncope/client/console/pages/BasePage.java  |   5 +-
 .../console/panels/NotificationPanel.java       |   2 +-
 .../client/console/panels/ResourceModal.java    |   1 -
 .../client/console/topology/Topology.java       |   1 +
 .../console/topology/TopologyNodePanel.java     |  10 +-
 .../markup/html/form/ActionLinksPanel.java      | 192 ++++++++++++++++++-
 .../META-INF/resources/css/syncopeConsole.css   |   4 +
 .../syncope/client/console/pages/BasePage.html  |   2 +-
 8 files changed, 204 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index a6e737b..d82c247 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -163,7 +163,10 @@ public class BasePage extends AbstractBasePage implements IAjaxIndicatorAware {
 
             @Override
             public void onClose(final AjaxRequestTarget target) {
-                target.add(container);
+                if (container != null) {
+                    target.add(container);
+                }
+
                 if (isModalResult()) {
                     info(getString(Constants.OPERATION_SUCCEEDED));
                     feedbackPanel.refresh(target);

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java
index 3098f5a..e9693e3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/NotificationPanel.java
@@ -53,7 +53,7 @@ public class NotificationPanel extends FeedbackPanel {
         setOutputMarkupId(true);
 
         this.add(new AttributeModifier("class", new Model<>("alert")));
-        this.add(new AttributeModifier("style", new Model<>("opacity: 0;")));
+        this.add(new AttributeModifier("style", new Model<>("opacity: 1; display: none;")));
     }
 
     private String getCSSClass(final int level) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
index 345d2e7..6709bb8 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
@@ -215,7 +215,6 @@ public class ResourceModal extends AbstractResourceModal {
             }
 
             @Override
-
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
                 feedbackPanel.refresh(target);
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
index 81ef360..409a16b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
@@ -154,6 +154,7 @@ public class Topology extends BasePage {
         // Add Zoom panel
         // -----------------------------------------
         final ActionLinksPanel.Builder<Serializable> zoomActionPanel = ActionLinksPanel.builder(getPageReference());
+        zoomActionPanel.setDisableIndicator(true);
 
         zoomActionPanel.add(new ActionLink<Serializable>() {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
index 3dc7c48..7756a25 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.topology;
 import java.text.MessageFormat;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.ConnectorModal;
 import org.apache.syncope.client.console.panels.ResourceModal;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
@@ -32,6 +33,7 @@ import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.IAjaxIndicatorAware;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
@@ -42,7 +44,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class TopologyNodePanel extends Panel {
+public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
 
     private static final long serialVersionUID = -8775095410207013913L;
 
@@ -106,6 +108,7 @@ public class TopologyNodePanel extends Panel {
         this.setMarkupId(node.getDisplayName());
 
         this.modal = modal;
+        BasePage.class.cast(pageRef.getPage()).setWindowClosedCallback(modal, null);
     }
 
     private Fragment getSyncopeFragment() {
@@ -234,4 +237,9 @@ public class TopologyNodePanel extends Panel {
 
         return fragment;
     }
+
+    @Override
+    public String getAjaxIndicatorMarkupId() {
+        return "veil";
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 868f6a2..22ff2e2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.IndicatingOnConfirmAjaxLink;
@@ -46,6 +47,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
 
     private final IModel<T> model;
 
+    private boolean disableIndicator = false;
+
     private ActionLinksPanel(final String componentId, final IModel<T> model, final PageReference pageRef) {
         super(componentId, model);
         this.model = model;
@@ -106,6 +109,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -120,6 +128,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -134,6 +147,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -148,6 +166,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -162,6 +185,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -176,6 +204,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -190,6 +223,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -204,6 +242,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -218,6 +261,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -232,6 +280,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 });
                 break;
 
@@ -246,6 +299,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -260,6 +318,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -274,6 +337,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -288,6 +356,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -302,6 +375,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -316,6 +394,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -330,6 +413,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -344,6 +432,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
 
                 break;
@@ -359,6 +452,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
 
                 break;
@@ -374,6 +472,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -388,6 +491,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -402,6 +510,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -416,6 +529,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -430,22 +548,31 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
             case UNLINK:
                 fragment = new Fragment("panelUnlink", "fragmentUnlink", this);
 
-                fragment.addOrReplace(
-                        new IndicatingOnConfirmAjaxLink<Void>("unlinkLink", pageRef, "confirmUnlink") {
+                fragment.addOrReplace(new IndicatingOnConfirmAjaxLink<Void>("unlinkLink", pageRef, "confirmUnlink") {
 
-                            private static final long serialVersionUID = -6957616042924610293L;
+                    private static final long serialVersionUID = -6957616042924610293L;
 
-                            @Override
-                            protected void onClickInternal(final AjaxRequestTarget target) {
-                                link.onClick(target, model.getObject());
-                            }
-                        }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+                    @Override
+                    protected void onClickInternal(final AjaxRequestTarget target) {
+                        link.onClick(target, model.getObject());
+                    }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
+                }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
             case LINK:
@@ -459,6 +586,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -474,6 +606,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                             protected void onClickInternal(final AjaxRequestTarget target) {
                                 link.onClick(target, model.getObject());
                             }
+
+                            @Override
+                            public String getAjaxIndicatorMarkupId() {
+                                return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                            }
                         }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -488,6 +625,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -503,6 +645,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                             protected void onClickInternal(final AjaxRequestTarget target) {
                                 link.onClick(target, model.getObject());
                             }
+
+                            @Override
+                            public String getAjaxIndicatorMarkupId() {
+                                return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                            }
                         }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
 
@@ -517,6 +664,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
             case ZOOM_IN:
@@ -530,6 +682,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
             case ZOOM_OUT:
@@ -543,6 +700,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     protected void onClickInternal(final AjaxRequestTarget target) {
                         link.onClick(target, model.getObject());
                     }
+
+                    @Override
+                    public String getAjaxIndicatorMarkupId() {
+                        return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                    }
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
             default:
@@ -678,6 +840,11 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
         }
     }
 
+    private ActionLinksPanel<T> setDisableIndicator(boolean disableIndicator) {
+        this.disableIndicator = disableIndicator;
+        return this;
+    }
+
     public static <T extends Serializable> Builder<T> builder(final PageReference pageRef) {
         return new Builder<T>(pageRef);
     }
@@ -695,10 +862,17 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
 
         private final PageReference pageRef;
 
+        private boolean disableIndicator = false;
+
         private Builder(final PageReference pageRef) {
             this.pageRef = pageRef;
         }
 
+        public Builder<T> setDisableIndicator(boolean disableIndicator) {
+            this.disableIndicator = disableIndicator;
+            return this;
+        }
+
         public Builder<T> add(
                 final ActionLink<T> link,
                 final ActionLink.ActionType type,
@@ -755,6 +929,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                     ? new ActionLinksPanel<T>(id, new Model<T>(), this.pageRef)
                     : new ActionLinksPanel<T>(id, new Model<T>(modelObject), this.pageRef);
 
+            panel.setDisableIndicator(disableIndicator);
+
             for (Entry<ActionLink.ActionType, Triple<ActionLink<T>, String, Boolean>> action : actions.entrySet()) {
                 panel.add(
                         action.getValue().getLeft(),

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index 484382e..d0b28ba 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -187,3 +187,7 @@ a.help span a {
   color: #463;
   text-decoration: none;
 }
+
+div.basepage-content{
+  margin-top: 55px;
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/e0d493db/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 3a874b8..857ae9c 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -135,7 +135,7 @@ under the License.
         </section>
       </aside>
 
-      <div class="content-wrapper">
+      <div class="content-wrapper basepage-content">
         <div wicket:id="feedback" role="alert"/>
 
         <wicket:child />