Hyperlink ClickListener

package com.java2s.gwt.client;

import com.google.gwt.user.client.*;
import com.google.gwt.user.client.ui.*;
import com.google.gwt.core.client.*;

public class GWTClient implements EntryPoint{
public void onModuleLoad() {
RootPanel.get().add(new ImageButton("images/close.png",16,16));
}
}



class ImageButton extends PNGImage
{

protected final static int ON_STATE = 1;
protected final static int OFF_STATE = -1;
private int state = OFF_STATE;

private String onStyle = "gwl-ImageButton-On";
private String offStyle = "gwl-ImageButton-Off";

private Color backgroundOnColor = Color.NONE;
private Color backgroundOffColor = Color.NONE;

private Color borderOnColor = Color.BLACK;
private Color borderOffColor = Color.NONE;

private int borderOnWidth = 1;
private int borderOffWidth = 0;

private int paddingLeft = 0;
private int paddingRight = 0;
private int paddingTop = 0;
private int paddingBottom = 0;

private BorderStyleConstant borderOnStyle = BorderStyle.BORDER_STYLE_SOLID;
private BorderStyleConstant borderOffStyle = BorderStyle.BORDER_STYLE_NONE;


public ImageButton (String url, int width, int height)
{
super(url, width, height);
setStyleName("gwl-image-button");
setColors();
init();
}


protected void init ()
{
addMouseListener(new MouseListenerAdapter(){

public void onMouseEnter (Widget sender)
{
state = ON_STATE;
setColors();
}

public void onMouseLeave (Widget sender)
{
state = OFF_STATE;
setColors();
}
});
}


public boolean isOn ()
{
return state == ON_STATE;
}

/**
* Updates the colors of the widget based on the state
* and color settings. This is usually only used after
* setting one or more of the colors.
*/
public void setColors ()
{
DOM.setStyleAttribute(getElement(), "paddingTop", getPaddingTopWidth() + "px");
DOM.setStyleAttribute(getElement(), "paddingRight", getPaddingRightWidth() + "px");
DOM.setStyleAttribute(getElement(), "paddingBottom", getPaddingBottomWidth() + "px");
DOM.setStyleAttribute(getElement(), "paddingLeft", getPaddingLeftWidth() + "px");
DOM.setStyleAttribute(getElement(), "borderWidth", getBorderWidth() + "px");
DOM.setStyleAttribute(getElement(), "borderColor", getBorderColor().getHexValue());
DOM.setStyleAttribute(getElement(), "borderStyle", getBorderStyle().getBorderStyleName());
DOM.setStyleAttribute(getElement(), "backgroundColor", getBackgroundColor().getHexValue());
setStyleName(getCssStyleName());
}

private String getCssStyleName ()
{
if (state == ON_STATE)
return onStyle;
else
return offStyle;
}


private Color getBackgroundColor ()
{
if (state == ON_STATE)
return backgroundOnColor;
else
return backgroundOffColor;
}

private BorderStyleConstant getBorderStyle ()
{
if (state == ON_STATE)
return borderOnStyle;
else
return borderOffStyle;
}

private Color getBorderColor ()
{
if (state == ON_STATE)
return borderOnColor;
else
return borderOffColor;
}

private int getBorderWidth ()
{
if (state == ON_STATE)
return borderOnWidth;
else
return borderOffWidth;
}

private int getPaddingLeftWidth ()
{
int max = (borderOnWidth > borderOffWidth) ? borderOnWidth : borderOffWidth;

if (state == ON_STATE) {
return (max - borderOnWidth + paddingLeft);
}
else {
return (max - borderOffWidth + paddingLeft);
}
}

private int getPaddingRightWidth ()
{
int max = (borderOnWidth > borderOffWidth) ? borderOnWidth : borderOffWidth;

if (state == ON_STATE) {
return (max - borderOnWidth + paddingRight);
}
else {
return (max - borderOffWidth + paddingRight);
}
}

private int getPaddingTopWidth ()
{
int max = (borderOnWidth > borderOffWidth) ? borderOnWidth : borderOffWidth;

if (state == ON_STATE) {
return (max - borderOnWidth + paddingTop);
}
else {
return (max - borderOffWidth + paddingTop);
}
}

private int getPaddingBottomWidth ()
{
int max = (borderOnWidth > borderOffWidth) ? borderOnWidth : borderOffWidth;

if (state == ON_STATE) {
return (max - borderOnWidth + paddingBottom);
}
else {
return (max - borderOffWidth + paddingBottom);
}
}

/**
* This method is under consideration for removal,
*
*/
public void setMargin (int px)
{
DOM.setStyleAttribute(getElement(), "margin", px + "px");
}

/**
* This method is under consideration for removal,
*
*/
public void setHorizontalMargin (int px)
{
DOM.setStyleAttribute(getElement(), "marginLeft", px + "px");
DOM.setStyleAttribute(getElement(), "marginRight", px + "px");
}

/**
* This method is under consideration for removal,
*
*/
public void setVerticleMargin (int px)
{
DOM.setStyleAttribute(getElement(), "marginTop", px + "px");
DOM.setStyleAttribute(getElement(), "marginBotom", px + "px");
}

/**
* This method is under consideration for removal,
*
*/
public Color getBackgroundOffColor ()
{
return backgroundOffColor;
}

/**
* This method is under consideration for removal,
*
*/
public void setBackgroundOffColor (Color backgroundOffColor)
{
this.backgroundOffColor = backgroundOffColor;
}

/**
* This method is under consideration for removal,
*
*/
public Color getBackgroundOnColor ()
{
return backgroundOnColor;
}

/**
* This method is under consideration for removal,
*
*/
public void setBackgroundOnColor (Color backgroundOnColor)
{
this.backgroundOnColor = backgroundOnColor;
}

/**
* This method is under consideration for removal,
*
*/
public Color getBorderOffColor ()
{
return borderOffColor;
}

/**
* This method is under consideration for removal,
*
*/
public void setBorderOffColor (Color borderOffColor)
{
this.borderOffColor = borderOffColor;
}

/**
* This method is under consideration for removal,
*
*/
public BorderStyleConstant getBorderOffStyle ()
{
return borderOffStyle;
}

/**
* This method is under consideration for removal,
*
*/
public void setBorderOffStyle (BorderStyleConstant borderOffStyle)
{
this.borderOffStyle = borderOffStyle;
}

/**
* This method is under consideration for removal,
*
*/
public int getBorderOffWidth ()
{
return borderOffWidth;
}

/**
* This method is under consideration for removal,
*
*/
public void setBorderOffWidth (int borderOffWidth)
{
this.borderOffWidth = borderOffWidth;
}

/**
* This method is under consideration for removal,
*
*/
public Color getBorderOnColor ()
{
return borderOnColor;
}

/**
* This method is under consideration for removal,
*
*/
public void setBorderOnColor (Color borderOnColor)
{
this.borderOnColor = borderOnColor;
}

/**
* This method is under consideration for removal,
*
*/
public BorderStyleConstant getBorderOnStyle ()
{
return borderOnStyle;
}

/**
* This method is under consideration for removal,
*
*/
public void setBorderOnStyle (BorderStyleConstant borderOnStyle)
{
this.borderOnStyle = borderOnStyle;
}

/**
* This method is under consideration for removal,
*
*/
public int getBorderOnWidth ()
{
return borderOnWidth;
}




public void setBorderOnWidth (int borderOnWidth)
{
this.borderOnWidth = borderOnWidth;
}

protected int getState ()
{
return state;
}

protected void setState (int state)
{
this.state = state;
}


public String getOffStyle ()
{
return offStyle;
}


public void setOffStyle (String offStyle)
{
this.offStyle = offStyle;
}


public String getOnStyle ()
{
return onStyle;
}


public void setOnStyle (String onStyle)
{
this.onStyle = onStyle;
}


}



