package bmsi.fsp; import java.awt.Button; import java.awt.Graphics; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.event.ActionEvent; import java.awt.peer.ButtonPeer; class FSButton extends FSComponent implements ButtonPeer { private String text; FSButton(Button but,FSToolkit toolkit) { super(but,toolkit); } protected void initialize() { Button but = (Button)target; String label = but.getLabel(); if (label != null) setLabel(label); super.initialize(); } public void paint(Graphics g) { //System.err.println("label.paint " + text); Dimension s = target.getSize(); g.setColor(target.getBackground()); g.fillRect(0,0,s.width,s.height); if (text == null) return; FontMetrics fm = g.getFontMetrics(); int w = fm.stringWidth(text); int h = fm.getHeight(); g.setColor(target.getForeground()); g.drawString(text,(s.width - w)/2,(s.height + h)/2); } public Dimension getMinimumSize() { int w = (text != null) ? text.length() : 1; return toolkit.scale(new Dimension(w,1)); } public void setLabel(String s) { text = s; repaint(); } public void postKey(int k) { switch (k) { case TI.KEY_ENTER: case TI.KEY_F0: case ' ': case '\r': Button but = (Button)target; toolkit.theQueue.postEvent( new ActionEvent(but,ActionEvent.ACTION_PERFORMED,but.getActionCommand()) ); return; } super.postKey(k); } }