package beast.app.draw; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.event.MouseEvent; import javax.swing.JButton; /** * Miniature round button */ public class SmallButtonOld extends JButton { private static final long serialVersionUID = 1L; /** * flag to indicate the button is pressed */ protected boolean m_bPressed = false; Image image = null; public void setImg(Image image) { this.image = image; } public SmallButtonOld(String label, boolean isEnabled) { super(label); //this.label = label; enableEvents(AWTEvent.MOUSE_EVENT_MASK); setBackground(new Color(128, 128, 255)); setPreferredSize(new Dimension(15, 15)); setSize(15, 15); setMinimumSize(new Dimension(15, 15)); setMaximumSize(new Dimension(15, 15)); setEnabled(isEnabled); } // c'tor /** * paints the SmallButton */ @Override public void paint(Graphics g) { if (image != null) { g.drawImage(image, 0, 0, null); return; } //super.paint(g); int s = 14; if (isEnabled()) { if (m_bPressed) { GradientPaint m_gradientPaint = new GradientPaint(new Point(5, 5), Color.WHITE, new Point(getWidth(), getHeight()), getBackground().darker().darker()); ((Graphics2D) g).setPaint(m_gradientPaint); } else { //g.setColor(getBackground()); GradientPaint m_gradientPaint = new GradientPaint(new Point(0, 0), Color.WHITE, new Point(getWidth(), getHeight()), getBackground()); ((Graphics2D) g).setPaint(m_gradientPaint); } } else { g.setColor(new Color(240, 240, 240)); } g.fillArc(0, 0, s, s, 0, 360); g.setColor(getBackground().darker().darker().darker()); g.drawArc(0, 0, s, s, 0, 360); getBorder().paintBorder(this, g, 0, 0, 15, 15); Font f = getFont(); if (f != null) { FontMetrics fm = getFontMetrics(getFont()); g.setColor(getForeground()); g.drawString(getText(), s / 2 - fm.stringWidth(getText()) / 2 + 0, s / 2 + fm.getMaxDescent() + 1); } } // paint @Override public void processMouseEvent(MouseEvent e) { switch (e.getID()) { case MouseEvent.MOUSE_PRESSED: m_bPressed = true; break; case MouseEvent.MOUSE_RELEASED: if (m_bPressed == true) { m_bPressed = false; } break; // case MouseEvent.MOUSE_ENTERED: // break; case MouseEvent.MOUSE_EXITED: if (m_bPressed == true) { m_bPressed = false; } break; } super.processMouseEvent(e); repaint(); } // processMouseEvent } // class SmallButton