/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.ajax.attributes;
import org.apache.wicket.Component;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.IComponentAwareHeaderContributor;
import org.apache.wicket.util.string.Strings;
/**
* An adapter for implementations of IAjaxCallListener.
*
* @since 6.0
*/
public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeaderContributor
{
private StringBuilder init;
private StringBuilder success;
private StringBuilder failure;
private StringBuilder before;
private StringBuilder beforeSend;
private StringBuilder after;
private StringBuilder complete;
private StringBuilder precondition;
private StringBuilder done;
/**
* Sets the JavaScript code that will be returned by {@link #getInitHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param init
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onInit(final CharSequence init)
{
if (Strings.isEmpty(init) == false)
{
if (this.init == null)
{
this.init = new StringBuilder();
}
this.init.append(init);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getDoneHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param init
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onDone(final CharSequence done)
{
if (Strings.isEmpty(done) == false)
{
if (this.done == null)
{
this.done = new StringBuilder();
}
this.done.append(done);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getBeforeHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param before
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onBefore(final CharSequence before)
{
if (Strings.isEmpty(before) == false)
{
if (this.before == null)
{
this.before = new StringBuilder();
}
this.before.append(before);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getBeforeSendHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param beforeSend
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onBeforeSend(final CharSequence beforeSend)
{
if (Strings.isEmpty(beforeSend) == false)
{
if (this.beforeSend == null)
{
this.beforeSend = new StringBuilder();
}
this.beforeSend.append(beforeSend);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getAfterHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param after
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onAfter(final CharSequence after)
{
if (Strings.isEmpty(after) == false)
{
if (this.after == null)
{
this.after = new StringBuilder();
}
this.after.append(after);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getSuccessHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param success
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onSuccess(final CharSequence success)
{
if (Strings.isEmpty(success) == false)
{
if (this.success == null)
{
this.success = new StringBuilder();
}
this.success.append(success);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getFailureHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param failure
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onFailure(final CharSequence failure)
{
if (Strings.isEmpty(failure) == false)
{
if (this.failure == null)
{
this.failure = new StringBuilder();
}
this.failure.append(failure);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getCompleteHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param complete
* the JavaScript code for the corresponding handler
* @return This
*/
public AjaxCallListener onComplete(final CharSequence complete)
{
if (Strings.isEmpty(complete) == false)
{
if (this.complete == null)
{
this.complete = new StringBuilder();
}
this.complete.append(complete);
}
return this;
}
/**
* Sets the JavaScript code that will be returned by {@link #getPrecondition(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
* @param precondition
* the JavaScript code for the precondition
* @return This
*/
public AjaxCallListener onPrecondition(final CharSequence precondition)
{
if (Strings.isEmpty(precondition) == false)
{
if (this.precondition == null)
{
this.precondition = new StringBuilder();
}
this.precondition.append(precondition);
}
return this;
}
@Override
public CharSequence getSuccessHandler(Component component)
{
return success;
}
@Override
public CharSequence getFailureHandler(Component component)
{
return failure;
}
@Override
public CharSequence getInitHandler(Component component)
{
return init;
}
@Override
public CharSequence getBeforeHandler(Component component)
{
return before;
}
@Override
public CharSequence getBeforeSendHandler(Component component)
{
return beforeSend;
}
@Override
public CharSequence getAfterHandler(Component component)
{
return after;
}
@Override
public CharSequence getCompleteHandler(Component component)
{
return complete;
}
@Override
public CharSequence getPrecondition(Component component)
{
return precondition;
}
@Override
public CharSequence getDoneHandler(Component component) {
return done;
}
@Override
public void renderHead(Component component, IHeaderResponse response)
{
}
}