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/06/20 14:32:04 UTC

svn commit: r1604162 [1/2] - in /syncope/trunk: common/src/main/java/org/apache/syncope/common/types/ console/src/main/java/org/apache/syncope/console/pages/ console/src/main/java/org/apache/syncope/console/pages/panels/ console/src/main/java/org/apach...

Author: andreapatricelli
Date: Fri Jun 20 12:32:03 2014
New Revision: 1604162

URL: http://svn.apache.org/r1604162
Log:
[SYNCOPE-473] implemented configuration interface for push tasks

Added:
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSyncTaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.java
      - copied, changed from r1603360, 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/PushTasksPanel.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasksPanel.java
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.html
      - copied, changed from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.properties
      - copied, changed from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_it.properties
      - copied, changed from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_pt_BR.properties
      - copied, changed from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.html
      - copied, changed from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_it.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/PushTasksPanel_pt_BR.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_pt_BR.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_it.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasksPanel_pt_BR.properties
      - copied unchanged from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_pt_BR.properties
Removed:
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks_pt_BR.properties
Modified:
    syncope/trunk/common/src/main/java/org/apache/syncope/common/types/ClientExceptionType.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/SchedTaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java
    syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.html
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_it.properties
    syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_pt_BR.properties
    syncope/trunk/console/src/test/java/org/apache/syncope/console/AccessTestITCase.java
    syncope/trunk/console/src/test/java/org/apache/syncope/console/TaskTestITCase.java

Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/types/ClientExceptionType.java
URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/types/ClientExceptionType.java?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/common/src/main/java/org/apache/syncope/common/types/ClientExceptionType.java (original)
+++ syncope/trunk/common/src/main/java/org/apache/syncope/common/types/ClientExceptionType.java Fri Jun 20 12:32:03 2014
@@ -55,6 +55,7 @@ public enum ClientExceptionType {
     InvalidPropagationTask(Response.Status.BAD_REQUEST),
     InvalidSchedTask(Response.Status.BAD_REQUEST),
     InvalidSyncTask(Response.Status.BAD_REQUEST),
+    InvalidPushTask(Response.Status.BAD_REQUEST),
     InvalidValues(Response.Status.BAD_REQUEST),
     NotFound(Response.Status.NOT_FOUND),
     RejectedUserCreate(Response.Status.BAD_REQUEST),

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=1604162&r1=1604161&r2=1604162&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 Fri Jun 20 12:32:03 2014
@@ -19,7 +19,6 @@
 package org.apache.syncope.console.pages;
 
 import org.apache.syncope.common.to.SchedTaskTO;
-import org.apache.syncope.common.to.SyncTaskTO;
 import org.apache.syncope.common.SyncopeClientException;
 import org.apache.syncope.console.commons.Constants;
 import org.apache.syncope.console.commons.DateFormatROModel;
@@ -84,21 +83,9 @@ public abstract class AbstractSchedTaskM
                 taskTO.setCronExpression(StringUtils.hasText(taskTO.getCronExpression())
                         ? crontab.getCronExpression()
                         : null);
-
+                
                 try {
-                    if (taskTO.getId() > 0) {
-                        if (taskTO instanceof SyncTaskTO) {
-                            taskRestClient.updateSyncTask((SyncTaskTO) taskTO);
-                        } else {
-                            taskRestClient.updateSchedTask(taskTO);
-                        }
-                    } else {
-                        if (taskTO instanceof SyncTaskTO) {
-                            taskRestClient.createSyncTask((SyncTaskTO) taskTO);
-                        } else {
-                            taskRestClient.createSchedTask(taskTO);
-                        }
-                    }
+                    submitAction(taskTO);
 
                     ((BasePage) pageRef.getPage()).setModalResult(true);
 
@@ -139,4 +126,7 @@ public abstract class AbstractSchedTaskM
         form.add(submit);
         form.add(cancel);
     }
+
+    protected abstract void submitAction(SchedTaskTO taskTO);
+
 }

Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSyncTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSyncTaskModalPage.java?rev=1604162&view=auto
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSyncTaskModalPage.java (added)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/AbstractSyncTaskModalPage.java Fri Jun 20 12:32:03 2014
@@ -0,0 +1,201 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.to.AbstractSyncTaskTO;
+import org.apache.syncope.common.to.ResourceTO;
+import org.apache.syncope.common.to.SyncTaskTO;
+import org.apache.syncope.common.types.MatchingRule;
+import org.apache.syncope.common.types.UnmatchingRule;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.commons.SelectChoiceRenderer;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * Abstract Modal window for Sync and Push Task form.
+ */
+public abstract class AbstractSyncTaskModalPage extends AbstractSchedTaskModalPage {
+
+    private static final long serialVersionUID = 2148403203517274669L;
+
+    public AbstractSyncTaskModalPage(final ModalWindow window, final AbstractSyncTaskTO taskTO,
+            final PageReference pageRef) {
+
+        super(window, taskTO, pageRef);
+
+        final IModel<List<String>> allResources = new LoadableDetachableModel<List<String>>() {
+
+            private static final long serialVersionUID = 5275935387613157437L;
+
+            @Override
+            protected List<String> load() {
+                final List<String> resourceNames = new ArrayList<String>();
+
+                for (ResourceTO resourceTO : resourceRestClient.getAllResources()) {
+
+                    resourceNames.add(resourceTO.getName());
+                }
+                return resourceNames;
+            }
+        };
+
+        final AjaxDropDownChoicePanel<String> resource = new AjaxDropDownChoicePanel<String>("resource",
+                getString("resourceName"), new PropertyModel<String>(taskTO, "resource"));
+        resource.setChoices(allResources.getObject());
+        resource.setChoiceRenderer(new SelectChoiceRenderer());
+        resource.addRequiredLabel();
+        resource.setEnabled(taskTO.getId() == 0);
+        resource.setStyleSheet("ui-widget-content ui-corner-all long_dynamicsize");
+
+        profile.add(resource);
+
+        final WebMarkupContainer syncActionsClassNames = new WebMarkupContainer("syncActionsClassNames");
+        syncActionsClassNames.setOutputMarkupId(true);
+        profile.add(syncActionsClassNames);
+
+        final AjaxLink<Void> first = new IndicatingAjaxLink<Void>("first") {
+
+            private static final long serialVersionUID = -7978723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target) {
+                taskTO.getActionsClassNames().add(StringUtils.EMPTY);
+                setVisible(false);
+                target.add(syncActionsClassNames);
+            }
+        };
+        first.setOutputMarkupPlaceholderTag(true);
+        first.setVisible(taskTO.getActionsClassNames().isEmpty());
+        syncActionsClassNames.add(first);
+
+        final ListView<String> actionsClasses = new ListView<String>("actionsClasses",
+                new PropertyModel<List<String>>(taskTO, "actionsClassNames")) {
+
+                    private static final long serialVersionUID = 9101744072914090143L;
+
+                    @Override
+                    protected void populateItem(final ListItem<String> item) {
+                        final String className = item.getModelObject();
+
+                        final DropDownChoice<String> actionsClass = new DropDownChoice<String>(
+                                "actionsClass", new Model<String>(className), taskRestClient.getSyncActionsClasses());
+                        actionsClass.setNullValid(true);
+                        actionsClass.setRequired(true);
+                        actionsClass.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_BLUR) {
+
+                            private static final long serialVersionUID = -1107858522700306810L;
+
+                            @Override
+                            protected void onUpdate(final AjaxRequestTarget target) {
+                                taskTO.getActionsClassNames().
+                                set(item.getIndex(), actionsClass.getModelObject());
+                            }
+                        });
+                        actionsClass.setRequired(true);
+                        actionsClass.setOutputMarkupId(true);
+                        actionsClass.setRequired(true);
+                        item.add(actionsClass);
+
+                        AjaxLink<Void> minus = new IndicatingAjaxLink<Void>("drop") {
+
+                            private static final long serialVersionUID = -7978723352517770644L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                taskTO.getActionsClassNames().remove(className);
+                                first.setVisible(taskTO.getActionsClassNames().isEmpty());
+                                target.add(syncActionsClassNames);
+                            }
+                        };
+                        item.add(minus);
+
+                        final AjaxLink<Void> plus = new IndicatingAjaxLink<Void>("add") {
+
+                            private static final long serialVersionUID = -7978723352517770644L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                taskTO.getActionsClassNames().add(StringUtils.EMPTY);
+                                target.add(syncActionsClassNames);
+                            }
+                        };
+                        plus.setOutputMarkupPlaceholderTag(true);
+                        plus.setVisible(item.getIndex() == taskTO.getActionsClassNames().size() - 1);
+                        item.add(plus);
+                    }
+                };
+        syncActionsClassNames.add(actionsClasses);
+        // SYNCOPE-473: provisional, when push action classes will be implemented list will be enabled and container
+        // moved to correct class (SyncTaskModalPage or PushTaskModalPage)
+        syncActionsClassNames.setEnabled(taskTO instanceof SyncTaskTO);
+
+        final AjaxCheckBoxPanel creates = new AjaxCheckBoxPanel("performCreate", getString("creates"),
+                new PropertyModel<Boolean>(taskTO, "performCreate"));
+        profile.add(creates);
+
+        final AjaxCheckBoxPanel updates = new AjaxCheckBoxPanel("performUpdate", getString("updates"),
+                new PropertyModel<Boolean>(taskTO, "performUpdate"));
+        profile.add(updates);
+
+        final AjaxCheckBoxPanel deletes = new AjaxCheckBoxPanel("performDelete", getString("updates"),
+                new PropertyModel<Boolean>(taskTO, "performDelete"));
+        profile.add(deletes);
+
+        final AjaxCheckBoxPanel syncStatus = new AjaxCheckBoxPanel("syncStatus", getString("syncStatus"),
+                new PropertyModel<Boolean>(taskTO, "syncStatus"));
+        profile.add(syncStatus);
+
+        final AjaxDropDownChoicePanel<MatchingRule> matchingRule = new AjaxDropDownChoicePanel<MatchingRule>(
+                "matchingRule", "matchingRule", new PropertyModel<MatchingRule>(taskTO, "matchigRule"));
+        matchingRule.setChoices(Arrays.asList(MatchingRule.values()));
+        ((DropDownChoice) matchingRule.getField()).setNullValid(false);
+        ((DropDownChoice) matchingRule.getField()).setDefaultModelObject(taskTO.getMatchigRule() == null
+                ? MatchingRule.UPDATE
+                : taskTO.getMatchigRule());
+        profile.add(matchingRule);
+
+        final AjaxDropDownChoicePanel<UnmatchingRule> unmatchingRule = new AjaxDropDownChoicePanel<UnmatchingRule>(
+                "unmatchingRule", "unmatchingRule", new PropertyModel<UnmatchingRule>(taskTO, "unmatchigRule"));
+        unmatchingRule.setChoices(Arrays.asList(UnmatchingRule.values()));
+        ((DropDownChoice) unmatchingRule.getField()).setNullValid(false);
+        ((DropDownChoice) unmatchingRule.getField()).setDefaultModelObject(taskTO.getUnmatchigRule() == null
+                ? UnmatchingRule.ASSIGN
+                : taskTO.getUnmatchigRule());
+        profile.add(unmatchingRule);
+    }
+}

Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java?rev=1604162&view=auto
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java (added)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PushTaskModalPage.java Fri Jun 20 12:32:03 2014
@@ -0,0 +1,121 @@
+/*
+ * 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;
+
+import org.apache.syncope.common.to.PushTaskTO;
+import org.apache.syncope.common.to.SchedTaskTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.pages.panels.RoleSearchPanel;
+import org.apache.syncope.console.pages.panels.UserSearchPanel;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.Model;
+
+/**
+ * Modal window with Push Task form.
+ */
+public class PushTaskModalPage extends AbstractSyncTaskModalPage {
+
+    private static final long serialVersionUID = 2148403203517274669L;
+
+    final UserSearchPanel userFilter;
+
+    final RoleSearchPanel roleFilter;
+
+    final AjaxCheckBoxPanel checkUserFilter;
+
+    final AjaxCheckBoxPanel checkRoleFilter;
+
+    public PushTaskModalPage(final ModalWindow window, final PushTaskTO taskTO, final PageReference pageRef) {
+
+        super(window, taskTO, pageRef);
+
+        final WebMarkupContainer filterContainer = new WebMarkupContainer("filterContainer");
+        filterContainer.setOutputMarkupId(true);
+
+        checkUserFilter = new AjaxCheckBoxPanel("checkUserFilter", "checkUserFilter",
+                new Model<Boolean>(taskTO.getUserFilter() != null));
+        filterContainer.add(checkUserFilter);
+
+        checkRoleFilter = new AjaxCheckBoxPanel("checkRoleFilter", "checkRoleFilter",
+                new Model<Boolean>(taskTO.getRoleFilter() != null));
+        filterContainer.add(checkRoleFilter);
+
+        userFilter =
+                new UserSearchPanel.Builder("userFilter").fiql(taskTO.getUserFilter()).build();
+        userFilter.setEnabled(checkUserFilter.getModelObject());
+
+        filterContainer.add(userFilter);
+
+        roleFilter =
+                new RoleSearchPanel.Builder("roleFilter").fiql(taskTO.getRoleFilter()).build();
+        roleFilter.setEnabled(checkRoleFilter.getModelObject());
+        filterContainer.add(roleFilter);
+
+        checkUserFilter.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+            private static final long serialVersionUID = -1107858522700306810L;
+
+            @Override
+            protected void onUpdate(final AjaxRequestTarget target) {
+                userFilter.setEnabled(checkUserFilter.getModelObject());
+                target.add(filterContainer);
+            }
+        });
+
+        checkRoleFilter.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+            private static final long serialVersionUID = -1107858522700306810L;
+
+            @Override
+            protected void onUpdate(final AjaxRequestTarget target) {
+                roleFilter.setEnabled(checkRoleFilter.getModelObject());
+                target.add(filterContainer);
+            }
+        });
+
+        profile.add(filterContainer);
+    }
+
+    @Override
+    public void submitAction(final SchedTaskTO taskTO) {
+        setFilters((PushTaskTO) taskTO);
+        if (taskTO.getId() > 0) {
+            taskRestClient.updateSchedTask((PushTaskTO) taskTO);
+        } else {
+            taskRestClient.createSchedTask((PushTaskTO) taskTO);
+        }
+    }
+
+    private void setFilters(final PushTaskTO pushTaskTO) {
+        // set user filter if enabled
+        pushTaskTO.setUserFilter(checkUserFilter.getModelObject()
+                ? userFilter.buildFIQL()
+                : null);
+        // set role filter if enabled
+        pushTaskTO.setRoleFilter(checkRoleFilter.getModelObject()
+                ? roleFilter.buildFIQL()
+                : null);
+    }
+
+}

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchedTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchedTaskModalPage.java?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchedTaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SchedTaskModalPage.java Fri Jun 20 12:32:03 2014
@@ -56,4 +56,13 @@ public class SchedTaskModalPage extends 
         className.setStyleSheet("ui-widget-content ui-corner-all long_dynamicsize");
         profile.add(className);
     }
+
+    @Override
+    public void submitAction(final SchedTaskTO taskTO) {
+        if (taskTO.getId() > 0) {
+            taskRestClient.updateSchedTask(taskTO);
+        } else {
+            taskRestClient.createSchedTask(taskTO);
+        }
+    }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/SyncTaskModalPage.java Fri Jun 20 12:32:03 2014
@@ -18,34 +18,17 @@
  */
 package org.apache.syncope.console.pages;
 
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.to.ResourceTO;
+import org.apache.syncope.common.to.SchedTaskTO;
 import org.apache.syncope.common.to.SyncTaskTO;
-import org.apache.syncope.console.commons.Constants;
-import org.apache.syncope.console.commons.SelectChoiceRenderer;
 import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 
 /**
- * Modal window with Task form (to stop and start execution).
+ * Modal window with Sync Task form.
  */
-public class SyncTaskModalPage extends AbstractSchedTaskModalPage {
+public class SyncTaskModalPage extends AbstractSyncTaskModalPage {
 
     private static final long serialVersionUID = 2148403203517274669L;
 
@@ -53,127 +36,17 @@ public class SyncTaskModalPage extends A
 
         super(window, taskTO, pageRef);
 
-        final IModel<List<String>> allResources = new LoadableDetachableModel<List<String>>() {
-
-            private static final long serialVersionUID = 5275935387613157437L;
-
-            @Override
-            protected List<String> load() {
-                final List<String> resourceNames = new ArrayList<String>();
-
-                for (ResourceTO resourceTO : resourceRestClient.getAllResources()) {
-
-                    resourceNames.add(resourceTO.getName());
-                }
-                return resourceNames;
-            }
-        };
-
-        final AjaxDropDownChoicePanel<String> resource = new AjaxDropDownChoicePanel<String>("resource",
-                getString("resourceName"), new PropertyModel<String>(taskTO, "resource"));
-        resource.setChoices(allResources.getObject());
-        resource.setChoiceRenderer(new SelectChoiceRenderer());
-        resource.addRequiredLabel();
-        resource.setEnabled(taskTO.getId() == 0);
-        resource.setStyleSheet("ui-widget-content ui-corner-all long_dynamicsize");
-
-        profile.add(resource);
-
-        final WebMarkupContainer syncActionsClassNames = new WebMarkupContainer("syncActionsClassNames");
-        syncActionsClassNames.setOutputMarkupId(true);
-        profile.add(syncActionsClassNames);
-
-        final AjaxLink<Void> first = new IndicatingAjaxLink<Void>("first") {
-
-            private static final long serialVersionUID = -7978723352517770644L;
-
-            @Override
-            public void onClick(final AjaxRequestTarget target) {
-                taskTO.getActionsClassNames().add(StringUtils.EMPTY);
-                setVisible(false);
-                target.add(syncActionsClassNames);
-            }
-        };
-        first.setOutputMarkupPlaceholderTag(true);
-        first.setVisible(taskTO.getActionsClassNames().isEmpty());
-        syncActionsClassNames.add(first);
-
-        final ListView<String> actionsClasses = new ListView<String>("actionsClasses",
-                new PropertyModel<List<String>>(taskTO, "actionsClassNames")) {
-
-                    private static final long serialVersionUID = 9101744072914090143L;
-
-                    @Override
-                    protected void populateItem(final ListItem<String> item) {
-                        final String className = item.getModelObject();
-
-                        final DropDownChoice<String> actionsClass = new DropDownChoice<String>(
-                                "actionsClass", new Model<String>(className), taskRestClient.getSyncActionsClasses());
-                        actionsClass.setNullValid(true);
-                        actionsClass.setRequired(true);
-                        actionsClass.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_BLUR) {
-
-                            private static final long serialVersionUID = -1107858522700306810L;
-
-                            @Override
-                            protected void onUpdate(final AjaxRequestTarget target) {
-                                taskTO.getActionsClassNames().
-                                set(item.getIndex(), actionsClass.getModelObject());
-                            }
-                        });
-                        actionsClass.setRequired(true);
-                        actionsClass.setOutputMarkupId(true);
-                        actionsClass.setRequired(true);
-                        item.add(actionsClass);
-
-                        AjaxLink<Void> minus = new IndicatingAjaxLink<Void>("drop") {
-
-                            private static final long serialVersionUID = -7978723352517770644L;
-
-                            @Override
-                            public void onClick(final AjaxRequestTarget target) {
-                                taskTO.getActionsClassNames().remove(className);
-                                first.setVisible(taskTO.getActionsClassNames().isEmpty());
-                                target.add(syncActionsClassNames);
-                            }
-                        };
-                        item.add(minus);
-
-                        final AjaxLink<Void> plus = new IndicatingAjaxLink<Void>("add") {
-
-                            private static final long serialVersionUID = -7978723352517770644L;
-
-                            @Override
-                            public void onClick(final AjaxRequestTarget target) {
-                                taskTO.getActionsClassNames().add(StringUtils.EMPTY);
-                                target.add(syncActionsClassNames);
-                            }
-                        };
-                        plus.setOutputMarkupPlaceholderTag(true);
-                        plus.setVisible(item.getIndex() == taskTO.getActionsClassNames().size() - 1);
-                        item.add(plus);
-                    }
-                };
-        syncActionsClassNames.add(actionsClasses);
-
-        final AjaxCheckBoxPanel creates = new AjaxCheckBoxPanel("performCreate", getString("creates"),
-                new PropertyModel<Boolean>(taskTO, "performCreate"));
-        profile.add(creates);
-
-        final AjaxCheckBoxPanel updates = new AjaxCheckBoxPanel("performUpdate", getString("updates"),
-                new PropertyModel<Boolean>(taskTO, "performUpdate"));
-        profile.add(updates);
-
-        final AjaxCheckBoxPanel deletes = new AjaxCheckBoxPanel("performDelete", getString("updates"),
-                new PropertyModel<Boolean>(taskTO, "performDelete"));
-        profile.add(deletes);
-
-        final AjaxCheckBoxPanel syncStatus = new AjaxCheckBoxPanel("syncStatus", getString("syncStatus"),
-                new PropertyModel<Boolean>(taskTO, "syncStatus"));
-        profile.add(syncStatus);
-
         final AjaxCheckBoxPanel fullReconciliation = new AjaxCheckBoxPanel("fullReconciliation",
                 getString("fullReconciliation"), new PropertyModel<Boolean>(taskTO, "fullReconciliation"));
         profile.add(fullReconciliation);
     }
