package com.rapidftr.controls; import java.util.Vector; import net.rim.device.api.ui.Color; import net.rim.device.api.ui.Field; import net.rim.device.api.ui.FocusChangeListener; import net.rim.device.api.ui.Graphics; import net.rim.device.api.ui.XYEdges; import net.rim.device.api.ui.component.LabelField; import net.rim.device.api.ui.decor.BackgroundFactory; import net.rim.device.api.ui.decor.Border; import net.rim.device.api.ui.decor.BorderFactory; class TabLabelField extends LabelField implements FocusChangeListener{ private Vector observers = new Vector(); public TabLabelField(String labelText) { super("", LabelField.FOCUSABLE); setText(prepareTabLabelForDisplay(labelText)); setBorder(getBorders()); setBackground(BackgroundFactory.createSolidBackground(Color.GRAY)); this.setFocusListener(this); } public void deSelect() { setBackground(BackgroundFactory.createSolidBackground(Color.GRAY)); } public void select() { setBackground(BackgroundFactory.createLinearGradientBackground( Color.ROYALBLUE, Color.ROYALBLUE, Color.BLUE, Color.BLUE)); } protected void paint(Graphics graphics) { graphics.setColor(Color.WHITE); super.paint(graphics); } private String prepareTabLabelForDisplay(String initialLabel) { return " " + initialLabel + " "; } private Border getBorders() { XYEdges labelBorderSizes = new XYEdges(1, 1, 0, 1); Border labelBorders = BorderFactory .createSimpleBorder(labelBorderSizes); return labelBorders; } public void addFocusChangeListener(FocusChangeListener observer) { observers.addElement(observer); } private void notifyObservers(int eventType) { for (int i = 0; i < observers.size(); i++) { ((FocusChangeListener) observers.elementAt(i)).focusChanged(this,eventType); } } public void focusChanged(Field field, int eventType) { notifyObservers(eventType); } }