You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/10/01 11:34:41 UTC
[5/6] syncope git commit: [SYNCOPE-156] removed every reference to
the oldest modal mechanisms
[SYNCOPE-156] removed every reference to the oldest modal mechanisms
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/1e15b05e
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/1e15b05e
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/1e15b05e
Branch: refs/heads/SYNCOPE-156
Commit: 1e15b05e3e3dafa4436edbb6f2585dc68aa855f6
Parents: 2a7cf5a
Author: fmartelli <fa...@gmail.com>
Authored: Thu Oct 1 11:33:23 2015 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Thu Oct 1 11:33:23 2015 +0200
----------------------------------------------------------------------
.../commons/status/ConnObjectWrapper.java | 4 +-
.../console/commons/status/StatusBean.java | 3 +-
.../console/pages/AbstractStatusModalPage.java | 8 +-
.../pages/AnyDisplayAttributesModalPage.java | 15 +-
.../client/console/pages/BaseModalPage.java | 63 ---
.../console/pages/BulkActionModalPage.java | 23 +-
.../pages/BulkActionResultModalPage.java | 13 +-
.../pages/DisplayAttributesModalPage.java | 25 +-
.../pages/GroupDisplayAttributesModalPage.java | 11 +-
.../console/pages/ProvisioningModalPage.java | 27 +-
.../client/console/pages/ResultStatusModal.java | 428 +++++++++++++++++++
.../client/console/pages/StatusModalPage.java | 85 ++--
.../pages/UserDisplayAttributesModalPage.java | 13 +-
.../panels/AbstractSearchResultPanel.java | 78 +---
.../console/panels/ActionDataTablePanel.java | 6 +-
.../console/panels/AjaxDataTablePanel.java | 37 +-
.../console/panels/AnySearchResultPanel.java | 82 ++--
.../console/panels/GroupSearchResultPanel.java | 79 ++--
.../client/console/panels/ImagePanel.java | 4 +-
.../console/panels/UserSearchResultPanel.java | 102 ++---
.../console/rest/AbstractAnyRestClient.java | 11 +
.../console/rest/AnyObjectRestClient.java | 11 +-
.../client/console/rest/BaseRestClient.java | 1 -
.../client/console/rest/GroupRestClient.java | 8 +-
.../client/console/rest/UserRestClient.java | 10 +-
.../markup/html/form/BinaryFieldPanel.java | 4 +-
.../pages/AbstractStatusModalPage.properties | 4 +
.../pages/AbstractStatusModalPage_it.properties | 5 +
.../AbstractStatusModalPage_pt_BR.properties | 5 +
.../client/console/pages/BaseModalPage.html | 55 ---
.../console/pages/BaseModalPage.properties | 20 -
.../console/pages/BaseModalPage_it.properties | 20 -
.../pages/BaseModalPage_pt_BR.properties | 20 -
.../client/console/pages/ResourceModalPage.html | 56 ---
.../console/pages/ResourceModalPage.properties | 60 ---
.../pages/ResourceModalPage_it.properties | 60 ---
.../pages/ResourceModalPage_pt_BR.properties | 60 ---
.../client/console/pages/ResultStatusModal.html | 226 ++++++++++
.../console/pages/ResultStatusModal.properties | 26 ++
.../pages/ResultStatusModal_it.properties | 26 ++
.../pages/ResultStatusModal_pt_BR.properties | 26 ++
.../panels/AbstractSearchResultPanel.html | 49 ++-
.../panels/AbstractSearchResultPanel.properties | 4 +
.../AbstractSearchResultPanel_it.properties | 4 +
.../AbstractSearchResultPanel_pt_BR.properties | 14 +-
.../client/console/panels/ImagePanel.html | 28 ++
.../ProvisionWizardBuilder$ConnObjectLink.html | 4 +-
.../console/pages/CamelRouteModalPage.java | 23 +-
48 files changed, 1114 insertions(+), 832 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/commons/status/ConnObjectWrapper.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/ConnObjectWrapper.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/ConnObjectWrapper.java
index 199b262..06ccac7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/ConnObjectWrapper.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/ConnObjectWrapper.java
@@ -32,9 +32,7 @@ public class ConnObjectWrapper implements Serializable {
private final ConnObjectTO connObjectTO;
- public ConnObjectWrapper(final AnyTO any, final String resourceName,
- final ConnObjectTO connObjectTO) {
-
+ public ConnObjectWrapper(final AnyTO any, final String resourceName, final ConnObjectTO connObjectTO) {
this.any = any;
this.resourceName = resourceName;
this.connObjectTO = connObjectTO;
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/commons/status/StatusBean.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/StatusBean.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/StatusBean.java
index adb6040..893b8aa 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/StatusBean.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/StatusBean.java
@@ -45,8 +45,7 @@ public class StatusBean implements Serializable {
public StatusBean(final AnyTO any, final String resourceName) {
this.anyKey = any.getKey();
- this.anyName = any instanceof UserTO
- ? ((UserTO) any).getUsername() : ((GroupTO) any).getName();
+ this.anyName = any instanceof UserTO ? ((UserTO) any).getUsername() : ((GroupTO) any).getName();
this.resourceName = resourceName;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractStatusModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractStatusModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractStatusModalPage.java
index f5dfbca..f46ec67 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractStatusModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/AbstractStatusModalPage.java
@@ -18,13 +18,17 @@
*/
package org.apache.syncope.client.console.pages;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.wicket.PageReference;
import org.apache.wicket.markup.html.panel.Fragment;
-public class AbstractStatusModalPage extends BaseModalPage {
+public class AbstractStatusModalPage extends AbstractModalPanel {
private static final long serialVersionUID = 6633408683036028540L;
- public AbstractStatusModalPage() {
+ public AbstractStatusModalPage(final BaseModal<?> modal, final PageReference pageRef) {
+ super(modal, pageRef);
add(new Fragment("pwdMgtFields", "emptyFragment", this));
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/AnyDisplayAttributesModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/AnyDisplayAttributesModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/AnyDisplayAttributesModalPage.java
index 63223a0..b1214f7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/AnyDisplayAttributesModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/AnyDisplayAttributesModalPage.java
@@ -20,23 +20,28 @@ package org.apache.syncope.client.console.pages;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
/**
* Modal window with Display user attributes form.
+ * @param <T>
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
-public class AnyDisplayAttributesModalPage extends DisplayAttributesModalPage {
+public class AnyDisplayAttributesModalPage<T extends AnyTO> extends DisplayAttributesModalPage {
private static final long serialVersionUID = 5194630813773543054L;
public static final String[] ANY_DEFAULT_SELECTION = { "key" };
- public AnyDisplayAttributesModalPage(final PageReference pageRef, final ModalWindow window,
- final List<String> schemaNames, final List<String> dSchemaNames) {
- super(pageRef, window, schemaNames, dSchemaNames);
+ public AnyDisplayAttributesModalPage(
+ final BaseModal<T> modal,
+ final PageReference pageRef,
+ final List<String> schemaNames,
+ final List<String> dSchemaNames) {
+ super(modal, pageRef, schemaNames, dSchemaNames);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/BaseModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BaseModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BaseModalPage.java
deleted file mode 100644
index 6da298a..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BaseModalPage.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.pages;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-
-/**
- * Syncope Modal Window.
- */
-public abstract class BaseModalPage extends AbstractBasePage {
-
- private static final long serialVersionUID = -1443079028368471943L;
-
- public BaseModalPage() {
- super();
-
- add(new AjaxEventBehavior("keyup") {
-
- private static final long serialVersionUID = -7133385027739964990L;
-
- @Override
- protected void onEvent(final AjaxRequestTarget target) {
- ModalWindow.closeCurrent(target);
- }
-
- @Override
- protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
- super.updateAjaxAttributes(attributes);
-
- attributes.getAjaxCallListeners().add(new AjaxCallListener() {
-
- private static final long serialVersionUID = 7160235486520935153L;
-
- @Override
- public CharSequence getPrecondition(final Component aComponent) {
- return " if(Wicket.Event.keyCode(attrs.event) != 27){return false;}";
- }
- });
- }
- });
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
index 5c1d31f..7d98e51 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionModalPage.java
@@ -25,15 +25,17 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
import org.apache.syncope.client.console.rest.BaseRestClient;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxButton;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.syncope.common.lib.to.BulkAction;
import org.apache.syncope.common.lib.to.BulkActionResult;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
@@ -43,12 +45,13 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.springframework.beans.BeanUtils;
-public class BulkActionModalPage<T, S> extends BaseModalPage {
+public class BulkActionModalPage<T, S> extends AbstractModalPanel {
private static final long serialVersionUID = 4114026480146090962L;
public BulkActionModalPage(
- final ModalWindow window,
+ final BaseModal<?> modal,
+ final PageReference pageRef,
final Collection<T> items,
final List<IColumn<T, S>> columns,
final Collection<ActionLink.ActionType> actions,
@@ -56,7 +59,7 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final String keyFieldName,
final String pageId) {
- super();
+ super(modal, pageRef);
final SortableDataProvider<T, S> dataProvider = new SortableDataProvider<T, S>() {
@@ -86,7 +89,7 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
@SuppressWarnings("rawtypes")
final ActionLinksPanel<Serializable> actionPanel
- = ActionLinksPanel.builder(getPageReference()).build("actions");
+ = ActionLinksPanel.builder(pageRef).build("actions");
add(actionPanel);
for (ActionLink.ActionType action : actions) {
@@ -129,12 +132,14 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final BulkActionResult res = (BulkActionResult) bulkActionExecutor.getClass().
getMethod("bulkAction", BulkAction.class).invoke(bulkActionExecutor, bulkAction);
- setResponsePage(new BulkActionResultModalPage<>(window, items, columns, res, keyFieldName));
+ modal.setContent(new BulkActionResultModalPage<>(
+ modal, pageRef, items, columns, res, keyFieldName));
+ target.add(modal);
} catch (NoSuchMethodException | SecurityException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException e) {
error(getString(Constants.ERROR)
+ ": Operation " + bulkAction.getType() + " not supported");
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
@@ -144,13 +149,13 @@ public class BulkActionModalPage<T, S> extends BaseModalPage {
final Form<Void> form = new Form<>(FORM);
add(form);
- final AjaxButton cancel = new ClearIndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL), getPageReference()) {
+ final AjaxButton cancel = new ClearIndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL), pageRef) {
private static final long serialVersionUID = -958724007591692537L;
@Override
protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
- window.close(target);
+ modal.close(target);
}
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
index 98ac15c..00574c4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BulkActionResultModalPage.java
@@ -22,12 +22,14 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionResultColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.BulkActionResult;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
@@ -40,18 +42,19 @@ import org.apache.wicket.model.IModel;
* @param <T>
* @param <S>
*/
-public class BulkActionResultModalPage<T, S> extends BaseModalPage {
+public class BulkActionResultModalPage<T, S> extends AbstractModalPanel {
private static final long serialVersionUID = 2646115294319713724L;
public BulkActionResultModalPage(
- final ModalWindow window,
+ final BaseModal<?> modal,
+ final PageReference pageRef,
final Collection<T> items,
final List<IColumn<T, S>> columns,
final BulkActionResult results,
final String keyFieldName) {
- super();
+ super(modal, pageRef);
final List<IColumn<T, S>> newColumnList = new ArrayList<>(columns.subList(1, columns.size() - 1));
newColumnList.add(newColumnList.size(), new ActionResultColumn<T, S>(results, keyFieldName));
@@ -88,7 +91,7 @@ public class BulkActionResultModalPage<T, S> extends BaseModalPage {
@Override
public void onClick(final AjaxRequestTarget target) {
- window.close(target);
+ modal.close(target);
}
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
index 769cb45..432c510 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/DisplayAttributesModalPage.java
@@ -22,12 +22,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.syncope.client.console.PreferenceManager;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.search.SearchableFields;
+import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Check;
import org.apache.wicket.markup.html.form.CheckGroup;
@@ -44,9 +46,11 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
/**
* Modal window with Display attributes form.
+ *
+ * @param <T>
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
-public abstract class DisplayAttributesModalPage extends BaseModalPage {
+public abstract class DisplayAttributesModalPage<T extends AnyTO> extends AbstractModalPanel {
private static final long serialVersionUID = -4274117450918385110L;
@@ -64,10 +68,13 @@ public abstract class DisplayAttributesModalPage extends BaseModalPage {
private final List<String> selectedDerSchemas;
- public DisplayAttributesModalPage(final PageReference pageRef, final ModalWindow window,
- final List<String> schemaNames, final List<String> dSchemaNames) {
+ public DisplayAttributesModalPage(
+ final BaseModal<T> modal,
+ final PageReference pageRef,
+ final List<String> schemaNames,
+ final List<String> dSchemaNames) {
- super();
+ super(modal, pageRef);
final IModel<List<String>> fnames = new LoadableDetachableModel<List<String>>() {
@@ -197,13 +204,13 @@ public abstract class DisplayAttributesModalPage extends BaseModalPage {
((BasePage) pageRef.getPage()).setModalResult(true);
- window.close(target);
+ modal.close(target);
}
}
@Override
protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
};
@@ -215,7 +222,7 @@ public abstract class DisplayAttributesModalPage extends BaseModalPage {
@Override
protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- window.close(target);
+ modal.close(target);
}
};
@@ -230,7 +237,7 @@ public abstract class DisplayAttributesModalPage extends BaseModalPage {
public abstract String getPrefAttributeView();
public abstract String getPrefDerivedAttributeView();
-
+
public abstract Class getTOClass();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/GroupDisplayAttributesModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/GroupDisplayAttributesModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/GroupDisplayAttributesModalPage.java
index 0e5e10f..9b33379 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/GroupDisplayAttributesModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/GroupDisplayAttributesModalPage.java
@@ -20,9 +20,9 @@ package org.apache.syncope.client.console.pages;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
/**
* Modal window with Display group attributes form.
@@ -34,9 +34,12 @@ public class GroupDisplayAttributesModalPage extends DisplayAttributesModalPage
public static final String[] GROUP_DEFAULT_SELECTION = { "key", "name" };
- public GroupDisplayAttributesModalPage(final PageReference pageRef, final ModalWindow window,
- final List<String> schemaNames, final List<String> dSchemaNames) {
- super(pageRef, window, schemaNames, dSchemaNames);
+ public GroupDisplayAttributesModalPage(
+ final BaseModal<GroupTO> modal,
+ final PageReference pageRef,
+ final List<String> schemaNames,
+ final List<String> dSchemaNames) {
+ super(modal, pageRef, schemaNames, dSchemaNames);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
index b631210..95ec54f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ProvisioningModalPage.java
@@ -30,6 +30,7 @@ import org.apache.syncope.client.console.commons.status.ConnObjectWrapper;
import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.commons.status.StatusUtils;
import org.apache.syncope.client.console.panels.ActionDataTablePanel;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.lib.SyncopeClient;
import org.apache.syncope.common.lib.to.AnyTO;
@@ -41,7 +42,6 @@ import org.apache.syncope.common.lib.wrap.AbstractWrappable;
import org.apache.syncope.common.lib.wrap.AnyKey;
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.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -63,24 +63,18 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
private final AnyTypeKind anyTypeKind;
- private final PageReference pageRef;
-
- private final ModalWindow window;
-
private final StatusUtils statusUtils;
private final String realm = "/";
public ProvisioningModalPage(
+ final BaseModal<?> modal,
final PageReference pageRef,
- final ModalWindow window,
final ResourceTO resourceTO,
final AnyTypeKind anyTypeKind) {
- super();
+ super(modal, pageRef);
- this.pageRef = pageRef;
- this.window = window;
this.resourceTO = resourceTO;
this.anyTypeKind = anyTypeKind;
@@ -141,7 +135,7 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
} catch (Exception e) {
LOG.error("Error unlinkink resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.UNLINK, pageId);
@@ -157,7 +151,7 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
} catch (Exception e) {
LOG.error("Error de-provisioning user", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.DEPROVISION, pageId);
@@ -173,12 +167,12 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
} catch (Exception e) {
LOG.error("Error unassigning resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.UNASSIGN, pageId);
- table.addCancelButton(window);
+ table.addCancelButton(modal);
add(table);
}
@@ -188,7 +182,7 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
private static final long serialVersionUID = 4287357360778016173L;
public StatusBeanProvider() {
- super("accountLink");
+ super("connObjectLink");
}
@SuppressWarnings("unchecked")
@@ -239,14 +233,15 @@ public class ProvisioningModalPage<T extends AnyTO> extends AbstractStatusModalP
}
if (beans.isEmpty()) {
- window.close(target);
+ modal.close(target);
} else {
final BulkActionResult res = resourceRestClient.bulkAssociationAction(
resourceTO.getKey(), anyTypeKind.name(), type, subjectKeys);
((BasePage) pageRef.getPage()).setModalResult(true);
- setResponsePage(new BulkActionResultModalPage<>(window, beans, columns, res, "anyKey"));
+ target.add(modal.setContent(
+ new BulkActionResultModalPage<>(modal, pageRef, beans, columns, res, "anyKey")));
}
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/ResultStatusModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ResultStatusModal.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ResultStatusModal.java
new file mode 100644
index 0000000..855a61f
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ResultStatusModal.java
@@ -0,0 +1,428 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.pages;
+
+import static org.apache.syncope.client.console.commons.status.Status.ACTIVE;
+import static org.apache.syncope.client.console.commons.status.Status.SUSPENDED;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.commons.ConnIdSpecialAttributeName;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.Mode;
+import org.apache.syncope.client.console.commons.status.Status;
+import org.apache.syncope.client.console.commons.status.StatusUtils;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.panels.FailureMessageModal;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
+import org.apache.syncope.common.lib.to.PropagationStatus;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.PropagationTaskExecStatus;
+import org.apache.wicket.Component;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.request.resource.ContextRelativeResource;
+
+/**
+ * Show user or group status after performing a successful operation.
+ *
+ * @param <T>
+ */
+public final class ResultStatusModal<T extends AnyTO> extends AbstractModalPanel {
+
+ private static final long serialVersionUID = 2646115294319713723L;
+
+ private static final String IMG_PREFIX = "/img/statuses/";
+
+ private final AnyTO subject;
+
+ private final Mode mode;
+
+ /**
+ * Status management utilities.
+ */
+ private final StatusUtils statusUtils;
+
+ public static class Builder<T extends AnyTO> implements Serializable {
+
+ private static final long serialVersionUID = 220361441802274899L;
+
+ private Mode mode;
+
+ private AnyTO subject;
+
+ private final BaseModal<T> modal;
+
+ private final PageReference pageRef;
+
+ public Builder(
+ final BaseModal<T> modal,
+ final PageReference pageRef,
+ final AnyTO attributable) {
+ this.subject = attributable;
+ this.modal = modal;
+ this.pageRef = pageRef;
+ }
+
+ public ResultStatusModal.Builder<T> mode(final Mode mode) {
+ this.mode = mode;
+ return this;
+ }
+
+ public ResultStatusModal<T> build() {
+ return new ResultStatusModal<T>(modal, pageRef, this);
+ }
+ }
+
+ private ResultStatusModal(
+ final BaseModal<T> modal,
+ final PageReference pageRef,
+ final Builder<T> builder) {
+ super(modal, pageRef);
+
+ this.subject = builder.subject;
+ statusUtils = new StatusUtils(this.userRestClient);
+ if (builder.mode == null) {
+ this.mode = Mode.ADMIN;
+ } else {
+ this.mode = builder.mode;
+ }
+
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ add(container);
+
+ final Fragment fragment = new Fragment("resultFrag", mode == Mode.SELF
+ ? "userSelfResultFrag"
+ : "propagationResultFrag", this);
+ fragment.setOutputMarkupId(true);
+ container.add(fragment);
+
+ if (mode == Mode.ADMIN) {
+ // add Syncope propagation status
+ PropagationStatus syncope = new PropagationStatus();
+ syncope.setResource("Syncope");
+ syncope.setStatus(PropagationTaskExecStatus.SUCCESS);
+
+ List<PropagationStatus> propagations = new ArrayList<PropagationStatus>();
+ propagations.add(syncope);
+ propagations.addAll(subject.getPropagationStatusTOs());
+
+ fragment.add(new Label("info",
+ ((subject instanceof UserTO) && ((UserTO) subject).getUsername() != null)
+ ? ((UserTO) subject).getUsername()
+ : ((subject instanceof GroupTO) && ((GroupTO) subject).getName() != null)
+ ? ((GroupTO) subject).getName()
+ : String.valueOf(subject.getKey())));
+
+ final ListView<PropagationStatus> propRes = new ListView<PropagationStatus>("resources",
+ propagations) {
+
+ private static final long serialVersionUID = -1020475259727720708L;
+
+ @Override
+ protected void populateItem(final ListItem<PropagationStatus> item) {
+ final PropagationStatus propTO = (PropagationStatus) item.getDefaultModelObject();
+
+ final ListView<String> attributes = getConnObjectView(propTO);
+
+ final Fragment attrhead;
+ if (attributes.getModelObject() == null || attributes.getModelObject().isEmpty()) {
+ attrhead = new Fragment("attrhead", "emptyAttrHeadFrag", this);
+ } else {
+ attrhead = new Fragment("attrhead", "attrHeadFrag", this);
+ }
+
+ item.add(attrhead);
+ item.add(attributes);
+
+ attrhead.add(new Label("resource", propTO.getResource()));
+
+ attrhead.add(new Label("propagation", propTO.getStatus() == null
+ ? "UNDEFINED" : propTO.getStatus().toString()));
+
+ final Image image;
+ final String alt, title;
+
+ final BaseModal<?> failureWindow = new BaseModal<>("failureWindow");
+
+ final AjaxLink<?> failureWindowLink = new AjaxLink<Void>("showFailureWindow") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ failureWindow.show(target);
+ }
+ };
+
+ switch (propTO.getStatus()) {
+
+ case SUCCESS:
+ case CREATED:
+ image = new Image("icon",
+ new ContextRelativeResource(IMG_PREFIX + Status.ACTIVE.toString()
+ + Constants.PNG_EXT));
+ alt = "success icon";
+ title = "success";
+ failureWindow.setVisible(false);
+ failureWindowLink.setEnabled(false);
+ break;
+
+ default:
+ image = new Image("icon",
+ new ContextRelativeResource(IMG_PREFIX + Status.SUSPENDED.toString()
+ + Constants.PNG_EXT));
+ alt = "failure icon";
+ title = "failure";
+ }
+
+ image.add(new Behavior() {
+
+ private static final long serialVersionUID = 1469628524240283489L;
+
+ @Override
+ public void onComponentTag(final Component component, final ComponentTag tag) {
+ tag.put("alt", alt);
+ tag.put("title", title);
+ }
+ });
+ final FailureMessageModal executionFailureMessagePage;
+ if (propTO.getFailureReason() == null) {
+ executionFailureMessagePage = new FailureMessageModal(
+ modal, pageRef, StringUtils.EMPTY);
+ } else {
+ executionFailureMessagePage = new FailureMessageModal(
+ modal, pageRef, propTO.getFailureReason());
+ }
+
+ failureWindow.setContent(executionFailureMessagePage);
+ }
+ };
+ fragment.add(propRes);
+ }
+
+ final AjaxLink<Void> close = new IndicatingAjaxLink<Void>("close") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ builder.modal.close(target);
+ }
+ };
+ container.add(close);
+
+ setOutputMarkupId(true);
+ }
+
+ /**
+ * Get remote attributes list view.
+ *
+ * @param propTO propagation TO.
+ * @return list view.
+ */
+ private ListView<String> getConnObjectView(final PropagationStatus propTO) {
+ final ConnObjectTO before = propTO.getBeforeObj();
+ final ConnObjectTO after = propTO.getAfterObj();
+
+ // sorted in reversed presentation order
+ final List<String> head = new ArrayList<String>();
+ if (subject instanceof UserTO) {
+ head.add(ConnIdSpecialAttributeName.PASSWORD);
+ head.add(ConnIdSpecialAttributeName.ENABLE);
+ }
+ head.add(ConnIdSpecialAttributeName.UID);
+ head.add(ConnIdSpecialAttributeName.NAME);
+
+ final Map<String, AttrTO> beforeAttrMap = before == null
+ ? Collections.<String, AttrTO>emptyMap()
+ : before.getPlainAttrMap();
+
+ final Map<String, AttrTO> afterAttrMap = after == null
+ ? Collections.<String, AttrTO>emptyMap()
+ : after.getPlainAttrMap();
+
+ final Set<String> attributes = new HashSet<String>();
+ attributes.addAll(beforeAttrMap.keySet());
+ attributes.addAll(afterAttrMap.keySet());
+
+ if (!(subject instanceof UserTO)) {
+ attributes.remove(ConnIdSpecialAttributeName.PASSWORD);
+ attributes.remove(ConnIdSpecialAttributeName.ENABLE);
+ }
+
+ final List<String> profile = new ArrayList<String>();
+ profile.addAll(attributes);
+ profile.removeAll(head);
+ Collections.sort(profile);
+
+ for (String attr : head) {
+ if (attributes.contains(attr)) {
+ profile.add(0, attr);
+ }
+ }
+
+ return new ListView<String>("attrs", profile) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<String> item) {
+ String name = item.getModelObject();
+
+ final Fragment beforeValue;
+ final Fragment afterValue;
+ if (ConnIdSpecialAttributeName.ENABLE.equals(name)) {
+ beforeValue = getStatusIcon("beforeValue", propTO.getResource(), before);
+ afterValue = getStatusIcon("afterValue", propTO.getResource(), after);
+ } else {
+ beforeValue = getLabelValue("beforeValue", name, beforeAttrMap);
+ afterValue = getLabelValue("afterValue", name, afterAttrMap);
+ }
+
+ item.add(new Label("attrName", new ResourceModel(name, name)));
+
+ item.add(beforeValue);
+ item.add(afterValue);
+ }
+ };
+ }
+
+ /**
+ * Get fragment for attribute value (not remote status).
+ *
+ * @param id component id to be replaced with the fragment content.
+ * @param attrName remote attribute name
+ * @param attrMap remote attributes map.
+ * @return fragment.
+ */
+ private Fragment getLabelValue(final String id, final String attrName, final Map<String, AttrTO> attrMap) {
+ final String value;
+
+ final AttrTO attr = attrMap.get(attrName);
+
+ if (attr == null || attr.getValues() == null || attr.getValues().isEmpty()) {
+ value = "";
+ } else {
+ if (ConnIdSpecialAttributeName.PASSWORD.equals(attrName)) {
+ value = "********";
+ } else {
+ value = attr.getValues().size() > 1
+ ? attr.getValues().toString()
+ : attr.getValues().get(0);
+ }
+ }
+
+ Component label = new Label("value", value.length() > 50 ? value.substring(0, 50) + "..." : value).
+ add(new Behavior() {
+
+ private static final long serialVersionUID = 1469628524240283489L;
+
+ @Override
+ public void onComponentTag(final Component component, final ComponentTag tag) {
+ tag.put("title", value);
+ }
+ });
+
+ final Fragment frag = new Fragment(id, "attrValueFrag", this);
+ frag.add(label);
+
+ return frag;
+ }
+
+ /**
+ * Get fragment for user status icon.
+ *
+ * @param id component id to be replaced with the fragment content
+ * @param resourceName resource name
+ * @param objectTO connector object TO
+ * @return fragment.
+ */
+ private Fragment getStatusIcon(final String id, final String resourceName, final ConnObjectTO objectTO) {
+ final Image image;
+ final String alt, title;
+ switch (statusUtils.getStatusBean(
+ subject, resourceName, objectTO, this.subject instanceof GroupTO).getStatus()) {
+
+ case ACTIVE:
+ image = new Image("status",
+ new ContextRelativeResource(IMG_PREFIX + Status.ACTIVE.toString() + Constants.PNG_EXT));
+ alt = "active icon";
+ title = "Enabled";
+ break;
+
+ case SUSPENDED:
+ image = new Image("status",
+ new ContextRelativeResource(IMG_PREFIX + Status.SUSPENDED.toString() + Constants.PNG_EXT));
+ alt = "inactive icon";
+ title = "Disabled";
+ break;
+
+ default:
+ image = null;
+ alt = null;
+ title = null;
+ }
+
+ final Fragment frag;
+ if (image == null) {
+ frag = new Fragment(id, "emptyFrag", this);
+ } else {
+ image.add(new Behavior() {
+
+ private static final long serialVersionUID = 1469628524240283489L;
+
+ @Override
+ public void onComponentTag(final Component component, final ComponentTag tag) {
+ tag.put("alt", alt);
+ tag.put("title", title);
+ tag.put("width", "12px");
+ tag.put("height", "12px");
+ }
+ });
+
+ frag = new Fragment(id, "remoteStatusFrag", this);
+ frag.add(image);
+ }
+
+ return frag;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModalPage.java
index 1357cad..f70c1c5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/StatusModalPage.java
@@ -32,6 +32,7 @@ import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.commons.status.StatusUtils;
import org.apache.syncope.client.console.panels.ActionDataTablePanel;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxButton;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
import org.apache.syncope.common.lib.to.AnyTO;
@@ -43,7 +44,6 @@ import org.apache.syncope.common.lib.types.ResourceAssociationAction;
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.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -89,32 +89,26 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
private final PasswordTextField confirm;
// --------------------------------
- private final PageReference pageRef;
-
- private final ModalWindow window;
-
private final ActionDataTablePanel<StatusBean, String> table;
private final List<IColumn<StatusBean, String>> columns;
public StatusModalPage(
+ final BaseModal<T> modal,
final PageReference pageRef,
- final ModalWindow window,
final AnyTO attributableTO) {
- this(pageRef, window, attributableTO, false);
+ this(modal, pageRef, attributableTO, false);
}
public StatusModalPage(
+ final BaseModal<T> modal,
final PageReference pageRef,
- final ModalWindow window,
final AnyTO anyTO,
final boolean statusOnly) {
- super();
+ super(modal, pageRef);
- this.pageRef = pageRef;
- this.window = window;
this.statusOnly = statusOnly;
this.anyTO = anyTO;
@@ -152,7 +146,7 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
});
columns.add(new PropertyColumn<StatusBean, String>(
- new StringResourceModel("accountLink", this, null), "accountLink", "accountLink"));
+ new StringResourceModel("connObjectLink", this, null), "connObjectLink", "connObjectLink"));
columns.add(new AbstractColumn<StatusBean, String>(
new StringResourceModel("status", this, null)) {
@@ -236,14 +230,14 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
@Override
protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
// ignore
- window.close(target);
+ modal.close(target);
}
}.feedbackPanelAutomaticReload(false);
pwdMgtForm.add(cancel);
- final ClearIndicatingAjaxButton goon =
- new ClearIndicatingAjaxButton("continue", new ResourceModel("continue"), pageRef) {
+ final ClearIndicatingAjaxButton goon = new ClearIndicatingAjaxButton("continue", new ResourceModel("continue"),
+ pageRef) {
private static final long serialVersionUID = -2341391430136818027L;
@@ -270,11 +264,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
((BasePage) pageRef.getPage()).setModalResult(true);
- window.close(target);
+ modal.close(target);
} catch (Exception e) {
LOG.error("Error enabling resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.REACTIVATE, pageId);
@@ -295,11 +289,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
((BasePage) pageRef.getPage()).setModalResult(true);
}
- window.close(target);
+ modal.close(target);
} catch (Exception e) {
LOG.error("Error disabling resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.SUSPEND, pageId);
@@ -324,11 +318,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
}
((BasePage) pageRef.getPage()).setModalResult(true);
- window.close(target);
+ modal.close(target);
} catch (Exception e) {
LOG.error("Error unlinking resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.UNLINK, pageId);
@@ -353,11 +347,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
}
((BasePage) pageRef.getPage()).setModalResult(true);
- window.close(target);
+ modal.close(target);
} catch (Exception e) {
LOG.error("Error linking resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.LINK, pageId);
@@ -383,11 +377,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
}
((BasePage) pageRef.getPage()).setModalResult(true);
- loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
+ loadBulkActionResultPage(target, table.getModelObject(), bulkActionResult);
} catch (Exception e) {
LOG.error("Error de-provisioning user", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.DEPROVISION, pageId);
@@ -410,11 +404,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
new ArrayList<>(table.getModelObject()));
((BasePage) pageRef.getPage()).setModalResult(true);
- loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
+ loadBulkActionResultPage(target, table.getModelObject(), bulkActionResult);
} catch (Exception e) {
LOG.error("Error provisioning user", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}
@@ -441,11 +435,11 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
}
((BasePage) pageRef.getPage()).setModalResult(true);
- loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
+ loadBulkActionResultPage(target, table.getModelObject(), bulkActionResult);
} catch (Exception e) {
LOG.error("Error unassigning resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}, ActionLink.ActionType.UNASSIGN, pageId);
@@ -467,18 +461,18 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
new ArrayList<>(table.getModelObject()));
((BasePage) pageRef.getPage()).setModalResult(true);
- loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
+ loadBulkActionResultPage(target, table.getModelObject(), bulkActionResult);
} catch (Exception e) {
LOG.error("Error assigning resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}
}.feedbackPanelAutomaticReload(!(anyTO instanceof UserTO)), ActionLink.ActionType.ASSIGN, pageId);
}
- table.addCancelButton(window);
+ table.addCancelButton(modal);
add(table);
}
@@ -487,7 +481,7 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
private static final long serialVersionUID = 4586969457669796621L;
public AttributableStatusProvider() {
- super(statusOnly ? "resourceName" : "accountLink");
+ super(statusOnly ? "resourceName" : "connObjectLink");
}
@SuppressWarnings("unchecked")
@@ -549,8 +543,8 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
final ResourceAssociationAction type,
final Collection<StatusBean> selection) {
- final ClearIndicatingAjaxButton goon =
- new ClearIndicatingAjaxButton("continue", new ResourceModel("continue", "Continue"), pageRef) {
+ final ClearIndicatingAjaxButton goon = new ClearIndicatingAjaxButton("continue", new ResourceModel("continue",
+ "Continue"), pageRef) {
private static final long serialVersionUID = -2341391430136818027L;
@@ -588,16 +582,16 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
((BasePage) pageRef.getPage()).setModalResult(true);
if (bulkActionResult != null) {
- loadBulkActionResultPage(selection, bulkActionResult);
+ loadBulkActionResultPage(target, selection, bulkActionResult);
} else {
target.add(((BasePage) pageRef.getPage()).getFeedbackPanel());
- window.close(target);
+ modal.close(target);
}
} catch (Exception e) {
LOG.error("Error provisioning resources", e);
error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
}
}.feedbackPanelAutomaticReload(false);
@@ -612,14 +606,16 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
}
private void loadBulkActionResultPage(
- final Collection<StatusBean> selection, final BulkActionResult bulkActionResult) {
+ final AjaxRequestTarget target,
+ final Collection<StatusBean> selection,
+ final BulkActionResult bulkActionResult) {
final List<String> resources = new ArrayList<String>(selection.size());
for (StatusBean statusBean : selection) {
resources.add(statusBean.getResourceName());
}
- final List<ConnObjectWrapper> connObjects =
- statusUtils.getConnectorObjects(Collections.singletonList(anyTO), resources);
+ final List<ConnObjectWrapper> connObjects = statusUtils.getConnectorObjects(Collections.singletonList(anyTO),
+ resources);
final List<StatusBean> statusBeans = new ArrayList<StatusBean>(connObjects.size());
@@ -632,11 +628,12 @@ public class StatusModalPage<T extends AnyTO> extends AbstractStatusModalPage {
statusBeans.add(statusBean);
}
- setResponsePage(new BulkActionResultModalPage<StatusBean, String>(
- window,
+ target.add(modal.setContent(new BulkActionResultModalPage<StatusBean, String>(
+ modal,
+ pageRef,
statusBeans,
columns,
bulkActionResult,
- "resourceName"));
+ "resourceName")));
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/pages/UserDisplayAttributesModalPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/UserDisplayAttributesModalPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/UserDisplayAttributesModalPage.java
index 0eeaa42..2ce0a30 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/UserDisplayAttributesModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/UserDisplayAttributesModalPage.java
@@ -20,9 +20,9 @@ package org.apache.syncope.client.console.pages;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
/**
* Modal window with Display user attributes form.
@@ -33,10 +33,13 @@ public class UserDisplayAttributesModalPage extends DisplayAttributesModalPage {
private static final long serialVersionUID = 5194630813773543054L;
public static final String[] USER_DEFAULT_SELECTION = { "key", "username", "status" };
-
- public UserDisplayAttributesModalPage(final PageReference pageRef, final ModalWindow window,
- final List<String> schemaNames, final List<String> dSchemaNames) {
- super(pageRef, window, schemaNames, dSchemaNames);
+
+ public UserDisplayAttributesModalPage(
+ final BaseModal<UserTO> modal,
+ final PageReference pageRef,
+ final List<String> schemaNames,
+ final List<String> dSchemaNames) {
+ super(modal, pageRef, schemaNames, dSchemaNames);
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
index 5bda1fd..c55d6bd 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
@@ -25,6 +25,7 @@ import org.apache.syncope.client.console.commons.AnyDataProvider;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.AbstractBasePage;
import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.PageReference;
@@ -44,7 +45,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractSearchResultPanel extends Panel implements IEventSource {
+public abstract class AbstractSearchResultPanel<T extends AnyTO> extends Panel implements IEventSource {
private static final long serialVersionUID = -9170191461250434024L;
@@ -54,36 +55,6 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
protected static final Logger LOG = LoggerFactory.getLogger(AbstractSearchResultPanel.class);
/**
- * Edit modal window height.
- */
- private static final int EDIT_MODAL_WIN_HEIGHT = 550;
-
- /**
- * Edit modal window width.
- */
- private static final int EDIT_MODAL_WIN_WIDTH = 800;
-
- /**
- * Schemas to be shown modal window height.
- */
- private static final int DISPLAYATTRS_MODAL_WIN_HEIGHT = 550;
-
- /**
- * Schemas to be shown modal window width.
- */
- private static final int DISPLAYATTRS_MODAL_WIN_WIDTH = 550;
-
- /**
- * Schemas to be shown modal window height.
- */
- private static final int STATUS_MODAL_WIN_HEIGHT = 500;
-
- /**
- * Schemas to be shown modal window width.
- */
- private static final int STATUS_MODAL_WIN_WIDTH = 700;
-
- /**
* Application preferences.
*/
@SpringBean
@@ -128,19 +99,10 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
private AnyDataProvider dataProvider;
/**
- * Modal window to be used for user profile editing. Global visibility is required ...
- */
- protected final ModalWindow editmodal = new ModalWindow("editModal");
-
- /**
- * Modal window to be used for attributes choosing to display in tables.
- */
- protected final ModalWindow displaymodal = new ModalWindow("displayModal");
-
- /**
- * Modal window to be used for user status management.
+ * Modal window to be used for: user profile editing (Global visibility is required); attributes choosing to
+ * display in tables; user status management.
*/
- protected final ModalWindow statusmodal = new ModalWindow("statusModal");
+ protected final BaseModal<T> modal = new BaseModal<>("modal");
/**
* Owner page.
@@ -163,6 +125,8 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
super(id);
+ add(modal);
+
setOutputMarkupId(true);
this.page = (AbstractBasePage) pageRef.getPage();
@@ -173,24 +137,6 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
this.restClient = restClient;
- editmodal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- editmodal.setInitialHeight(EDIT_MODAL_WIN_HEIGHT);
- editmodal.setInitialWidth(EDIT_MODAL_WIN_WIDTH);
- editmodal.setCookieName("edit-modal");
- add(editmodal);
-
- displaymodal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- displaymodal.setInitialHeight(DISPLAYATTRS_MODAL_WIN_HEIGHT);
- displaymodal.setInitialWidth(DISPLAYATTRS_MODAL_WIN_WIDTH);
- displaymodal.setCookieName("display-modal");
- add(displaymodal);
-
- statusmodal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- statusmodal.setInitialHeight(STATUS_MODAL_WIN_HEIGHT);
- statusmodal.setInitialWidth(STATUS_MODAL_WIN_WIDTH);
- statusmodal.setCookieName("status-modal");
- add(statusmodal);
-
// Container for user search result
container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
@@ -236,9 +182,7 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
paginatorForm.add(rowsChooser);
// ---------------------------
- setWindowClosedReloadCallback(statusmodal);
- setWindowClosedReloadCallback(editmodal);
- setWindowClosedReloadCallback(displaymodal);
+ setWindowClosedReloadCallback(modal);
}
public void search(final String fiql, final AjaxRequestTarget target) {
@@ -297,13 +241,15 @@ public abstract class AbstractSearchResultPanel extends Panel implements IEventS
}
}
- private void setWindowClosedReloadCallback(final ModalWindow window) {
- window.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+ private void setWindowClosedReloadCallback(final BaseModal<?> modal) {
+ modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
private static final long serialVersionUID = 8804221891699487139L;
@Override
public void onClose(final AjaxRequestTarget target) {
+ modal.show(false);
+
final EventDataWrapper data = new EventDataWrapper();
data.setTarget(target);
data.setRows(rows);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
index 289cf26..73748c0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
@@ -25,6 +25,7 @@ import org.apache.syncope.client.console.commons.ActionTableCheckGroup;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxButton;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
@@ -33,7 +34,6 @@ import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-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.ISortableDataProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -121,7 +121,7 @@ public class ActionDataTablePanel<T, S> extends DataTablePanel<T, S> {
actionPanel.add(action, type, pageId, enabled);
}
- public void addCancelButton(final ModalWindow window) {
+ public void addCancelButton(final BaseModal<?> modal) {
final AjaxButton cancel = new ClearIndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL), pageRef) {
@@ -129,7 +129,7 @@ public class ActionDataTablePanel<T, S> extends DataTablePanel<T, S> {
@Override
protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
- window.close(target);
+ modal.close(target);
}
}.feedbackPanelAutomaticReload(false);
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index b98ba71..5041c6e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -25,12 +25,12 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.panels.AbstractSearchResultPanel.EventDataWrapper;
import org.apache.syncope.client.console.pages.AbstractBasePage;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.BulkActionModalPage;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxButton;
-import org.apache.syncope.client.console.pages.BulkActionModalPage;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.Page;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
@@ -61,11 +61,7 @@ public class AjaxDataTablePanel<T, S> extends DataTablePanel<T, S> {
super(id);
- final ModalWindow bulkModalWin = new ModalWindow("bulkModal");
- bulkModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- bulkModalWin.setInitialHeight(600);
- bulkModalWin.setInitialWidth(900);
- bulkModalWin.setCookieName("bulk-modal");
+ final BaseModal<?> bulkModalWin = new BaseModal("bulkModal");
add(bulkModalWin);
bulkModalWin.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
@@ -114,7 +110,7 @@ public class AjaxDataTablePanel<T, S> extends DataTablePanel<T, S> {
columns.add(0, new CheckGroupColumn<T, S>(group));
dataTable = new AjaxFallbackDataTable<>("dataTable", columns, dataProvider, rowsPerPage, container);
dataTable.add(new AttributeModifier("class", "table table-bordered table-hover dataTable"));
-
+
group.add(dataTable);
fragment.add(new ClearIndicatingAjaxButton("bulkActionLink", bulkActionForm, pageRef) {
@@ -123,22 +119,15 @@ public class AjaxDataTablePanel<T, S> extends DataTablePanel<T, S> {
@Override
protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
- bulkModalWin.setPageCreator(new ModalWindow.PageCreator() {
-
- private static final long serialVersionUID = -7834632442532690941L;
-
- @Override
- public Page createPage() {
- return new BulkActionModalPage<>(
- bulkModalWin,
- group.getModelObject(),
- columns,
- actions,
- bulkActionExecutor,
- itemKeyField,
- pageId);
- }
- });
+ bulkModalWin.setContent(new BulkActionModalPage<>(
+ bulkModalWin,
+ pageRef,
+ group.getModelObject(),
+ columns,
+ actions,
+ bulkActionExecutor,
+ itemKeyField,
+ pageId));
bulkModalWin.show(target);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1e15b05e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
index e9b137d..0940698 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnySearchResultPanel.java
@@ -20,12 +20,14 @@ package org.apache.syncope.client.console.panels;
import java.io.Serializable;
import java.lang.reflect.Field;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.AnyDisplayAttributesModalPage;
+import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
import org.apache.syncope.client.console.rest.AnyObjectRestClient;
import org.apache.syncope.client.console.rest.SchemaRestClient;
@@ -38,26 +40,22 @@ import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.types.SchemaType;
-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.markup.html.basic.Label;
+import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.util.ReflectionUtils;
-public class AnySearchResultPanel extends AbstractSearchResultPanel {
+public class AnySearchResultPanel<T extends AnyTO> extends AbstractSearchResultPanel<T> {
private static final long serialVersionUID = -1100228004207271270L;
- protected static final Logger LOG = LoggerFactory.getLogger(AnySearchResultPanel.class);
-
@SpringBean
protected SchemaRestClient schemaRestClient;
@@ -66,7 +64,7 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
protected final List<String> dSchemaNames;
protected final String pageID = "Any";
-
+
private final String entitlement = "USER_LIST";
public AnySearchResultPanel(final String type, final String parentId, final boolean filtered,
@@ -91,8 +89,7 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
@Override
protected List<IColumn<AnyTO, String>> getColumns() {
- final List<IColumn<AnyTO, String>> columns =
- new ArrayList<IColumn<AnyTO, String>>();
+ final List<IColumn<AnyTO, String>> columns = new ArrayList<IColumn<AnyTO, String>>();
for (String name : prefMan.getList(getRequest(), Constants.PREF_ANY_DETAILS_VIEW)) {
final Field field = ReflectionUtils.findField(AnyObjectTO.class, name);
@@ -133,7 +130,7 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
private static final long serialVersionUID = -3503023501954863131L;
@Override
- public ActionLinksPanel getActions(final String componentId, final IModel<AnyTO> model) {
+ public ActionLinksPanel<AnyTO> getActions(final String componentId, final IModel<AnyTO> model) {
final ActionLinksPanel.Builder<AnyTO> panel = ActionLinksPanel.builder(page.getPageReference());
@@ -143,19 +140,16 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
@Override
public void onClick(final AjaxRequestTarget target, final AnyTO anyTO) {
- editmodal.setPageCreator(new ModalWindow.PageCreator() {
+ final T modelObject = ((AnyObjectRestClient) restClient).<T>read(anyTO.getKey());
- private static final long serialVersionUID = -7834632442532690940L;
+ final IModel<T> model = new CompoundPropertyModel<>(modelObject);
+ modal.setFormModel(model);
- @Override
- public Page createPage() {
- // SYNCOPE-294: re-read anyTO before edit
- AnyObjectTO anyTO = ((AnyObjectRestClient) restClient).read(model.getObject().getKey());
- return null;
- }
- });
+ // still missing content
+ target.add(modal);
- editmodal.show(target);
+ modal.header(new Model<String>(MessageFormat.format(getString("any.edit"), anyTO.getKey())));
+ modal.show(true);
}
}, ActionLink.ActionType.EDIT, entitlement).add(new ActionLink<AnyTO>() {
@@ -164,34 +158,22 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
@Override
public void onClick(final AjaxRequestTarget target, final AnyTO anyTO) {
try {
- AnyTO deleteAnyTO =
- restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
-
- page.setModalResult(true);
-
- editmodal.setPageCreator(new ModalWindow.PageCreator() {
-
- private static final long serialVersionUID = -7834632442532690940L;
-
- @Override
- public Page createPage() {
- return null;
- }
- });
-
- editmodal.show(target);
- } catch (SyncopeClientException scce) {
- error(getString(Constants.OPERATION_ERROR) + ": " + scce.getMessage());
- feedbackPanel.refresh(target);
+ restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ LOG.error("While deleting object {}", anyTO.getKey(), e);
}
+ ((BasePage) getPage()).getFeedbackPanel().refresh(target);
}
}, ActionLink.ActionType.DELETE, entitlement);
- return panel.build(componentId);
+ return panel.build(componentId, model.getObject());
}
@Override
- public ActionLinksPanel getHeader(final String componentId) {
+ public ActionLinksPanel<Serializable> getHeader(final String componentId) {
final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder(page.getPageReference());
panel.add(new ActionLink<Serializable>() {
@@ -200,18 +182,12 @@ public class AnySearchResultPanel extends AbstractSearchResultPanel {
@Override
public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
- displaymodal.setPageCreator(new ModalWindow.PageCreator() {
-
- private static final long serialVersionUID = -7834632442532690940L;
-
- @Override
- public Page createPage() {
- return new AnyDisplayAttributesModalPage(
- page.getPageReference(), displaymodal, schemaNames, dSchemaNames);
- }
- });
+ // still missing content
+ target.add(modal.setContent(new AnyDisplayAttributesModalPage<T>(
+ modal, page.getPageReference(), schemaNames, dSchemaNames)));
- displaymodal.show(target);
+ modal.header(new ResourceModel("any.attr.display", ""));
+ modal.show(true);
}
}, ActionLink.ActionType.CHANGE_VIEW, entitlement).add(new ActionLink<Serializable>() {