+
+    @Override
+    public void submitAction(final SchedTaskTO taskTO) {
+        if (taskTO.getId() > 0) {
+            taskRestClient.updateSyncTask((SyncTaskTO) taskTO);
+        } else {
+            taskRestClient.createSyncTask((SyncTaskTO) taskTO);
+        }
+    }
 }

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java Fri Jun 20 12:32:03 2014
@@ -32,7 +32,8 @@ import org.apache.syncope.console.pages.
 import org.apache.syncope.console.pages.panels.NotificationTasks;
 import org.apache.syncope.console.pages.panels.PropagationTasks;
 import org.apache.syncope.console.pages.panels.SchedTasks;
-import org.apache.syncope.console.pages.panels.SyncTasks;
+import org.apache.syncope.console.pages.panels.PushTasksPanel;
+import org.apache.syncope.console.pages.panels.SyncTasksPanel;
 import org.apache.syncope.console.rest.BaseRestClient;
 import org.apache.syncope.console.rest.TaskRestClient;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
@@ -57,7 +58,8 @@ public class Tasks extends BasePage {
         add(new PropagationTasks("propagation", getPageReference()));
         add(new NotificationTasks("notification", getPageReference()));
         add(new SchedTasks("sched", getPageReference()));
-        add(new SyncTasks("sync", getPageReference()));
+        add(new SyncTasksPanel("sync", getPageReference()));
+        add(new PushTasksPanel("push", getPageReference()));
 
         getPageReference();
     }
@@ -193,6 +195,8 @@ public class Tasks extends BasePage {
      * @param dataProvider data provider.
      * @param container container.
      * @param currentPage current page index.
+     * @param pageRef page reference
+     * @param restClient syncope base rest client
      * @return data table.
      */
     public static AjaxDataTablePanel<AbstractTaskTO, String> updateTaskTable(

Copied: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.java (from r1603360, 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/AbstractSyncTasksPanel.java?p2=syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/AbstractSyncTasksPanel.java&p1=syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java&r1=1603360&r2=1604162&rev=1604162&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/AbstractSyncTasksPanel.java Fri Jun 20 12:32:03 2014
@@ -18,23 +18,17 @@
  */
 package org.apache.syncope.console.pages.panels;
 
-import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.common.to.SyncTaskTO;
 import org.apache.syncope.common.to.AbstractTaskTO;
-import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.AbstractSyncTaskTO;
+import org.apache.syncope.common.to.PushTaskTO;
+import org.apache.syncope.common.to.SyncTaskTO;
 import org.apache.syncope.console.commons.Constants;
-import org.apache.syncope.console.pages.RoleTemplateModalPage;
+import org.apache.syncope.console.pages.PushTaskModalPage;
 import org.apache.syncope.console.pages.SyncTaskModalPage;
 import org.apache.syncope.console.pages.Tasks;
 import org.apache.syncope.console.pages.Tasks.TasksProvider;
-import org.apache.syncope.console.pages.UserTemplateModalPage;
 import org.apache.syncope.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
-import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
-import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
-import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
-import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -44,32 +38,30 @@ import org.apache.wicket.authroles.autho
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.request.http.WebResponse;
 
-public class SyncTasks extends AbstractTasks {
+public abstract class AbstractSyncTasksPanel<T extends AbstractSyncTaskTO> extends AbstractTasks {
 
     private static final long serialVersionUID = -8674781241465369244L;
 
     private int paginatorRows;
 
-    private WebMarkupContainer container;
+    protected WebMarkupContainer container;
+
+    protected ModalWindow window;
 
-    private ModalWindow window;
+    protected AjaxDataTablePanel<AbstractTaskTO, String> table;
 
-    private final List<IColumn<AbstractTaskTO, String>> columns;
+    private final Class<T> reference;
 
-    private AjaxDataTablePanel<AbstractTaskTO, String> table;
+    public AbstractSyncTasksPanel(final String id, final PageReference pageRef, final Class<T> reference) {
+        super(id, pageRef);
 
-    public SyncTasks(final String id, final PageReference pageRef) {
-        super(id);
+        this.reference = reference;
 
         container = new WebMarkupContainer("container");
         container.setOutputMarkupId(true);
@@ -85,186 +77,28 @@ public class SyncTasks extends AbstractT
         ((Tasks) pageRef.getPage()).setWindowClosedCallback(window, container);
 
         paginatorRows = prefMan.getPaginatorRows(getWebRequest(), Constants.PREF_SYNC_TASKS_PAGINATOR_ROWS);
+    }
 
-        columns = new ArrayList<IColumn<AbstractTaskTO, String>>();
-
-        columns.add(new PropertyColumn<AbstractTaskTO, String>(
-                new StringResourceModel("id", this, null), "id", "id"));
-        columns.add(new PropertyColumn<AbstractTaskTO, String>(
-                new StringResourceModel("name", this, null), "name", "name"));
-        columns.add(new PropertyColumn<AbstractTaskTO, String>(
-                new StringResourceModel("description", this, null), "description", "description"));
-        columns.add(new PropertyColumn<AbstractTaskTO, String>(
-                new StringResourceModel("resourceName", this, null), "resource", "resource"));
-        columns.add(new DatePropertyColumn<AbstractTaskTO>(
-                new StringResourceModel("lastExec", this, null), "lastExec", "lastExec"));
-        columns.add(new DatePropertyColumn<AbstractTaskTO>(
-                new StringResourceModel("nextExec", this, null), "nextExec", "nextExec"));
-        columns.add(new PropertyColumn<AbstractTaskTO, String>(
-                new StringResourceModel("latestExecStatus", this, null), "latestExecStatus", "latestExecStatus"));
-        columns.add(new ActionColumn<AbstractTaskTO, String>(new StringResourceModel("actions", this, null, "")) {
-
-            private static final long serialVersionUID = 2054811145491901166L;
-
-            @Override
-            public ActionLinksPanel getActions(final String componentId, final IModel<AbstractTaskTO> model) {
-
-                final SyncTaskTO taskTO = (SyncTaskTO) model.getObject();
-
-                final ActionLinksPanel panel = new ActionLinksPanel(componentId, model, pageRef);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-
-                        window.setPageCreator(new ModalWindow.PageCreator() {
-
-                            private static final long serialVersionUID = -7834632442532690940L;
-
-                            @Override
-                            public Page createPage() {
-                                return new SyncTaskModalPage(window, taskTO, pageRef);
-                            }
-                        });
-
-                        window.show(target);
-                    }
-                }, ActionLink.ActionType.EDIT, TASKS);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-
-                        window.setPageCreator(new ModalWindow.PageCreator() {
-
-                            private static final long serialVersionUID = -7834632442532690940L;
-
-                            @Override
-                            public Page createPage() {
-                                return new UserTemplateModalPage(pageRef, window, taskTO);
-                            }
-                        });
-
-                        window.show(target);
-                    }
-                }, ActionLink.ActionType.USER_TEMPLATE, TASKS);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-
-                        window.setPageCreator(new ModalWindow.PageCreator() {
-
-                            private static final long serialVersionUID = -7834632442532690940L;
-
-                            @Override
-                            public Page createPage() {
-                                return new RoleTemplateModalPage(pageRef, window, taskTO);
-                            }
-                        });
-
-                        window.show(target);
-                    }
-                }, ActionLink.ActionType.ROLE_TEMPLATE, TASKS);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        try {
-                            restClient.startExecution(taskTO.getId(), false);
-                            getSession().info(getString(Constants.OPERATION_SUCCEEDED));
-                        } catch (SyncopeClientException scce) {
-                            error(scce.getMessage());
-                        }
-
-                        target.add(container);
-                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
-                    }
-                }, ActionLink.ActionType.EXECUTE, TASKS);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        try {
-                            restClient.startExecution(taskTO.getId(), true);
-                            getSession().info(getString(Constants.OPERATION_SUCCEEDED));
-                        } catch (SyncopeClientException scce) {
-                            error(scce.getMessage());
-                        }
-
-                        target.add(container);
-                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
-                    }
-                }, ActionLink.ActionType.DRYRUN, TASKS);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        try {
-                            restClient.delete(taskTO.getId(), SyncTaskTO.class);
-                            info(getString(Constants.OPERATION_SUCCEEDED));
-                        } catch (SyncopeClientException scce) {
-                            error(scce.getMessage());
-                        }
-                        target.add(container);
-                        ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
-                    }
-                }, ActionLink.ActionType.DELETE, TASKS);
-
-                return panel;
-            }
-
-            @Override
-            public Component getHeader(String componentId) {
-                final ActionLinksPanel panel = new ActionLinksPanel(componentId, new Model(), pageRef);
-
-                panel.add(new ActionLink() {
-
-                    private static final long serialVersionUID = -7978723352517770644L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        if (target != null) {
-                            target.add(table);
-                        }
-                    }
-                }, ActionLink.ActionType.RELOAD, TASKS, "list");
+    @Override
+    public void onEvent(final IEvent<?> event) {
+        if (event.getPayload() instanceof AbstractSearchResultPanel.EventDataWrapper) {
+            ((AbstractSearchResultPanel.EventDataWrapper) event.getPayload()).getTarget().add(container);
+        }
+    }
 