class PNGImage extends Image
{
private PNGImageImpl impl;


public PNGImage (String url, int width, int height)
{
impl = (PNGImageImpl) GWT.create(PNGImageImpl.class);

setElement(impl.createElement(url, width, height));
sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.ONLOAD | Event.ONERROR);
}


public String getUrl ()
{
return impl.getUrl(this);
}

/**
* Should not be used. Throws RuntimeException
*/
public void setUrl (String url)
{
throw new RuntimeException("Not allowed to set url for a PNG image");
}
}






class PNGImageImpl
{

public Element createElement (String url, int width, int height)
{
Element result = DOM.createImg();
DOM.setAttribute(result, "src", url);
DOM.setIntAttribute(result, "width", width);
DOM.setIntAttribute(result, "height", height);
return result;
}

public String getUrl (PNGImage image)
{
return DOM.getAttribute(image.getElement(), "src");
}

}







class PNGImageImplIE6 extends PNGImageImpl
{
private String url;
private boolean isPng;


public Element createElement (String url, int width, int height)
{
this.url = url;

if (url.endsWith(".png") || url.endsWith(".PNG")) {
isPng = true;
}
else {
isPng = false;
}

if (isPng) {
Element div = DOM.createDiv();
DOM.setInnerHTML(div, "");

return DOM.getFirstChild(div);
}
else {
return super.createElement(url, width, height);
}
}

public String getUrl (PNGImage image)
{
if (isPng) {
return url;
}
else {
return super.getUrl(image);
}
}


}
public class BorderStyleConstant
{

private String styleName;

public BorderStyleConstant (String styleName)
{
this.styleName = styleName;
}

public String getBorderStyleName() {
return styleName;
}

}


