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.enums.ColorOption;
+import be.nikiroo.jvcard.resources.enums.StringId;
import be.nikiroo.jvcard.tui.KeyAction.Mode;
-import be.nikiroo.jvcard.tui.UiColors.Element;
import be.nikiroo.jvcard.tui.panes.ContactDetails;
import be.nikiroo.jvcard.tui.panes.ContactDetailsRaw;
import be.nikiroo.jvcard.tui.panes.ContactList;
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;
if (mess != null || messagePanel.getChildCount() > 0) {
messagePanel.removeAllComponents();
if (mess != null) {
- Element element = (error ? UiColors.Element.LINE_MESSAGE_ERR
- : UiColors.Element.LINE_MESSAGE);
- Label lbl = element.createLabel(" " + mess + " ");
+ ColorOption element = (error ? ColorOption.LINE_MESSAGE_ERR
+ : ColorOption.LINE_MESSAGE);
+ Label lbl = UiColors.createLabel(element, " " + mess + " ");
messagePanel.addComponent(lbl, LinearLayout
.createLayoutData(LinearLayout.Alignment.Center));
}
llayout.setSpacing(0);
hpanel.setLayoutManager(llayout);
- Label lbl = UiColors.Element.LINE_MESSAGE_QUESTION.createLabel(" "
+ Label lbl = UiColors.createLabel(ColorOption.LINE_MESSAGE_QUESTION, " "
+ question + " ");
text = new TextBox(new TerminalSize(getSize().getColumns()
- lbl.getSize().getColumns(), 1));
if (title.length() > 0) {
prefix = prefix + ": ";
- title = StringUtils.sanitize(title, UiColors.getInstance()
- .isUnicode());
+ title = StringUtils.sanitize(title, Main.isUnicode());
}
String countStr = "";
super.setTitle(prefix);
Label lblPrefix = new Label(prefix);
- UiColors.Element.TITLE_MAIN.themeLabel(lblPrefix);
+ UiColors.themeLabel(ColorOption.TITLE_MAIN, lblPrefix);
Label lblTitle = null;
if (title.length() > 0) {
lblTitle = new Label(title);
- UiColors.Element.TITLE_VARIABLE.themeLabel(lblTitle);
+ UiColors.themeLabel(ColorOption.TITLE_VARIABLE, lblTitle);
}
Label lblCount = null;
if (countStr != null) {
lblCount = new Label(countStr);
- UiColors.Element.TITLE_COUNT.themeLabel(lblCount);
+ UiColors.themeLabel(ColorOption.TITLE_COUNT, lblCount);
}
titlePanel.removeAllComponents();
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);
layout.setSpacing(0);
kPane.setLayoutManager(layout);
- kPane.addComponent(UiColors.Element.ACTION_KEY
- .createLabel(keyTrans));
- kPane.addComponent(UiColors.Element.ACTION_DESC.createLabel(trans));
+ kPane.addComponent(UiColors.createLabel(ColorOption.ACTION_KEY,
+ keyTrans));
+ kPane.addComponent(UiColors.createLabel(ColorOption.ACTION_DESC,
+ trans));
actionPanel.addComponent(kPane);
}
}
if (width > 0) {
- actionPanel.addComponent(UiColors.Element.ACTION_DESC
- .createLabel(StringUtils.padString("", width)));
+ actionPanel.addComponent(UiColors.createLabel(
+ ColorOption.ACTION_DESC, StringUtils.padString("", width)));
}
}
handled = true;
- if (action.onAction()) {
+ action.getObject(); // see {@link KeyAction#getMessage()}
+ String mess = action.getMessage();
+ if (mess != null) {
+ setMessage(mess, action.isError());
+ }
+
+ if (!action.isError() && action.onAction()) {
handleAction(action, null);
}
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: