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/11/17 14:59:54 UTC
[2/3] syncope git commit: [SYNCOPE-156] providing status panel for
any objects
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
index 0cbe42a..1fd3289 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserSearchResultPanel.java
@@ -28,7 +28,7 @@ import java.util.Date;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.pages.StatusModalPage;
+import org.apache.syncope.client.console.pages.StatusModal;
import org.apache.syncope.client.console.pages.UserDisplayAttributesModalPage;
import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
@@ -130,8 +130,8 @@ public final class UserSearchResultPanel extends AnySearchResultPanel<UserTO> {
final IModel<UserTO> model = new CompoundPropertyModel<>(anyTO);
modal.setFormModel(model);
- target.add(modal.setContent(
- new StatusModalPage<>(modal, page.getPageReference(), model.getObject())));
+ target.add(modal.
+ setContent(new StatusModal<>(modal, page.getPageReference(), model.getObject())));
modal.header(new Model<>(MessageFormat.format(getString("any.edit"), anyTO.getKey())));
modal.show(true);
@@ -145,8 +145,8 @@ public final class UserSearchResultPanel extends AnySearchResultPanel<UserTO> {
final IModel<UserTO> model = new CompoundPropertyModel<>(anyTO);
modal.setFormModel(model);
- target.add(modal.setContent(
- new StatusModalPage<>(modal, page.getPageReference(), model.getObject(), true)));
+ target.add(modal.setContent(new StatusModal<>(modal, page.getPageReference(), model.getObject(),
+ true)));
modal.header(new Model<>(MessageFormat.format(getString("any.edit"), anyTO.getKey())));
modal.show(true);
@@ -156,9 +156,9 @@ public final class UserSearchResultPanel extends AnySearchResultPanel<UserTO> {
private static final long serialVersionUID = -7978723352517770644L;
@Override
- public void onClick(final AjaxRequestTarget target, final UserTO anyTO) {
- send(UserSearchResultPanel.this, Broadcast.BREADTH,
- new AjaxWizard.NewItemActionEvent<AnyTO>(model.getObject(), target));
+ public void onClick(final AjaxRequestTarget target, final UserTO modelObject) {
+ send(UserSearchResultPanel.this, Broadcast.EXACT,
+ new AjaxWizard.EditItemActionEvent<AnyTO>(model.getObject(), target));
}
}, ActionLink.ActionType.EDIT, entitlement).add(new ActionLink<UserTO>() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
index 713418f..b477544 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
@@ -39,7 +39,7 @@ public abstract class AbstractAnyRestClient<T extends AnyTO> extends BaseRestCli
private static final long serialVersionUID = 1962529678091410544L;
- public abstract int count(String realm);
+ public abstract int count(String realm, String type);
public abstract List<T> list(String realm, int page, int size, final SortParam<String> sort, final String type);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
index 9296195..b5d0fcc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyObjectRestClient.java
@@ -48,9 +48,9 @@ public class AnyObjectRestClient extends AbstractAnyRestClient<AnyObjectTO> {
}
@Override
- public int count(final String realm) {
- return getService(AnyObjectService.class).list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(
- 1).build()).getTotalCount();
+ public int count(final String type, final String realm) {
+ return getService(AnyObjectService.class).list(
+ type, SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).getTotalCount();
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
index fe7c7e7..fc060e4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java
@@ -50,7 +50,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> {
}
@Override
- public int count(final String realm) {
+ public int count(final String realm, final String type) {
return getService(GroupService.class).
list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).
getTotalCount();
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
index 4830ed0..8fb4a6e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java
@@ -54,7 +54,7 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> {
}
@Override
- public int count(final String realm) {
+ public int count(final String realm, final String type) {
return getService(UserService.class).
list(SyncopeClient.getAnyListQueryBuilder().realm(realm).page(1).size(1).build()).
getTotalCount();
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxLink.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxLink.java
index 70491e2..81aafcf 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/ajax/markup/html/ClearIndicatingAjaxLink.java
@@ -18,7 +18,7 @@
*/
package org.apache.syncope.client.console.wicket.ajax.markup.html;
-import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.commons.NotificationAwareComponent;
import org.apache.wicket.Page;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -54,9 +54,9 @@ public abstract class ClearIndicatingAjaxLink<T> extends IndicatingAjaxLink<T> {
@Override
public final void onClick(final AjaxRequestTarget target) {
- Page page = pageRef.getPage();
- if (reloadFeedbackPanel && page instanceof BasePage) {
- target.add(((BasePage) page).getFeedbackPanel());
+ final Page page = pageRef.getPage();
+ if (reloadFeedbackPanel && page instanceof NotificationAwareComponent) {
+ ((NotificationAwareComponent) page).getFeedbackPanel().refresh(target);
}
onClickInternal(target);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index e030ef7..ff5bc7a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -26,6 +26,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.NotificationAwareComponent;
import org.apache.syncope.client.console.panels.AbstractModalPanel;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.NotificationPanel;
@@ -46,7 +47,7 @@ import org.apache.wicket.model.IModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class BaseModal<T extends Serializable> extends Modal<T> {
+public class BaseModal<T extends Serializable> extends Modal<T> implements NotificationAwareComponent {
private static final long serialVersionUID = -6142277554912316095L;
@@ -107,6 +108,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
}
+ @Override
public NotificationPanel getFeedbackPanel() {
return feedbackPanel;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index 1c6731f..6508ab3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -29,6 +29,8 @@ public abstract class ActionLink<T> implements Serializable {
private T modelObject;
+ private boolean enabled = true;
+
public ActionLink() {
}
@@ -99,4 +101,17 @@ public abstract class ActionLink<T> implements Serializable {
this.reloadFeedbackPanel = reloadFeedbackPanel;
return this;
}
+
+ protected boolean statusCondition(final T modelObject) {
+ return true;
+ }
+
+ public final ActionLink<T> disable() {
+ this.enabled = false;
+ return this;
+ }
+
+ public final boolean isEnabled(final T modelObject) {
+ return this.enabled && statusCondition(modelObject);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 3afb43b..868c986 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -115,7 +115,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case MANAGE_RESOURCES:
@@ -134,7 +135,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case MANAGE_USERS:
@@ -153,7 +155,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case MANAGE_GROUPS:
@@ -172,7 +175,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case MAPPING:
@@ -191,7 +195,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case ACCOUNT_LINK:
@@ -210,7 +215,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case RESET_TIME:
@@ -229,7 +235,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case CLONE:
@@ -248,7 +255,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case CREATE:
@@ -267,7 +275,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case RESET:
@@ -286,7 +295,7 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- });
+ }.setVisible(link.isEnabled(model.getObject())));
break;
case EDIT:
@@ -305,7 +314,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case USER_TEMPLATE:
@@ -324,7 +334,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case GROUP_TEMPLATE:
@@ -343,7 +354,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case ENABLE:
@@ -362,7 +374,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case SEARCH:
@@ -381,7 +394,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case EXECUTE:
@@ -400,7 +414,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case DRYRUN:
@@ -419,7 +434,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case DELETE:
@@ -438,7 +454,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
@@ -458,7 +475,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
@@ -478,7 +496,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case SUSPEND:
@@ -497,7 +516,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case REACTIVATE:
@@ -516,7 +536,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case RELOAD:
@@ -535,7 +556,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case CHANGE_VIEW:
@@ -554,7 +576,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case UNLINK:
@@ -573,7 +596,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case LINK:
@@ -592,7 +616,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case UNASSIGN:
@@ -601,18 +626,19 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
fragment.addOrReplace(
new IndicatingOnConfirmAjaxLink<Void>("unassignLink", pageRef, "confirmUnassign") {
- private static final long serialVersionUID = -6957616042924610294L;
+ private static final long serialVersionUID = -6957616042924610294L;
- @Override
- protected void onClickInternal(final AjaxRequestTarget target) {
- link.onClick(target, model.getObject());
- }
+ @Override
+ protected void onClickInternal(final AjaxRequestTarget target) {
+ link.onClick(target, model.getObject());
+ }
- @Override
- public String getAjaxIndicatorMarkupId() {
- return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
- }
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ @Override
+ public String getAjaxIndicatorMarkupId() {
+ return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+ }
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case ASSIGN:
@@ -631,7 +657,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case DEPROVISION:
@@ -640,18 +667,19 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
fragment.addOrReplace(
new IndicatingOnConfirmAjaxLink<Void>("deprovisionLink", pageRef, "confirmDeprovision") {
- private static final long serialVersionUID = -6957616042924610295L;
+ private static final long serialVersionUID = -6957616042924610295L;
- @Override
- protected void onClickInternal(final AjaxRequestTarget target) {
- link.onClick(target, model.getObject());
- }
+ @Override
+ protected void onClickInternal(final AjaxRequestTarget target) {
+ link.onClick(target, model.getObject());
+ }
- @Override
- public String getAjaxIndicatorMarkupId() {
- return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
- }
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ @Override
+ public String getAjaxIndicatorMarkupId() {
+ return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+ }
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case PROVISION:
@@ -670,7 +698,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case ZOOM_IN:
fragment = new Fragment("panelZoomIn", "fragmentZoomIn", this);
@@ -688,7 +717,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
case ZOOM_OUT:
fragment = new Fragment("panelZoomOut", "fragmentZoomOut", this);
@@ -706,7 +736,8 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
public String getAjaxIndicatorMarkupId() {
return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
}
- }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()));
+ }.feedbackPanelAutomaticReload(link.feedbackPanelAutomaticReload()).
+ setVisible(link.isEnabled(model.getObject())));
break;
default:
// do nothing
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
index 1a1cdc5..d9b76d6 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
@@ -96,7 +96,7 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard implemen
final AjaxRequestTarget target = RequestCycle.get().find(AjaxRequestTarget.class);
try {
onCancelInternal();
- send(pageRef.getPage(), Broadcast.DEPTH, new NewItemCancelEvent<T>(item, target));
+ send(AjaxWizard.this, Broadcast.BUBBLE, new NewItemCancelEvent<T>(item, target));
} catch (Exception e) {
LOG.warn("Wizard error on cancel", e);
error(getString("wizard.cancel.error"));
@@ -112,7 +112,7 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard implemen
final AjaxRequestTarget target = RequestCycle.get().find(AjaxRequestTarget.class);
try {
onApplyInternal();
- send(pageRef.getPage(), Broadcast.DEPTH, new NewItemFinishEvent<T>(item, target));
+ send(AjaxWizard.this, Broadcast.BUBBLE, new NewItemFinishEvent<T>(item, target));
} catch (Exception e) {
LOG.warn("Wizard error on finish", e);
error(getString("wizard.apply.error"));
@@ -153,10 +153,14 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard implemen
public AjaxRequestTarget getTarget() {
return target;
}
+
+ public abstract String getEventDescription();
}
public static class NewItemActionEvent<T> extends NewItemEvent<T> {
+ private static final String EVENT_DESCRIPTION = "new";
+
private int index = 0;
public NewItemActionEvent(final T item, final AjaxRequestTarget target) {
@@ -172,22 +176,56 @@ public abstract class AjaxWizard<T extends Serializable> extends Wizard implemen
return index;
}
+ @Override
+ public String getEventDescription() {
+ return NewItemActionEvent.EVENT_DESCRIPTION;
+ }
+ }
+
+ public static class EditItemActionEvent<T> extends NewItemActionEvent<T> {
+
+ private static final String EVENT_DESCRIPTION = "edit";
+
+ public EditItemActionEvent(final T item, final AjaxRequestTarget target) {
+ super(item, target);
+ }
+
+ public EditItemActionEvent(final T item, final int index, final AjaxRequestTarget target) {
+ super(item, index, target);
+ }
+
+ @Override
+ public String getEventDescription() {
+ return EditItemActionEvent.EVENT_DESCRIPTION;
+ }
}
public static class NewItemCancelEvent<T> extends NewItemEvent<T> {
+ private static final String EVENT_DESCRIPTION = "cancel";
+
public NewItemCancelEvent(final T item, final AjaxRequestTarget target) {
super(item, target);
}
+ @Override
+ public String getEventDescription() {
+ return NewItemCancelEvent.EVENT_DESCRIPTION;
+ }
}
public static class NewItemFinishEvent<T> extends NewItemEvent<T> {
+ private static final String EVENT_DESCRIPTION = "cancel";
+
public NewItemFinishEvent(final T item, final AjaxRequestTarget target) {
super(item, target);
}
+ @Override
+ public String getEventDescription() {
+ return NewItemFinishEvent.EVENT_DESCRIPTION;
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
index 2dc47d8..0205e7f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizardBuilder.java
@@ -26,9 +26,9 @@ public abstract class AjaxWizardBuilder<T extends Serializable> {
private final String id;
- private final PageReference pageRef;
+ protected final PageReference pageRef;
- private T defaultItem;
+ private final T defaultItem;
private T item;
@@ -103,4 +103,8 @@ public abstract class AjaxWizardBuilder<T extends Serializable> {
this.item = item;
return this;
}
+
+ public PageReference getPageReference() {
+ return pageRef;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index f60dbe7..78ff7a9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -34,7 +34,8 @@ import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.StringResourceModel;
public abstract class WizardMgtPanel<T extends Serializable> extends Panel implements IEventSource {
@@ -94,7 +95,7 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
@Override
public void onClick(final AjaxRequestTarget target) {
- send(WizardMgtPanel.this, Broadcast.BREADTH, new AjaxWizard.NewItemActionEvent<T>(null, target));
+ send(WizardMgtPanel.this, Broadcast.EXACT, new AjaxWizard.NewItemActionEvent<T>(null, target));
}
};
@@ -107,15 +108,15 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
@SuppressWarnings("unchecked")
public void onEvent(final IEvent<?> event) {
if (event.getPayload() instanceof AjaxWizard.NewItemEvent) {
- final AjaxRequestTarget target = AjaxWizard.NewItemEvent.class.cast(event.getPayload()).getTarget();
-
- final T item = ((AjaxWizard.NewItemEvent<T>) event.getPayload()).getItem();
+ final AjaxWizard.NewItemEvent<T> newItemEvent = AjaxWizard.NewItemEvent.class.cast(event.getPayload());
+ final AjaxRequestTarget target = newItemEvent.getTarget();
+ final T item = newItemEvent.getItem();
if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent) {
newItemPanelBuilder.setItem(item);
final AjaxWizard<T> wizard = newItemPanelBuilder.build(
- ((AjaxWizard.NewItemActionEvent<T>) event.getPayload()).getIndex(), item != null);
+ ((AjaxWizard.NewItemActionEvent<T>) newItemEvent).getIndex(), item != null);
if (wizardInModal) {
final IModel<T> model = new CompoundPropertyModel<>(item);
@@ -123,7 +124,11 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
target.add(modal.setContent(wizard));
- modal.header(new ResourceModel("item.new", "New item"));
+ modal.header(new StringResourceModel(
+ String.format("any.%s", newItemEvent.getEventDescription()),
+ this,
+ new Model<T>(wizard.getItem())));
+
modal.show(true);
} else {
final Fragment fragment = new Fragment("content", "wizard", WizardMgtPanel.this);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
index d49bb89..a817f17 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
@@ -16,8 +16,10 @@
package org.apache.syncope.client.console.wizards.any;
import java.io.Serializable;
+import java.util.Collections;
import java.util.List;
import org.apache.syncope.client.console.commons.Mode;
+import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.rest.AnyTypeRestClient;
import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
import org.apache.syncope.common.lib.AnyOperations;
@@ -27,6 +29,7 @@ import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.wicket.PageReference;
import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.model.util.ListModel;
public class AnyWizardBuilder<T extends AnyTO> extends AjaxWizardBuilder<T> implements Serializable {
@@ -52,6 +55,7 @@ public class AnyWizardBuilder<T extends AnyTO> extends AjaxWizardBuilder<T> impl
@Override
protected WizardModel buildModelSteps(final T modelObject, final WizardModel wizardModel) {
+ addOptionalDetailsPanel(modelObject, wizardModel);
wizardModel.add(new PlainAttrs(modelObject, null, Mode.ADMIN, anyTypeClasses.toArray(new String[] {})));
wizardModel.add(new DerAttrs(modelObject, anyTypeClasses.toArray(new String[] {})));
wizardModel.add(new VirAttrs(modelObject, anyTypeClasses.toArray(new String[] {})));
@@ -82,4 +86,12 @@ public class AnyWizardBuilder<T extends AnyTO> extends AjaxWizardBuilder<T> impl
}
}
}
+
+ protected AnyWizardBuilder<T> addOptionalDetailsPanel(final T modelObject, final WizardModel wizardModel) {
+ if (modelObject.getKey() > 0) {
+ wizardModel.add(
+ new Details(modelObject, new ListModel<>(Collections.<StatusBean>emptyList()), pageRef, true));
+ }
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
new file mode 100644
index 0000000..a525613
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.any;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.ListModel;
+
+public class ConnObjectPanel extends Panel {
+
+ private static final long serialVersionUID = -6469290753080058487L;
+
+ public ConnObjectPanel(final String id, final ConnObjectTO connObjectTO) {
+ super(id);
+
+ IModel<List<AttrTO>> formProps = new LoadableDetachableModel<List<AttrTO>>() {
+
+ private static final long serialVersionUID = 5275935387613157437L;
+
+ @Override
+ protected List<AttrTO> load() {
+ List<AttrTO> attrs = new ArrayList<>(connObjectTO.getPlainAttrs());
+ Collections.sort(attrs, new Comparator<AttrTO>() {
+
+ @Override
+ public int compare(final AttrTO attr1, final AttrTO attr2) {
+ if (attr1 == null || attr1.getSchema() == null) {
+ return -1;
+ }
+ if (attr2 == null || attr2.getSchema() == null) {
+ return 1;
+ }
+ return attr1.getSchema().compareTo(attr2.getSchema());
+ }
+ });
+
+ return attrs;
+ }
+ };
+
+ final ListView<AttrTO> propView = new ListView<AttrTO>("propView", formProps) {
+
+ private static final long serialVersionUID = 3109256773218160485L;
+
+ @Override
+ protected void populateItem(final ListItem<AttrTO> item) {
+ final AttrTO prop = item.getModelObject();
+
+ Label label = new Label("key", prop.getSchema());
+ item.add(label);
+
+ Panel field;
+ if (prop.getValues().isEmpty()) {
+ field = new AjaxTextFieldPanel("attribute", prop.getSchema(), new Model<String>());
+ } else if (prop.getValues().size() == 1) {
+ field = new AjaxTextFieldPanel("attribute",
+ prop.getSchema(), new Model<String>(prop.getValues().get(0)));
+ } else {
+ field = new MultiFieldPanel.Builder<String>(new ListModel<String>(prop.getValues())).build(
+ "attribute",
+ prop.getSchema(),
+ new AjaxTextFieldPanel("panel", prop.getSchema(), new Model<String>()));
+ }
+ item.add(field);
+ }
+ };
+ add(propView);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
new file mode 100644
index 0000000..2ea9476
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.any;
+
+import java.util.List;
+import org.apache.syncope.client.console.commons.status.StatusBean;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.model.IModel;
+
+public class Details extends WizardStep {
+
+ private static final long serialVersionUID = 6592027822510220463L;
+
+ protected final PageReference pageRef;
+
+ protected final StatusPanel statusPanel;
+
+ public <T extends AnyTO> Details(
+ final T anyTO,
+ final IModel<List<StatusBean>> statusModel,
+ final PageReference pageRef,
+ final boolean includeStatusPanel) {
+ this.pageRef = pageRef;
+
+ statusPanel = new StatusPanel("status", anyTO, statusModel, pageRef);
+ add(statusPanel.setEnabled(includeStatusPanel).setVisible(includeStatusPanel).setRenderBodyOnly(true));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
index 3613558..0cffa25 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
@@ -18,7 +18,9 @@
*/
package org.apache.syncope.client.console.wizards.any;
+import java.util.List;
import org.apache.syncope.client.console.commons.JexlHelpUtils;
+import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.rest.GroupRestClient;
import org.apache.syncope.client.console.rest.UserRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
@@ -26,19 +28,19 @@ import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.event.IEvent;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.extensions.wizard.WizardStep;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class GroupDetails extends WizardStep {
+public class GroupDetails extends Details {
private static final long serialVersionUID = 855618618337931784L;
@@ -57,7 +59,14 @@ public class GroupDetails extends WizardStep {
private final OwnerModel groupOwnerModel;
- public GroupDetails(final GroupTO groupTO, final boolean templateMode) {
+ public GroupDetails(
+ final GroupTO groupTO,
+ final IModel<List<StatusBean>> statusModel,
+ final boolean templateMode,
+ final PageReference pageRef,
+ final boolean includeStatusPanel) {
+ super(groupTO, statusModel, pageRef, includeStatusPanel);
+
ownerContainer = new WebMarkupContainer("ownerContainer");
ownerContainer.setOutputMarkupId(true);
this.add(ownerContainer);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
index 7a56b15..ee5e3cb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
@@ -15,7 +15,9 @@
*/
package org.apache.syncope.client.console.wizards.any;
+import java.util.Collections;
import java.util.List;
+import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.rest.GroupRestClient;
import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.patch.GroupPatch;
@@ -23,6 +25,7 @@ import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.wicket.PageReference;
import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.model.util.ListModel;
public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> {
@@ -44,12 +47,6 @@ public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> {
}
@Override
- protected WizardModel buildModelSteps(final GroupTO modelObject, final WizardModel wizardModel) {
- wizardModel.add(new GroupDetails(modelObject, false));
- return super.buildModelSteps(modelObject, wizardModel);
- }
-
- @Override
protected void onApplyInternal(final GroupTO modelObject) {
final ProvisioningResult<GroupTO> actual;
@@ -64,4 +61,11 @@ public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> {
}
}
}
+
+ @Override
+ protected GroupWizardBuilder addOptionalDetailsPanel(final GroupTO modelObject, final WizardModel wizardModel) {
+ wizardModel.add(new GroupDetails(modelObject,
+ new ListModel<>(Collections.<StatusBean>emptyList()), false, pageRef, modelObject.getKey() > 0));
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PasswordPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PasswordPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PasswordPanel.java
index 147d5cb..b6a788a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PasswordPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PasswordPanel.java
@@ -38,9 +38,9 @@ public class PasswordPanel extends Panel {
public PasswordPanel(
final String id, final UserTO userTO, final boolean resetPassword, final boolean templateMode) {
super(id);
-
+
setOutputMarkupId(true);
-
+
final Form<?> form = new Form<>("passwordInnerForm");
add(form);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index 49574c8..2ab5c6f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
@@ -69,8 +69,8 @@ public class PlainAttrs extends WizardStep {
private final String[] anyTypeClass;
- public <T extends AnyTO> PlainAttrs(final T entityTO, final Form<?> form, final Mode mode,
- final String... anyTypeClass) {
+ public <T extends AnyTO> PlainAttrs(
+ final T entityTO, final Form<?> form, final Mode mode, final String... anyTypeClass) {
this.setOutputMarkupId(true);
this.entityTO = entityTO;
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
new file mode 100644
index 0000000..2b03146
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -0,0 +1,220 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.any;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.commons.status.ConnObjectWrapper;
+import org.apache.syncope.client.console.commons.status.Status;
+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.ListViewPanel;
+import org.apache.syncope.client.console.rest.GroupRestClient;
+import org.apache.syncope.client.console.rest.UserRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+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.markup.ComponentTag;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class StatusPanel extends Panel implements IHeaderContributor {
+
+ /**
+ * Logger.
+ */
+ private static final Logger LOG = LoggerFactory.getLogger(StatusPanel.class);
+
+ private static final long serialVersionUID = -4064294905566247728L;
+
+ private UserRestClient userRestClient = new UserRestClient();
+
+ private GroupRestClient groupRestClient = new GroupRestClient();
+
+ private final List<ConnObjectWrapper> connObjects;
+
+ private final Map<String, StatusBean> initialStatusBeanMap;
+
+ private final StatusUtils statusUtils;
+
+ private final ListViewPanel<?> listViewPanel;
+
+ private final TransparentWebMarkupContainer container;
+
+ private final Fragment resourceListFragment;
+
+ public <T extends AnyTO> StatusPanel(
+ final String id,
+ final T any,
+ final IModel<List<StatusBean>> model,
+ final PageReference pageRef) {
+
+ super(id);
+
+ container = new TransparentWebMarkupContainer("container");
+ container.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true);
+ add(container);
+
+ resourceListFragment = new Fragment("content", "resources", this);
+ container.addOrReplace(resourceListFragment);
+
+ statusUtils = new StatusUtils(any instanceof GroupTO ? groupRestClient : userRestClient);
+
+ connObjects = statusUtils.getConnectorObjects(any);
+
+ final List<StatusBean> statusBeans = new ArrayList<>(connObjects.size() + 1);
+ initialStatusBeanMap = new LinkedHashMap<>(connObjects.size() + 1);
+
+ final StatusBean syncope = new StatusBean(any, "syncope");
+
+ if (any instanceof UserTO) {
+ syncope.setConnObjectLink(((UserTO) any).getUsername());
+
+ Status syncopeStatus = Status.UNDEFINED;
+ if (((UserTO) any).getStatus() != null) {
+ try {
+ syncopeStatus = Status.valueOf(((UserTO) any).getStatus().toUpperCase());
+ } catch (IllegalArgumentException e) {
+ LOG.warn("Unexpected status found: {}", ((UserTO) any).getStatus(), e);
+ }
+ }
+ syncope.setStatus(syncopeStatus);
+ } else if (any instanceof GroupTO) {
+ syncope.setConnObjectLink(((GroupTO) any).getDisplayName());
+ syncope.setStatus(Status.ACTIVE);
+ }
+
+ statusBeans.add(syncope);
+ initialStatusBeanMap.put(syncope.getResourceName(), syncope);
+
+ for (ConnObjectWrapper entry : connObjects) {
+ final StatusBean statusBean = statusUtils.getStatusBean(entry.getAny(),
+ entry.getResourceName(),
+ entry.getConnObjectTO(),
+ any instanceof GroupTO);
+
+ initialStatusBeanMap.put(entry.getResourceName(), statusBean);
+ statusBeans.add(statusBean);
+ }
+
+ ListViewPanel.Builder<StatusBean> builder = new ListViewPanel.Builder<StatusBean>(StatusBean.class, pageRef) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected Component getValueComponent(final String key, final StatusBean bean) {
+ if ("status".equalsIgnoreCase(key)) {
+ return new Label("field", StringUtils.EMPTY) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onComponentTag(final ComponentTag tag) {
+ super.onComponentTag(tag);
+ if (bean.getStatus() == Status.OBJECT_NOT_FOUND) {
+ tag.put("class", "glyphicon glyphicon-remove-circle");
+ } else if (bean.getStatus() == Status.UNDEFINED
+ || bean.getStatus() == Status.CREATED
+ || bean.getStatus() == Status.NOT_YET_SUBMITTED) {
+ tag.put("class", "glyphicon glyphicon-question-sign");
+ } else if (bean.getStatus() == Status.SUSPENDED) {
+ tag.put("class", "glyphicon glyphicon-ban-circle");
+ } else if (bean.getStatus() == Status.ACTIVE) {
+ tag.put("class", "glyphicon glyphicon-ok-circle");
+ }
+
+ tag.put("alt", "status icon");
+ tag.put("title", bean.getStatus().toString());
+ }
+ };
+ } else {
+ return super.getValueComponent(key, bean);
+ }
+ }
+ };
+
+ builder.setModel(model);
+ builder.setItems(statusBeans);
+ builder.includes("resourceName", "connObjectLink", "status");
+ builder.withChecks(ListViewPanel.CheckAvailability.DISABLED);
+ builder.setReuseItem(false);
+
+ builder.addAction(new ActionLink<StatusBean>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ protected boolean statusCondition(final StatusBean bean) {
+ return statusUtils.getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects) != null;
+ }
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final StatusBean bean) {
+ final Fragment remoteObjectFragment = new Fragment("content", "remoteObject", StatusPanel.this);
+ container.addOrReplace(remoteObjectFragment);
+
+ remoteObjectFragment.add(new AjaxLink<StatusBean>("back") {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ container.addOrReplace(resourceListFragment);
+ target.add(container);
+ }
+ });
+
+ remoteObjectFragment.add(
+ new Label("resource", new ResourceModel(bean.getResourceName(), bean.getResourceName())));
+
+ remoteObjectFragment.add(new ConnObjectPanel("remoteObject",
+ statusUtils.getConnObjectTO(bean.getAnyKey(), bean.getResourceName(), connObjects)));
+
+ target.add(container);
+ }
+ }, ActionLink.ActionType.SEARCH, StandardEntitlement.RESOURCE_GET_CONNOBJECT);
+
+ listViewPanel = ListViewPanel.class.cast(builder.build("resources"));
+ resourceListFragment.add(listViewPanel);
+ }
+
+ public void setCheckAvailability(final ListViewPanel.CheckAvailability check) {
+ listViewPanel.setCheckAvailability(check);
+ }
+
+ public Map<String, StatusBean> getInitialStatusBeanMap() {
+ return initialStatusBeanMap;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
index e669464..4e4b287 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
@@ -20,31 +20,41 @@ package org.apache.syncope.client.console.wizards.any;
import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.Collapsible;
import java.util.Collections;
-import org.apache.syncope.client.console.commons.Constants;
+import java.util.List;
import org.apache.syncope.client.console.commons.JexlHelpUtils;
+import org.apache.syncope.client.console.commons.status.StatusBean;
+import org.apache.syncope.client.console.panels.ListViewPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
-public class UserDetails extends WizardStep {
+public class UserDetails extends Details {
private static final long serialVersionUID = 6592027822510220463L;
- private static final String PASSWORD_CONTENT_PATH = "tabs:0:body:content";
+ private static final String PASSWORD_CONTENT_PATH = "body:content";
- public UserDetails(final UserTO userTO, final boolean resetPassword, final boolean templateMode) {
+ public UserDetails(
+ final UserTO userTO,
+ final IModel<List<StatusBean>> statusModel,
+ final boolean resetPassword,
+ final boolean templateMode,
+ final PageReference pageRef,
+ final boolean includeStatusPanel) {
+ super(userTO, statusModel, pageRef, includeStatusPanel);
// ------------------------
// Username
// ------------------------
@@ -87,24 +97,36 @@ public class UserDetails extends WizardStep {
@Override
protected Component newTitle(final String markupId, final ITab tab, final Collapsible.State state) {
- return super.newTitle(markupId, tab, state).add(new AjaxEventBehavior(Constants.ON_CLICK) {
+ return new AjaxLink<Integer>(markupId) {
private static final long serialVersionUID = 1L;
@Override
- protected void onEvent(final AjaxRequestTarget target) {
+ protected void onComponentTag(final ComponentTag tag) {
+ super.onComponentTag(tag);
+ tag.put("style", "color: #337ab7 !important");
+ }
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
model.setObject(model.getObject() == 0 ? -1 : 0);
- final Component passwordPanel = get(PASSWORD_CONTENT_PATH);
- passwordPanel.setEnabled(model.getObject() >= 0);
+
+ boolean enable = model.getObject() >= 0;
+
+ final Component passwordPanel = getParent().get(PASSWORD_CONTENT_PATH);
+ passwordPanel.setEnabled(enable);
+ statusPanel.setCheckAvailability(enable
+ ? ListViewPanel.CheckAvailability.AVAILABLE
+ : ListViewPanel.CheckAvailability.DISABLED);
+
target.add(passwordPanel);
}
- });
+ }.setBody(new ResourceModel("password.change", "Change password ..."));
}
-
};
collapsible.setOutputMarkupId(true);
add(collapsible);
- // ------------------------
+ // ------------------------
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
index a8a8441..9c24dbc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
@@ -15,7 +15,10 @@
*/
package org.apache.syncope.client.console.wizards.any;
+import java.util.ArrayList;
import java.util.List;
+import org.apache.syncope.client.console.commons.status.StatusBean;
+import org.apache.syncope.client.console.commons.status.StatusUtils;
import org.apache.syncope.client.console.rest.UserRestClient;
import org.apache.syncope.common.lib.AnyOperations;
import org.apache.syncope.common.lib.patch.UserPatch;
@@ -23,7 +26,9 @@ import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.wicket.PageReference;
import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.model.util.ListModel;
public class UserWizardBuilder extends AnyWizardBuilder<UserTO> {
@@ -31,6 +36,8 @@ public class UserWizardBuilder extends AnyWizardBuilder<UserTO> {
private final UserRestClient userRestClient = new UserRestClient();
+ private final IModel<List<StatusBean>> statusModel;
+
/**
* Construct.
*
@@ -42,17 +49,12 @@ public class UserWizardBuilder extends AnyWizardBuilder<UserTO> {
public UserWizardBuilder(
final String id, final UserTO userTO, final List<String> anyTypeClasses, final PageReference pageRef) {
super(id, userTO, anyTypeClasses, pageRef);
- }
-
- @Override
- protected WizardModel buildModelSteps(final UserTO modelObject, final WizardModel wizardModel) {
- wizardModel.add(new UserDetails(modelObject, false, false));
- return super.buildModelSteps(modelObject, wizardModel);
+ statusModel = new ListModel<>(new ArrayList<StatusBean>());
}
@Override
protected void onApplyInternal(final UserTO modelObject) {
- Model<Boolean> storePassword = new Model<>(true);
+ Model<Boolean> storePassword = Model.of(true);
final ProvisioningResult<UserTO> actual;
@@ -61,13 +63,33 @@ public class UserWizardBuilder extends AnyWizardBuilder<UserTO> {
} else {
final UserPatch patch = AnyOperations.diff(modelObject, getOriginalItem(), true);
-// if (statusPanel != null) {
-// patch.setPwdPropRequest(statusPanel.getStatusMod());
-// }
+ if (!statusModel.getObject().isEmpty()) {
+ patch.setPassword(StatusUtils.buildPasswordPatch(modelObject.getPassword(), statusModel.getObject()));
+ }
+
// update user just if it is changed
if (!patch.isEmpty()) {
actual = userRestClient.update(getOriginalItem().getETagValue(), patch);
}
}
}
+
+ @Override
+ protected UserWizardBuilder addOptionalDetailsPanel(final UserTO modelObject, final WizardModel wizardModel) {
+ wizardModel.add(new UserDetails(modelObject, statusModel, false, false, pageRef, modelObject.getKey() > 0));
+ return this;
+ }
+
+ /**
+ * Overrides default setItem() in order to clean statusModel as well.
+ *
+ * @param item item to be set.
+ * @return the current wizard.
+ */
+ @Override
+ public UserWizardBuilder setItem(final UserTO item) {
+ super.setItem(item);
+ statusModel.getObject().clear();
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties
index 07db51e..05b5945 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties
@@ -29,6 +29,6 @@ creationDate=Creation Date
tokenValued=Valued
tokenNotValued=Not valued
-any.edit=Edit object {0}
-any.new=New object
+any.edit=Edit ${type} ${key}
+any.new=New ${type}
any.attr.display=Attributes to be displayed
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties
index 0d0d580..278ca4d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties
@@ -29,6 +29,6 @@ creationDate=Data Creazione
tokenValued=Valued
tokenNotValued=Not valued
-any.edit=Edit object {0}
-any.new=New object
+any.edit=Modifica ${type} ${key}
+any.new=Nuovo ${type}
any.attr.display=Attributes to be displayed
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties
index e06e38e..5099690 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties
@@ -29,6 +29,6 @@ creationDate=Data de Cria\u00e7\u00e3o
tokenValued=Atribu\u00eddo
tokenNotValued=N\u00e3o Atribu\u00eddo
-any.edit=Edit object {0}
-any.new=New object
+any.edit=Alterar ${type} ${key}
+any.new=Novo ${type}
any.attr.display=Attributes to be displayed
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/panels/ListViewPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ListViewPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ListViewPanel.html
index 4f24eb4..e30cf50 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ListViewPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ListViewPanel.html
@@ -33,17 +33,27 @@ under the License.
<table class="table table-hover">
<tbody>
<tr>
+ <th id="check">
+ <input type="checkbox" wicket:id="groupselector" />
+ </th>
<th wicket:id="names"><span wicket:id="name"/></th>
<th />
</tr>
- <tr wicket:id="beans">
- <td wicket:id="fields"><span wicket:id="field"/></td>
- <td>
- <div class="listview-actions">
- <span wicket:id="actions">[actions]</span>
- </div>
- </td>
- </tr>
+
+ <span wicket:id="group">
+ <tr wicket:id="beans">
+ <td id="check">
+ <input type="checkbox" wicket:id="check"/>
+ </td>
+ <td wicket:id="fields"><span wicket:id="field"/></td>
+ <td>
+ <div class="listview-actions">
+ <span wicket:id="actions">[actions]</span>
+ </div>
+ </td>
+ </tr>
+ </span>
+
</tbody></table>
</div><!-- /.box-body -->
</div><!-- /.box -->
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
index 67cf987..2830a79 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
@@ -96,7 +96,7 @@ under the License.
</wicket:fragment>
<wicket:fragment wicket:id="fragmentSearch">
- <a href="#" wicket:id="searchLink"><img id="actionLink" src="img/actions/search.png" alt="search icon" title="Search and modify"/></a>
+ <a href="#" wicket:id="searchLink"><i class="glyphicon glyphicon-search" alt="search icon" title="Search"></i></a>
</wicket:fragment>
<wicket:fragment wicket:id="fragmentEnable">
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
index e849f37..9bf9518 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
@@ -34,9 +34,11 @@ under the License.
<wicket:child />
- <div class="modal-footer" style="text-align: right">
- <a haref="#" class="btn btn-primary" wicket:id="add">Add</a>
- </div>
+ <wicket:enclosure child="add">
+ <div class="modal-footer" style="text-align: right">
+ <a haref="#" class="btn btn-primary" wicket:id="add">Add</a>
+ </div>
+ </wicket:enclosure>
</wicket:fragment>
<div wicket:id="modal" />
http://git-wip-us.apache.org/repos/asf/syncope/blob/e034afcd/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html
new file mode 100644
index 0000000..eed082f
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.html
@@ -0,0 +1,26 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head><title></title></head>
+ <wicket:panel>
+ <div class="form-group" wicket:id="propView">
+ <span wicket:id="attribute">[ATTIRIBUTE]</span>
+ </div>
+ </wicket:panel>
+</html>