package com.gwt.ui.client.masterview;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.Image;
/**
* <p>This class represents basic button without text and with image.
* It needs three images for states: normal, hovered and disabled.</p>
*
* @author TheSteam
*/
public class ImageButtonBase extends FocusWidget
{
protected Image normalPrototype;
protected Image hoverPrototype;
protected Image disabledPrototype;
protected Image image;
public Image getDisabledPrototype() {
return disabledPrototype;
}
public void setDisabledPrototype(Image disabledPrototype) {
this.disabledPrototype = disabledPrototype;
}
public Image getHoverPrototype() {
return hoverPrototype;
}
public void setHoverPrototype(Image hoverPrototype) {
this.hoverPrototype = hoverPrototype;
}
public Image getNormalPrototype() {
return normalPrototype;
}
public void setNormalPrototype(Image normalPrototype) {
this.normalPrototype = normalPrototype;
}
public ImageButtonBase(Image normalPrototype,
Image hoverPrototype,
Image disabledPrototype) {
super();
this.normalPrototype = normalPrototype;
this.hoverPrototype = hoverPrototype;
this.disabledPrototype = disabledPrototype;
image = new Image(getNormalPrototype().getUrl());
setElement(image.getElement());
sinkEvents(Event.ONMOUSEOVER);
sinkEvents(Event.ONMOUSEOUT);
}
@Override
public void setEnabled(boolean enabled) {
if (!enabled) {
image = new Image(getDisabledPrototype().getUrl());
} else {
image = new Image(getNormalPrototype().getUrl());
}
super.setEnabled(enabled);
}
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
if (!isEnabled()) {
return;
}
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEOVER: {
image = getHoverPrototype();
break;
}
case Event.ONMOUSEOUT: {
image = getNormalPrototype();
break;
}
default: {
// Do nothing
}
}
}
}