package com.rapidftr.controls;
import java.util.Vector;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FocusChangeListener;
import net.rim.device.api.ui.container.HorizontalFieldManager;
import net.rim.device.api.ui.container.VerticalFieldManager;
public class TabsField {
private VerticalFieldManager control;
private HorizontalFieldManager labelArea;
private VerticalFieldManager tabBody;
private Tab currentTab;
private Vector tabs = new Vector();
public TabsField() {
this(new VerticalFieldManager(VerticalFieldManager.USE_ALL_WIDTH),
new HorizontalFieldManager(HorizontalFieldManager.HORIZONTAL_SCROLL),
new VerticalFieldManager());
}
protected TabsField(VerticalFieldManager control,
HorizontalFieldManager labelArea,
VerticalFieldManager tabBody) {
this.control = control;
this.labelArea = labelArea;
this.tabBody = tabBody;
control.add(labelArea);
control.add(tabBody);
}
private void selectDefaultTab() {
currentTab = getDefaultTab();
currentTab.open();
}
public String getSelectedTab() {
return currentTab.getLabel();
}
public void addHandle(TabLabelField handle) {
labelArea.add(handle);
}
public void setBody(TabBodyField body) {
tabBody.deleteAll();
tabBody.add(body);
}
public void clearBody() {
tabBody.deleteAll();
}
public void addTab(final Tab tab) {
tabs.addElement(tab);
tab.setCanvas(this);
tab.addTabChangeListener(new FocusChangeListener() {
public void focusChanged(Field field, int eventType) {
if (field instanceof TabLabelField && eventType == FOCUS_GAINED) {
currentTab.close();
tab.open();
currentTab = tab;
}
}
});
}
private Tab getDefaultTab() {
return (tabs.isEmpty()) ? null : (Tab) tabs.elementAt(0);
}
public Field draw() {
selectDefaultTab();
return control;
}
}