1 | package eu.clarin.cmdi.virtualcollectionregistry.gui; |
---|
2 | |
---|
3 | import org.apache.wicket.ResourceReference; |
---|
4 | import org.apache.wicket.markup.html.resources.JavascriptResourceReference; |
---|
5 | import org.apache.wicket.model.IModel; |
---|
6 | import org.odlabs.wiquery.core.behavior.WiQueryAbstractBehavior; |
---|
7 | import org.odlabs.wiquery.core.commons.WiQueryResourceManager; |
---|
8 | import org.odlabs.wiquery.core.javascript.JsQuery; |
---|
9 | import org.odlabs.wiquery.core.javascript.JsStatement; |
---|
10 | import org.odlabs.wiquery.core.options.DefaultOptionsRenderer; |
---|
11 | import org.odlabs.wiquery.core.options.IOptionsRenderer; |
---|
12 | import org.odlabs.wiquery.core.options.Options; |
---|
13 | |
---|
14 | /** |
---|
15 | * |
---|
16 | * @author twagoo |
---|
17 | */ |
---|
18 | public class TooltipBehavior extends WiQueryAbstractBehavior { |
---|
19 | |
---|
20 | public static final ResourceReference QTIP_JAVASCRIPT_RESOURCE |
---|
21 | = new JavascriptResourceReference(TooltipBehavior.class, "jquery.qtip-1.0.0-rc3.min.js"); |
---|
22 | |
---|
23 | private final IModel<String> tooltipModel; |
---|
24 | |
---|
25 | public TooltipBehavior(IModel<String> tooltipModel) { |
---|
26 | this.tooltipModel = tooltipModel; |
---|
27 | } |
---|
28 | |
---|
29 | @Override |
---|
30 | public void contribute(WiQueryResourceManager wiQueryResourceManager) { |
---|
31 | wiQueryResourceManager.addJavaScriptResource(QTIP_JAVASCRIPT_RESOURCE); |
---|
32 | } |
---|
33 | |
---|
34 | @Override |
---|
35 | public JsStatement statement() { |
---|
36 | return new JsQuery(getComponent()).$().chain("qtip", getOptions().getJavaScriptOptions()); |
---|
37 | } |
---|
38 | |
---|
39 | public Options getOptions() { |
---|
40 | final Options options = new Options(); |
---|
41 | options.setRenderer(optionsRenderer); |
---|
42 | options.putString("content", tooltipModel); |
---|
43 | options.put("show", getShowEvent()); |
---|
44 | options.put("hide", getHideEvent()); |
---|
45 | return options; |
---|
46 | } |
---|
47 | |
---|
48 | public String getShowEvent() { |
---|
49 | return "mouseover"; |
---|
50 | } |
---|
51 | |
---|
52 | public String getHideEvent() { |
---|
53 | return "mouseout"; |
---|
54 | } |
---|
55 | |
---|
56 | private final IOptionsRenderer optionsRenderer = new IOptionsRenderer() { |
---|
57 | |
---|
58 | @Override |
---|
59 | public void renderBefore(StringBuilder stringBuilder) { |
---|
60 | DefaultOptionsRenderer.get().renderBefore(stringBuilder); |
---|
61 | } |
---|
62 | |
---|
63 | @Override |
---|
64 | public CharSequence renderOption(String name, Object value, boolean isLast) { |
---|
65 | final Object newValue; |
---|
66 | if (value instanceof CharSequence) { |
---|
67 | newValue = String.format("'%s'", value); |
---|
68 | } else { |
---|
69 | newValue = value; |
---|
70 | } |
---|
71 | return DefaultOptionsRenderer.get().renderOption(name, newValue, isLast); |
---|
72 | } |
---|
73 | |
---|
74 | @Override |
---|
75 | public void renderAfter(StringBuilder stringBuilder) { |
---|
76 | DefaultOptionsRenderer.get().renderAfter(stringBuilder); |
---|
77 | } |
---|
78 | }; |
---|
79 | // |
---|
80 | // private static class StringQuoteModel extends AbstractReadOnlyModel<String> { |
---|
81 | // |
---|
82 | // private final IModel<String> wrappedModel; |
---|
83 | // |
---|
84 | // public StringQuoteModel(IModel<String> wrappedModel) { |
---|
85 | // this.wrappedModel = wrappedModel; |
---|
86 | // } |
---|
87 | // |
---|
88 | // @Override |
---|
89 | // public String getObject() { |
---|
90 | // return String.format("'%s'", wrappedModel.getObject()); |
---|
91 | // } |
---|
92 | // |
---|
93 | // } |
---|
94 | |
---|
95 | } |
---|