package com.rapidftr.screens.internal;
import net.rim.device.api.system.Characters;
import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.Screen;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.XYEdges;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.decor.BackgroundFactory;
import com.rapidftr.controllers.internal.Controller;
import com.rapidftr.controls.TitleField;
import com.rapidftr.utilities.Styles;
public abstract class CustomScreen extends MainScreen implements KeyListener {
protected Controller controller;
private TitleField titleField;
protected static final XYEdges PADDING = new XYEdges(4, 4, 4, 4);
public CustomScreen() {
titleField = new TitleField();
setBackground(BackgroundFactory
.createSolidBackground(Styles.COLOR_SCREEN_BACKGROUND));
add(titleField);
}
public void setController(Controller controller) {
this.controller = controller;
}
public boolean isActive() {
Screen activeScreen = UiApplication.getUiApplication()
.getActiveScreen();
if (activeScreen == null)
return false;
return UiApplication.getUiApplication().getActiveScreen().equals(this);
}
public void setUp() {
};
protected void onExposed() {
super.onExposed();
}
public void popScreen(final UiStack uiStack) {
final CustomScreen screen = this;
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
if(screen.isActive()){
uiStack.popScreen(screen);
}
}
});
}
protected void clearFields() {
int fieldCount = this.getFieldCount();
if (fieldCount > 0)
this.deleteRange(0, fieldCount);
this.titleField = new TitleField();
add(this.titleField);
}
protected void makeMenu(Menu menu, int instance) {
menu.add(new MenuItem("Go Home", 0, 1) {
public void run() {
onMainMenuClick();
}
});
super.makeMenu(menu, instance);
menu.add(new MenuItem("Create New Record", 0, 1) {
public void run() {
controller.createNewChildRecord();
}
});
}
protected void onMainMenuClick() {
controller.homeScreen();
}
public boolean keyChar(char key, int status, int time) {
if (key == Characters.ESCAPE) {
if (controller != null)
controller.popScreen();
return true;
}
return super.keyChar(key, status, time);
}
public boolean keyDown(int keycode, int time) {
if (keycode == Characters.ESCAPE) {
if (controller != null)
controller.popScreen();
return true;
}
return super.keyDown(keycode, time);
}
public boolean keyRepeat(int keycode, int time) {
return super.keyRepeat(keycode, time);
}
public boolean keyStatus(int keycode, int time) {
return super.keyStatus(keycode, time);
}
public boolean keyUp(int keycode, int time) {
return super.keyUp(keycode, time);
}
public void setUserName(String userName){
this.titleField.setUserName(userName);
}
}