Repository: syncope
Updated Branches:
  refs/heads/master 757608a7c -> 3c6fe5eef


http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
index 6790a21..e03f56e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
@@ -20,8 +20,8 @@ package org.apache.syncope.client.console.tasks;
 
 import java.io.Serializable;
 import java.util.Date;
+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.TogglePanel;
 import org.apache.syncope.client.console.rest.TaskRestClient;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
@@ -86,12 +86,12 @@ public class StartAtTogglePanel extends 
TogglePanel<Serializable> {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
                     LOG.error("While running propagation task {}", 
taskTO.getKey(), e);
                 }
-                ((BasePage) getPage()).getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final 
Form<?> form) {
-                ((BasePage) getPage()).getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
 
         });

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
index 57fc870..f7bd09b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
@@ -24,10 +24,10 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.AbstractSearchResultPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel.SecondLevel;
 import org.apache.syncope.client.console.rest.TaskRestClient;
@@ -116,9 +116,8 @@ public abstract class TaskExecutions
                                 } catch (SyncopeClientException scce) {
                                     error(scce.getMessage());
                                 }
-
-                                
BasePage.class.cast(pageRef.getPage()).getNotificationPanel().refresh(target);
                                 target.add(TaskExecutions.this);
+                                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                             }
                         }, ActionLink.ActionType.DELETE, 
StandardEntitlement.TASK_DELETE);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 efc77a6..695f868 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
@@ -33,7 +33,6 @@ 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.AbstractResourceModal.CreateEvent;
-import org.apache.syncope.client.console.panels.NotificationPanel;
 import org.apache.syncope.client.console.rest.BaseRestClient;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
@@ -148,17 +147,9 @@ public class Topology extends BasePage {
     }
 
     public Topology() {
-        modal = new BaseModal<Serializable>("resource-modal") {
 
-            private static final long serialVersionUID = -5912673052161214766L;
-
-            @Override
-            public NotificationPanel getNotificationPanel() {
-                return Topology.this.notificationPanel;
-            }
-        };
+        modal = new BaseModal<Serializable>("resource-modal");
         body.add(modal.size(Modal.Size.Large));
-
         modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
             private static final long serialVersionUID = 8804221891699487139L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 a94dc5a..3a21e64 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
@@ -21,8 +21,8 @@ package org.apache.syncope.client.console.topology;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import java.io.Serializable;
 import java.text.MessageFormat;
+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.ConnectorModal;
 import org.apache.syncope.client.console.panels.ResourceModal;
 import org.apache.syncope.client.console.panels.TogglePanel;
@@ -188,7 +188,7 @@ public class TopologyTogglePanel extends 
TogglePanel<Serializable> {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
                     LOG.error("While deleting resource {}", node.getKey(), e);
                 }
-                ((BasePage) getPage()).getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
         };
 
@@ -269,7 +269,7 @@ public class TopologyTogglePanel extends 
TogglePanel<Serializable> {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
                     LOG.error("While deleting resource {}", node.getKey(), e);
                 }
