Class BlockingActionButtonWithConfirmationOptionsDialog<T extends Describable>
java.lang.Object
org.apache.wicket.Component
org.apache.wicket.MarkupContainer
org.apache.wicket.markup.html.WebMarkupContainer
org.apache.wicket.markup.html.link.AbstractLink
org.apache.wicket.ajax.markup.html.AjaxLink<String>
com.evolveum.midpoint.web.component.AjaxIconButton
com.evolveum.midpoint.web.component.input.ButtonWithConfirmationOptionsDialog<T>
com.evolveum.midpoint.web.component.input.BlockingActionButtonWithConfirmationOptionsDialog<T>
- All Implemented Interfaces:
Serializable,Iterable<org.apache.wicket.Component>,org.apache.wicket.ajax.markup.html.IAjaxLink,org.apache.wicket.event.IEventSink,org.apache.wicket.event.IEventSource,org.apache.wicket.feedback.IFeedbackContributor,org.apache.wicket.IConverterLocator,org.apache.wicket.IGenericComponent<String,,org.apache.wicket.ajax.markup.html.AjaxLink<String>> org.apache.wicket.IMetadataContext<Serializable,,org.apache.wicket.Component> org.apache.wicket.markup.html.IHeaderContributor,org.apache.wicket.request.component.IRequestableComponent,org.apache.wicket.util.IHierarchical<org.apache.wicket.Component>,org.apache.wicket.util.io.IClusterable
public class BlockingActionButtonWithConfirmationOptionsDialog<T extends Describable>
extends ButtonWithConfirmationOptionsDialog<T>
A
ButtonWithConfirmationOptionsDialog variant for *blocking* confirm actions that need an activity
indication while they run.
=== How it works
Because the action is blocking the browser cannot display an intermediate UI update (e.g. a spinner) before the
Ajax response is returned — the request is blocked until the action finishes. This class works around that by
splitting the work across two Ajax round-trips via AjaxEventBasedInteractionsLinker:
. *Confirmation phase*: the confirmed options are saved temporarily, ComponentInteractionsPair.action(C, org.apache.wicket.ajax.AjaxRequestTarget) is
called (e.g. shows a spinner on the button) and a JavaScript event is fired. The response is returned to the
browser immediately so the spinner is visible.
. *Activity phase*: The ButtonWithConfirmationOptionsDialog.ButtonHandlers.confirmHandler() is invoked with the saved options, and
ComponentInteractionsPair.reaction(C, org.apache.wicket.ajax.AjaxRequestTarget) is called to restore the button's original appearance.- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.evolveum.midpoint.web.component.input.ButtonWithConfirmationOptionsDialog
ButtonWithConfirmationOptionsDialog.ButtonConfig<T extends Describable>, ButtonWithConfirmationOptionsDialog.ButtonHandlers<T extends Describable> -
Field Summary
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS -
Constructor Summary
ConstructorsConstructorDescriptionBlockingActionButtonWithConfirmationOptionsDialog(String id, org.apache.wicket.model.IModel<ButtonWithConfirmationOptionsDialog.ButtonConfig<T>> buttonConfig, org.apache.wicket.model.IModel<ButtonWithConfirmationOptionsDialog.ButtonHandlers<T>> clickHandlers, ComponentInteractionsPair<AjaxIconButton> interactionPairs) -
Method Summary
Methods inherited from class com.evolveum.midpoint.web.component.input.ButtonWithConfirmationOptionsDialog
onClick, onDetachMethods inherited from class com.evolveum.midpoint.web.component.AjaxIconButton
getTitle, onComponentTag, onComponentTagBody, showTitleAsLabelMethods inherited from class org.apache.wicket.ajax.markup.html.AjaxLink
getStatelessHint, newAjaxEventBehavior, updateAjaxAttributesMethods inherited from class org.apache.wicket.markup.html.link.AbstractLink
disableLink, getBody, setBodyMethods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSessionMethods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildrenMethods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, newMarkupSourcingStrategy, onAfterRender, onBeforeRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrapMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.wicket.IGenericComponent
getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObjectMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
BlockingActionButtonWithConfirmationOptionsDialog
public BlockingActionButtonWithConfirmationOptionsDialog(String id, org.apache.wicket.model.IModel<ButtonWithConfirmationOptionsDialog.ButtonConfig<T>> buttonConfig, org.apache.wicket.model.IModel<ButtonWithConfirmationOptionsDialog.ButtonHandlers<T>> clickHandlers, ComponentInteractionsPair<AjaxIconButton> interactionPairs)
-
-
Method Details
-
onInitialize
public void onInitialize()- Overrides:
onInitializein classButtonWithConfirmationOptionsDialog<T extends Describable>
-