+ new ActionListDialogBuilder()
+ .setTitle("New data")
+ .setDescription("Choose a data type")
+ .addAction("Email address", new Runnable() {
+ @Override
+ public void run() {
+ name = "EMAIL";
+ }
+ })
+ .addAction("Telephone number", new Runnable() {
+ @Override
+ public void run() {
+ name = "TEL";
+ }
+ })
+ .addAction("Birthday", new Runnable() {
+ @Override
+ public void run() {
+ name = "BDAY";
+ }
+ })
+ .addAction("[other]", new Runnable() {
+ @Override
+ public void run() {
+ name = "";
+ }
+ })
+ .build()
+ .showDialog(
+ new MultiWindowTextGUI(TuiLauncher.getScreen()));
+
+ String name = this.name;
+ this.name = null;
+
+ if (name != null) {
+ if (name.length() > 0) {
+ Data data = new Data(null, name, "", null);
+ getContact().add(data);
+ addItem("x");
+ }
+
+ return (name.length() == 0);
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object getObject() {
+ return contact;
+ }
+
+ @Override
+ public String getQuestion() {
+ // TODO i18n
+ if (name == null)
+ return "Data name: ";
+
+ return null;
+ }
+
+ @Override
+ public String callback(String answer) {
+ if (answer != null & answer.length() > 0) {
+ Data data = new Data(null, answer, "", null);
+ getContact().add(data);
+ addItem("x");
+ }
+
+ return null;
+ }
+ });
+ // TODO: use a real UI for this, not a simple text box (a list or
+ // something, maybe a whole new pane?)
+ actions.add(new KeyAction(Mode.ASK_USER, 't', StringId.DUMMY) {
+ private String previous;
+
+ @Override
+ public Object getObject() {
+ return getSelectedData();
+ }
+
+ @Override
+ public String getQuestion() {
+ Data data = getData();
+ if (data != null) {
+ return data.getName();
+ }
+
+ return null;
+ }
+
+ @Override
+ public String getDefaultAnswer() {
+ Data data = getData();
+ if (data != null) {
+ previous = typesToString(data, null).toString();
+ return previous;
+ }
+
+ return null;
+ }
+
+ @Override
+ public String callback(String answer) {
+ Data data = getData();
+ if (data != null) {
+ if (!answer.equals(previous)) {
+ data.replaceListContent(stringToTypes(answer));
+ }
+ return null;
+ }
+
+ // TODO: i18n
+ return "Cannot modify value";
+ }
+ });
+ actions.add(new KeyAction(Mode.ASK_USER, 'g', StringId.DUMMY) {
+ private String previous;
+
+ @Override
+ public Object getObject() {
+ return getSelectedData();
+ }
+
+ @Override
+ public String getQuestion() {
+ Data data = getData();
+ if (data != null) {
+ return data.getName();
+ }
+
+ return null;
+ }
+
+ @Override
+ public String getDefaultAnswer() {
+ Data data = getData();
+ if (data != null) {
+ previous = data.getGroup();
+ return previous;
+ }
+
+ return null;
+ }
+
+ @Override
+ public String callback(String answer) {
+ Data data = getData();
+ if (data != null) {
+ if (!answer.equals(previous)) {
+ data.setGroup(answer);
+ }
+ return null;
+ }