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 2017/08/17 13:31:34 UTC
syncope git commit: [SYNCOPE-1176] provides action toggle panel for
the list view panel
Repository: syncope
Updated Branches:
refs/heads/2_0_X 36f2537e7 -> 31e884a9f
[SYNCOPE-1176] provides action toggle panel for the list view panel
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/31e884a9
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/31e884a9
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/31e884a9
Branch: refs/heads/2_0_X
Commit: 31e884a9fda21702fb04b5ecfa711b50de6d7452
Parents: 36f2537
Author: fmartelli <fa...@gmail.com>
Authored: Thu Aug 17 15:30:42 2017 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Thu Aug 17 15:30:42 2017 +0200
----------------------------------------------------------------------
.../client/console/panels/ListViewPanel.java | 49 +++++++++++++++++++-
.../console/wicket/markup/html/form/Action.java | 5 ++
.../html/form/ActionLinksTogglePanel.java | 3 ++
.../wicket/markup/html/form/ActionPanel.java | 3 ++
.../wicket/markup/html/form/ActionsPanel.java | 14 ++++++
.../resources/ResourceProvisionPanel.java | 15 +++++-
.../resources/ResourceProvisionPanel.html | 3 +-
.../syncope/fit/console/TopologyITCase.java | 18 ++++---
8 files changed, 99 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
index e028cc3..6dce4eb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
@@ -29,13 +29,17 @@ import java.util.List;
import org.apache.commons.collections4.IteratorUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.core.util.lang.PropertyResolver;
import org.apache.wicket.event.IEvent;
@@ -58,6 +62,8 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
private static final Logger LOG = LoggerFactory.getLogger(ListViewPanel.class);
+ private ActionLinksTogglePanel<T> togglePanel;
+
public enum CheckAvailability {
/**
@@ -105,6 +111,8 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
super(id, wizardInModal);
setOutputMarkupId(true);
+ togglePanel = getTogglePanel();
+
this.check = Model.of(check);
addInnerObject(new Label("caption", new ResourceModel("listview.caption", StringUtils.EMPTY)));
@@ -176,10 +184,36 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
@Override
protected void populateItem(final ListItem<String> fieldItem) {
fieldItem.add(getValueComponent(fieldItem.getModelObject(), bean));
+ if (togglePanel != null) {
+ fieldItem.add(new AttributeModifier("style", "cursor: pointer;"));
+ fieldItem.add(new AjaxEventBehavior(Constants.ON_CLICK) {
+
+ private static final long serialVersionUID = -9027652037484739586L;
+
+ @Override
+ protected String findIndicatorId() {
+ return StringUtils.EMPTY;
+ }
+
+ @Override
+ protected void onEvent(final AjaxRequestTarget target) {
+ togglePanel.toggleWithContent(
+ target,
+ actions.cloneWithLabels("actions", new Model<>(bean)),
+ bean);
+ }
+ });
+ }
}
};
+
beanItem.add(fields);
- beanItem.add(actions.clone("actions", new Model<>(bean)));
+
+ if (togglePanel == null) {
+ beanItem.add(actions.clone("actions", new Model<>(bean)));
+ } else {
+ beanItem.add(new ActionsPanel<>("actions", new Model<>(bean)).setVisible(false).setEnabled(false));
+ }
}
};
beans.setOutputMarkupId(true);
@@ -402,9 +436,18 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
protected void customActionOnCancelCallback(final AjaxRequestTarget target) {
Builder.this.customActionOnCancelCallback(target);
}
+
+ @Override
+ protected ActionLinksTogglePanel<T> getTogglePanel() {
+ return Builder.this.getTogglePanel();
+ }
};
}
+ protected ActionLinksTogglePanel<T> getTogglePanel() {
+ return null;
+ }
+
protected void customActionCallback(final AjaxRequestTarget target) {
}
@@ -478,4 +521,8 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
return items;
}
}
+
+ protected ActionLinksTogglePanel<T> getTogglePanel() {
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/Action.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/Action.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/Action.java
index 15d99dd..98d2556 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/Action.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/Action.java
@@ -104,6 +104,11 @@ public final class Action<T extends Serializable> implements Serializable {
this.visibleLabel = false;
return this;
}
+
+ public Action<T> showLabel() {
+ this.visibleLabel = true;
+ return this;
+ }
public boolean isVisibleLabel() {
return visibleLabel;
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index fb8ab83..aac5942 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -26,6 +26,7 @@ import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.panels.TogglePanel;
import org.apache.syncope.client.console.policies.PolicyRuleDirectoryPanel.PolicyRuleWrapper;
import org.apache.syncope.client.console.reports.ReportletDirectoryPanel.ReportletWrapper;
+import org.apache.syncope.client.console.wizards.resources.ResourceProvision;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.EntityTO;
import org.apache.syncope.common.lib.to.GroupTO;
@@ -109,6 +110,8 @@ public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<
} else if (modelObject instanceof JobTO) {
header = ((JobTO) modelObject).getRefKey() == null
? ((JobTO) modelObject).getRefDesc() : ((JobTO) modelObject).getRefKey();
+ } else if (modelObject instanceof ResourceProvision) {
+ header = ((ResourceProvision) modelObject).getAnyType();
} else {
header = new ResourceModel("actions", StringUtils.EMPTY).getObject();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
index 8eb3135..73fdbf3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
@@ -185,6 +185,9 @@ public final class ActionPanel<T extends Serializable> extends Panel {
case DELETE:
case CREATE:
case MEMBERS:
+ case MAPPING:
+ case SET_LATEST_SYNC_TOKEN:
+ case REMOVE_SYNC_TOKEN:
case CLAIM:
send(this, Broadcast.BUBBLE, new ActionLinksTogglePanel.ActionLinkToggleCloseEventPayload(target));
break;
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
index 71d342c..c708624 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
@@ -82,6 +82,20 @@ public final class ActionsPanel<T extends Serializable> extends Panel {
return panel;
}
+ /**
+ * Use this with toggle panels.
+ * @param componentId Component Id.
+ * @param model Model.
+ * @return Actions panel.
+ */
+ public ActionsPanel<T> cloneWithLabels(final String componentId, final IModel<T> model) {
+ final ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
+ for (Action<T> action : actions) {
+ panel.actions.add(action.showLabel());
+ }
+ return panel;
+ }
+
public boolean isEmpty() {
return this.actions.isEmpty();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index be20666..f9fea37 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -76,6 +76,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
private final AjaxLink<ResourceProvision> addAjaxLink;
+ protected ActionLinksTogglePanel<ResourceProvision> actionTogglePanel;
+
public ResourceProvisionPanel(
final BaseModal<Serializable> modal,
final ResourceTO resourceTO,
@@ -87,6 +89,9 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
setOutputMarkupId(true);
+ actionTogglePanel = new ActionLinksTogglePanel<>("toggle", pageRef);
+ add(actionTogglePanel);
+
wizard = new ProvisionWizardBuilder(resourceTO, pageRef);
final ListViewPanel.Builder<ResourceProvision> builder = new ListViewPanel.Builder<ResourceProvision>(
@@ -134,6 +139,11 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
// change modal footer visibility
send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target));
}
+
+ @Override
+ protected ActionLinksTogglePanel<ResourceProvision> getTogglePanel() {
+ return actionTogglePanel;
+ }
};
provisions = new ArrayList<>();
@@ -234,6 +244,8 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
@Override
public void onClick(final AjaxRequestTarget target) {
+ send(ResourceProvisionPanel.this, Broadcast.BREADTH,
+ new ActionLinksTogglePanel.ActionLinkToggleCloseEventPayload(target));
objectTypeTogglePanel.setHeaderLabel(target);
objectTypeTogglePanel.toggle(target, true);
}
@@ -348,8 +360,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
}
private void checkAddButton(final String adminRealm) {
- boolean enabled =
- SyncopeConsoleSession.get().owns(StandardEntitlement.RESOURCE_UPDATE, adminRealm)
+ boolean enabled = SyncopeConsoleSession.get().owns(StandardEntitlement.RESOURCE_UPDATE, adminRealm)
&& !getAnyTypes().getObject().isEmpty();
addAjaxLink.setVisible(enabled);
objectTypeTogglePanel.setEnabled(enabled);
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
index 1998775..f82b16f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
@@ -17,8 +17,9 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
+ <wicket:extend>
<span wicket:id="provision">[PROVISION]</span>
<span wicket:id="objectTypeToggle"/>
+ <div wicket:id="toggle"/>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/31e884a9/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
index 67afad7..48963a2 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
@@ -112,8 +112,11 @@ public class TopologyITCase extends AbstractConsoleITCase {
TESTER.executeAjaxEvent(component.getPageRelativePath() + ":res", Constants.ON_CLICK);
TESTER.clickLink("body:toggle:container:content:togglePanelContainer:container:actions:provision");
- TESTER.clickLink("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
- + "content:group:beans:0:actions:actionRepeater:0:action:action");
+ TESTER.executeAjaxEvent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
+ + "content:group:beans:0:fields:0", Constants.ON_CLICK);
+
+ TESTER.clickLink("body:toggle:outerObjectsRepeater:3:outer:form:content:toggle:container:content:"
+ + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
FormTester formTester = TESTER.newFormTester(
"body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
@@ -232,11 +235,12 @@ public class TopologyITCase extends AbstractConsoleITCase {
TESTER.assertNoErrorMessage();
TESTER.assertInfoMessages("Operation executed successfully");
- TESTER.clickLink("body:toggle:container:content:togglePanelContainer:container:actions:provision");
-
- TESTER.clickLink("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
- + "content:group:beans:0:actions:actionRepeater:0:action:action");
-
+ TESTER.executeAjaxEvent("body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:"
+ + "content:group:beans:0:fields:0", Constants.ON_CLICK);
+
+ TESTER.clickLink("body:toggle:outerObjectsRepeater:3:outer:form:content:toggle:container:content:"
+ + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
+
formTester = TESTER.newFormTester(
"body:toggle:outerObjectsRepeater:3:outer:form:content:provision:container:content:wizard:form");
formTester.submit("buttons:next");