You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by sk...@apache.org on 2017/08/10 08:45:13 UTC

syncope git commit: [SYNCOPE-1190] Toggle menu header is now updated when elements get updated

Repository: syncope
Updated Branches:
  refs/heads/2_0_X 47da05657 -> 84a7b68e4


[SYNCOPE-1190] Toggle menu header is now updated when elements get updated


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

Branch: refs/heads/2_0_X
Commit: 84a7b68e4f8a2ea9e3fd99f5b01266b16d99a3fd
Parents: 47da056
Author: skylark17 <ma...@tirasa.net>
Authored: Thu Aug 10 10:44:51 2017 +0200
Committer: skylark17 <ma...@tirasa.net>
Committed: Thu Aug 10 10:44:51 2017 +0200

----------------------------------------------------------------------
 .../console/panels/AbstractLogsPanel.java       |   1 +
 .../panels/SecurityQuestionsModalPanel.java     |   6 ++
 .../client/console/panels/TogglePanel.java      | 105 +++++++++++++++++++
 .../policies/PolicyModalPanelBuilder.java       |   7 ++
 .../client/console/topology/Topology.java       |   2 +-
 .../console/topology/TopologyTogglePanel.java   |  18 +++-
 .../html/form/ActionLinksTogglePanel.java       |  72 ++-----------
 .../console/wizards/AjaxWizardBuilder.java      |   5 +
 8 files changed, 152 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
index fef5be5..5246509 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
@@ -74,6 +74,7 @@ public abstract class AbstractLogsPanel<T extends AbstractBaseBean> extends Pane
 
                     loggerTOs.hideLabel();
                     loggerTOs.setChoices(Arrays.asList(LoggerLevel.values()));
+                    loggerTOs.setNullValid(false);
                     loggerTOs.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 
                         private static final long serialVersionUID = -1107858522700306810L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
index a639035..883325d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
@@ -27,6 +27,7 @@ import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.Bas
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.html.form.Form;
 
 public class SecurityQuestionsModalPanel extends AbstractModalPanel<SecurityQuestionTO> {
@@ -62,6 +63,11 @@ public class SecurityQuestionsModalPanel extends AbstractModalPanel<SecurityQues
             }
 
             SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+
+            // [SYNCOPE-1190] - refresh toggle panel after update
+            send(pageRef.getPage(), Broadcast.BREADTH,
+                    new TogglePanel.ActionLinkToggleUpdateEventPayload<>(target, securityQuestionTO));
+
             modal.close(target);
         } catch (Exception e) {
             LOG.error("While creating or updating {}", securityQuestionTO, e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
index 62c2af4..ba9f9b1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
@@ -21,7 +21,29 @@ package org.apache.syncope.client.console.panels;
 import java.io.Serializable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.status.StatusBean;
+import org.apache.syncope.client.console.policies.PolicyRuleDirectoryPanel;
+import org.apache.syncope.client.console.reports.ReportletDirectoryPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.console.wizards.any.AnyWrapper;
+import org.apache.syncope.client.console.wizards.any.GroupWrapper;
+import org.apache.syncope.client.console.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
+import org.apache.syncope.common.lib.to.AccessTokenTO;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.ConnInstanceTO;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.SecurityQuestionTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
+import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxEventBehavior;
@@ -29,6 +51,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.ResourceModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -152,4 +175,86 @@ public abstract class TogglePanel<T extends Serializable> extends WizardMgtPanel
             status = Status.INACTIVE;
         }
     }
