You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by an...@apache.org on 2014/05/06 17:27:50 UTC

svn commit: r1592778 [1/2] - in /syncope/trunk/console/src/main: java/org/apache/syncope/console/pages/ java/org/apache/syncope/console/pages/panels/ resources/org/apache/syncope/console/pages/ resources/org/apache/syncope/console/pages/panels/ webapp/...

Author: andreapatricelli
Date: Tue May  6 15:27:48 2014
New Revision: 1592778

URL: http://svn.apache.org/r1592778
Log:
Fixed #480

Added:
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationPanel.java
Modified:
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractBasePage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSchedTaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/BasePage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConfigurationModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DerSchemaModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Login.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/MembershipModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ProvisioningModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Reports.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ResourceModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Resources.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/RoleModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Roles.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Schema.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/TaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserOwnerSelectModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/VirSchemaModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/XMLEditorPopupPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchPanel.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PoliciesPanel.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RoleSearchResultPanel.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BaseModalPage.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BasePage.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Login.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Roles.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/RoleTabPanel.html
    syncope/trunk/console/src/main/webapp/css/style.css

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractBasePage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractBasePage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractBasePage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractBasePage.java Tue May  6 15:27:48 2014
@@ -20,6 +20,7 @@ package org.apache.syncope.console.pages
 
 import org.apache.syncope.console.commons.Constants;
 import org.apache.syncope.console.commons.XMLRolesReader;
+import org.apache.syncope.console.pages.panels.NotificationPanel;
 import org.apache.syncope.console.rest.ReportRestClient;
 import org.apache.syncope.console.rest.ResourceRestClient;
 import org.apache.syncope.console.rest.RoleRestClient;
@@ -32,7 +33,6 @@ import org.apache.wicket.markup.head.Hea
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
@@ -85,7 +85,7 @@ public class AbstractBasePage extends We
     @SpringBean
     protected ReportRestClient reportRestClient;
 
