Repository: syncope Updated Branches: refs/heads/2_0_X 72a1f085d -> 036243b46 refs/heads/master e38c042d8 -> bfcac4bbd
[SYNCOPE-1039] provides on_change event handling to be used to update the field model Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/036243b4 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/036243b4 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/036243b4 Branch: refs/heads/2_0_X Commit: 036243b4637e9eca904446acdc669a96f9282723 Parents: 72a1f08 Author: fmartelli <fabio.marte...@gmail.com> Authored: Tue Mar 7 12:15:20 2017 +0100 Committer: fmartelli <fabio.marte...@gmail.com> Committed: Tue Mar 7 12:15:20 2017 +0100 ---------------------------------------------------------------------- .../client/console/panels/ConnObjects.java | 2 +- .../client/console/panels/VirSchemaDetails.java | 4 +-- .../console/status/ResourceStatusModal.java | 3 +- .../html/form/AjaxDropDownChoicePanel.java | 8 +++++ .../markup/html/form/AjaxSpinnerFieldPanel.java | 31 ++++++++++++++++++-- .../markup/html/form/EncryptedFieldPanel.java | 25 ++++++++++++++++ .../client/console/wizards/any/PlainAttrs.java | 12 ++++---- 7 files changed, 72 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java index af491e7..17d5036 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java @@ -60,7 +60,7 @@ public class ConnObjects extends Panel implements ModalPanel { } }, new ArrayList<String>()); - anyTypes = new AjaxDropDownChoicePanel<>("anyTypes", "anyTypes", new Model<String>(), true); + anyTypes = new AjaxDropDownChoicePanel<>("anyTypes", "anyTypes", new Model<String>()); anyTypes.setChoices(availableAnyTypes); anyTypes.hideLabel(); anyTypes.setNullValid(false); http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java index 5c712e2..34cc61c 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java @@ -70,7 +70,7 @@ public class VirSchemaDetails extends AbstractSchemaDetailsPanel { schemaForm.add(readonly); final AjaxDropDownChoicePanel<String> resource = new AjaxDropDownChoicePanel<>( - "resource", getString("resource"), new PropertyModel<String>(schemaTO, "resource")). + "resource", getString("resource"), new PropertyModel<String>(schemaTO, "resource"), false). setNullValid(false); resource.setChoices(CollectionUtils.collect(resourceRestClient.list(), EntityTOUtils.<ResourceTO>keyTransformer(), new ArrayList<String>())); @@ -82,7 +82,7 @@ public class VirSchemaDetails extends AbstractSchemaDetailsPanel { schemaForm.add(resource); anyType = new AjaxDropDownChoicePanel<>( - "anyType", getString("anyType"), new PropertyModel<String>(schemaTO, "anyType")). + "anyType", getString("anyType"), new PropertyModel<String>(schemaTO, "anyType"), false). setNullValid(false); anyType.setChoices(new ArrayList<>(anyTypes.keySet())); anyType.setOutputMarkupId(true); http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java b/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java index ea07105..d3a61d1 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java @@ -62,7 +62,8 @@ public class ResourceStatusModal extends StatusModal<ResourceTO> { } }; - AjaxDropDownChoicePanel<String> anyTypes = new AjaxDropDownChoicePanel<>("anyTypes", "anyTypes", typeModel); + AjaxDropDownChoicePanel<String> anyTypes + = new AjaxDropDownChoicePanel<>("anyTypes", "anyTypes", typeModel, false); anyTypes.setChoices(types); anyTypes.hideLabel(); add(anyTypes); http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java index 4fbc518..193c0ad 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java @@ -57,6 +57,14 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel< protected void onUpdate(final AjaxRequestTarget target) { // nothing to do } + }).add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @Override + protected void onUpdate(final AjaxRequestTarget target) { + // nothing to do + } }); } http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java index d697674..12d315f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxSpinnerFieldPanel.java @@ -26,6 +26,9 @@ import com.googlecode.wicket.jquery.ui.form.spinner.SpinnerBehavior; import java.io.Serializable; import java.util.List; import org.apache.commons.lang3.math.NumberUtils; +import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -47,7 +50,8 @@ public final class AjaxSpinnerFieldPanel<T extends Number> extends FieldPanel<T> final String name, final Class<T> reference, final IModel<T> model, - final Options options) { + final Options options, + final boolean enableOnChange) { super(id, name, model); @@ -62,6 +66,19 @@ public final class AjaxSpinnerFieldPanel<T extends Number> extends FieldPanel<T> return behavior; } }; + + if (enableOnChange && !isReadOnly()) { + field.add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @Override + protected void onUpdate(final AjaxRequestTarget target) { + // nothing to do + } + }); + } + add(field.setLabel(new ResourceModel(name, name)).setOutputMarkupId(true)); this.name = name; @@ -156,7 +173,8 @@ public final class AjaxSpinnerFieldPanel<T extends Number> extends FieldPanel<T> @Override public AjaxSpinnerFieldPanel<T> clone() { - final AjaxSpinnerFieldPanel<T> panel = new AjaxSpinnerFieldPanel<>(getId(), name, reference, model, options); + final AjaxSpinnerFieldPanel<T> panel + = new AjaxSpinnerFieldPanel<>(getId(), name, reference, model, options, false); panel.setRequired(isRequired()); panel.setReadOnly(isReadOnly()); @@ -173,6 +191,8 @@ public final class AjaxSpinnerFieldPanel<T extends Number> extends FieldPanel<T> private final Options options = new Options(); + private boolean enableOnChange = false; + public Builder<T> min(final T min) { options.set("min", min); return this; @@ -188,13 +208,18 @@ public final class AjaxSpinnerFieldPanel<T extends Number> extends FieldPanel<T> return this; } + public Builder<T> enableOnChange() { + enableOnChange = true; + return this; + } + public AjaxSpinnerFieldPanel<T> build( final String id, final String name, final Class<T> reference, final IModel<T> model) { - return new AjaxSpinnerFieldPanel<>(id, name, reference, model, options); + return new AjaxSpinnerFieldPanel<>(id, name, reference, model, options, enableOnChange); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java index 10befa0..f3c7d01 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/EncryptedFieldPanel.java @@ -18,22 +18,47 @@ */ package org.apache.syncope.client.console.wicket.markup.html.form; +import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; public class EncryptedFieldPanel extends FieldPanel<String> implements Cloneable { + private static final long serialVersionUID = 1882871043451691005L; + public EncryptedFieldPanel(final String id, final String name, final IModel<String> model) { + this(id, name, model, false); + } + + public EncryptedFieldPanel( + final String id, final String name, final IModel<String> model, final boolean enableOnChange) { super(id, name, model); field = new TextField<String>("encryptedField", model) { + private static final long serialVersionUID = 7545877620091912863L; + @Override protected String[] getInputTypes() { return new String[] { "password" }; } }; + + if (enableOnChange && !isReadOnly()) { + field.add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @Override + protected void onUpdate(final AjaxRequestTarget target) { + // nothing to do + } + }); + } + add(field.setLabel(new ResourceModel(name, name)).setRequired(false).setOutputMarkupId(true)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/036243b4/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 192654e..5c1291a 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 @@ -211,7 +211,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { FieldPanel panel; switch (type) { case Boolean: - panel = new AjaxCheckBoxPanel("panel", schemaTO.getKey(), new Model<Boolean>(), false); + panel = new AjaxCheckBoxPanel("panel", schemaTO.getKey(), new Model<Boolean>(), true); panel.setRequired(required); break; @@ -233,7 +233,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { break; case Enum: - panel = new AjaxDropDownChoicePanel<>("panel", schemaTO.getKey(), new Model<>(), false); + panel = new AjaxDropDownChoicePanel<>("panel", schemaTO.getKey(), new Model<>(), true); ((AjaxDropDownChoicePanel<String>) panel).setChoices(SchemaUtils.getEnumeratedValues(schemaTO)); if (StringUtils.isNotBlank(schemaTO.getEnumerationKeys())) { @@ -267,7 +267,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { break; case Long: - panel = new AjaxSpinnerFieldPanel.Builder<Long>(). + panel = new AjaxSpinnerFieldPanel.Builder<Long>().enableOnChange(). build("panel", schemaTO.getKey(), Long.class, new Model<Long>()); if (required) { @@ -276,7 +276,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { break; case Double: - panel = new AjaxSpinnerFieldPanel.Builder<Double>().step(0.1). + panel = new AjaxSpinnerFieldPanel.Builder<Double>().enableOnChange().step(0.1). build("panel", schemaTO.getKey(), Double.class, new Model<Double>()); if (required) { @@ -293,7 +293,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { break; case Encrypted: - panel = new EncryptedFieldPanel("panel", schemaTO.getKey(), new Model<String>()); + panel = new EncryptedFieldPanel("panel", schemaTO.getKey(), new Model<String>(), true); if (required) { panel.addRequiredLabel(); @@ -301,7 +301,7 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> { break; default: - panel = new AjaxTextFieldPanel("panel", schemaTO.getKey(), new Model<String>(), false); + panel = new AjaxTextFieldPanel("panel", schemaTO.getKey(), new Model<String>(), true); if (jexlHelp) { AjaxTextFieldPanel.class.cast(panel).enableJexlHelp();