-                return panel;
-            }
-        });
+    protected void initTasksTable() {
 
         table = Tasks.updateTaskTable(
-                columns,
-                new TasksProvider<SyncTaskTO>(restClient, paginatorRows, getId(), SyncTaskTO.class),
+                getColumns(),
+                new TasksProvider<T>(restClient, paginatorRows, getId(), this.reference),
                 container,
                 0,
-                pageRef,
+                this.pageRef,
                 restClient);
 
-        container.add(table);
-
         Form paginatorForm = new Form("PaginatorForm");
 
-        @SuppressWarnings({"unchecked", "rawtypes"})
+        @SuppressWarnings({ "unchecked", "rawtypes" })
         final DropDownChoice rowsChooser = new DropDownChoice("rowsChooser", new PropertyModel(this, "paginatorRows"),
                 prefMan.getPaginatorChoices());
 
@@ -278,8 +112,8 @@ public class SyncTasks extends AbstractT
                         String.valueOf(paginatorRows));
 
                 table = Tasks.updateTaskTable(
-                        columns,
-                        new TasksProvider<SyncTaskTO>(restClient, paginatorRows, getId(), SyncTaskTO.class),
+                        getColumns(),
+                        new TasksProvider<T>(restClient, paginatorRows, getId(), reference),
                         container,
                         table == null ? 0 : (int) table.getCurrentPage(),
                         pageRef,
@@ -290,9 +124,9 @@ public class SyncTasks extends AbstractT
         });
 
         paginatorForm.add(rowsChooser);