-    protected FeedbackPanel feedbackPanel;
+    protected NotificationPanel feedbackPanel;
 
     /**
      * Response flag set by the Modal Window after the operation is completed.
@@ -102,12 +102,12 @@ public class AbstractBasePage extends We
     }
 
     protected final void setupFeedbackPanel() {
-        feedbackPanel = new FeedbackPanel(Constants.FEEDBACK);
+        feedbackPanel = new NotificationPanel(Constants.FEEDBACK);
         feedbackPanel.setOutputMarkupId(true);
         add(feedbackPanel);
     }
 
-    public FeedbackPanel getFeedbackPanel() {
+    public NotificationPanel getFeedbackPanel() {
         return feedbackPanel;
     }
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSchedTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSchedTaskModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSchedTaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSchedTaskModalPage.java Tue May  6 15:27:48 2014
@@ -106,13 +106,13 @@ public abstract class AbstractSchedTaskM
                 } catch (SyncopeClientException e) {
                     LOG.error("While creating or updating task", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ApprovalModalPage.java Tue May  6 15:27:48 2014
@@ -237,13 +237,13 @@ public class ApprovalModalPage extends B
                 } catch (SyncopeClientException e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
                     LOG.error("While submitting form {}", formTO, e);
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/BasePage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/BasePage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/BasePage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/BasePage.java Tue May  6 15:27:48 2014
@@ -102,7 +102,7 @@ public class BasePage extends AbstractBa
                 target.add(container);
                 if (isModalResult()) {
                     info(getString(Constants.OPERATION_SUCCEEDED));
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     setModalResult(false);
                 }
             }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Configuration.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Configuration.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Configuration.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Configuration.java Tue May  6 15:27:48 2014
@@ -159,8 +159,8 @@ public class Configuration extends BaseP
             workflowDefContainer.setVisible(false);
         }
 
-        BookmarkablePageLink<Void> activitiModeler =
-                new BookmarkablePageLink<Void>("activitiModeler", ActivitiModelerPopupPage.class);
+        BookmarkablePageLink<Void> activitiModeler
+                = new BookmarkablePageLink<Void>("activitiModeler", ActivitiModelerPopupPage.class);
         activitiModeler.setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800));
         MetaDataRoleAuthorizationStrategy.authorize(activitiModeler, ENABLE,
                 xmlRolesReader.getAllAllowedRoles("Configuration", "workflowDefRead"));
@@ -177,8 +177,8 @@ public class Configuration extends BaseP
         }
         activitiModeler.setEnabled(activitiModelerEnabled);
 
-        BookmarkablePageLink<Void> xmlEditor =
-                new BookmarkablePageLink<Void>("xmlEditor", XMLEditorPopupPage.class);
+        BookmarkablePageLink<Void> xmlEditor
+                = new BookmarkablePageLink<Void>("xmlEditor", XMLEditorPopupPage.class);
         xmlEditor.setPopupSettings(new VeilPopupSettings().setHeight(350).setWidth(800));
         MetaDataRoleAuthorizationStrategy.authorize(xmlEditor, ENABLE,
                 xmlRolesReader.getAllAllowedRoles("Configuration", "workflowDefRead"));
@@ -211,8 +211,8 @@ public class Configuration extends BaseP
         add(workflowDefContainer);
 
         // Logger stuff
-        PropertyListView<LoggerTO> coreLoggerList =
-                new LoggerPropertyList(null, "corelogger", loggerRestClient.listLogs());
+        PropertyListView<LoggerTO> coreLoggerList
+                = new LoggerPropertyList(null, "corelogger", loggerRestClient.listLogs());
         WebMarkupContainer coreLoggerContainer = new WebMarkupContainer("coreLoggerContainer");
         coreLoggerContainer.add(coreLoggerList);
         coreLoggerContainer.setOutputMarkupId(true);
@@ -222,8 +222,8 @@ public class Configuration extends BaseP
         add(coreLoggerContainer);
 
         ConsoleLoggerController consoleLoggerController = new ConsoleLoggerController();
-        PropertyListView<LoggerTO> consoleLoggerList =
-                new LoggerPropertyList(consoleLoggerController, "consolelogger", consoleLoggerController.getLoggers());
+        PropertyListView<LoggerTO> consoleLoggerList
+                = new LoggerPropertyList(consoleLoggerController, "consolelogger", consoleLoggerController.getLoggers());
         WebMarkupContainer consoleLoggerContainer = new WebMarkupContainer("consoleLoggerContainer");
         consoleLoggerContainer.add(consoleLoggerList);
         consoleLoggerContainer.setOutputMarkupId(true);
@@ -294,7 +294,7 @@ public class Configuration extends BaseP
                         }
 
                         info(getString(Constants.OPERATION_SUCCEEDED));
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
 
                         target.add(confContainer);
                     }
@@ -304,8 +304,8 @@ public class Configuration extends BaseP
             }
         });
 
-        final AjaxFallbackDefaultDataTable<ConfigurationTO, String> confTable =
-                new AjaxFallbackDefaultDataTable<ConfigurationTO, String>(
+        final AjaxFallbackDefaultDataTable<ConfigurationTO, String> confTable
+                = new AjaxFallbackDefaultDataTable<ConfigurationTO, String>(
                         "syncopeconf", confColumns, new SyncopeConfProvider(), confPaginatorRows);
 
         confContainer = new WebMarkupContainer("confContainer");
@@ -380,7 +380,7 @@ public class Configuration extends BaseP
         @SuppressWarnings("rawtypes")
         Form confPaginatorForm = new Form("confPaginatorForm");
 
-        @SuppressWarnings({ "unchecked", "rawtypes" })
+        @SuppressWarnings({"unchecked", "rawtypes"})
         final DropDownChoice rowsChooser = new DropDownChoice("rowsChooser",
                 new PropertyModel(this, "confPaginatorRows"), prefMan.getPaginatorChoices());
 
@@ -471,8 +471,7 @@ public class Configuration extends BaseP
                         }
 
                         info(getString(Constants.OPERATION_SUCCEEDED));
-                        target.add(feedbackPanel);
-
+                        feedbackPanel.refresh(target);
                         target.add(notificationContainer);
                     }
                 }, ActionLink.ActionType.DELETE, "Notification");
@@ -481,8 +480,8 @@ public class Configuration extends BaseP
             }
         });
 
-        final AjaxFallbackDefaultDataTable<NotificationTO, String> notificationTable =
-                new AjaxFallbackDefaultDataTable<NotificationTO, String>(
+        final AjaxFallbackDefaultDataTable<NotificationTO, String> notificationTable
+                = new AjaxFallbackDefaultDataTable<NotificationTO, String>(
                         "notificationTable", notificationCols, new NotificationProvider(), notificationPaginatorRows);
 
         notificationContainer = new WebMarkupContainer("notificationContainer");
@@ -533,7 +532,7 @@ public class Configuration extends BaseP
         @SuppressWarnings("rawtypes")
         Form notificationPaginatorForm = new Form("notificationPaginatorForm");
 
-        @SuppressWarnings({ "unchecked", "rawtypes" })
+        @SuppressWarnings({"unchecked", "rawtypes"})
         final DropDownChoice rowsChooser = new DropDownChoice("rowsChooser", new PropertyModel(this,
                 "notificationPaginatorRows"), prefMan.getPaginatorChoices());
 
@@ -695,7 +694,7 @@ public class Configuration extends BaseP
                         info(getString(Constants.OPERATION_ERROR));
                     }
 
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             });
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConfigurationModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConfigurationModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConfigurationModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConfigurationModalPage.java Tue May  6 15:27:48 2014
@@ -58,8 +58,8 @@ public class ConfigurationModalPage exte
     public ConfigurationModalPage(final PageReference pageRef, final ModalWindow window,
             final ConfigurationTO configurationTO, final boolean createFlag) {
 
-        Form<ConfigurationTO> form =
-                new Form<ConfigurationTO>(FORM, new CompoundPropertyModel<ConfigurationTO>(configurationTO));
+        Form<ConfigurationTO> form
+                = new Form<ConfigurationTO>(FORM, new CompoundPropertyModel<ConfigurationTO>(configurationTO));
 
         final AjaxTextFieldPanel key = new AjaxTextFieldPanel("key", "key",
                 new PropertyModel<String>(configurationTO, "key"));
@@ -94,14 +94,14 @@ public class ConfigurationModalPage exte
                     } else {
                         error(getString("error_updating"));
                     }
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     LOG.error("While creating or updating configuration {}", configurationTO, e);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ConnectorModalPage.java Tue May  6 15:27:48 2014
@@ -391,7 +391,7 @@ public class ConnectorModalPage extends 
                     error(getString("error_connection"));
                 }
 
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
         connectorPropForm.add(check);
@@ -452,7 +452,7 @@ public class ConnectorModalPage extends 
                     window.close(target);
                 } catch (SyncopeClientException e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     ((Resources) pageRef.getPage()).setModalResult(false);
                     LOG.error("While creating or updating connector {}", conn, e);
                 }
@@ -461,7 +461,7 @@ public class ConnectorModalPage extends 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
 
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
         String roles = connInstanceTO.getId() == 0

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DerSchemaModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DerSchemaModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DerSchemaModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DerSchemaModalPage.java Tue May  6 15:27:48 2014
@@ -98,13 +98,13 @@ public class DerSchemaModalPage extends 
                     window.close(target);
                 } catch (SyncopeClientException e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/DisplayAttributesModalPage.java Tue May  6 15:27:48 2014
@@ -249,7 +249,7 @@ public class DisplayAttributesModalPage 
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Login.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Login.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Login.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Login.java Tue May  6 15:27:48 2014
@@ -27,22 +27,22 @@ import org.apache.syncope.common.to.User
 import org.apache.syncope.common.util.CollectionWrapper;
 import org.apache.syncope.console.SyncopeSession;
 import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.pages.panels.NotificationPanel;
 import org.apache.syncope.console.rest.UserSelfRestClient;
 import org.apache.syncope.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
 import org.apache.syncope.console.wicket.markup.html.form.LinkPanel;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
@@ -81,10 +81,15 @@ public class Login extends WebPage {
     private TextField<String> passwordField;
 
     private DropDownChoice<Locale> languageSelect;
+    
+    private final NotificationPanel feedbackPanel;
 
     public Login(final PageParameters parameters) {
         super(parameters);
 
+        feedbackPanel = new NotificationPanel(Constants.FEEDBACK);
+        add(feedbackPanel);
+        
         form = new Form<Void>("login");
 
         userIdField = new TextField<String>("userId", new Model<String>());
@@ -99,12 +104,12 @@ public class Login extends WebPage {
 
         form.add(languageSelect);
 
-        Button submitButton = new Button("submit", new Model<String>(getString("submit"))) {
+        AjaxButton submitButton = new AjaxButton("submit", new Model<String>(getString("submit"))) {
 
             private static final long serialVersionUID = 429178684321093953L;
 
             @Override
-            public void onSubmit() {
+            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                 try {
                     if (anonymousUser.equals(userIdField.getRawInput())) {
                         throw new AccessControlException("Illegal username");
@@ -115,6 +120,7 @@ public class Login extends WebPage {
                     setResponsePage(WelcomePage.class, parameters);
                 } catch (AccessControlException e) {
                     error(getString("login-error"));
+                    feedbackPanel.refresh(target);
                 }
             }
         };
@@ -123,7 +129,6 @@ public class Login extends WebPage {
         form.add(submitButton);
 
         add(form);
-        add(new FeedbackPanel(Constants.FEEDBACK));
 
         // Modal window for self registration
         final ModalWindow editProfileModalWin = new ModalWindow("selfRegModal");

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/MembershipModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/MembershipModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/MembershipModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/MembershipModalPage.java Tue May  6 15:27:48 2014
@@ -64,7 +64,7 @@ public class MembershipModalPage extends
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/NotificationModalPage.java Tue May  6 15:27:48 2014
@@ -244,13 +244,13 @@ class NotificationModalPage extends Base
                     window.close(target);
                 } catch (SyncopeClientException scee) {
                     error(getString(Constants.ERROR) + ": " + scee.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java Tue May  6 15:27:48 2014
@@ -34,6 +34,7 @@ import org.apache.syncope.common.types.P
 import org.apache.syncope.common.types.PolicyType;
 import org.apache.syncope.common.types.SyncPolicySpec;
 import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.pages.panels.NotificationPanel;
 import org.apache.syncope.console.pages.panels.PolicyBeanPanel;
 import org.apache.syncope.console.rest.PolicyRestClient;
 import org.apache.syncope.console.rest.ResourceRestClient;
@@ -110,17 +111,17 @@ public class PolicyModalPage<T extends A
         switch (policyTO.getType()) {
             case GLOBAL_ACCOUNT:
             case ACCOUNT:
-                type.setChoices(Arrays.asList(new PolicyType[] { PolicyType.GLOBAL_ACCOUNT, PolicyType.ACCOUNT }));
+                type.setChoices(Arrays.asList(new PolicyType[]{PolicyType.GLOBAL_ACCOUNT, PolicyType.ACCOUNT}));
                 break;
 
             case GLOBAL_PASSWORD:
             case PASSWORD:
-                type.setChoices(Arrays.asList(new PolicyType[] { PolicyType.GLOBAL_PASSWORD, PolicyType.PASSWORD }));
+                type.setChoices(Arrays.asList(new PolicyType[]{PolicyType.GLOBAL_PASSWORD, PolicyType.PASSWORD}));
                 break;
 
             case GLOBAL_SYNC:
             case SYNC:
-                type.setChoices(Arrays.asList(new PolicyType[] { PolicyType.GLOBAL_SYNC, PolicyType.SYNC }));
+                type.setChoices(Arrays.asList(new PolicyType[]{PolicyType.GLOBAL_SYNC, PolicyType.SYNC}));
 
             default:
         }
@@ -218,8 +219,8 @@ public class PolicyModalPage<T extends A
                 return new Model<String>(object);
             }
         };
-        final AjaxFallbackDefaultDataTable<String, String> resources =
-                new AjaxFallbackDefaultDataTable<String, String>("resources", resColumns, resDataProvider, 10);
+        final AjaxFallbackDefaultDataTable<String, String> resources
+                = new AjaxFallbackDefaultDataTable<String, String>("resources", resColumns, resDataProvider, 10);
         form.add(resources);
 
         List<IColumn<RoleTO, String>> roleColumns = new ArrayList<IColumn<RoleTO, String>>();
@@ -296,8 +297,8 @@ public class PolicyModalPage<T extends A
                 return new Model<RoleTO>(object);
             }
         };
-        final AjaxFallbackDefaultDataTable<RoleTO, String> roles =
-                new AjaxFallbackDefaultDataTable<RoleTO, String>("roles", roleColumns, roleDataProvider, 10);
+        final AjaxFallbackDefaultDataTable<RoleTO, String> roles
+                = new AjaxFallbackDefaultDataTable<RoleTO, String>("roles", roleColumns, roleDataProvider, 10);
         form.add(roles);
         mwindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
@@ -309,7 +310,7 @@ public class PolicyModalPage<T extends A
                 target.add(roles);
                 if (isModalResult()) {
                     info(getString(Constants.OPERATION_SUCCEEDED));
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     setModalResult(false);
                 }
             }
@@ -335,13 +336,13 @@ public class PolicyModalPage<T extends A
                     LOG.error("While creating policy", e);
 
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(getPage().get(Constants.FEEDBACK));
+                    ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(getPage().get(Constants.FEEDBACK));
+                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ProvisioningModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ProvisioningModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ProvisioningModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ProvisioningModalPage.java Tue May  6 15:27:48 2014
@@ -135,7 +135,7 @@ public class ProvisioningModalPage<T ext
                 } catch (Exception e) {
                     LOG.error("Error unlinkink resources", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
         }, ActionLink.ActionType.UNLINK, pageId);
@@ -151,7 +151,7 @@ public class ProvisioningModalPage<T ext
                 } catch (Exception e) {
                     LOG.error("Error de-provisioning user", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
         }, ActionLink.ActionType.DEPROVISION, pageId);
@@ -167,7 +167,7 @@ public class ProvisioningModalPage<T ext
                 } catch (Exception e) {
                     LOG.error("Error unassigning resources", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
         }, ActionLink.ActionType.UNASSIGN, pageId);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java Tue May  6 15:27:48 2014
@@ -147,13 +147,13 @@ public class ReportModalPage extends Bas
                         } catch (SyncopeClientException e) {
                             LOG.error("While creating or updating report", e);
                             error(getString(Constants.ERROR) + ": " + e.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
 
                     @Override
                     protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 };
 
@@ -505,7 +505,7 @@ public class ReportModalPage extends Bas
                             error(scce.getMessage());
                         }
 
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                         target.add(executions);
                     }
                 }, ActionLink.ActionType.DELETE, "Reports");

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java Tue May  6 15:27:48 2014
@@ -177,7 +177,7 @@ public class ReportletConfModalPage exte
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
         form.add(submit);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Reports.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Reports.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Reports.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Reports.java Tue May  6 15:27:48 2014
@@ -168,7 +168,7 @@ public class Reports extends BasePage {
                             error(scce.getMessage());
                         }
 
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                         target.add(reportContainer);
                     }
                 }, ActionLink.ActionType.EXECUTE, "Reports");
@@ -186,7 +186,7 @@ public class Reports extends BasePage {
                             error(scce.getMessage());
                         }
                         target.add(reportContainer);
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, "Reports");
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ResourceModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ResourceModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ResourceModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ResourceModalPage.java Tue May  6 15:27:48 2014
@@ -128,7 +128,7 @@ public class ResourceModalPage extends B
 
                 if (accountIdError) {
                     error(getString("accountIdValidation"));
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 } else {
                     try {
                         if (createFlag) {
@@ -144,14 +144,14 @@ public class ResourceModalPage extends B
                     } catch (Exception e) {
                         LOG.error("Failure managing resource {}", resourceTO, e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Resources.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Resources.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Resources.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Resources.java Tue May  6 15:27:48 2014
@@ -141,7 +141,7 @@ public class Resources extends BasePage 
                 } catch (Exception e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
                 }
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
                 target.add(connectorContainer);
             }
 
@@ -325,7 +325,7 @@ public class Resources extends BasePage 
                             LOG.error("While deleting resource " + resourceTO.getName(), e);
                         }
 
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                         target.add(resourceContainer);
                     }
                 }, ActionLink.ActionType.DELETE, "Resources");
@@ -485,7 +485,7 @@ public class Resources extends BasePage 
                         }
 
                         target.add(connectorContainer);
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, "Connectors");
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/RoleModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/RoleModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/RoleModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/RoleModalPage.java Tue May  6 15:27:48 2014
@@ -106,13 +106,13 @@ public class RoleModalPage extends BaseM
                     closeAction(target, form);
                 } catch (Exception e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Roles.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Roles.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Roles.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Roles.java Tue May  6 15:27:48 2014
@@ -31,6 +31,7 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -52,9 +53,15 @@ public class Roles extends BasePage {
 
     private final ModalWindow editRoleWin;
 
+    private final WebMarkupContainer roleTabsContainer;
+
     public Roles(final PageParameters parameters) {
         super(parameters);
 
+        roleTabsContainer = new WebMarkupContainer("roleTabsContainer");
+        roleTabsContainer.setOutputMarkupId(true);
+        add(roleTabsContainer);
+
         editRoleWin = new ModalWindow("editRoleWin");
         editRoleWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
         editRoleWin.setInitialHeight(WIN_HEIGHT);
@@ -64,11 +71,11 @@ public class Roles extends BasePage {
 
         final TreeRolePanel treePanel = new TreeRolePanel("treePanel");
         treePanel.setOutputMarkupId(true);
-        add(treePanel);
+        roleTabsContainer.add(treePanel);
 
         final RoleSummaryPanel summaryPanel = new RoleSummaryPanel.Builder("summaryPanel")
                 .window(editRoleWin).callerPageRef(Roles.this.getPageReference()).build();
-        add(summaryPanel);
+        roleTabsContainer.add(summaryPanel);
 
         editRoleWin.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
@@ -76,7 +83,7 @@ public class Roles extends BasePage {
 
             @Override
             public void onClose(final AjaxRequestTarget target) {
-                final RoleSummaryPanel summaryPanel = (RoleSummaryPanel) get("summaryPanel");
+                final RoleSummaryPanel summaryPanel = (RoleSummaryPanel) roleTabsContainer.get("summaryPanel");
 
                 final TreeNodeClickUpdate data = new TreeNodeClickUpdate(target,
                         summaryPanel == null || summaryPanel.getSelectedNode() == null
@@ -87,14 +94,15 @@ public class Roles extends BasePage {
 
                 if (modalResult) {
                     getSession().info(getString(Constants.OPERATION_SUCCEEDED));
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     modalResult = false;
                 }
+
             }
         });
 
-        final AbstractSearchResultPanel searchResult =
-                new RoleSearchResultPanel("searchResult", true, null, getPageReference(), restClient);
+        final AbstractSearchResultPanel searchResult
+                = new RoleSearchResultPanel("searchResult", true, null, getPageReference(), restClient);
         add(searchResult);
 
         final Form searchForm = new Form("searchForm");
@@ -115,12 +123,12 @@ public class Roles extends BasePage {
                 doSearch(target, fiql, searchResult);
 
                 Session.get().getFeedbackMessages().clear();
-                target.add(searchPanel.getSearchFeedback());
+                searchPanel.getSearchFeedback().refresh(target);
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(searchPanel.getSearchFeedback());
+                searchPanel.getSearchFeedback().refresh(target);
             }
         });
     }
@@ -147,8 +155,8 @@ public class Roles extends BasePage {
                     .window(editRoleWin).callerPageRef(Roles.this.getPageReference())
                     .selectedNodeId(update.getSelectedNodeId()).build();
 
-            addOrReplace(summaryPanel);
-            update.getTarget().add(this);
+            roleTabsContainer.addOrReplace(summaryPanel);
+            update.getTarget().add(roleTabsContainer);
         }
     }
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Schema.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Schema.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Schema.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Schema.java Tue May  6 15:27:48 2014
@@ -285,7 +285,7 @@ public class Schema extends BasePage {
                         }
 
                         info(getString(Constants.OPERATION_SUCCEEDED));
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
 
                         target.add(webContainer);
                     }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java Tue May  6 15:27:48 2014
@@ -235,7 +235,7 @@ public class SchemaModalPage extends Abs
 
                 if (schemaTO.isMultivalue() && schemaTO.isUniqueConstraint()) {
                     error(getString("multivalueAndUniqueConstr.validation"));
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                     return;
                 }
 
@@ -252,13 +252,13 @@ public class SchemaModalPage extends Abs
                     window.close(target);
                 } catch (SyncopeClientException e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/StatusModalPage.java Tue May  6 15:27:48 2014
@@ -267,7 +267,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error enabling resources", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.REACTIVATE, pageId);
@@ -290,7 +290,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error disabling resources", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.SUSPEND, pageId);
@@ -315,7 +315,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error unlinking resources", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.UNLINK, pageId);
@@ -340,7 +340,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error linking resources", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.LINK, pageId);
@@ -366,7 +366,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error de-provisioning user", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.DEPROVISION, pageId);
@@ -391,7 +391,7 @@ public class StatusModalPage<T extends A
                         } catch (Exception e) {
                             LOG.error("Error provisioning user", e);
                             error(getString(Constants.ERROR) + ": " + e.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
                 }
@@ -418,7 +418,7 @@ public class StatusModalPage<T extends A
                     } catch (Exception e) {
                         LOG.error("Error unassigning resources", e);
                         error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 }
             }, ActionLink.ActionType.UNASSIGN, pageId);
@@ -442,7 +442,7 @@ public class StatusModalPage<T extends A
                         } catch (Exception e) {
                             LOG.error("Error assigning resources", e);
                             error(getString(Constants.ERROR) + ": " + e.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
                 }
@@ -568,7 +568,7 @@ public class StatusModalPage<T extends A
                         } catch (Exception e) {
                             LOG.error("Error provisioning resources", e);
                             error(getString(Constants.ERROR) + ": " + e.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
                 }.feedbackPanelAutomaticReload(false);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/TaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/TaskModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/TaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/TaskModalPage.java Tue May  6 15:27:48 2014
@@ -154,7 +154,7 @@ public abstract class TaskModalPage exte
                             error(scce.getMessage());
                         }
 
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                         target.add(executions);
                     }
                 }, ActionLink.ActionType.DELETE, TASKS);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Todo.java Tue May  6 15:27:48 2014
@@ -128,7 +128,7 @@ public class Todo extends BasePage {
                         } catch (SyncopeClientException scee) {
                             error(getString(Constants.ERROR) + ": " + scee.getMessage());
                         }
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                         target.add(container);
                     }
                 }, ActionLink.ActionType.CLAIM, "Approval");

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserModalPage.java Tue May  6 15:27:48 2014
@@ -196,13 +196,13 @@ public abstract class UserModalPage exte
                 } catch (Exception e) {
                     LOG.error("While creating or updating user", e);
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
     }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserOwnerSelectModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserOwnerSelectModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserOwnerSelectModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/UserOwnerSelectModalPage.java Tue May  6 15:27:48 2014
@@ -57,12 +57,12 @@ public class UserOwnerSelectModalPage ex
                 doSearch(target, searchCond, searchResult);
 
                 Session.get().getFeedbackMessages().clear();
-                target.add(searchPanel.getSearchFeedback());
+                searchPanel.getSearchFeedback().refresh(target);
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(searchPanel.getSearchFeedback());
+                searchPanel.getSearchFeedback().refresh(target);
             }
         });
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java Tue May  6 15:27:48 2014
@@ -114,13 +114,13 @@ public class Users extends BasePage {
                         doSearch(target, fiql, searchResult);
 
                         Session.get().getFeedbackMessages().clear();
-                        target.add(searchPanel.getSearchFeedback());
+                        searchPanel.getSearchFeedback().refresh(target);
                     }
 
                     @Override
                     protected void onError(final AjaxRequestTarget target, final Form<?> form) {
 
-                        target.add(searchPanel.getSearchFeedback());
+                        searchPanel.getSearchFeedback().refresh(target);
                     }
                 };
 
@@ -158,7 +158,7 @@ public class Users extends BasePage {
                     // set operation succeeded
                     getSession().info(getString(Constants.OPERATION_SUCCEEDED));
                     // refresh feedback panel
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
         });

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/VirSchemaModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/VirSchemaModalPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/VirSchemaModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/VirSchemaModalPage.java Tue May  6 15:27:48 2014
@@ -87,13 +87,13 @@ public class VirSchemaModalPage extends 
                     window.close(target);
                 } catch (SyncopeClientException e) {
                     error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
 
             @Override
             protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                target.add(feedbackPanel);
+                feedbackPanel.refresh(target);
             }
         };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/XMLEditorPopupPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/XMLEditorPopupPage.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/XMLEditorPopupPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/XMLEditorPopupPage.java Tue May  6 15:27:48 2014
@@ -54,8 +54,8 @@ public class XMLEditorPopupPage extends 
         final TextArea<String> workflowDefArea = new TextArea<String>("workflowDefArea", new Model<String>(definition));
         wfForm.add(workflowDefArea);
 
-        AjaxButton submit =
-                new ClearIndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT)), getPageReference()) {
+        AjaxButton submit
+                = new ClearIndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT)), getPageReference()) {
 
                     private static final long serialVersionUID = -958724007591692537L;
 
@@ -68,12 +68,12 @@ public class XMLEditorPopupPage extends 
                         } catch (SyncopeClientException scee) {
                             error(getString(Constants.ERROR) + ": " + scee.getMessage());
                         }
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
 
                     @Override
                     protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                        target.add(feedbackPanel);
+                        feedbackPanel.refresh(target);
                     }
                 };
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchPanel.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchPanel.java Tue May  6 15:27:48 2014
@@ -42,7 +42,6 @@ import org.apache.syncope.console.rest.S
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.IFeedbackMessageFilter;
 import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
@@ -80,7 +79,7 @@ public abstract class AbstractSearchPane
 
     protected IModel<List<String>> roleNames;
 
-    protected FeedbackPanel searchFeedback;
+    protected NotificationPanel searchFeedback;
 
     protected List<SearchClause> searchClauses;
 
@@ -108,7 +107,7 @@ public abstract class AbstractSearchPane
         searchFormContainer = new WebMarkupContainer("searchFormContainer");
         searchFormContainer.setOutputMarkupId(true);
 
-        searchFeedback = new FeedbackPanel("searchFeedback", new IFeedbackMessageFilter() {
+        searchFeedback = new NotificationPanel("searchFeedback", "notificationpanel_top_right", new IFeedbackMessageFilter() {
 
             private static final long serialVersionUID = 6895024863321391672L;
 
@@ -202,7 +201,7 @@ public abstract class AbstractSearchPane
         };
     }
 
-    public FeedbackPanel getSearchFeedback() {
+    public NotificationPanel getSearchFeedback() {
         return searchFeedback;
     }
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSearchResultPanel.java Tue May  6 15:27:48 2014
@@ -112,7 +112,7 @@ public abstract class AbstractSearchResu
     /**
      * Feedback panel specified by the caller.
      */
