import java.util.HashMap;
import java.util.Map;
+import com.googlecode.lanterna.input.KeyStroke;
+
+import be.nikiroo.jvcard.tui.UiColors;
+
/**
* This class manages the translation of {@link Trans#StringId}s into
* user-understandable text.
*
*/
public enum StringId {
- KEY_ACTION_BACK, KEY_ACTION_HELP, KEY_ACTION_VIEW_CONTACT, KEY_ACTION_VIEW_CARD, KEY_ACTION_EDIT_CONTACT, KEY_ACTION_SWITCH_FORMAT, TITLE, NULL;
+ DUMMY, // <-- TODO : remove
+ KEY_ACTION_BACK, KEY_ACTION_HELP, // MainWindow
+ KEY_ACTION_VIEW_CARD, // FileList
+ KEY_ACTION_VIEW_CONTACT, KEY_ACTION_EDIT_CONTACT, KEY_ACTION_SAVE_CARD, KEY_ACTION_DELETE_CONTACT, KEY_ACTION_SEARCH, // ContactList
+ DEAULT_FIELD_SEPARATOR, DEAULT_FIELD_SEPARATOR_NOUTF, // MainContentList
+ KEY_ACTION_INVERT, KEY_ACTION_FULLSCREEN, // ContactDetails
+ KEY_ACTION_SWITCH_FORMAT, // multi-usage
+ NULL; // Special usage
public String trans() {
return Trans.getInstance().trans(this);
return instance;
}
+ /**
+ * Translate the given {@link StringId} into user text.
+ *
+ * @param stringId
+ * the ID to translate
+ *
+ * @return the translated text
+ */
public String trans(StringId stringId) {
- if (map.containsKey(stringId)) {
- return map.get(stringId);
+ StringId id = stringId;
+ if (!UiColors.getInstance().isUnicode()) {
+ try {
+ id = StringId.valueOf(stringId.toString() + "_NOUTF");
+ } catch (IllegalArgumentException iae) {
+ // no special _NOUTF version found
+ }
+ }
+
+ if (map.containsKey(id)) {
+ return map.get(id);
+ }
+
+ return id.toString();
+ }
+
+ /**
+ * Translate the given {@link KeyStroke} into a user text {@link String} of
+ * size 3.
+ *
+ * @param key
+ * the key to translate
+ *
+ * @return the translated text
+ */
+ public String trans(KeyStroke key) {
+ String keyTrans = "";
+
+ switch (key.getKeyType()) {
+ case Enter:
+ if (UiColors.getInstance().isUnicode())
+ keyTrans = " ⤶ ";
+ else
+ keyTrans = "ENT";
+ break;
+ case Tab:
+ if (UiColors.getInstance().isUnicode())
+ keyTrans = " ↹ ";
+ else
+ keyTrans = "TAB";
+
+ break;
+ case Character:
+ keyTrans = " " + key.getCharacter() + " ";
+ break;
+ default:
+ keyTrans = "" + key.getKeyType();
+ int width = 3;
+ if (keyTrans.length() > width) {
+ keyTrans = keyTrans.substring(0, width);
+ } else if (keyTrans.length() < width) {
+ keyTrans = keyTrans
+ + new String(new char[width - keyTrans.length()])
+ .replace('\0', ' ');
+ }
+ break;
}
- return stringId.toString();
+ return keyTrans;
}
private Trans() {
// TODO: get from a file instead?
map.put(StringId.NULL, "");
+ map.put(StringId.DUMMY, "[dummy]");
+ // we could use: " ", "┃", "│"...
+ map.put(StringId.DEAULT_FIELD_SEPARATOR, "┃");
+ map.put(StringId.DEAULT_FIELD_SEPARATOR_NOUTF, "|");
map.put(StringId.KEY_ACTION_BACK, "Back");
- map.put(StringId.TITLE, "[ jVcard: version 0.9 ]");
- map.put(StringId.KEY_ACTION_VIEW_CONTACT, "view");
- map.put(StringId.KEY_ACTION_EDIT_CONTACT, "edit");
- map.put(StringId.KEY_ACTION_SWITCH_FORMAT, "Change view");
+ map.put(StringId.KEY_ACTION_HELP, "Help");
+ map.put(StringId.KEY_ACTION_VIEW_CONTACT, "Open");
+ map.put(StringId.KEY_ACTION_VIEW_CARD, "Open");
+ map.put(StringId.KEY_ACTION_EDIT_CONTACT, "Edit");
+ map.put(StringId.KEY_ACTION_DELETE_CONTACT, "Delete");
+ map.put(StringId.KEY_ACTION_SWITCH_FORMAT, "Change view");
+ map.put(StringId.KEY_ACTION_INVERT, "Invert colours");
+ map.put(StringId.KEY_ACTION_FULLSCREEN, "Fullscreen");
+ map.put(StringId.KEY_ACTION_SEARCH, "Search");
}
}