class BorderStyle
{


final public static BorderStyleConstant BORDER_STYLE_NONE = new BorderStyleConstant("none");

final public static BorderStyleConstant BORDER_STYLE_DOTTED = new BorderStyleConstant("dotted");

final public static BorderStyleConstant BORDER_STYLE_DASHED = new BorderStyleConstant("dashed");

final public static BorderStyleConstant BORDER_STYLE_SOLID = new BorderStyleConstant("solid");

final public static BorderStyleConstant BORDER_STYLE_DOUBLE = new BorderStyleConstant("double");

final public static BorderStyleConstant BORDER_STYLE_GROOVE = new BorderStyleConstant("groove");

final public static BorderStyleConstant BORDER_STYLE_RIDGE = new BorderStyleConstant("ridge");

final public static BorderStyleConstant BORDER_STYLE_INSET = new BorderStyleConstant("inset");

final public static BorderStyleConstant BORDER_STYLE_OUTSET = new BorderStyleConstant("outset");

}

class Color
{
public final static Color WHITE = new Color(255, 255, 255);
public final static Color LIGHT_GRAY = new Color(192, 192, 192);
public final static Color GRAY = new Color(128, 128, 128);
public final static Color DARK_GRAY = new Color(64, 64, 64);
public final static Color BLACK = new Color(0, 0, 0);
public final static Color RED = new Color(255, 0, 0);
public final static Color PINK = new Color(255, 175, 175);
public final static Color ORANGE = new Color(255, 200, 0);
public final static Color YELLOW = new Color(255, 255, 0);
public final static Color GREEN = new Color(0, 255, 0);
public final static Color MAGENTA = new Color(255, 0, 255);
public final static Color CYAN = new Color(0, 255, 255);
public final static Color BLUE = new Color(0, 0, 255);
public static final Color NONE = new Color("");

private int r, g, b;

// only for special cases, like no color, or maybe named colors
private String colorText = null;

private Color (String colorText) {
this.colorText = colorText;
}

public Color (int r, int g, int b)
{
this.r = r;
this.g = g;
this.b = b;
}

public int getRed ()
{
return r;
}

public int getGreen ()
{
return g;
}

public int getBlue ()
{
return b;
}

public String getHexValue ()
{
if (colorText != null) {
return colorText;
}

return "#"
+ pad(Integer.toHexString(r))
+ pad(Integer.toHexString(g))
+ pad(Integer.toHexString(b));
}

private String pad (String in)
{
if (in.length() == 0) {
return "00";
}
if (in.length() == 1) {
return "0" + in;
}
return in;
}

public String toString ()
{
if (colorText != null) {
return colorText;
}
return "red=" + r + ", green=" + g + ", blue=" + b;
}
}

0 comments:

                                                                

Site Meter