-    protected final FeedbackPanel feedbackPanel;
+    protected final NotificationPanel feedbackPanel;
 
     /**
      * Specify if results are about a filtered search or not. Using this attribute it is possible to use this panel to
@@ -309,7 +309,7 @@ public abstract class AbstractSearchResu
                     // set operation succeeded
                     getSession().info(getString(Constants.OPERATION_SUCCEEDED));
                     // refresh feedback panel
-                    target.add(feedbackPanel);
+                    feedbackPanel.refresh(target);
                 }
             }
         });

Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationPanel.java?rev=1592778&view=auto
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationPanel.java (added)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationPanel.java Tue May  6 15:27:48 2014
@@ -0,0 +1,115 @@
+/*
+ * 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.console.pages.panels;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.feedback.FeedbackMessage;
+import org.apache.wicket.feedback.IFeedbackMessageFilter;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.Model;
+
+public class NotificationPanel extends FeedbackPanel {
+
+    private static final long serialVersionUID = 5895940553202128621L;
+
+    private final String cssClass = "notificationpanel";
+
+    private String additionalCSSClass = "notificationpanel_top_right";
+
+    // Create a notifcation panel with the default additional class, specified as a field variable
+    public NotificationPanel(final String id) {
+        super(id);
+
+        init(id, additionalCSSClass);
+    }
+
+    // Create a notifcation panel with a custom additional class, overwriting the field variable
+    public NotificationPanel(final String id, final String additionalCSSClass) {
+        super(id);
+
+        this.additionalCSSClass = additionalCSSClass;
+
+        init(id, additionalCSSClass);
+    }
+
+    public NotificationPanel(final String id, final String additionalCSSClass, final  IFeedbackMessageFilter 
+            feedbackMessageFilter) {
+        super(id, feedbackMessageFilter);
+
+        this.additionalCSSClass = additionalCSSClass;
+
+        init(id, additionalCSSClass);
+    }
+
+    private void init(final String id, final String additionalCSSClass) {
+        // set custom markup id and ouput it, to find the component later on in the js function
+        setMarkupId(id);
+        setOutputMarkupId(true);
+
+        // Add the additional cssClass and hide the element by default
+        add(new AttributeModifier("class", new Model<String>(cssClass + " " + additionalCSSClass)));
+        add(new AttributeModifier("style", new Model<String>("opacity: 0;")));
+    }
+
+    /**
+     * Method to refresh the notification panel
+     *
+     * if there are any feedback messages for the user, find the gravest level, format the notification panel
+     * accordingly and show it
+     *
+     * @param target AjaxRequestTarget to add panel and the calling javascript function
+     */
+    public void refresh(final AjaxRequestTarget target) {
+
+        // any feedback at all in the current form?
+        if (anyMessage()) {
+            int highestFeedbackLevel = FeedbackMessage.INFO;
+
+            // any feedback with the given level?
+            if (anyMessage(FeedbackMessage.WARNING)) {
+                highestFeedbackLevel = FeedbackMessage.WARNING;
+            }
+            if (anyMessage(FeedbackMessage.ERROR)) {
+                highestFeedbackLevel = FeedbackMessage.ERROR;
+            }
+
+            // add the css classes to the notification panel, 
+            // including the border css which represents the highest level of feedback
+            add(new AttributeModifier("class",
+                    new Model<String>(cssClass
+                            + " " + additionalCSSClass
+                            + " notificationpanel_border_" + String.valueOf(highestFeedbackLevel))));
+
+            // refresh the panel and call the js function with the panel markup id 
+            // and the total count of messages
+            target.add(this);
+            target.appendJavaScript("showNotification('" + getMarkupId() + "', " + getCurrentMessages().size() + ");");
+        }
+    }
+
+    /**
+     * Returns css class for the single rows of the panel
+     * @param message
+     */
+    @Override
+    protected String getCSSClass(final FeedbackMessage message) {
+        return "notificationpanel_row_" + message.getLevelAsString();
+    }
+}

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java Tue May  6 15:27:48 2014
@@ -135,7 +135,7 @@ public class NotificationTasks extends A
                             error(scce.getMessage());
                         }
 
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                         target.add(container);
                     }
                 }, ActionLink.ActionType.EXECUTE, TASKS);
@@ -153,7 +153,7 @@ public class NotificationTasks extends A
                             error(scce.getMessage());
                         }
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, TASKS);
 
@@ -199,7 +199,7 @@ public class NotificationTasks extends A
                 target.add(container);
                 if (operationResult) {
                     info(getString(Constants.OPERATION_SUCCEEDED));
-                    target.add(getPage().get(Constants.FEEDBACK));
+                    ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     operationResult = false;
                 }
             }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PoliciesPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PoliciesPanel.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PoliciesPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PoliciesPanel.java Tue May  6 15:27:48 2014
@@ -189,7 +189,7 @@ public class PoliciesPanel extends Panel
                         }
 
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, "Policies");
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java Tue May  6 15:27:48 2014
@@ -156,7 +156,7 @@ public class PropagationTasks extends Ab
                             error(scce.getMessage());
                         }
 
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                         target.add(container);
                     }
                 }, ActionLink.ActionType.EXECUTE, TASKS);
@@ -174,7 +174,7 @@ public class PropagationTasks extends Ab
                             error(scce.getMessage());
                         }
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, TASKS);
 
@@ -218,7 +218,7 @@ public class PropagationTasks extends Ab
                 target.add(container);
                 if (operationResult) {
                     info(getString(Constants.OPERATION_SUCCEEDED));
-                    target.add(getPage().get(Constants.FEEDBACK));
+                    ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     operationResult = false;
                 }
             }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RoleSearchResultPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RoleSearchResultPanel.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RoleSearchResultPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/RoleSearchResultPanel.java Tue May  6 15:27:48 2014
