package org.jboss.ballroom.client.widgets;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HTML;
/**
* @author Heiko Braun
* @date 12/15/11
*/
public class InlineLink extends HTML {
private ClickHandler handler;
public InlineLink(String title) {
super("<a href='javascript:void(0)' aria-label='"+ SafeHtmlUtils.htmlEscape(title)+"' style='vertical-align:bottom;'>"+title+"</a>");
getElement().setTabIndex(0);
this.sinkEvents(Event.ONKEYDOWN);
this.sinkEvents(Event.ONMOUSEDOWN);
addStyleName("inline-link");
}
@Override
public void onBrowserEvent(Event event) {
int type = DOM.eventGetType(event);
switch (type) {
case Event.ONKEYDOWN:
if(event.getKeyCode()== KeyCodes.KEY_ENTER)
{
if(handler!=null)
handler.onClick(null);
event.stopPropagation();
}
break;
case Event.ONMOUSEDOWN:
if(handler!=null)
handler.onClick(null);
event.stopPropagation();
break;
default:
return;
}
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
HandlerRegistration handlerRegistration = super.addClickHandler(handler);
this.handler = handler;
return handlerRegistration;
}
}