Ok, I have created some classes that seem to work. Could anyone take a look at it and give any feedback? What about the styles for the confirmation page? How should those be added?
Thanks Johannes /** * A confirmation link that uses JavaScript if available. */ public class ConfirmationLink extends AjaxFallbackLink<Object> { @NotNull @NonNls private final Model<? extends String> message; @NotNull private final Action action; public ConfirmationLink( @NotNull @NonNls String id, @NotNull @NonNls Model<? extends String> message, @NotNull Action action ) { super( id ); this.message = message; this.action = action; add( new JavaScriptEventConfirmation( JavaScriptEventConfirmation.EVENT_ON_CLICK, message ) ); } @Override public void onClick( @Nullable AjaxRequestTarget target ) { if ( target == null ) { //Fallback! MarkupContainer parent = getParent(); if ( parent == null ) { throw new IllegalStateException( "No parent found!" ); } FallbackConfirmationLinkPanel.replace( parent, message, action ); } else { //Javascript action.execute(); } } public interface Action extends Serializable { /** * Executes the action */ void execute(); } } /** * Contains a confirm link (as fallback if javascript is not available) */ public class FallbackConfirmationLinkPanel extends Panel { /** * Creates a confirm link panel * * @param componentToReplace the confirmation link panel this panel replaces * @param message the message * @param action the action */ public FallbackConfirmationLinkPanel( @NotNull final Component componentToReplace, @NotNull Model<? extends String> message, @NotNull final ConfirmationLink.Action action ) { super( componentToReplace.getId() ); add( new Label( "message", message ) ); add( new Link( "confirm" ) { @Override public void onClick() { action.execute(); getParent().replaceWith( componentToReplace ); } } ); add( new Link( "cancel" ) { @Override public void onClick() { getParent().replaceWith( componentToReplace ); } } ); } public static void replace( @NotNull final Component componentToReplace, @NotNull Model<? extends String> message, @NotNull ConfirmationLink.Action action ) { componentToReplace.replaceWith( new FallbackConfirmationLinkPanel( componentToReplace, message, action ) ); } } Johannes Schneider wrote: > Hi, > > I think that is one of that components that has been created several > times out there. > Does anybody have a good implementation available? > > There is a wiki page that contains both types of confirmation links > (http://cwiki.apache.org/WICKET/getting-user-confirmation.html) but not > a combination of both. > > > > Thanks, > > Johannes > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org