@@ -150,7 +150,7 @@ public class RoleSearchResultPanel exten
                             editmodal.show(target);
                         } catch (SyncopeClientException scce) {
                             error(getString(Constants.OPERATION_ERROR) + ": " + scce.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
                 }, ActionLink.ActionType.DELETE, PAGEID);

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java Tue May  6 15:27:48 2014
@@ -145,7 +145,7 @@ public class SchedTasks extends Abstract
                             error(scce.getMessage());
                         }
 
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                         target.add(container);
                     }
                 }, ActionLink.ActionType.EXECUTE, TASKS);
@@ -163,7 +163,7 @@ public class SchedTasks extends Abstract
                             error(scce.getMessage());
                         }
 
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                         target.add(container);
                     }
                 }, ActionLink.ActionType.DRYRUN, TASKS);
@@ -181,7 +181,7 @@ public class SchedTasks extends Abstract
                             error(scce.getMessage());
                         }
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, TASKS);
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java Tue May  6 15:27:48 2014
@@ -190,7 +190,7 @@ public class SyncTasks extends AbstractT
                         }
 
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.EXECUTE, TASKS);
 
@@ -208,7 +208,7 @@ public class SyncTasks extends AbstractT
                         }
 
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DRYRUN, TASKS);
 
@@ -225,7 +225,7 @@ public class SyncTasks extends AbstractT
                             error(scce.getMessage());
                         }
                         target.add(container);
