package org.bbssh.ui.components;
import net.rim.device.api.i18n.ResourceBundleFamily;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.CheckboxField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.FlowFieldManager;
import net.rim.device.api.ui.container.PopupScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import org.bbssh.i18n.BBSSHResource;
import org.bbssh.util.Tools;
public class MemoryDialog {
private static boolean remember;
private static int selection;
public static synchronized int ask(int questionId, int[] answers, int defaultAnswer) {
remember = false;
ResourceBundleFamily res = ResourceBundleFamily.getBundle(BBSSHResource.BUNDLE_ID, BBSSHResource.BUNDLE_NAME);
LabelField question = new LabelField(res.getString(questionId));
CheckboxField check = new CheckboxField(res.getString(BBSSHResource.MSG_CONFIRM_ANS_REMEMBER), false);
FlowFieldManager fm = new FlowFieldManager(FlowFieldManager.FIELD_HCENTER
| FlowFieldManager.NO_HORIZONTAL_SCROLL);
FieldChangeListener lst = new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
selection = field.getIndex();
field.getScreen().close();
}
};
int max = answers.length;
for (int x = 0; x < max; x++) {
ClickableButtonField bf = new ClickableButtonField(res.getString(answers[x]));
bf.setChangeListener(lst);
fm.add(bf);
}
final PopupScreen s = new PopupScreen(new VerticalFieldManager(VerticalFieldManager.VERTICAL_SCROLL
| VerticalFieldManager.VERTICAL_SCROLLBAR));
s.setFont(Tools.deriveBBSSHDialogFont(s.getFont()));
s.add(question);
s.add(check);
s.add(fm);
Field f = fm.getField(defaultAnswer);
if (f != null) {
f.setFocus();
}
UiApplication.getUiApplication().invokeAndWait(new Runnable() {
public void run() {
UiApplication.getUiApplication().pushModalScreen(s);
}
});
remember = check.getChecked();
return selection;
}
/**
* @return true if the answer to this prompt should be saved.
*/
public static boolean getRememberSelection() {
return remember;
}
}