+
+    protected String getHeader(final T modelObject) {
+        final String headerValue;
+        if (modelObject == null) {
+            headerValue = new ResourceModel("actions", StringUtils.EMPTY).getObject();
+        } else if (modelObject instanceof UserTO) {
+            headerValue = ((UserTO) modelObject).getUsername();
+        } else if (modelObject instanceof GroupTO) {
+            headerValue = ((GroupTO) modelObject).getName();
+        } else if (modelObject instanceof UserWrapper) {
+            headerValue = UserWrapper.class.cast(modelObject).getInnerObject().getUsername();
+        } else if (modelObject instanceof GroupWrapper) {
+            headerValue = GroupWrapper.class.cast(modelObject).getInnerObject().getName();
+        } else if (modelObject instanceof AnyWrapper) {
+            AnyTO anyWrapper = AnyWrapper.class.cast(modelObject).getInnerObject();
+            if (anyWrapper instanceof AnyObjectTO) {
+                headerValue = ((AnyObjectTO) anyWrapper).getName();
+            } else {
+                headerValue = new ResourceModel("actions", StringUtils.EMPTY).getObject();
+            }
+        } else if (modelObject instanceof ConnInstanceTO) {
+            headerValue = ConnInstanceTO.class.cast(modelObject).getDisplayName();
+        } else if (modelObject instanceof ReportTO) {
+            headerValue = ((ReportTO) modelObject).getName();
+        } else if (modelObject instanceof AnyObjectTO) {
+            headerValue = ((AnyObjectTO) modelObject).getName();
+        } else if (modelObject instanceof AttrTO) {
+            headerValue = ((AttrTO) modelObject).getSchema();
+        } else if (modelObject instanceof AbstractPolicyTO) {
+            headerValue = ((AbstractPolicyTO) modelObject).getDescription();
+        } else if (modelObject instanceof SecurityQuestionTO) {
+            headerValue = ((SecurityQuestionTO) modelObject).getContent();
+        } else if (modelObject instanceof AccessTokenTO) {
+            headerValue = ((AccessTokenTO) modelObject).getOwner();
+        } else if (modelObject instanceof ExecTO) {
+            headerValue = ((ExecTO) modelObject).getKey();
+        } else if (modelObject instanceof WorkflowDefinitionTO) {
+            headerValue = ((WorkflowDefinitionTO) modelObject).getName();
+        } else if (modelObject instanceof SchedTaskTO) {
+            headerValue = ((SchedTaskTO) modelObject).getName();
+        } else if (modelObject instanceof WorkflowFormTO) {
+            headerValue = ((WorkflowFormTO) modelObject).getKey();
+        } else if (modelObject instanceof EntityTO) {
+            headerValue = ((EntityTO) modelObject).getKey();
+        } else if (modelObject instanceof StatusBean) {
+            headerValue = ((StatusBean) modelObject).getResource();
+        } else if (modelObject instanceof PolicyRuleDirectoryPanel.PolicyRuleWrapper) {
+            headerValue = ((PolicyRuleDirectoryPanel.PolicyRuleWrapper) modelObject).getName();
+        } else if (modelObject instanceof PolicyRuleDirectoryPanel.PolicyRuleWrapper) {
+            headerValue = ((PolicyRuleDirectoryPanel.PolicyRuleWrapper) modelObject).getName();
+        } else if (modelObject instanceof ReportletDirectoryPanel.ReportletWrapper) {
+            headerValue = ((ReportletDirectoryPanel.ReportletWrapper) modelObject).getName();
+        } else if (modelObject instanceof JobTO) {
+            headerValue = ((JobTO) modelObject).getRefKey() == null
+                    ? ((JobTO) modelObject).getRefDesc() : ((JobTO) modelObject).getRefKey();
+        } else {
+            headerValue = new ResourceModel("actions", StringUtils.EMPTY).getObject();
+        }
+
+        return headerValue;
+    }
+
+    public static class ActionLinkToggleUpdateEventPayload<T> {
+
+        private final AjaxRequestTarget target;
+
+        private final T modelObj;
+
+        public ActionLinkToggleUpdateEventPayload(final AjaxRequestTarget target, final T modelObj) {
+            this.target = target;
+            this.modelObj = modelObj;
+        }
+
+        public AjaxRequestTarget getTarget() {
+            return target;
+        }
+
+        public T getModelObj() {
+            return modelObj;
+        }
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
index 7507d04..608dcca 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
@@ -27,6 +27,7 @@ import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.panels.TogglePanel;
 import org.apache.syncope.client.console.panels.WizardModalPanel;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
@@ -45,6 +46,7 @@ import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
@@ -161,6 +163,11 @@ public class PolicyModalPanelBuilder<T extends AbstractPolicyTO> extends Abstrac
                     restClient.updatePolicy(policyTO);
                 }
                 SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+
