// Botão genérico da interface // Last edited on 2000-09-01 10:28:45 by stolfi import java.awt.Canvas; import java.awt.Image; import java.awt.Dimension; import java.awt.Event; import java.awt.Graphics; import java.awt.image.ImageObserver; import java.net.URL; import PlinImage; import InterfaceGrafica; public class PlinFerramenta extends Canvas implements ImageObserver { // Instância de InterfaceGrafica que é manipulda por esta ferramenta: InterfaceGrafica raiz; static int xSize = 40; static int ySize = 40; // Estado interno genérico da ferramenta: Image image_up; Image image_dn; String name; boolean is_up = true; public void initFerramenta( String imageName, String ferrName, InterfaceGrafica z ) { raiz = z; name = ferrName; image_up = PlinImage.getImage(raiz, imageName + "01.gif"); image_dn = PlinImage.getImage(raiz, imageName + "02.gif"); int xS = image_up.getWidth(this); if (xS > xSize) { xSize = xS; } int yS = image_up.getHeight(this); if (yS > ySize) { ySize = yS; } is_up = true; } public Dimension getMinimumSize() { return(new Dimension(xSize, ySize)); } public Dimension getPreferredSize() { return(getMinimumSize()); } public boolean mouseDown(Event evt, int x, int y) { is_up = false; repaint(); return(true); } public boolean mouseUp(Event evt, int x, int y) { if (inside(x,y)) { is_up = (! is_up); System.out.println(name + " mouseUp"); Event ev = new Event (this, evt.when, Event.ACTION_EVENT, x, y, evt.key, evt.modifiers, name); deliverEvent(ev); } else { System.out.println(name + " aborted"); } repaint(); return(true); } public void setButton(boolean state) { is_up = state; repaint(); } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if (is_up) { g.drawImage(image_up, 0, 0, this); } else { g.drawImage(image_dn, 0, 0, this); } } }