-                ((BasePage) getPage()).getNotificationPanel().refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
         };
         fragment.add(delete);

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxButton.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxButton.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxButton.java
index 4682de8..449bcd3 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxButton.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxButton.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.wicket.ajax.markup.html;
 
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.wicket.Page;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
@@ -32,8 +30,6 @@ public abstract class ClearIndicatingAjaxButton extends 
IndicatingAjaxButton {
 
     private final PageReference pageRef;
 
-    private boolean reloadFeebackPanel = true;
-
     public ClearIndicatingAjaxButton(final String id, final PageReference 
pageRef) {
         super(id);
         this.pageRef = pageRef;
@@ -59,18 +55,12 @@ public abstract class ClearIndicatingAjaxButton extends 
IndicatingAjaxButton {
     protected abstract void onSubmitInternal(final AjaxRequestTarget target, 
final Form<?> form);
 
     public ClearIndicatingAjaxButton feedbackPanelAutomaticReload(final 
boolean reloadFeedbackPanel) {
-        this.reloadFeebackPanel = reloadFeedbackPanel;
         return this;
     }
 
     @Override
     protected final void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
         super.onSubmit(target, form);
-
-        Page page = pageRef.getPage();
-        if (reloadFeebackPanel && page instanceof BasePage) {
-            target.add(((BasePage) page).getNotificationPanel());
-        }
         onSubmitInternal(target, form);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index 18e18f3..74d44bf 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -25,8 +25,6 @@ import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.behavior.Resizable
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.NotificationAwareComponent;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.ModalPanel;
 import org.apache.syncope.client.console.panels.NotificationPanel;
@@ -47,7 +45,7 @@ import org.apache.wicket.model.IModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BaseModal<T extends Serializable> extends Modal<T> implements 
NotificationAwareComponent {
+public class BaseModal<T extends Serializable> extends Modal<T> {
 
     private static final long serialVersionUID = -6142277554912316095L;
 
@@ -85,10 +83,6 @@ public class BaseModal<T extends Serializable> extends 
Modal<T> implements Notif
 
         };
 
-        notificationPanel = new NotificationPanel(Constants.FEEDBACK);
-        notificationPanel.setOutputMarkupId(true);
-        addOrReplace(notificationPanel);
-
         content.setOutputMarkupId(true);
 
         form.add(content);
@@ -108,11 +102,6 @@ public class BaseModal<T extends Serializable> extends 
Modal<T> implements Notif
         setFadeIn(true);
     }
 
-    @Override
-    public NotificationPanel getNotificationPanel() {
-        return notificationPanel;
-    }
-
     public Form<T> getForm() {
         return form;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
index a43bba5..cae2e9a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
@@ -38,6 +38,7 @@ import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
@@ -47,7 +48,6 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.StatelessForm;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
-import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
@@ -65,7 +65,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
 
     private final WebMarkupContainer container;
 
-    private final Link<Void> downloadLink;
+    private final AjaxLink<Void> downloadLink;
 
     private final Form<?> uploadForm;
 
@@ -124,12 +124,12 @@ public class BinaryFieldPanel extends FieldPanel<String> {
 
         uploadForm.add(new Label("preview", StringUtils.isBlank(mimeType) ? 
StringUtils.EMPTY : "(" + mimeType + ")"));
 
-        downloadLink = new Link<Void>("downloadLink") {
+        downloadLink = new AjaxLink<Void>("downloadLink") {
 
             private static final long serialVersionUID = -4331619903296515985L;
 
             @Override
-            public void onClick() {
+            public void onClick(final AjaxRequestTarget target) {
                 try {
                     HttpResourceStream stream = new 
HttpResourceStream(buildResponse());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
index 07a1311..2611a2c 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
@@ -119,7 +119,7 @@ public abstract class MultiFieldPanel<E extends 
Serializable> extends AbstractFi
         };
 
         final Fragment fragment = new Fragment("panelPlus", "fragmentPlus", 
MultiFieldPanel.this);
-        fragment.add(plus);
+        fragment.addOrReplace(plus);
         fragment.setRenderBodyOnly(true);
 
         return fragment;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
index d8a8310..df4eaf6 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
@@ -19,11 +19,12 @@
 package org.apache.syncope.client.console.wizards;
 
 import java.io.Serializable;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.panels.ModalPanel;
-import org.apache.syncope.client.console.panels.NotificationPanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.extensions.wizard.IWizardModel;
 import org.apache.wicket.extensions.wizard.Wizard;
 import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.markup.html.form.Form;
@@ -42,8 +43,6 @@ public abstract class AjaxWizard<T extends Serializable> 
extends Wizard implemen
 
     private final boolean edit;
 
-    private NotificationPanel feedbackPanel;
-
     /**
      * Construct.
      *
@@ -62,20 +61,14 @@ public abstract class AjaxWizard<T extends Serializable> 
extends Wizard implemen
     }
 
     @Override
-    protected Component newButtonBar(final String id) {
-        return new AjaxWizardMgtButtonBar(id, this, edit);
+    protected void init(final IWizardModel wizardModel) {
+        super.init(wizardModel);
+        getForm().remove(FEEDBACK_ID);
     }
 
     @Override
-    protected Component newFeedbackPanel(final String id) {
-        if (feedbackPanel == null) {
-            feedbackPanel = new NotificationPanel(id);
-        }
-        return feedbackPanel;
-    }
-
-    public NotificationPanel getFeedbackPanel() {
-        return feedbackPanel;
+    protected Component newButtonBar(final String id) {
+        return new AjaxWizardMgtButtonBar(id, this, edit);
     }
 
     protected abstract void onCancelInternal();
@@ -239,6 +232,6 @@ public abstract class AjaxWizard<T extends Serializable> 
extends Wizard implemen
 
     @Override
     public void onError(final AjaxRequestTarget target, final Form<?> form) {
-        feedbackPanel.refresh(target);
+        SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/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 c183910..a6e5af0 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
@@ -25,7 +25,7 @@ import org.apache.wicket.extensions.wizard.WizardModel;
 public abstract class AjaxWizardBuilder<T extends Serializable> extends 
AbstractModalPanelBuilder<T> {
 
     private static final long serialVersionUID = 5241745929825564456L;
-
+    
     /**
      * Construct.
      *

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardButton.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardButton.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardButton.java
deleted file mode 100644
index 886115e..0000000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardButton.java
+++ /dev/null
@@ -1,69 +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.wizards;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.extensions.wizard.IWizard;
-import org.apache.wicket.extensions.wizard.IWizardModel;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.ResourceModel;
-
-public abstract class AjaxWizardButton extends AjaxButton {
-
-    private static final long serialVersionUID = -9147736051493629209L;
-
-    private final IWizard wizard;
-
-    public AjaxWizardButton(
-            final String id,
-            final IWizard wizard,
-            final Form<?> form,
-            final String labelResourceKey,
-            final boolean formprocessing) {
-        super(id, form);
-        this.setLabel(new ResourceModel(labelResourceKey, labelResourceKey));
-        this.wizard = wizard;
-        setDefaultFormProcessing(formprocessing);
-    }
-
-    public AjaxWizardButton(final String id, final IWizard wizard, final 
String labelResourceKey) {
-        this(id, wizard, null, labelResourceKey, true);
-    }
-
-    public AjaxWizardButton(
-            final String id, final IWizard wizard, final String 
labelResourceKey, final boolean formprocessing) {
-        this(id, wizard, null, labelResourceKey, formprocessing);
-    }
-
-    protected final IWizard getWizard() {
-        return wizard;
-    }
-
-    protected final IWizardModel getWizardModel() {
-        return getWizard().getWizardModel();
-    }
-
-    @Override
-    protected final void onSubmit(final AjaxRequestTarget target, final 
Form<?> form) {
-        onClick(target, form);
-    }
-
-    protected abstract void onClick(final AjaxRequestTarget target, final 
Form<?> form);
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardMgtButtonBar.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardMgtButtonBar.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardMgtButtonBar.java
index 45b6214..e183721 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardMgtButtonBar.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardMgtButtonBar.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.client.console.wizards;
 
-import org.apache.syncope.client.console.panels.NotificationPanel;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -37,7 +37,7 @@ public class AjaxWizardMgtButtonBar extends WizardButtonBar {
     private static final long serialVersionUID = 7453943437344127136L;
 
     private final boolean edit;
-    
+
     private final AjaxWizard wizard;
 
     public AjaxWizardMgtButtonBar(final String id, final AjaxWizard wizard, 
final boolean edit) {
@@ -90,12 +90,11 @@ public class AjaxWizardMgtButtonBar extends WizardButtonBar 
{
             protected void onError(final AjaxRequestTarget target) {
                 target.add(findParent(Wizard.class));
                 button.onError();
-                
NotificationPanel.class.cast(wizard.getFeedbackPanel()).refresh(target);
+                
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
             }
 
             @Override
             protected void onComponentTag(final ComponentTag tag) {
-                // WICKET-5644 prevent non-Ajax submit (similar to AjaxButton 
WICKET-5594)
                 tag.put("type", "button");
             }
         });
@@ -113,7 +112,7 @@ public class AjaxWizardMgtButtonBar extends WizardButtonBar 
{
             public final boolean isEnabled() {
                 if (edit) {
                     return true;
-                } else { 
+                } else {
                     final IWizardStep activeStep = 
getWizardModel().getActiveStep();
                     return (activeStep != null) && 
getWizardModel().isLastStep(activeStep) && super.isEnabled();
                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index fdb6fa6..c52593f 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.wizards;
 
 import java.io.Serializable;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.panels.ModalPanel;
 import org.apache.syncope.client.console.panels.NotificationPanel;
@@ -85,7 +86,7 @@ public abstract class WizardMgtPanel<T extends Serializable> 
extends Panel imple
     protected WizardMgtPanel(final String id, final boolean wizardInModal) {
         super(id);
         setOutputMarkupId(true);
-        
+
         this.wizardInModal = wizardInModal;
 
         super.add(modal);
@@ -109,7 +110,7 @@ public abstract class WizardMgtPanel<T extends 
Serializable> extends Panel imple
 
         addAjaxLink.setEnabled(false);
         addAjaxLink.setVisible(false);
-        initialFragment.add(addAjaxLink);
+        initialFragment.addOrReplace(addAjaxLink);
     }
 
     @Override
@@ -150,10 +151,8 @@ public abstract class WizardMgtPanel<T extends 
Serializable> extends Panel imple
                     container.addOrReplace(initialFragment);
                 }
             } else if (event.getPayload() instanceof 
AjaxWizard.NewItemFinishEvent) {
-                if (notificationPanel != null) {
-                    
getSession().info(getString(Constants.OPERATION_SUCCEEDED));
-                    notificationPanel.refresh(target);
-                }
+                    info(getString(Constants.OPERATION_SUCCEEDED));
+                    
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
 
                 if (wizardInModal && showResultPage) {
                     modal.setContent(new ResultPage<T>(
@@ -232,7 +231,7 @@ public abstract class WizardMgtPanel<T extends 
Serializable> extends Panel imple
     }
 
     protected WizardMgtPanel<T> addNotificationPanel(final NotificationPanel 
notificationPanel) {
-        this.notificationPanel = notificationPanel;
+        this.notificationPanel = 
SyncopeConsoleSession.get().getNotificationPanel();
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css 
b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index f1f72e2..15fdc35 100644
--- 
a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ 
b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -366,6 +366,12 @@ div.searchResult{
 /**
 START - Notifications
 */
+
+/*Temporany fix diagonal stacking*/
+.k-popup.k-notification {
+  box-shadow: none;
+}
+
 .k-notification-error.k-group {
   background: rgba(100% , 0% , 0% , .7);
   color: red;

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
index 95733b4..0f53a8a 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
@@ -37,7 +37,8 @@ under the License.
       <div class="card card-container">
         <img class="login-logo" src="img/logo-green.png" />
 
-        <div wicket:id="feedback" role="alert"/>
+        <span wicket:id="feedback" role="alert"/>
+        
 
         <form class="form-signin" wicket:id="login">
           <fieldset class="form-group input-group">

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html
index 12c01ec..1b3aefc 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NotificationPanel.html
@@ -22,16 +22,18 @@ under the License.
     <span wicket:id="feedback"></span>
 
     <script id="errorTemplate" type="text/x-kendo-template">
-      <div class="errorNotification">
-      <div id="level" class="glyphicon glyphicon-remove-circle"></div>
-      <div id="message"><p>#= message #</p></div>
+      <div class="alert alert-danger alert-dismissible" style="margin-bottom: 
0px; min-width: 370px">
+        <button aria-hidden="true" data-dismiss="alert" class="close" 
type="button">×</button>
+        <h4><i class="icon fa fa-ban"></i> Error!</h4>
+        #= message #     
       </div>
     </script>
 
     <script id="successTemplate" type="text/x-kendo-template">
-      <div class="successNotification">
-      <div id="level" class="glyphicon glyphicon-ok-circle"></div>
-      <div id="message"><p>#= message #</p></div>
+      <div class="alert alert-success alert-dismissible" style="margin-bottom: 
0px; min-width: 370px">
+        <button aria-hidden="true" data-dismiss="alert" class="close" 
type="button">×</button>
+        <h4><i class="icon fa fa-check"></i> Success!</h4>
+          #= message #
       </div>
     </script>
   </wicket:panel>

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.html
index dc18040..8c7cfb5 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.html
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.html
@@ -35,7 +35,6 @@ under the License.
           <h4 wicket:id="header-label" class="modal-title">Modal header</h4>
         </div>
         <div class="modal-body">
-          <div wicket:id="feedback"/>
           <form data-example-id="simple-input-groups" class="bs-example 
bs-example-form" wicket:id="form">
             <span wicket:id="content">[modal content]</span>
           </form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AjaxWizard.html
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AjaxWizard.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AjaxWizard.html
new file mode 100644
index 0000000..bca42d8
--- /dev/null
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AjaxWizard.html
@@ -0,0 +1,46 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
+  <head>
+    <title></title>
+  </head>
+  <body>
+    <wicket:panel>
+      <div class="wizard-form">
+        <form wicket:id="form">
+          <div class="wizard-overview">
+            <div wicket:id="overview"></div> 
+          </div>
+          <div class="wizard-header">
+            <div wicket:id="header"></div>
+          </div>
+          <div class="wizard-view">
+            <div wicket:id="view"></div>
+          </div>       
+<!--          <div class="wizard-feedback">
+            <div wicket:id="feedback"></div>
+          </div>-->
+          <div class="wizard-buttons">
+            <div wicket:id="buttons"></div>
+          </div>
+        </form>
+      </div>
+    </wicket:panel>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
----------------------------------------------------------------------
diff --git 
a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
 
b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
index 07c717c..6725bfa 100644
--- 
a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
+++ 
b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesPanel.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.SearchableDataProvider;
 import 
org.apache.syncope.client.console.commons.SortableDataProviderComparator;
@@ -100,7 +101,7 @@ public class CamelRoutesPanel extends 
AbstractSearchResultPanel<
                             LOG.error("While creating or updating 
CamelRouteTO", e);
                             error(getString(Constants.ERROR) + ": " + 
e.getMessage());
                         }
-                        modal.getNotificationPanel().refresh(target);
+                        
SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
                     }
                 };
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
index b557bdd..d81e029 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
@@ -21,12 +21,15 @@ package org.apache.syncope.fit.console;
 import java.lang.reflect.InvocationTargetException;
 import javax.servlet.ServletContext;
 import org.apache.syncope.client.console.SyncopeConsoleApplication;
+import org.apache.syncope.client.console.commons.Constants;
 import 
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
 import org.apache.syncope.client.console.init.ConsoleInitializer;
 import org.apache.syncope.client.console.init.MIMETypesLoader;
 import org.apache.syncope.client.console.pages.Login;
+import org.apache.syncope.client.console.panels.NotificationPanel;
 import org.apache.syncope.fit.AbstractITCase;
 import org.apache.wicket.Component;
+import org.apache.wicket.Page;
 import org.apache.wicket.core.util.lang.PropertyResolver;
 import org.apache.wicket.markup.repeater.OddEvenItem;
 import org.apache.wicket.util.tester.FormTester;
@@ -97,4 +100,37 @@ public abstract class AbstractConsoleITCase extends 
AbstractITCase {
                 });
         return result;
     }
+
+    protected Component findSuccessNotification(final Page page, final String 
searchPath, final String key) {
+        Component result =
+                page.visitChildren(NotificationPanel.class, new 
IVisitor<NotificationPanel, Component>() {
+
+                    @Override
+                    public void component(final NotificationPanel object, 
final IVisit<Component> visit) {
+
+                        if 
(object.getDefaultModelObjectAsString().equals(Constants.OPERATION_SUCCEEDED)) {
+                            
wicketTester.clickLink(object.getPageRelativePath());
+                            visit.stop(object);
+                        }
+                    }
+                });
+        return result;
+    }
+
+    protected Component findErrorNotification(final Page page, final String 
searchPath, final String key) {
+        Component result =
+                page.visitChildren(NotificationPanel.class, new 
IVisitor<NotificationPanel, Component>() {
+
+                    @Override
+                    public void component(final NotificationPanel object, 
final IVisit<Component> visit) {
+
+                        if 
(!object.getDefaultModelObjectAsString().equals(Constants.OPERATION_SUCCEEDED)) 
{
+                            
wicketTester.clickLink(object.getPageRelativePath());
+                            visit.stop(object);
+                        }
+
+                    }
+                });
+        return result;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3c6fe5ee/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
index 602ad34..ea590b8 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
@@ -53,7 +53,7 @@ public class TopologyITCase extends AbstractConsoleITCase {
         
wicketTester.assertComponent("body:toggle:togglePanelContainer:container:actions:push",
 AjaxLink.class);
         wicketTester.executeAjaxEvent("body:syncope", Constants.ON_CLICK);
         
wicketTester.assertComponent("body:toggle:togglePanelContainer:container:actions:tasks",
 AjaxLink.class);
-        wicketTester.executeAjaxEvent("body:conns:0:conns:4:conn", 
Constants.ON_CLICK);
+        wicketTester.executeAjaxEvent("body:conns:0:conns:3:conn", 
Constants.ON_CLICK);
         
wicketTester.assertComponent("body:toggle:togglePanelContainer:container:actions:create",
 AjaxLink.class);
         
wicketTester.assertComponent("body:toggle:togglePanelContainer:container:actions:delete",
 AjaxLink.class);
         
wicketTester.assertComponent("body:toggle:togglePanelContainer:container:actions:edit",
 AjaxLink.class);
@@ -81,20 +81,16 @@ public class TopologyITCase extends AbstractConsoleITCase {
         
wicketTester.clickLink("body:toggle:outherObjectsRepeater:1:outher:form:content:tasks:firstLevelContainer:"
                 + 
"first:container:content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable:"
                 + "body:rows:1:cells:9:cell:panelEdit:editLink");
-        
+
         final FormTester formTester = wicketTester.newFormTester(
                 "body:toggle:outherObjectsRepeater:1:outher:form:content:"
                 + 
"tasks:firstLevelContainer:first:container:content:wizard:form");
 
         formTester.setValue("view:description:textField", "test");
         formTester.submit("buttons:finish");
-        
+
+        wicketTester.assertInfoMessages("Operation executed successfully");
         wicketTester.cleanupFeedbackMessages();
-        
-        wicketTester.assertLabel(
-                
"body:toggle:outherObjectsRepeater:1:outher:form:content:tasks:firstLevelContainer:first:"
-                + 
"container:content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable:body:rows:"
-                + "2:cells:4:cell", "test");
     }
 
     @Test
@@ -111,14 +107,14 @@ public class TopologyITCase extends AbstractConsoleITCase 
{
                 + "container:content:wizard:form");
         formTester.setValue("view:name:textField", "test");
         formTester.select("view:jobDelegateClassName:dropDownChoiceField", 0);
-        
+
         formTester.submit("buttons:next");
         wicketTester.cleanupFeedbackMessages();
-        
+
         formTester = wicketTester.newFormTester(
                 
"body:toggle:outherObjectsRepeater:1:outher:form:content:tasks:firstLevelContainer:first:"
                 + "container:content:wizard:form");
-        
+
         wicketTester.assertComponent(
                 
"body:toggle:outherObjectsRepeater:1:outher:form:content:tasks:firstLevelContainer:"
                 + 
"first:container:content:wizard:form:view:schedule:seconds:textField", 
TextField.class);

Reply via email to