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 2017/05/05 22:22:51 UTC

[05/10] syncope git commit: [SYNCOPE-1047] Replaces ActionLinksPanel with TogglePanel

http://git-wip-us.apache.org/repos/asf/syncope/blob/2e7e2cee/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
deleted file mode 100644
index c9a632d..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ /dev/null
@@ -1,1459 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.wicket.markup.html.form;
-
-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.markup.html.link.VeilPopupSettings;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-
-/**
- * This empty class must exist because there not seems to be alternative to provide specialized HTML for edit links.
- *
- * @param <T> model object type.
- */
-public final class ActionLinksPanel<T extends Serializable> extends Panel {
-
-    private static final long serialVersionUID = 322966537010107771L;
-
-    private final IModel<T> model;
-
-    private boolean disableIndicator = false;
-
-    private ActionLinksPanel(final String componentId, final IModel<T> model) {
-        super(componentId, model);
-        this.model = model;
-
-        setOutputMarkupId(true);
-
-        super.add(new Fragment("panelClaim", "emptyFragment", this));
-        super.add(new Fragment("panelManageResources", "emptyFragment", this));
-        super.add(new Fragment("panelManageUsers", "emptyFragment", this));
-        super.add(new Fragment("panelManageGroups", "emptyFragment", this));
-        super.add(new Fragment("panelMapping", "emptyFragment", this));
-        super.add(new Fragment("panelMustChangePassword", "emptyFragment", this));
-        super.add(new Fragment("panelSetLatestSyncToken", "emptyFragment", this));
-        super.add(new Fragment("panelRemoveSyncToken", "emptyFragment", this));
-        super.add(new Fragment("panelClone", "emptyFragment", this));
-        super.add(new Fragment("panelCreate", "emptyFragment", this));
-        super.add(new Fragment("panelTemplate", "emptyFragment", this));
-        super.add(new Fragment("panelEdit", "emptyFragment", this));
-        super.add(new Fragment("panelTypeExtensions", "emptyFragment", this));
-        super.add(new Fragment("panelFoEdit", "emptyFragment", this));
-        super.add(new Fragment("panelHtml", "emptyFragment", this));
-        super.add(new Fragment("panelText", "emptyFragment", this));
-        super.add(new Fragment("panelCompose", "emptyFragment", this));
-        super.add(new Fragment("panelLayoutEdit", "emptyFragment", this));
-        super.add(new Fragment("panelReset", "emptyFragment", this));
-        super.add(new Fragment("panelEnable", "emptyFragment", this));
-        super.add(new Fragment("panelNotFound", "emptyFragment", this));
-        super.add(new Fragment("panelView", "emptyFragment", this));
-        super.add(new Fragment("panelMembers", "emptyFragment", this));
-        super.add(new Fragment("panelSearch", "emptyFragment", this));
-        super.add(new Fragment("panelDelete", "emptyFragment", this));
-        super.add(new Fragment("panelExecute", "emptyFragment", this));
-        super.add(new Fragment("panelPasswordReset", "emptyFragment", this));
-        super.add(new Fragment("panelDryRun", "emptyFragment", this));
-        super.add(new Fragment("panelSelect", "emptyFragment", this));
-        super.add(new Fragment("panelClose", "emptyFragment", this));
-        super.add(new Fragment("panelExport", "emptyFragment", this));
-        super.add(new Fragment("panelExportCSV", "emptyFragment", this));
-        super.add(new Fragment("panelExportHTML", "emptyFragment", this));
-        super.add(new Fragment("panelExportPDF", "emptyFragment", this));
-        super.add(new Fragment("panelExportRTF", "emptyFragment", this));
-        super.add(new Fragment("panelExportXML", "emptyFragment", this));
-        super.add(new Fragment("panelSuspend", "emptyFragment", this));
-        super.add(new Fragment("panelReactivate", "emptyFragment", this));
-        super.add(new Fragment("panelReload", "emptyFragment", this));
-        super.add(new Fragment("panelChangeView", "emptyFragment", this));
-        super.add(new Fragment("panelUnlink", "emptyFragment", this));
-        super.add(new Fragment("panelLink", "emptyFragment", this));
-        super.add(new Fragment("panelUnassign", "emptyFragment", this));
-        super.add(new Fragment("panelAssign", "emptyFragment", this));
-        super.add(new Fragment("panelDeprovision", "emptyFragment", this));
-        super.add(new Fragment("panelProvision", "emptyFragment", this));
-        super.add(new Fragment("panelDeprovisionMembers", "emptyFragment", this));
-        super.add(new Fragment("panelProvisionMembers", "emptyFragment", this));
-        super.add(new Fragment("panelPropagationTasks", "emptyFragment", this));
-        super.add(new Fragment("panelNotificationTasks", "emptyFragment", this));
-        super.add(new Fragment("panelZoomIn", "emptyFragment", this));
-        super.add(new Fragment("panelZoomOut", "emptyFragment", this));
-        super.add(new Fragment("panelWorkflowModeler", "emptyFragment", this));
-    }
-
-    public ActionLinksPanel<T> add(
-            final ActionLink<T> link,
-            final ActionLink.ActionType type,
-            final String entitlements,
-            final boolean enabled) {
-
-        Fragment fragment = null;
-
-        switch (type) {
-
-            case CLAIM:
-                fragment = new Fragment("panelClaim", "fragmentClaim", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("claimLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MANAGE_RESOURCES:
-                fragment = new Fragment("panelManageResources", "fragmentManageResources", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("manageResourcesLink") {
-
-                    private static final long serialVersionUID = -6957616042924610291L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MANAGE_USERS:
-                fragment = new Fragment("panelManageUsers", "fragmentManageUsers", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("manageUsersLink") {
-
-                    private static final long serialVersionUID = -6957616042924610292L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MANAGE_GROUPS:
-                fragment = new Fragment("panelManageGroups", "fragmentManageGroups", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("manageGroupsLink") {
-
-                    private static final long serialVersionUID = -6957616042924610293L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MAPPING:
-                fragment = new Fragment("panelMapping", "fragmentMapping", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("mappingLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MUSTCHANGEPASSWORD:
-                fragment = new Fragment("panelMustChangePassword", "fragmentMustChangePassword", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("MustChangePasswordLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case SET_LATEST_SYNC_TOKEN:
-                fragment = new Fragment("panelSetLatestSyncToken", "fragmentSetLatestSyncToken", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("setLatestSyncTokenLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case REMOVE_SYNC_TOKEN:
-                fragment = new Fragment("panelRemoveSyncToken", "fragmentRemoveSyncToken", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("removeSyncTokenLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case CLONE:
-                fragment = new Fragment("panelClone", "fragmentClone", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("cloneLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case CREATE:
-                fragment = new Fragment("panelCreate", "fragmentCreate", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("createLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case RESET:
-                fragment = new Fragment("panelReset", "fragmentReset", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("resetLink") {
-
-                    private static final long serialVersionUID = -6957616042924610290L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case TEMPLATE:
-                fragment = new Fragment("panelTemplate", "fragmentTemplate", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("templateLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EDIT:
-                fragment = new Fragment("panelEdit", "fragmentEdit", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("editLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case TYPE_EXTENSIONS:
-                fragment = new Fragment("panelTypeExtensions", "fragmentTypeExtensions", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("typeExtensionsLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case FO_EDIT:
-                fragment = new Fragment("panelFoEdit", "fragmentFoEdit", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("foEditLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case HTML:
-                fragment = new Fragment("panelHtml", "fragmentHtml", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("htmlLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case TEXT:
-                fragment = new Fragment("panelText", "fragmentText", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("textLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case COMPOSE:
-                fragment = new Fragment("panelCompose", "fragmentCompose", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("composeLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case LAYOUT_EDIT:
-                fragment = new Fragment("panelLayoutEdit", "fragmentLayoutEdit", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("layoutEditLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case ENABLE:
-                fragment = new Fragment("panelEnable", "fragmentEnable", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("enableLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case NOT_FOND:
-                fragment = new Fragment("panelNotFound", "fragmentNotFound", this);
-                break;
-
-            case VIEW:
-                fragment = new Fragment("panelView", "fragmentView", this);
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("viewLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case MEMBERS:
-                fragment = new Fragment("panelMembers", "fragmentMembers", this);
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("membersLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case SEARCH:
-                fragment = new Fragment("panelSearch", "fragmentSearch", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("searchLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXECUTE:
-                fragment = new Fragment("panelExecute", "fragmentExecute", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("executeLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case PASSWORD_RESET:
-                fragment = new Fragment("panelPasswordReset", "fragmentPasswordReset", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("passwordResetLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case DRYRUN:
-                fragment = new Fragment("panelDryRun", "fragmentDryRun", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("dryRunLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case DELETE:
-                fragment = new Fragment("panelDelete", "fragmentDelete", this);
-
-                fragment.addOrReplace(new IndicatingOnConfirmAjaxLink<Void>("deleteLink", enabled) {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }).setVisible(link.isEnabled(model.getObject()));
-
-                break;
-
-            case SELECT:
-                fragment = new Fragment("panelSelect", "fragmentSelect", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("selectLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }).setVisible(link.isEnabled(model.getObject()));
-
-                break;
-            case CLOSE:
-                fragment = new Fragment("panelClose", "fragmentClose", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("closeLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }).setVisible(link.isEnabled(model.getObject()));
-
-                break;
-
-            case EXPORT:
-                fragment = new Fragment("panelExport", "fragmentExport", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXPORT_CSV:
-                fragment = new Fragment("panelExportCSV", "fragmentExportCSV", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportCSVLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXPORT_HTML:
-                fragment = new Fragment("panelExportHTML", "fragmentExportHTML", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportHTMLLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXPORT_PDF:
-                fragment = new Fragment("panelExportPDF", "fragmentExportPDF", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportPDFLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXPORT_RTF:
-                fragment = new Fragment("panelExportRTF", "fragmentExportRTF", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportRTFLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case EXPORT_XML:
-                fragment = new Fragment("panelExportXML", "fragmentExportXML", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("exportXMLLink") {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case SUSPEND:
-                fragment = new Fragment("panelSuspend", "fragmentSuspend", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("suspendLink") {
-
-                    private static final long serialVersionUID = -6957616042924610291L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case REACTIVATE:
-                fragment = new Fragment("panelReactivate", "fragmentReactivate", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("reactivateLink") {
-
-                    private static final long serialVersionUID = -6957616042924610292L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case RELOAD:
-                fragment = new Fragment("panelReload", "fragmentReload", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("reloadLink") {
-
-                    private static final long serialVersionUID = -6957616042924610293L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case CHANGE_VIEW:
-                fragment = new Fragment("panelChangeView", "fragmentChangeView", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("changeViewLink") {
-
-                    private static final long serialVersionUID = -6957616042924610292L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case UNLINK:
-                fragment = new Fragment("panelUnlink", "fragmentUnlink", this);
-
-                fragment.addOrReplace(new IndicatingOnConfirmAjaxLink<Void>("unlinkLink", "confirmUnlink", enabled) {
-
-                    private static final long serialVersionUID = -6957616042924610293L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case LINK:
-                fragment = new Fragment("panelLink", "fragmentLink", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("linkLink") {
-
-                    private static final long serialVersionUID = -6957616042924610303L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case UNASSIGN:
-                fragment = new Fragment("panelUnassign", "fragmentUnassign", this);
-
-                fragment.addOrReplace(
-                        new IndicatingOnConfirmAjaxLink<Void>("unassignLink", "confirmUnassign", enabled) {
-
-                            private static final long serialVersionUID = -6957616042924610294L;
-
-                            @Override
-                            public void onClick(final AjaxRequestTarget target) {
-                                link.onClick(target, model.getObject());
-                            }
-
-                            @Override
-                            public String getAjaxIndicatorMarkupId() {
-                                return disableIndicator || !link.isIndicatorEnabled()
-                                        ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                            }
-                        }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case ASSIGN:
-                fragment = new Fragment("panelAssign", "fragmentAssign", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("assignLink") {
-
-                    private static final long serialVersionUID = -6957616042924610304L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case DEPROVISION:
-                fragment = new Fragment("panelDeprovision", "fragmentDeprovision", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("deprovisionLink") {
-
-                    private static final long serialVersionUID = -6957616042924610295L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case PROVISION:
-                fragment = new Fragment("panelProvision", "fragmentProvision", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("provisionLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case DEPROVISION_MEMBERS:
-                fragment = new Fragment("panelDeprovisionMembers", "fragmentDeprovisionMembers", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("deprovisionMembersLink") {
-
-                    private static final long serialVersionUID = -6957616042924610295L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case PROVISION_MEMBERS:
-                fragment = new Fragment("panelProvisionMembers", "fragmentProvisionMembers", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("provisionMembersLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case PROPAGATION_TASKS:
-                fragment = new Fragment("panelPropagationTasks", "fragmentPropagationTasks", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("propagationTasksLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case NOTIFICATION_TASKS:
-                fragment = new Fragment("panelNotificationTasks", "fragmentNotificationTasks", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("notificationTasksLink") {
-
-                    private static final long serialVersionUID = -1876519166660008562L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case ZOOM_IN:
-                fragment = new Fragment("panelZoomIn", "fragmentZoomIn", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("zoomInLink") {
-
-                    private static final long serialVersionUID = -6957616042924610305L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case ZOOM_OUT:
-                fragment = new Fragment("panelZoomOut", "fragmentZoomOut", this);
-
-                fragment.addOrReplace(new IndicatingAjaxLink<Void>("zoomOutLink") {
-
-                    private static final long serialVersionUID = -6957616042924610305L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
-
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            case WORKFLOW_MODELER:
-                fragment = new Fragment("panelWorkflowModeler", "fragmentWorkflowModeler", this);
-
-                fragment.addOrReplace(new BookmarkablePageLink<>(
-                        "workflowModelerLink", link.getPageClass(), link.getPageParameters()).
-                        setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800)).
-                        setVisible(link.isEnabled(model.getObject())));
-                break;
-
-            default:
-            // do nothing
-        }
-
-        if (fragment != null) {
-            fragment.setEnabled(enabled);
-            if (StringUtils.isNotBlank(entitlements)) {
-                MetaDataRoleAuthorizationStrategy.authorize(fragment, RENDER, entitlements);
-            }
-            super.addOrReplace(fragment);
-        }
-
-        return this;
-    }
-
-    public void remove(final ActionLink.ActionType type) {
-        switch (type) {
-            case CLAIM:
-                super.addOrReplace(new Fragment("panelClaim", "emptyFragment", this));
-                break;
-
-            case MANAGE_RESOURCES:
-                super.addOrReplace(new Fragment("panelManageResources", "emptyFragment", this));
-                break;
-
-            case MANAGE_USERS:
-                super.addOrReplace(new Fragment("panelManageUsers", "emptyFragment", this));
-                break;
-
-            case MANAGE_GROUPS:
-                super.addOrReplace(new Fragment("panelManageGroups", "emptyFragment", this));
-                break;
-
-            case MAPPING:
-                super.addOrReplace(new Fragment("panelMapping", "emptyFragment", this));
-                break;
-
-            case MUSTCHANGEPASSWORD:
-                super.addOrReplace(new Fragment("panelMustChangePassword", "emptyFragment", this));
-                break;
-
-            case SET_LATEST_SYNC_TOKEN:
-                super.addOrReplace(new Fragment("panelSetLatestSyncToken", "emptyFragment", this));
-                break;
-
-            case REMOVE_SYNC_TOKEN:
-                super.addOrReplace(new Fragment("panelRemoveSyncToken", "emptyFragment", this));
-                break;
-
-            case CLONE:
-                super.addOrReplace(new Fragment("panelClone", "emptyFragment", this));
-                break;
-
-            case CREATE:
-                super.addOrReplace(new Fragment("panelCreate", "emptyFragment", this));
-                break;
-
-            case COMPOSE:
-                super.addOrReplace(new Fragment("panelCompose", "emptyFragment", this));
-                break;
-
-            case TEMPLATE:
-                super.addOrReplace(new Fragment("panelTemplate", "emptyFragment", this));
-                break;
-
-            case EDIT:
-                super.addOrReplace(new Fragment("panelEdit", "emptyFragment", this));
-                break;
-
-            case FO_EDIT:
-                super.addOrReplace(new Fragment("panelFoEdit", "emptyFragment", this));
-                break;
-
-            case HTML:
-                super.addOrReplace(new Fragment("panelHtml", "emptyFragment", this));
-                break;
-
-            case TEXT:
-                super.addOrReplace(new Fragment("panelTestEdit", "emptyFragment", this));
-                break;
-
-            case VIEW:
-                super.addOrReplace(new Fragment("panelView", "emptyFragment", this));
-                break;
-
-            case MEMBERS:
-                super.addOrReplace(new Fragment("panelMembers", "emptyFragment", this));
-                break;
-
-            case SEARCH:
-                super.addOrReplace(new Fragment("panelSearch", "emptyFragment", this));
-                break;
-
-            case EXECUTE:
-                super.addOrReplace(new Fragment("panelExecute", "emptyFragment", this));
-                break;
-
-            case PASSWORD_RESET:
-                super.addOrReplace(new Fragment("panelPasswordReset", "emptyFragment", this));
-                break;
-
-            case DRYRUN:
-                super.addOrReplace(new Fragment("panelDryRun", "emptyFragment", this));
-                break;
-
-            case DELETE:
-                super.addOrReplace(new Fragment("panelDelete", "emptyFragment", this));
-                break;
-
-            case SELECT:
-                super.addOrReplace(new Fragment("panelSelect", "emptyFragment", this));
-                break;
-
-            case CLOSE:
-                super.addOrReplace(new Fragment("panelClose", "emptyFragment", this));
-                break;
-
-            case EXPORT:
-                super.addOrReplace(new Fragment("panelExport", "emptyFragment", this));
-                break;
-
-            case EXPORT_CSV:
-                super.addOrReplace(new Fragment("panelExportCSV", "emptyFragment", this));
-                break;
-
-            case EXPORT_HTML:
-                super.addOrReplace(new Fragment("panelExportHTML", "emptyFragment", this));
-                break;
-
-            case EXPORT_PDF:
-                super.addOrReplace(new Fragment("panelExportPDF", "emptyFragment", this));
-                break;
-
-            case EXPORT_RTF:
-                super.addOrReplace(new Fragment("panelExportRTF", "emptyFragment", this));
-                break;
-            case EXPORT_XML:
-                super.addOrReplace(new Fragment("panelExportXML", "emptyFragment", this));
-                break;
-
-            case SUSPEND:
-                super.addOrReplace(new Fragment("panelSuspend", "emptyFragment", this));
-                break;
-
-            case REACTIVATE:
-                super.addOrReplace(new Fragment("panelReactivate", "emptyFragment", this));
-                break;
-
-            case RELOAD:
-                super.addOrReplace(new Fragment("panelReload", "emptyFragment", this));
-                break;
-
-            case CHANGE_VIEW:
-                super.addOrReplace(new Fragment("panelChangeView", "emptyFragment", this));
-                break;
-
-            case UNLINK:
-                super.addOrReplace(new Fragment("panelUnlink", "emptyFragment", this));
-                break;
-
-            case LINK:
-                super.addOrReplace(new Fragment("panelLink", "emptyFragment", this));
-                break;
-
-            case UNASSIGN:
-                super.addOrReplace(new Fragment("panelUnassign", "emptyFragment", this));
-                break;
-
-            case ASSIGN:
-                super.addOrReplace(new Fragment("panelAssign", "emptyFragment", this));
-                break;
-
-            case DEPROVISION:
-                super.addOrReplace(new Fragment("panelDeprovision", "emptyFragment", this));
-                break;
-
-            case PROVISION:
-                super.addOrReplace(new Fragment("panelProvision", "emptyFragment", this));
-                break;
-
-            case PROPAGATION_TASKS:
-                super.addOrReplace(new Fragment("panelPropagationTasks", "emptyFragment", this));
-                break;
-
-            case NOTIFICATION_TASKS:
-                super.addOrReplace(new Fragment("panelNotificationTasks", "emptyFragment", this));
-                break;
-
-            case ZOOM_IN:
-                super.addOrReplace(new Fragment("panelZoomIn", "emptyFragment", this));
-                break;
-
-            case ZOOM_OUT:
-                super.addOrReplace(new Fragment("panelZoomOut", "emptyFragment", this));
-                break;
-
-            case WORKFLOW_MODELER:
-                super.addOrReplace(new Fragment("panelWorkflowModelert", "emptyFragment", this));
-                break;
-
-            default:
-            // do nothing
-        }
-    }
-
-    private ActionLinksPanel<T> setDisableIndicator(final boolean disableIndicator) {
-        this.disableIndicator = disableIndicator;
-        return this;
-    }
-
-    public static <T extends Serializable> Builder<T> builder() {
-        return new Builder<>();
-    }
-
-    /**
-     * ActionLinksPanel builder.
-     *
-     * @param <T> model object type.
-     */
-    public static final class Builder<T extends Serializable> implements Serializable {
-
-        private static final long serialVersionUID = 2998390938134582025L;
-
-        private final Map<ActionLink.ActionType, Triple<ActionLink<T>, String, Boolean>> actions = new HashMap<>();
-
-        private boolean disableIndicator = false;
-
-        public Builder<T> setDisableIndicator(final boolean disableIndicator) {
-            this.disableIndicator = disableIndicator;
-            return this;
-        }
-
-        public Builder<T> add(final ActionLink<T> link, final ActionLink.ActionType type) {
-            return addWithRoles(link, type, null, true);
-        }
-
-        public Builder<T> add(
-                final ActionLink<T> link,
-                final ActionLink.ActionType type,
-                final String entitlements) {
-
-            return addWithRoles(link, type, entitlements, true);
-        }
-
-        public Builder<T> add(
-                final ActionLink<T> link,
-                final ActionLink.ActionType type,
-                final String entitlement,
-                final boolean enabled) {
-
-            return addWithRoles(link, type, entitlement, enabled);
-        }
-
-        public Builder<T> addWithRoles(
-                final ActionLink<T> link,
-                final ActionLink.ActionType type,
-                final String entitlements) {
-
-            return addWithRoles(link, type, entitlements, true);
-        }
-
-        public Builder<T> addWithRoles(
-                final ActionLink<T> link,
-                final ActionLink.ActionType type,
-                final String entitlements,
-                final boolean enabled) {
-            actions.put(type, Triple.of(link, entitlements, enabled));
-            return this;
-        }
-
-        /**
-         * Use this method to build an ation panel without any model reference.
-         *
-         * @param id Component id.
-         * @return Action link panel.
-         */
-        public ActionLinksPanel<T> build(final String id) {
-            return build(id, null);
-        }
-
-        /**
-         * Use this methos to build an action panel including a model reference.
-         *
-         * @param id Component id.
-         * @param modelObject model object.
-         * @return Action link panel.
-         */
-        public ActionLinksPanel<T> build(final String id, final T modelObject) {
-            final ActionLinksPanel<T> panel = modelObject == null
-                    ? new ActionLinksPanel<>(id, new Model<T>())
-                    : new ActionLinksPanel<>(id, new Model<>(modelObject));
-
-            panel.setDisableIndicator(disableIndicator);
-
-            for (Entry<ActionLink.ActionType, Triple<ActionLink<T>, String, Boolean>> action : actions.entrySet()) {
-                panel.add(
-                        action.getValue().getLeft(),
-                        action.getKey(),
-                        action.getValue().getMiddle(),
-                        action.getValue().getRight());
-            }
-            return panel;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2e7e2cee/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
new file mode 100644
index 0000000..70f674c
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wicket.markup.html.form;
+
+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.WorkflowDefinitionTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+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> {
+
+    private static final long serialVersionUID = -2025535531121434056L;
+
+    private final WebMarkupContainer container;
+
+    public ActionLinksTogglePanel(final String id, final PageReference pageRef) {
+        super(id, UUID.randomUUID().toString(), pageRef);
+
+        modal.size(Modal.Size.Large);
+        setFooterVisibility(false);
+
+        container = new WebMarkupContainer("container");
+        container.setOutputMarkupPlaceholderTag(true);
+        addInnerObject(container);
+
+        container.add(getEmptyFragment());
+    }
+
+    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).getRefDesc();
+        } else if (modelObject instanceof WorkflowDefinitionTO) {
+            header = ((WorkflowDefinitionTO) modelObject).getName();
+        } else if (modelObject instanceof EntityTO) {
+            header = ((EntityTO) modelObject).getKey();
+        } else if (modelObject instanceof StatusBean) {
+            header = ((StatusBean) modelObject).getResourceName();
+        } 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 {
+            header = new ResourceModel("actions", StringUtils.EMPTY).getObject();
+        }
+        setHeader(target, StringUtils.abbreviate(header, 25));
+
+        modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+            private static final long serialVersionUID = 8804221891699487139L;
+
+            @Override
+            public void onClose(final AjaxRequestTarget target) {
+                modal.show(false);
+            }
+        });
+
+        final Fragment frag = new Fragment("actions", "actionsFragment", this);
+        frag.setOutputMarkupId(true);
+        frag.add(actionsPanel);
+
+        container.addOrReplace(frag);
+        target.add(this.container);
+
+        this.toggle(target, true);
+    }
+
+    private Fragment getEmptyFragment() {
+        return new Fragment("actions", "emptyFragment", this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2e7e2cee/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
new file mode 100644
index 0000000..a3c9aef
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wicket.markup.html.form;
+
+import java.io.Serializable;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+/**
+ * This empty class must exist because there not seems to be alternative to provide specialized HTML for edit links.
+ *
+ * @param <T> model object type.
+ */
+public final class ActionPanel<T extends Serializable> extends Panel {
+
+    private static final long serialVersionUID = 322966537010107771L;
+
+    private final Label actionIcon;
+
+    private final Label actionLabel;
+
+    private boolean disableIndicator = false;
+
+    public ActionPanel(final IModel<T> model, final Action<T> action) {
+        this("action", model, action);
+    }
+
+    public ActionPanel(final String componentId, final IModel<T> model, final Action<T> action) {
+        super(componentId);
+        setOutputMarkupId(true);
+
+        final T obj;
+        if (model == null) {
+            obj = null;
+        } else {
+            obj = model.getObject();
+        }
+
+        final boolean enabled;
+        final AjaxLink<Void> actionLink;
+
+        if (action.getLink() == null || action.getType() == ActionType.NOT_FOUND) {
+            enabled = true;
+            actionLink = new IndicatingAjaxLink<Void>("action") {
+
+                private static final long serialVersionUID = -7978723352517770644L;
+
+                @Override
+                public boolean isEnabled() {
+                    return false;
+                }
+
+                @Override
+                public void onClick(final AjaxRequestTarget target) {
+                }
+            };
+        } else {
+            enabled = action.getLink().isEnabled(obj);
+
+            actionLink = action.isOnConfirm()
+                    ? new IndicatingOnConfirmAjaxLink<Void>("action", enabled) {
+
+                private static final long serialVersionUID = -7978723352517770644L;
+
+                @Override
+                public void onClick(final AjaxRequestTarget target) {
+                    action.getLink().onClick(target, obj);
+                }
+
+                @Override
+                public String getAjaxIndicatorMarkupId() {
+                    return disableIndicator || !action.getLink().isIndicatorEnabled()
+                            ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                }
+            }
+                    : new IndicatingAjaxLink<Void>("action") {
+
+                private static final long serialVersionUID = -7978723352517770644L;
+
+                @Override
+                public void onClick(final AjaxRequestTarget target) {
+                    action.getLink().onClick(target, obj);
+                }
+
+                @Override
+                public String getAjaxIndicatorMarkupId() {
+                    return disableIndicator || !action.getLink().isIndicatorEnabled()
+                            ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                }
+            };
+        }
+
+        actionLink.setVisible(enabled);
+
+        actionIcon = new Label("actionIcon", "");
+        actionLink.add(actionIcon);
+
+        final String clazz = action.getType().name().toLowerCase() + ".class";
+        actionIcon.add(new AttributeModifier("class", new ResourceModel(clazz, clazz)));
+
+        final String title = action.getType().name().toLowerCase() + ".title";
+        final IModel<String> titleModel = new ResourceModel(title, title);
+        actionIcon.add(new AttributeModifier("title", titleModel));
+
+        final String alt = action.getType().name().toLowerCase() + ".alt";
+        actionIcon.add(new AttributeModifier("alt", new ResourceModel(alt, alt)));
+
+        actionLabel = new Label("label", titleModel);
+        actionLink.add(actionLabel);
+        add(actionLink);
+
+        // ---------------------------
+        // Action configuration
+        // ---------------------------
+        actionLabel.setVisible(action.isVisibleLabel());
+
+        if (action.getLabel() != null) {
+            actionLabel.setDefaultModel(action.getLabel());
+        }
+
+        if (action.getTitle() != null) {
+            actionIcon.add(new AttributeModifier("title", action.getTitle()));
+        }
+
+        if (action.getAlt() != null) {
+            actionIcon.add(new AttributeModifier("alt", action.getAlt()));
+        }
+
+        if (action.getIcon() != null) {
+            actionIcon.add(new AttributeModifier("class", action.getIcon()));
+        }
+
+        this.disableIndicator = !action.hasIndicator();
+        // ---------------------------
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2e7e2cee/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
new file mode 100644
index 0000000..6c26aa9
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wicket.markup.html.form;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+/**
+ * This empty class must exist because there not seems to be alternative to provide specialized HTML for edit links.
+ *
+ * @param <T> model object type.
+ */
+public final class ActionsPanel<T extends Serializable> extends Panel {
+
+    private static final long serialVersionUID = 322966537010107771L;
+
+    private final List<Action<T>> actions = new ArrayList<>();
+
+    private IModel<T> model;
+
+    public ActionsPanel(final String componentId, final IModel<T> model) {
+        super(componentId, model);
+        setOutputMarkupId(true);
+        this.model = model;
+
+        add(new ListView<Action<T>>("actionRepeater", actions) {
+
+            private static final long serialVersionUID = -9180479401817023838L;
+
+            @Override
+            protected void populateItem(final ListItem<Action<T>> item) {
+                item.add(new ActionPanel<T>(ActionsPanel.this.model, item.getModelObject()));
+            }
+
+        }.setRenderBodyOnly(true));
+    }
+
+    public Action<T> add(
+            final ActionLink<T> link,
+            final ActionLink.ActionType type,
+            final String entitlements) {
+        return add(link, type, entitlements, false);
+    }
+
+    public Action<T> add(
+            final ActionLink<T> link,
+            final ActionLink.ActionType type,
+            final String entitlements,
+            final boolean onConfirm) {
+
+        final Action<T> action = new Action<>(link, type);
+        action.setEntitlements(entitlements);
+        action.setOnConfirm(onConfirm);
+        actions.add(action);
+        return action;
+    }
+
+    public ActionsPanel<T> clone(final String componentId, final IModel<T> model) {
+        final ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
+        panel.actions.addAll(actions);
+        return panel;
+    }
+
+    public boolean isEmpty() {
+        return this.actions.isEmpty();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2e7e2cee/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
index 1129ea6..7eaac21 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -37,12 +37,11 @@ import org.apache.syncope.client.console.rest.NotificationRestClient;
 import org.apache.syncope.client.console.rest.ReportRestClient;
 import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.JobTO;
@@ -379,8 +378,8 @@ public class JobWidget extends BaseWidget {
         }
     }
 
-    private class RecentExecPanel extends DirectoryPanel<
-        ExecTO, ExecTO, RecentExecProvider, BaseRestClient> {
+    private class RecentExecPanel
+            extends DirectoryPanel<ExecTO, ExecTO, RecentExecPanel.RecentExecProvider, BaseRestClient> {
 
         private static final long serialVersionUID = -8214546246301342868L;
 
@@ -426,81 +425,58 @@ public class JobWidget extends BaseWidget {
 
             columns.add(new PropertyColumn<ExecTO, String>(new ResourceModel("status"), "status", "status"));
 
-            columns.add(new ActionColumn<ExecTO, String>(new ResourceModel("actions")) {
-
-                private static final long serialVersionUID = -3503023501954863131L;
-
-                @Override
-                public ActionLinksPanel<ExecTO> getActions(final String componentId, final IModel<ExecTO> model) {
-
-                    final ActionLinksPanel.Builder<ExecTO> panel = ActionLinksPanel.<ExecTO>builder().
-                            add(new ActionLink<ExecTO>() {
+            return columns;
+        }
 
-                                private static final long serialVersionUID = -3722207913631435501L;
+        @Override
+        public ActionsPanel<ExecTO> getActions(final IModel<ExecTO> model) {
+            final ActionsPanel<ExecTO> panel = super.getActions(model);
 
-                                @Override
-                                public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
+            panel.add(new ActionLink<ExecTO>() {
 
-                                    StringResourceModel stringResourceModel =
-                                            new StringResourceModel("execution.view", JobWidget.this, model);
-                                    detailModal.header(stringResourceModel);
-                                    detailModal.setContent(new ExecMessageModal(model.getObject().getMessage()));
-                                    detailModal.show(true);
-                                    target.add(detailModal);
-                                }
-                            }, ActionLink.ActionType.VIEW, StandardEntitlement.TASK_READ);
-                    return panel.build(componentId, model.getObject());
-                }
+                private static final long serialVersionUID = -3722207913631435501L;
 
                 @Override
-                public ActionLinksPanel<Serializable> getHeader(final String componentId) {
-                    final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder();
-
-                    return panel.add(new ActionLink<Serializable>() {
-
-                        private static final long serialVersionUID = -7978723352517770644L;
-
-                        @Override
-                        public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
-                            if (target != null) {
-                                target.add(container);
-                            }
-                        }
-                    }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).build(componentId);
+                public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
+
+                    StringResourceModel stringResourceModel = new StringResourceModel("execution.view", JobWidget.this,
+                            model);
+                    detailModal.header(stringResourceModel);
+                    detailModal.setContent(new ExecMessageModal(model.getObject().getMessage()));
+                    detailModal.show(true);
+                    target.add(detailModal);
                 }
-            });
-
-            return columns;
+            }, ActionLink.ActionType.VIEW, StandardEntitlement.TASK_READ);
+            return panel;
         }
 
-    }
-
-    protected final class RecentExecProvider extends DirectoryDataProvider<ExecTO> {
+        protected final class RecentExecProvider extends DirectoryDataProvider<ExecTO> {
 
-        private static final long serialVersionUID = 2835707012690698633L;
+            private static final long serialVersionUID = 2835707012690698633L;
 
-        private final SortableDataProviderComparator<ExecTO> comparator;
+            private final SortableDataProviderComparator<ExecTO> comparator;
 
-        private RecentExecProvider() {
-            super(ROWS);
-            setSort("end", SortOrder.DESCENDING);
-            comparator = new SortableDataProviderComparator<>(this);
-        }
+            private RecentExecProvider() {
+                super(ROWS);
+                setSort("end", SortOrder.DESCENDING);
+                comparator = new SortableDataProviderComparator<>(this);
+            }
 
-        @Override
-        public Iterator<ExecTO> iterator(final long first, final long count) {
-            Collections.sort(recent, comparator);
-            return recent.subList((int) first, (int) first + (int) count).iterator();
-        }
+            @Override
+            public Iterator<ExecTO> iterator(final long first, final long count) {
+                Collections.sort(recent, comparator);
+                return recent.subList((int) first, (int) first + (int) count).iterator();
+            }
 
-        @Override
-        public long size() {
-            return recent.size();
-        }
+            @Override
+            public long size() {
+                return recent.size();
+            }
 
-        @Override
-        public IModel<ExecTO> model(final ExecTO object) {
-            return new CompoundPropertyModel<>(object);
+            @Override
+            public IModel<ExecTO> model(final ExecTO object) {
+                return new CompoundPropertyModel<>(object);
+            }
         }
     }
 }