+ actions.add(new KeyAction(Mode.ASK_USER_KEY, 'd',
+ Trans.StringId.KEY_ACTION_DELETE_CONTACT) {
+ @Override
+ public Object getObject() {
+ return getSelectedContact();
+ }
+
+ @Override
+ public String getQuestion() {
+ // TODO i18n
+ return "Delete contact? [Y/N]";
+ }
+
+ @Override
+ public String callback(String answer) {
+ if (answer.equalsIgnoreCase("y")) {
+ Contact contact = getSelectedContact();
+ if (contact != null && contact.delete()) {
+ removeItem("x");
+ return null;
+ }
+
+ // TODO i18n
+ return "Cannot delete contact";
+ }
+
+ return null;
+ }
+ });
+ actions.add(new KeyAction(Mode.ASK_USER_KEY, 's',
+ Trans.StringId.KEY_ACTION_SAVE_CARD) {
+ @Override
+ public Object getObject() {
+ return card;
+ }
+
+ @Override
+ public String getQuestion() {
+ return "Save changes? [Y/N]";
+ }
+
+ @Override
+ public String callback(String answer) {
+ if (answer.equalsIgnoreCase("y")) {
+ boolean ok = false;
+ try {
+ if (card != null && card.save())
+ ok = true;
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+
+ if (!ok) {
+ return "Cannot save to file";
+ }
+ }
+
+ return null;
+ }
+
+ });