package bmsi.fsp; import java.awt.Label; import java.awt.Graphics; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.peer.LabelPeer; class FSLabel extends FSComponent implements LabelPeer { private int alignment; private String text; FSLabel(Label lab,FSToolkit toolkit) { super(lab,toolkit); } protected void initialize() { Label lab = (Label)target; String text = lab.getText(); int a = lab.getAlignment(); if (text != null) setText(text); if (a != 0) setAlignment(a); 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()); switch (alignment) { case Label.RIGHT: g.drawString(text,s.width - w,(s.height + h)/2); break; case Label.LEFT: g.drawString(text,0,(s.height + h)/2); break; default: g.drawString(text,(s.width - w)/2,(s.height + h)/2); break; } } public Dimension getMinimumSize() { int w = (text != null) ? text.length() : 1; return toolkit.scale(new Dimension(w,1)); } public void setAlignment(int a) { if (alignment != a) { alignment = a; repaint(); } } public void setText(String s) { text = s; repaint(); } public boolean isFocusTraversable() { return false; } }