Remote support ~complete (need more tests at least)
[jvcard.git] / src / be / nikiroo / jvcard / tui / MainWindow.java
index 8dc860dcb3f75212de68187a778cc183e94bc888..d7cb80d8b2e624ad2b6453914c0ff13a1e878b1f 100644 (file)
@@ -1,12 +1,14 @@
 package be.nikiroo.jvcard.tui;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 
-import be.nikiroo.jvcard.i18n.Trans;
-import be.nikiroo.jvcard.i18n.Trans.StringId;
+import be.nikiroo.jvcard.launcher.Main;
+import be.nikiroo.jvcard.resources.StringUtils;
+import be.nikiroo.jvcard.resources.Trans.StringId;
 import be.nikiroo.jvcard.tui.KeyAction.Mode;
 import be.nikiroo.jvcard.tui.UiColors.Element;
 import be.nikiroo.jvcard.tui.panes.ContactDetails;
@@ -220,6 +222,16 @@ public class MainWindow extends BasicWindow {
                if (contentStack.size() > 0)
                        prev = contentStack.remove(contentStack.size() - 1);
 
+               if (prev != null) {
+                       try {
+                               String mess = prev.wakeup();
+                               if (mess != null)
+                                       setMessage(mess, false);
+                       } catch (IOException e) {
+                               setMessage(e.getMessage(), true);
+                       }
+               }
+
                pushContent(prev);
 
                return removed;
@@ -408,8 +420,7 @@ public class MainWindow extends BasicWindow {
 
                if (title.length() > 0) {
                        prefix = prefix + ": ";
-                       title = StringUtils.sanitize(title, UiColors.getInstance()
-                                       .isUnicode());
+                       title = StringUtils.sanitize(title, Main.isUnicode());
                }
 
                String countStr = "";
@@ -497,12 +508,12 @@ public class MainWindow extends BasicWindow {
 
                actionPanel.removeAllComponents();
                for (KeyAction action : this.actions) {
-                       String trans = " " + action.getStringId().trans() + " ";
+                       String trans = " " + Main.trans(action.getStringId()) + " ";
 
                        if ("  ".equals(trans))
                                continue;
 
-                       String keyTrans = Trans.getInstance().trans(action.getKey());
+                       String keyTrans = KeyAction.trans(action.getKey());
 
                        Panel kPane = new Panel();
                        LinearLayout layout = new LinearLayout(Direction.HORIZONTAL);
@@ -610,6 +621,12 @@ public class MainWindow extends BasicWindow {
 
                        handled = true;
 
+                       action.getObject(); // see {@link KeyAction#getMessage()}
+                       String mess = action.getMessage();
+                       if (mess != null) {
+                               setMessage(mess, action.isError());
+                       }
+
                        if (action.onAction()) {
                                handleAction(action, null);
                        }
@@ -658,6 +675,10 @@ public class MainWindow extends BasicWindow {
                case CONTACT_LIST:
                        if (action.getCard() != null) {
                                pushContent(new ContactList(action.getCard()));
+                       } else if (action.getObject() != null
+                                       && action.getObject() instanceof MainContent) {
+                               MainContent mergeContent = (MainContent) action.getObject();
+                               pushContent(mergeContent);
                        }
                        break;
                case CONTACT_DETAILS: