This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/isis.git
commit 0dc31f9d457144f46aae0544434d947b66b2a2ff Author: Andi Huber <[email protected]> AuthorDate: Thu Sep 22 07:10:51 2022 +0200 ISIS-3201: time picker on change propagation fixes --- .../ScalarPanelTextFieldWithTemporalPicker.java | 26 ++++++++++++++++++++++ .../datepicker/TextFieldWithDateTimePicker.java | 15 ------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java index 030eb2a22e..b97b72b9a4 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java +++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java @@ -20,6 +20,8 @@ package org.apache.isis.viewer.wicket.ui.components.scalars; import java.util.Optional; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.markup.html.form.TextField; import org.apache.isis.core.metamodel.util.Facets; @@ -53,9 +55,33 @@ extends ScalarPanelTextFieldWithValueSemantics<T> { id, scalarModel, type, getConverter(scalarModel)); } + protected final TextField<T> getTextField() { + return (TextField<T>)getFormComponent(); + } + @Override protected Optional<InputFragment> getInputFragmentType() { return Optional.of(InputFragment.DATE); } + @Override + protected void installScalarModelChangeBehavior() { + //super.installScalarModelChangeBehavior(); // don't install the default change listener + + /* [ISIS-3201] + * Adding OnChangeAjaxBehavior registers a JavaScript event listener on change events. + * Since OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBehavior the Ajax request + * also updates the Wicket model for this form component on the server side. + */ + getTextField().add(new OnChangeAjaxBehavior() { + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(final AjaxRequestTarget target) { + // triggers update of dependent args (action prompt) + ScalarPanelTextFieldWithTemporalPicker.this + .getScalarModelChangeDispatcher().notifyUpdate(target); + } + }); + } + } diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/datepicker/TextFieldWithDateTimePicker.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/datepicker/TextFieldWithDateTimePicker.java index 0ff661e542..9191364963 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/datepicker/TextFieldWithDateTimePicker.java +++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/datepicker/TextFieldWithDateTimePicker.java @@ -21,8 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.datepicker; import java.util.Locale; import java.util.Map; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.OnDomReadyHeaderItem; @@ -103,19 +101,6 @@ implements IConverter<T> { } }; */ - - //XXX ISIS-2834 - //Adding OnChangeAjaxBehavior registers a JavaScript event listener on change event. - //Since OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBehavior the Ajax request - // also updates the Wicket model for this form component on the server side. - // onUpdate() is a callback method that you could use to do something more or don't do anything - add(new OnChangeAjaxBehavior() { - private static final long serialVersionUID = 1L; - @Override - protected void onUpdate(final AjaxRequestTarget target) { - // nothing to do - } - }); } @Override
