X-Git-Url: http://git.nikiroo.be/?p=jvcard.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2Fpanes%2FMainContentList.java;h=cac03e2426c615b9e61b2420d049408ed4d15f67;hp=38b775c2998af5986cf06e31440bd663b42d90d5;hb=296a0b75515b3a7424b98292c87cbbf2272b73f9;hpb=bcb54330afff6a443ab43ee3d38cc7f863c701b7 diff --git a/src/be/nikiroo/jvcard/tui/panes/MainContentList.java b/src/be/nikiroo/jvcard/tui/panes/MainContentList.java index 38b775c..cac03e2 100644 --- a/src/be/nikiroo/jvcard/tui/panes/MainContentList.java +++ b/src/be/nikiroo/jvcard/tui/panes/MainContentList.java @@ -3,15 +3,17 @@ package be.nikiroo.jvcard.tui.panes; import java.util.LinkedList; import java.util.List; +import be.nikiroo.jvcard.i18n.Trans.StringId; +import be.nikiroo.jvcard.tui.StringUtils; import be.nikiroo.jvcard.tui.UiColors; import be.nikiroo.jvcard.tui.UiColors.Element; import com.googlecode.lanterna.TextColor; +import com.googlecode.lanterna.gui2.AbstractListBox.ListItemRenderer; import com.googlecode.lanterna.gui2.ActionListBox; import com.googlecode.lanterna.gui2.Direction; import com.googlecode.lanterna.gui2.LinearLayout; import com.googlecode.lanterna.gui2.TextGUIGraphics; -import com.googlecode.lanterna.gui2.AbstractListBox.ListItemRenderer; abstract public class MainContentList extends MainContent implements Runnable { private ActionListBox lines; @@ -59,62 +61,58 @@ abstract public class MainContentList extends MainContent implements Runnable { lines = new ActionListBox(); - lines - .setListItemRenderer(new ListItemRenderer() { - /** - * This is the main drawing method for a single list box - * item, it applies the current theme to setup the colors - * and then calls {@code getLabel(..)} and draws the result - * using the supplied {@code TextGUIGraphics}. The graphics - * object is created just for this item and is restricted so - * that it can only draw on the area this item is occupying. - * The top-left corner (0x0) should be the starting point - * when drawing the item. - * - * @param graphics - * Graphics object to draw with - * @param listBox - * List box we are drawing an item from - * @param index - * Index of the item we are drawing - * @param item - * The item we are drawing - * @param selected - * Will be set to {@code true} if the item is - * currently selected, otherwise {@code false}, - * but please notice what context 'selected' - * refers to here (see {@code setSelectedIndex}) - * @param focused - * Will be set to {@code true} if the list box - * currently has input focus, otherwise {@code - * false} - */ - public void drawItem(TextGUIGraphics graphics, - ActionListBox listBox, int index, Runnable item, - boolean selected, boolean focused) { - - // width "-1" to reserve space for the optional vertical - // scroll bar - List parts = MainContentList.this.getLabel( - index, lines.getSize().getColumns() - 1, - selected, focused); - - int position = 0; - for (TextPart part : parts) { - graphics.setForegroundColor(part - .getForegroundColor()); - graphics.setBackgroundColor(part - .getBackgroundColor()); - String label = part.getText(); - - graphics.putString(position, 0, label); - position += label.length(); - } - } - }); - - addComponent(lines, LinearLayout - .createLayoutData(LinearLayout.Alignment.Fill)); + lines.setListItemRenderer(new ListItemRenderer() { + /** + * This is the main drawing method for a single list box item, it + * applies the current theme to setup the colors and then calls + * {@code getLabel(..)} and draws the result using the supplied + * {@code TextGUIGraphics}. The graphics object is created just for + * this item and is restricted so that it can only draw on the area + * this item is occupying. The top-left corner (0x0) should be the + * starting point when drawing the item. + * + * @param graphics + * Graphics object to draw with + * @param listBox + * List box we are drawing an item from + * @param index + * Index of the item we are drawing + * @param item + * The item we are drawing + * @param selected + * Will be set to {@code true} if the item is currently + * selected, otherwise {@code false}, but please notice + * what context 'selected' refers to here (see + * {@code setSelectedIndex}) + * @param focused + * Will be set to {@code true} if the list box currently + * has input focus, otherwise {@code false} + */ + public void drawItem(TextGUIGraphics graphics, + ActionListBox listBox, int index, Runnable item, + boolean selected, boolean focused) { + + // width "-1" to reserve space for the optional vertical + // scroll bar + List parts = MainContentList.this.getLabel(index, + lines.getSize().getColumns() - 1, selected, focused); + + int position = 0; + for (TextPart part : parts) { + graphics.setForegroundColor(part.getForegroundColor()); + graphics.setBackgroundColor(part.getBackgroundColor()); + + String label = StringUtils.sanitize(part.getText(), + UiColors.getInstance().isUnicode()); + + graphics.putString(position, 0, label); + position += label.length(); + } + } + }); + + addComponent(lines, + LinearLayout.createLayoutData(LinearLayout.Alignment.Fill)); } /** @@ -152,16 +150,14 @@ abstract public class MainContentList extends MainContent implements Runnable { public void setSelectedIndex(int index) { lines.setSelectedIndex(index); } - - + /** * Return the default content separator for text fields. * * @return the separator */ public String getSeparator() { - // we could use: " ", "┃", "│"... - return "┃"; + return StringId.DEAULT_FIELD_SEPARATOR.trans(); } @Override