+                // [SYNCOPE-1190] - refresh toggle panel after update
+                send(pageRef.getPage(), Broadcast.BREADTH,
+                        new TogglePanel.ActionLinkToggleUpdateEventPayload<>(target, policyTO));
+
                 Profile.this.modal.close(target);
             } catch (Exception e) {
                 LOG.error("While creating/updating policy", e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/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 606a32d..99a80ba 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
@@ -165,7 +165,7 @@ public class Topology extends BasePage {
 
         body.add(new TopologyWebSocketBehavior());
 
-        togglePanel = new TopologyTogglePanel("toggle", getPageReference());
+        togglePanel = new TopologyTogglePanel<>("toggle", getPageReference());
         body.add(togglePanel);
 
         // -----------------------------------------

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
index 8b6b1a5..57afa04 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
@@ -53,6 +53,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
 import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -63,7 +64,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 
-public class TopologyTogglePanel extends TogglePanel<Serializable> {
+public class TopologyTogglePanel<T extends Serializable> extends TogglePanel<Serializable> {
 
     private static final long serialVersionUID = -2025535531121434056L;
 
@@ -648,4 +649,19 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
         }
 
     }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public void onEvent(final IEvent<?> event) {
+        if (event.getPayload() instanceof ActionLinkToggleUpdateEventPayload) {
+            String header = getHeader((T) ActionLinkToggleUpdateEventPayload.class.cast(event.
+                    getPayload()).getModelObj());
+            if (StringUtils.isNotBlank(header)) {
+                setHeader(ActionLinkToggleUpdateEventPayload.class.cast(event.getPayload()).
+                        getTarget(), StringUtils.abbreviate(header, 25));
+            }
+        }
+
+        super.onEvent(event);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index fb8ab83..16b79f5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -22,31 +22,13 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import java.io.Serializable;
 import java.util.UUID;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.TogglePanel;
-import org.apache.syncope.client.console.policies.PolicyRuleDirectoryPanel.PolicyRuleWrapper;
-import org.apache.syncope.client.console.reports.ReportletDirectoryPanel.ReportletWrapper;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.ReportTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.to.AttrTO;
-import org.apache.syncope.common.lib.to.SecurityQuestionTO;
-import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
-import org.apache.syncope.common.lib.to.AccessTokenTO;
-import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.JobTO;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
-import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.model.ResourceModel;
 
 public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<Serializable> {
 
@@ -69,50 +51,8 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
 
     public void toggleWithContent(
             final AjaxRequestTarget target, final ActionsPanel<T> actionsPanel, final T modelObject) {
-        final String header;
-        if (modelObject == null) {
-            header = new ResourceModel("actions", StringUtils.EMPTY).getObject();
-        } else if (modelObject instanceof UserTO) {
-            header = ((UserTO) modelObject).getUsername();
-        } else if (modelObject instanceof GroupTO) {
-            header = ((GroupTO) modelObject).getName();
-        } else if (modelObject instanceof ReportTO) {
-            header = ((ReportTO) modelObject).getName();
-        } else if (modelObject instanceof AnyObjectTO) {
-            header = ((AnyObjectTO) modelObject).getName();
-        } else if (modelObject instanceof AttrTO) {
-            header = ((AttrTO) modelObject).getSchema();
-        } else if (modelObject instanceof AbstractPolicyTO) {
-            header = ((AbstractPolicyTO) modelObject).getDescription();
-        } else if (modelObject instanceof SecurityQuestionTO) {
-            header = ((SecurityQuestionTO) modelObject).getContent();
-        } else if (modelObject instanceof AccessTokenTO) {
-            header = ((AccessTokenTO) modelObject).getOwner();
-        } else if (modelObject instanceof ExecTO) {
-            header = ((ExecTO) modelObject).getKey();
-        } else if (modelObject instanceof WorkflowDefinitionTO) {
-            header = ((WorkflowDefinitionTO) modelObject).getName();
-        } else if (modelObject instanceof SchedTaskTO) {
-            header = ((SchedTaskTO) modelObject).getName();
-        } else if (modelObject instanceof WorkflowFormTO) {
-            header = ((WorkflowFormTO) modelObject).getKey();
-        } else if (modelObject instanceof EntityTO) {
-            header = ((EntityTO) modelObject).getKey();
-        } else if (modelObject instanceof StatusBean) {
-            header = ((StatusBean) modelObject).getResource();
-        } else if (modelObject instanceof PolicyRuleWrapper) {
-            header = ((PolicyRuleWrapper) modelObject).getName();
-        } else if (modelObject instanceof PolicyRuleWrapper) {
-            header = ((PolicyRuleWrapper) modelObject).getName();
-        } else if (modelObject instanceof ReportletWrapper) {
-            header = ((ReportletWrapper) modelObject).getName();
-        } else if (modelObject instanceof JobTO) {
-            header = ((JobTO) modelObject).getRefKey() == null
-                    ? ((JobTO) modelObject).getRefDesc() : ((JobTO) modelObject).getRefKey();
-        } else {
-            header = new ResourceModel("actions", StringUtils.EMPTY).getObject();
-        }
-        setHeader(target, StringUtils.abbreviate(header, 25));
+
+        setHeader(target, StringUtils.abbreviate(getHeader(modelObject), 25));
 
         modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
@@ -139,9 +79,17 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void onEvent(final IEvent<?> event) {
         if (event.getPayload() instanceof ActionLinkToggleCloseEventPayload) {
             close(ActionLinkToggleCloseEventPayload.class.cast(event.getPayload()).getTarget());
+        } else if (event.getPayload() instanceof ActionLinkToggleUpdateEventPayload) {
+            String header = getHeader((T) ActionLinkToggleUpdateEventPayload.class.cast(event.
+                    getPayload()).getModelObj());
+            if (StringUtils.isNotBlank(header)) {
+                setHeader(ActionLinkToggleUpdateEventPayload.class.cast(event.getPayload()).getTarget(),
+                        StringUtils.abbreviate(header, 25));
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/84a7b68e/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
index 32514ad..f0896f1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import org.apache.syncope.client.console.panels.TogglePanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -120,6 +121,10 @@ public abstract class AjaxWizardBuilder<T extends Serializable> extends Abstract
                     send(pageRef.getPage(), Broadcast.BUBBLE, payload);
                 }
 
+                // [SYNCOPE-1190] - refresh toggle panel after update
+                send(pageRef.getPage(), Broadcast.BREADTH,
+                        new TogglePanel.ActionLinkToggleUpdateEventPayload<>(target, modelObject));
+
                 return res;
             }
         }.setEventSink(eventSink).addOuterObject(outerObjects);