Written by massi
Ecco il codice per creare un tooltip in Apache Wicket senza l'uso di Javascript.
final WebMarkupContainer jexlHelp = JexlHelpUtil.getJexlHelpWebContainer("jexlHelp"); this.add(jexlHelp); final AjaxLink questionMarkJexlHelp = JexlHelpUtil.getAjaxLink(jexlHelp, "questionMarkJexlHelp"); this.add(questionMarkJexlHelp);
Dove questa è la classe per la generazione dei due componenti:
package org.apache.syncope.console.commons; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.link.ExternalLink; public class JexlHelpUtil { private static final String JEXL_SYNTAX_URL = "http://commons.apache.org/jexl/reference/syntax.html"; public static WebMarkupContainer getJexlHelpWebContainer(final String wicketId) { final WebMarkupContainer jexlHelp = new WebMarkupContainer(wicketId); jexlHelp.setVisible(false); jexlHelp.setOutputMarkupPlaceholderTag(true); jexlHelp.setOutputMarkupId(true); jexlHelp.add(new ExternalLink("jexlLink", JEXL_SYNTAX_URL)); return jexlHelp; } public static AjaxLink getAjaxLink(final WebMarkupContainer wmc, final String wicketId) { AjaxLink questionMarkJexlHelp = new AjaxLink(wicketId) { boolean toogle = false; private static final long serialVersionUID = -7978723352517770644L; @Override public void onClick(AjaxRequestTarget target) { toogle = !toogle; wmc.setVisible(toogle); target.add(wmc); } }; return questionMarkJexlHelp; } }
L'html della pagina in questione:
<div class="help"> <a wicket:id="questionMarkJexlHelp" href="#" alt="Click to help" title="Click to help"><img src="img/help.png"/blog/></a> <div wicket:id="jexlHelp" class="tooltip"> <wicket:message key="jexl_info"/blog/> <ul> <li><wicket:message key="jexl_ex1"/blog/></li> <li><wicket:message key="jexl_ex2"/blog/></li> </ul> <a href="#" wicket:id="jexlLink" target="_blank"><wicket:message key="jexl_syntax_url"/blog/></a> </div> </div>
Il suo CSS:
.tooltip{ position: absolute; left: -72px; top: 23px; z-index: 1000000; line-height: normal; _padding-top: 0em; width: 19em; border: 1px solid black; background-color: whitesmoke; opacity: 0.9; color: black; padding: 3px; font-size: 11px; } .help { position: relative; float: right; top: 3px; left: -15px; } .help a { color: #463; text-decoration: none; } .help a:hover { color: blue; text-decoration: none; }
Le properties per i messaggi:
jexl_info=This field expects a JEXL expression, for example: jexl_ex1=surname + ',' + firstname jexl_ex2='new.' + surname jexl_syntax_url=Full JEXL reference
A questo punto quando si clicca sul punto interrogativo comparirà il tooltip informativo, quando si cliccherà di nuovo su di esso il tooltip scomparirà; ecco il risultato: