HrefButtonAreapublic class HrefButtonArea extends ImageMapArea An improved "Fetch a URL" ImageArea class.
This class extends the basic ImageArea Class to fetch a URL when
the user clicks in the area. In addition, special custom highlights
are used to make the area look and feel like a 3-D button. |
Fields Summary |
---|
URL | anchorThe URL to be fetched when the user clicks on this area. | Image | upImageThe highlight image for when the button is "UP". | Image | downImageThe highlight image for when the button is "DOWN". | boolean | pressedThis flag indicates if the "button" is currently pressed. | int | borderThe border size for the 3-D effect. |
Methods Summary |
---|
public void | enter()
showStatus((anchor != null)
? "Go To " + anchor.toExternalForm()
: null);
repaint();
| public void | exit()
showStatus(null);
repaint();
| public void | handleArg(java.lang.String arg)The argument string is the URL to be fetched.
This method also constructs the various highlight images needed
to achieve the 3-D effect.
try {
anchor = new URL(parent.getDocumentBase(), arg);
} catch (MalformedURLException e) {
anchor = null;
}
if (border * 2 > W || border * 2 > H) {
border = Math.min(W, H) / 2;
}
| public void | highlight(java.awt.Graphics g)The status message area is updated to show the destination URL.
The graphical highlight is achieved using the ButtonFilter.
if (entered) {
g.drawImage(pressed ? downImage : upImage, X, Y, this);
}
| public boolean | imageUpdate(java.awt.Image img, int infoflags, int x, int y, int width, int height)
if (img == (pressed ? downImage : upImage)) {
return parent.imageUpdate(img, infoflags, x + X, y + Y,
width, height);
} else {
return (img == downImage || img == upImage);
}
| public boolean | isTerminal()The isTerminal method indicates whether events should propagate
to the areas underlying this one.
return true;
| public boolean | lift(int x, int y)The new URL is fetched when the user releases the mouse button
only if they are still in the area.
pressed = false;
repaint();
if (inside(x, y) && anchor != null) {
showDocument(anchor);
}
return true;
| public void | makeImages()
upImage = parent.getHighlight(X, Y, W, H,
new ButtonFilter(false,
parent.hlpercent,
border, W, H));
downImage = parent.getHighlight(X, Y, W, H,
new ButtonFilter(true,
parent.hlpercent,
border, W, H));
| public boolean | press()Since the highlight changes when the button is pressed, we need
to record the "pressed" state and induce a repaint.
pressed = true;
repaint();
return true;
|
|