-        add(paginatorForm);
+        container.add(paginatorForm);
 
-        // create new user
+        // create new task
         AjaxLink<Void> createLink = new ClearIndicatingAjaxLink<Void>("createLink", pageRef) {
 
             private static final long serialVersionUID = -7978723352517770644L;
@@ -305,7 +139,8 @@ public class SyncTasks extends AbstractT
 
                     @Override
                     public Page createPage() {
-                        return new SyncTaskModalPage(window, new SyncTaskTO(), pageRef);
+                        return reference.equals(SyncTaskTO.class) ? new SyncTaskModalPage(window, new SyncTaskTO(),
+                                pageRef) : new PushTaskModalPage(window, new PushTaskTO(), pageRef);
                     }
                 });
 
@@ -317,12 +152,8 @@ public class SyncTasks extends AbstractT
                 createLink, RENDER, xmlRolesReader.getAllAllowedRoles(TASKS, "create"));
 
         add(createLink);
-    }
 
-    @Override
-    public void onEvent(final IEvent<?> event) {
-        if (event.getPayload() instanceof AbstractSearchResultPanel.EventDataWrapper) {
-            ((AbstractSearchResultPanel.EventDataWrapper) event.getPayload()).getTarget().add(container);
-        }
     }
+
+    protected abstract List<IColumn<AbstractTaskTO, String>> getColumns();
 }

Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PushTasksPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PushTasksPanel.java?rev=1604162&view=auto
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PushTasksPanel.java (added)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PushTasksPanel.java Fri Jun 20 12:32:03 2014
@@ -0,0 +1,186 @@
+/*
+ * 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 static org.apache.syncope.console.pages.panels.AbstractTasks.TASKS;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.AbstractTaskTO;
+import org.apache.syncope.common.to.PushTaskTO;
+import org.apache.syncope.common.to.SyncTaskTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.pages.PushTaskModalPage;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
+
+public class PushTasksPanel extends AbstractSyncTasksPanel<PushTaskTO> {
+
+    private static final long serialVersionUID = -2492299671757861889L;
+
+    public PushTasksPanel(final String id, final PageReference pageRef) {
+        super(id, pageRef, PushTaskTO.class);
+        initTasksTable();
+    }
+
+    @Override
+    protected List<IColumn<AbstractTaskTO, String>> getColumns() {
+        final List<IColumn<AbstractTaskTO, String>> pushTasksColumns = new ArrayList<IColumn<AbstractTaskTO, String>>();
+
+        pushTasksColumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("id", this, null), "id", "id"));
+        pushTasksColumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("name", this, null), "name", "name"));
+        pushTasksColumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("description", this, null), "description", "description"));
+        pushTasksColumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("resourceName", this, null), "resource", "resource"));
+        pushTasksColumns.add(new DatePropertyColumn<AbstractTaskTO>(
+                new StringResourceModel("lastExec", this, null), "lastExec", "lastExec"));
+        pushTasksColumns.add(new DatePropertyColumn<AbstractTaskTO>(
+                new StringResourceModel("nextExec", this, null), "nextExec", "nextExec"));
+        pushTasksColumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("latestExecStatus", this, null), "latestExecStatus", "latestExecStatus"));
+
+        pushTasksColumns.add(
+                new ActionColumn<AbstractTaskTO, String>(new StringResourceModel("actions", this, null, "")) {
+
+                    private static final long serialVersionUID = 2054811145491901166L;
+
+                    @Override
+                    public ActionLinksPanel getActions(final String componentId, final IModel<AbstractTaskTO> model) {
+
+                        final PushTaskTO taskTO = (PushTaskTO) model.getObject();
+
+                        final ActionLinksPanel panel = new ActionLinksPanel(componentId, model, pageRef);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+
+                                window.setPageCreator(new ModalWindow.PageCreator() {
+
+                                    private static final long serialVersionUID = -7834632442532690940L;
+
+                                    @Override
+                                    public Page createPage() {
+                                        return new PushTaskModalPage(window, taskTO, pageRef);
+                                    }
+                                });
+
+                                window.show(target);
+                            }
+                        }, ActionLink.ActionType.EDIT, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.startExecution(taskTO.getId(), false);
+                                    getSession().info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.EXECUTE, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.startExecution(taskTO.getId(), true);
+                                    getSession().info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.DRYRUN, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.delete(taskTO.getId(), SyncTaskTO.class);
+                                    info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.DELETE, TASKS);
+
+                        return panel;
+                    }
+
+                    @Override
+                    public Component getHeader(final String componentId) {
+                        final ActionLinksPanel panel = new ActionLinksPanel(componentId, new Model(), pageRef);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -7978723352517770644L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                if (target != null) {
+                                    target.add(table);
+                                }
+                            }
+                        }, ActionLink.ActionType.RELOAD, TASKS, "list");
+
+                        return panel;
+                    }
+                });
+
+        return pushTasksColumns;
+
+    }
+}

Added: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasksPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasksPanel.java?rev=1604162&view=auto
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasksPanel.java (added)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasksPanel.java Fri Jun 20 12:32:03 2014
@@ -0,0 +1,228 @@
+/*
+ * 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 static org.apache.syncope.console.pages.panels.AbstractTasks.TASKS;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.to.AbstractTaskTO;
+import org.apache.syncope.common.to.SyncTaskTO;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.pages.RoleTemplateModalPage;
+import org.apache.syncope.console.pages.SyncTaskModalPage;
+import org.apache.syncope.console.pages.UserTemplateModalPage;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.wicket.Component;
+import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
+
+public class SyncTasksPanel extends AbstractSyncTasksPanel<SyncTaskTO> {
+
+    private static final long serialVersionUID = 53189199346016099L;
+
+    public SyncTasksPanel(final String id, final PageReference pageRef) {
+        super(id, pageRef, SyncTaskTO.class);
+        initTasksTable();
+    }
+
+    @Override
+    protected List<IColumn<AbstractTaskTO, String>> getColumns() {
+        final List<IColumn<AbstractTaskTO, String>> syncTaskscolumns = new ArrayList<IColumn<AbstractTaskTO, String>>();
+
+        syncTaskscolumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("id", this, null), "id", "id"));
+        syncTaskscolumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("name", this, null), "name", "name"));
+        syncTaskscolumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("description", this, null), "description", "description"));
+        syncTaskscolumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("resourceName", this, null), "resource", "resource"));
+        syncTaskscolumns.add(new DatePropertyColumn<AbstractTaskTO>(
+                new StringResourceModel("lastExec", this, null), "lastExec", "lastExec"));
+        syncTaskscolumns.add(new DatePropertyColumn<AbstractTaskTO>(
+                new StringResourceModel("nextExec", this, null), "nextExec", "nextExec"));
+        syncTaskscolumns.add(new PropertyColumn<AbstractTaskTO, String>(
+                new StringResourceModel("latestExecStatus", this, null), "latestExecStatus", "latestExecStatus"));
+
+        syncTaskscolumns.add(
+                new ActionColumn<AbstractTaskTO, String>(new StringResourceModel("actions", this, null, "")) {
+
+                    private static final long serialVersionUID = 2054811145491901166L;
+
+                    @Override
+                    public ActionLinksPanel getActions(final String componentId, final IModel<AbstractTaskTO> model) {
+
+                        final SyncTaskTO taskTO = (SyncTaskTO) model.getObject();
+
+                        final ActionLinksPanel panel = new ActionLinksPanel(componentId, model, pageRef);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+
+                                window.setPageCreator(new ModalWindow.PageCreator() {
+
+                                    private static final long serialVersionUID = -7834632442532690940L;
+
+                                    @Override
+                                    public Page createPage() {
+                                        return new SyncTaskModalPage(window, taskTO, pageRef);
+                                    }
+                                });
+
+                                window.show(target);
+                            }
+                        }, ActionLink.ActionType.EDIT, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+
+                                window.setPageCreator(new ModalWindow.PageCreator() {
+
+                                    private static final long serialVersionUID = -7834632442532690940L;
+
+                                    @Override
+                                    public Page createPage() {
+                                        return new UserTemplateModalPage(pageRef, window, taskTO);
+                                    }
+                                });
+
+                                window.show(target);
+                            }
+                        }, ActionLink.ActionType.USER_TEMPLATE, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+
+                                window.setPageCreator(new ModalWindow.PageCreator() {
+
+                                    private static final long serialVersionUID = -7834632442532690940L;
+
+                                    @Override
+                                    public Page createPage() {
+                                        return new RoleTemplateModalPage(pageRef, window, taskTO);
+                                    }
+                                });
+
+                                window.show(target);
+                            }
+                        }, ActionLink.ActionType.ROLE_TEMPLATE, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.startExecution(taskTO.getId(), false);
+                                    getSession().info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.EXECUTE, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.startExecution(taskTO.getId(), true);
+                                    getSession().info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.DRYRUN, TASKS);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -3722207913631435501L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                try {
+                                    restClient.delete(taskTO.getId(), SyncTaskTO.class);
+                                    info(getString(Constants.OPERATION_SUCCEEDED));
+                                } catch (SyncopeClientException scce) {
+                                    error(scce.getMessage());
+                                }
+                                target.add(container);
+                                ((NotificationPanel) getPage().get(Constants.FEEDBACK)).refresh(target);
+                            }
+                        }, ActionLink.ActionType.DELETE, TASKS);
+
+                        return panel;
+                    }
+
+                    @Override
+                    public Component getHeader(String componentId) {
+                        final ActionLinksPanel panel = new ActionLinksPanel(componentId, new Model(), pageRef);
+
+                        panel.add(new ActionLink() {
+
+                            private static final long serialVersionUID = -7978723352517770644L;
+
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                if (target != null) {
+                                    target.add(table);
+                                }
+                            }
+                        }, ActionLink.ActionType.RELOAD, TASKS, "list");
+
+                        return panel;
+                    }
+                });
+
+        return syncTaskscolumns;
+    }
+}

Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java (original)
+++ syncope/trunk/console/src/main/java/org/apache/syncope/console/wicket/markup/html/form/ActionLinksPanel.java Fri Jun 20 12:32:03 2014
@@ -461,7 +461,7 @@ public class ActionLinksPanel extends Pa
                 }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
                 break;
             default:
-            // do nothink
+            // do nothing
         }
 
         if (fragment != null) {

Copied: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.html (from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html)
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.html?p2=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.html&p1=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html&r1=1603360&r2=1604162&rev=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.html Fri Jun 20 12:32:03 2014
@@ -137,12 +137,52 @@ under the License.
                   </div>
                   <div class="tablerow">
                     <div class="tablecolumn_label short_dynamicsize">
-                      <label for="fullReconciliation"><wicket:message key="fullReconciliation"/></label>
+                      <label for="matchingRule"><wicket:message key="matchingRule"/></label>
                     </div>
                     <div class="tablecolumn_field medium_dynamicsize">
-                      <span wicket:id="fullReconciliation">[fullReconciliation]</span>
+                      <span wicket:id="matchingRule">[matchingRule]</span>
                     </div>
                   </div>
+                  <div class="tablerow alt">
+                    <div class="tablecolumn_label short_dynamicsize">
+                      <label for="unmatchingRule"><wicket:message key="unmatchingRule"/></label>
+                    </div>
+                    <div class="tablecolumn_field medium_dynamicsize">
+                      <span wicket:id="unmatchingRule">[unmatchingRule]</span>
+                    </div>
+                  </div>
+                  <div id="filters">
+                    <span wicket:id="filterContainer">
+                      <div class="tablerow" style="width: auto;">
+                        <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
+                          <span wicket:id="checkUserFilter">[checkUserFilter]</span>
+                        </div>
+                        <div class="tablecolumn_label" style="width: auto;">
+                          <label for="checkUserFilter"><wicket:message key="checkUserFilter"/></label>
+                        </div>
+                      </div>
+
+                      <div id="userFilter" style="border: 1px solid #dddddd; padding-bottom: 2%; padding-top: 2%;">
+                        <div id="condition">
+                          <span wicket:id="userFilter"/>
+                        </div>
+                      </div>
+                      <div class="tablerow" style="width: auto;">
+                        <div class="tablecolumn_field" style="width: auto; padding-right: 5px;">
+                          <span wicket:id="checkRoleFilter">[checkRoleFilter]</span>
+                        </div>
+                        <div class="tablecolumn_label" style="width: auto;">
+                          <label for="checkRoleFilter"><wicket:message key="checkRoleFilter"/></label>
+                        </div>
+                      </div>
+                      <div id="roleFilter" style="border: 1px solid #dddddd; padding-bottom: 2%; padding-top: 2%;">
+                        <div id="condition">
+                          <span wicket:id="roleFilter"/>
+                        </div>
+                      </div>
+                    </span>
+                  </div>
+                  <wicket:child/>
                 </div>
               </span>
             </div>
@@ -185,4 +225,4 @@ under the License.
     </div>
     <div wicket:id="taskExecMessageWin"/>
   </wicket:extend>
-</html>
+</html>
\ No newline at end of file

Copied: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.properties (from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties)
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.properties?p2=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.properties&p1=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties&r1=1603360&r2=1604162&rev=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage.properties Fri Jun 20 12:32:03 2014
@@ -39,3 +39,7 @@ deletes=Delete matching identities
 syncStatus=Synchronize user status
 fullReconciliation=Full reconciliation
 actionsClasses=Actions classes
+matchingRule=Mathcing Rule
+unmatchingRule=Unmatching Rule
+checkUserFilter=User Filter
+checkRoleFilter=Role Filter

Copied: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_it.properties (from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties)
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_it.properties?p2=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_it.properties&p1=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties&r1=1603360&r2=1604162&rev=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_it.properties Fri Jun 20 12:32:03 2014
@@ -40,3 +40,7 @@ status=Sincronizza stato utente
 fullReconciliation=Riconciliazione totale
 actionsClasses=Classi azioni
 syncStatus=Sincronizza stato utente
+matchingRule=Regola di corrispondenza
+unmatchingRule=Regola di non corrispondenza
+checkUserFilter=Filtro Utente
+checkRoleFilter=Filtero Ruolo

Copied: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_pt_BR.properties (from r1603360, syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties)
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_pt_BR.properties?p2=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_pt_BR.properties&p1=syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties&r1=1603360&r2=1604162&rev=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PushTaskModalPage_pt_BR.properties Fri Jun 20 12:32:03 2014
@@ -39,3 +39,7 @@ deletes=Excluir identidades corresponden
 syncStatus=Sincronizar status de usu\u00e1rio
 fullReconciliation=Reconcilia\u00e7\u00e3o completa
 actionsClasses=Classes de a\u00e7\u00f5es
+matchingRule=Regra de correspond\u00eancia
+unmatchingRule=Regra de non correspond\u00eancia
+checkUserFilter=Filtro Usu\u00e1rio
+checkRoleFilter=Filtro Papel

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.html Fri Jun 20 12:32:03 2014
@@ -143,6 +143,23 @@ under the License.
                       <span wicket:id="fullReconciliation">[fullReconciliation]</span>
                     </div>
                   </div>
+                  <div class="tablerow alt">
+                    <div class="tablecolumn_label short_dynamicsize">
+                      <label for="matchingRule"><wicket:message key="matchingRule"/></label>
+                    </div>
+                    <div class="tablecolumn_field medium_dynamicsize">
+                      <span wicket:id="matchingRule">[matchingRule]</span>
+                    </div>
+                  </div>
+                  <div class="tablerow">
+                    <div class="tablecolumn_label short_dynamicsize">
+                      <label for="unmatchingRule"><wicket:message key="unmatchingRule"/></label>
+                    </div>
+                    <div class="tablecolumn_field medium_dynamicsize">
+                      <span wicket:id="unmatchingRule">[unmatchingRule]</span>
+                    </div>
+                  </div>
+                  <wicket:child/>
                 </div>
               </span>
             </div>
@@ -185,4 +202,4 @@ under the License.
     </div>
     <div wicket:id="taskExecMessageWin"/>
   </wicket:extend>
-</html>
+</html>
\ No newline at end of file

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage.properties Fri Jun 20 12:32:03 2014
@@ -39,3 +39,5 @@ deletes=Delete matching identities
 syncStatus=Synchronize user status
 fullReconciliation=Full reconciliation
 actionsClasses=Actions classes
+matchingRule=Mathcing Rule
+unmatchingRule=Unmatching Rule

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_it.properties Fri Jun 20 12:32:03 2014
@@ -40,3 +40,5 @@ status=Sincronizza stato utente
 fullReconciliation=Riconciliazione totale
 actionsClasses=Classi azioni
 syncStatus=Sincronizza stato utente
+matchingRule=Regola di corrispondenza
+unmatchingRule=Regola di non corrispondenza

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/SyncTaskModalPage_pt_BR.properties Fri Jun 20 12:32:03 2014
@@ -39,3 +39,5 @@ deletes=Excluir identidades corresponden
 syncStatus=Sincronizar status de usu\u00e1rio
 fullReconciliation=Reconcilia\u00e7\u00e3o completa
 actionsClasses=Classes de a\u00e7\u00f5es
+matchingRule=Regra de correspond\u00eancia
+unmatchingRule=Regra de non correspond\u00eancia

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.html
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.html?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.html (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.html Fri Jun 20 12:32:03 2014
@@ -24,6 +24,7 @@ under the License.
       <li><a href="#tabs-2"><span><wicket:message key="tab2"/></span></a></li>
       <li><a href="#tabs-3"><span><wicket:message key="tab3"/></span></a></li>
       <li><a href="#tabs-4"><span><wicket:message key="tab4"/></span></a></li>
+      <li><a href="#tabs-5"><span><wicket:message key="tab5"/></span></a></li>
     </ul>
     <div id="tabs-1">
       <span wicket:id="propagation">[propagation tasks]</span>
@@ -32,10 +33,13 @@ under the License.
       <span wicket:id="notification">[notification tasks]</span>
     </div>
     <div id="tabs-3">
-      <span wicket:id="sync">[synchronization tasks]</span>
+      <span wicket:id="sched">[scheduled tasks]</span>
     </div>
     <div id="tabs-4">
-      <span wicket:id="sched">[scheduled tasks]</span>
+      <span wicket:id="sync">[synchronization tasks]</span>
+    </div>
+    <div id="tabs-5">
+      <span wicket:id="push">[push tasks]</span>
     </div>
   </div>
 

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.properties?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks.properties Fri Jun 20 12:32:03 2014
@@ -16,5 +16,6 @@
 # under the License.
 tab1=Propagation Tasks
 tab2=Notification tasks
-tab3=Synchronization Tasks
-tab4=Scheduled Tasks
+tab3=Scheduled Tasks
+tab4=Synchronization Tasks
+tab5=Push Tasks
\ No newline at end of file

Modified: syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_it.properties
URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_it.properties?rev=1604162&r1=1604161&r2=1604162&view=diff
==============================================================================
--- syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_it.properties (original)
+++ syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/Tasks_it.properties Fri Jun 20 12:32:03 2014
@@ -16,5 +16,6 @@
 # under the License.
 tab1=Task di propagazione
 tab2=Task di notifica
-tab3=Task di sincronizzazione
-tab4=Task programmabili
+tab3=Task programmabili
+tab4=Task di sincronizzazione
+tab5=Task di push
\ No newline at end of file