package org.apache.isis.viewer.wicket.ui.components.property; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; import org.apache.isis.applib.annotation.PromptStyle; import org.apache.isis.viewer.wicket.model.hints.IsisPropertyEditCompletedEvent; import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings; import org.apache.isis.viewer.wicket.model.models.ScalarModel; import org.apache.isis.viewer.wicket.ui.ComponentType; import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2; import org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract; class PropertyEditForm extends PromptFormAbstract<ScalarModel> { private static final long serialVersionUID = 1L; public PropertyEditForm( final String id, final Component parentPanel, final WicketViewerSettings settings, final ScalarModel propertyModel) { super(id, parentPanel, settings, propertyModel); } private ScalarModel getScalarModel() { return (ScalarModel) super.getModel(); } @Override protected void addParameters() { final ScalarModel scalarModel = getScalarModel(); final WebMarkupContainer container = new WebMarkupContainer(PropertyEditFormPanel.ID_PROPERTY); add(container); newParamPanel(container, scalarModel); } private ScalarPanelAbstract2 newParamPanel(final WebMarkupContainer container, final IModel<?> model) { final Component component = getComponentFactoryRegistry() .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, model); final ScalarPanelAbstract2 paramPanel = component instanceof ScalarPanelAbstract2 ? (ScalarPanelAbstract2) component : null; if (paramPanel != null) { paramPanel.setOutputMarkupId(true); paramPanel.notifyOnChange(this); } return paramPanel; } @Override protected Object newCompletedEvent(final AjaxRequestTarget target, final Form<?> form) { return new IsisPropertyEditCompletedEvent(getScalarModel(), target, form); } @Override public void onUpdate( final AjaxRequestTarget target, final ScalarPanelAbstract2 scalarPanel) { } // REVIEW: this overload may not be necessary, recall that the important call needed is getScalarModel().reset(), // which is called in the superclass. @Override public void onCancelSubmitted( final AjaxRequestTarget target) { final PromptStyle promptStyle = getScalarModel().getPromptStyle(); if (promptStyle == PromptStyle.INLINE) { getScalarModel().toViewMode(); getScalarModel().clearPending(); } super.onCancelSubmitted(target); } }