-                        target.add(getPage().get(Constants.FEEDBACK));
+                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
                     }
                 }, ActionLink.ActionType.DELETE, TASKS);
 

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/UserSearchResultPanel.java Tue May  6 15:27:48 2014
@@ -227,7 +227,7 @@ public class UserSearchResultPanel exten
                             editmodal.show(target);
                         } catch (SyncopeClientException scce) {
                             error(getString(Constants.OPERATION_ERROR) + ": " + scce.getMessage());
-                            target.add(feedbackPanel);
+                            feedbackPanel.refresh(target);
                         }
                     }
                 }, ActionLink.ActionType.DELETE, PAGEID);

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BaseModalPage.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BaseModalPage.html?rev=1592778&r1=1592777&r2=1592778&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BaseModalPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/BaseModalPage.html Tue May  6 15:27:48 2014
@@ -17,31 +17,40 @@ specific language governing permissions 
 under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <head>
-    <title></title>
+    <head>
+        <title></title>
 
-    <link rel="stylesheet" type="text/css" href="webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css" media="all"/>
-    <link rel="stylesheet" type="text/css" href="css/style.css" media="all"/>
-    <link rel="stylesheet" type="text/css" href="css/fieldstyle.css" media="all"/>
-
-    <script type="text/javascript" src="webjars/jquery-ui/${jquery-ui.version}/ui/minified/jquery-ui.min.js"></script>
-
-    <script type="text/javascript">
-      $(function() {
-        $("#tabs").tabs();
-      });
-    </script>
-
-    <style type="text/css">
-      table.palette td.header {
-        background:url("images/ui-bg_glass_75_e6e6e6_1x400.png")
-          repeat-x scroll 50% 50% #E6E6E6 !important;
-      }
-    </style>
-  </head>
-  <body onload="setTimeout('window.focus();', 0);">
-    <div wicket:id="feedback"/>
+        <link rel="stylesheet" type="text/css" href="webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css" media="all"/>
+        <link rel="stylesheet" type="text/css" href="css/style.css" media="all"/>
+        <link rel="stylesheet" type="text/css" href="css/fieldstyle.css" media="all"/>
 
-    <wicket:child />
-  </body>
+        <script type="text/javascript" src="webjars/jquery-ui/${jquery-ui.version}/ui/minified/jquery-ui.min.js"></script>
+
+        <script type="text/javascript">
+            $(function() {
+                $("#tabs").tabs();
+            });
+
+            var notificationShowedTimes = 0;
+
+            function showNotification(componentId, messagecount) {
+                notificationShowedTimes++;
+                timeout = 1700 + (messagecount * 500) + notificationShowedTimes * 200;
+                $('div#' + componentId).fadeTo('normal', 1.0);
+                setTimeout("$('div#" + componentId + "').fadeOut('normal')", timeout);
+            }
+        </script>
+
+        <style type="text/css">
+            table.palette td.header {
+                background:url("images/ui-bg_glass_75_e6e6e6_1x400.png")
+                    repeat-x scroll 50% 50% #E6E6E6 !important;
+            }
+        </style>
+    </head>
+    <body onload="setTimeout('window.focus();', 0);">
+        <div wicket:id="feedback"/>
+
+        <wicket:child />
+    </body>
 </html>