01: /*
02: * $Id: AjaxFallbackLink.java 4633 2006-02-25 16:22:21 -0800 (Sat, 25 Feb 2006)
03: * dashorst $ $Revision: 459996 $ $Date: 2006-02-25 16:22:21 -0800 (Sat, 25 Feb
04: * 2006) $
05: *
06: * ==============================================================================
07: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
08: * use this file except in compliance with the License. You may obtain a copy of
09: * the License at
10: *
11: * http://www.apache.org/licenses/LICENSE-2.0
12: *
13: * Unless required by applicable law or agreed to in writing, software
14: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16: * License for the specific language governing permissions and limitations under
17: * the License.
18: */
19: package wicket.ajax.markup.html;
20:
21: import wicket.ajax.AjaxEventBehavior;
22: import wicket.ajax.AjaxRequestTarget;
23: import wicket.ajax.IAjaxCallDecorator;
24: import wicket.ajax.calldecorator.CancelEventIfNoAjaxDecorator;
25: import wicket.markup.html.link.Link;
26: import wicket.model.IModel;
27:
28: /**
29: * An ajax link that will degrade to a normal request if ajax is not available
30: * or javascript is disabled
31: *
32: * @since 1.2
33: *
34: * @author Igor Vaynberg (ivaynberg)
35: *
36: */
37: public abstract class AjaxFallbackLink extends Link implements
38: IAjaxLink {
39: /** */
40: private static final long serialVersionUID = 1L;
41:
42: /**
43: * Construct.
44: *
45: * @param id
46: */
47: public AjaxFallbackLink(final String id) {
48: this (id, null);
49: }
50:
51: /**
52: * Construct.
53: *
54: * @param id
55: * @param model
56: */
57: public AjaxFallbackLink(final String id, final IModel model) {
58: super (id, model);
59:
60: add(new AjaxEventBehavior("onclick") {
61: private static final long serialVersionUID = 1L;
62:
63: protected void onEvent(AjaxRequestTarget target) {
64: onClick(target);
65: }
66:
67: protected IAjaxCallDecorator getAjaxCallDecorator() {
68: return new CancelEventIfNoAjaxDecorator(
69: AjaxFallbackLink.this .getAjaxCallDecorator());
70: }
71:
72: });
73: }
74:
75: protected IAjaxCallDecorator getAjaxCallDecorator() {
76: return null;
77: }
78:
79: /**
80: *
81: * @see wicket.markup.html.link.Link#onClick()
82: */
83: public final void onClick() {
84: onClick(null);
85: }
86:
87: /**
88: * Callback for the onClick event. If ajax failed and this event was
89: * generated via a normal link the target argument will be null
90: *
91: * @param target
92: * ajax target if this linked was invoked using ajax, null
93: * otherwise
94: */
95: public abstract void onClick(final AjaxRequestTarget target);
96: }
|