Add more warnings source to 1.6) and fix warnings
[jvcard.git] / src / be / nikiroo / jvcard / tui / panes / MainContentList.java
index 23892e58cd13a1cf654905b893f574408dce5e64..f7aaec4373c9c50a03f60e655933310c156d093d 100644 (file)
@@ -3,11 +3,11 @@ 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.Main;
-import be.nikiroo.jvcard.tui.StringUtils;
+import be.nikiroo.jvcard.launcher.Main;
+import be.nikiroo.jvcard.resources.ColorOption;
+import be.nikiroo.jvcard.resources.StringId;
 import be.nikiroo.jvcard.tui.UiColors;
-import be.nikiroo.jvcard.tui.UiColors.Element;
+import be.nikiroo.utils.StringUtils;
 
 import com.googlecode.lanterna.TextColor;
 import com.googlecode.lanterna.gui2.AbstractListBox.ListItemRenderer;
@@ -28,9 +28,9 @@ abstract public class MainContentList extends MainContent implements Runnable {
         */
        public class TextPart {
                private String text;
-               private Element element;
+               private ColorOption element;
 
-               public TextPart(String text, Element element) {
+               public TextPart(String text, ColorOption element) {
                        this.text = text;
                        this.element = element;
                }
@@ -39,25 +39,24 @@ abstract public class MainContentList extends MainContent implements Runnable {
                        return text;
                }
 
-               public Element getElement() {
+               public ColorOption getElement() {
                        return element;
                }
 
                public TextColor getForegroundColor() {
                        if (element != null)
-                               return element.getForegroundColor();
-                       return Element.DEFAULT.getForegroundColor();
+                               return UiColors.getForegroundColor(element);
+                       return UiColors.getForegroundColor(ColorOption.DEFAULT);
                }
 
                public TextColor getBackgroundColor() {
                        if (element != null)
-                               return element.getBackgroundColor();
-                       return Element.DEFAULT.getBackgroundColor();
+                               return UiColors.getBackgroundColor(element);
+                       return UiColors.getBackgroundColor(ColorOption.DEFAULT);
                }
        }
 
-       public MainContentList(final UiColors.Element normalStyle,
-                       final UiColors.Element selectedStyle) {
+       public MainContentList() {
                super(Direction.VERTICAL);
 
                lines = new ActionListBox();
@@ -89,6 +88,7 @@ abstract public class MainContentList extends MainContent implements Runnable {
                         *            Will be set to {@code true} if the list box currently
                         *            has input focus, otherwise {@code false}
                         */
+                       @Override
                        public void drawItem(TextGUIGraphics graphics,
                                        ActionListBox listBox, int index, Runnable item,
                                        boolean selected, boolean focused) {
@@ -104,7 +104,7 @@ abstract public class MainContentList extends MainContent implements Runnable {
                                        graphics.setBackgroundColor(part.getBackgroundColor());
 
                                        String label = StringUtils.sanitize(part.getText(),
-                                                       UiColors.getInstance().isUnicode());
+                                                       Main.isUnicode());
 
                                        graphics.putString(position, 0, label);
                                        position += label.length();
@@ -126,6 +126,39 @@ abstract public class MainContentList extends MainContent implements Runnable {
                lines.addItem(line, this);
        }
 
+       /**
+        * Delete the given item.
+        * 
+        * Remark: it will only delete the first found instance if multiple
+        * instances of this item are present.
+        * 
+        * @param line
+        *            the line to delete
+        * 
+        * @return TRUE if the item was deleted
+        */
+       public boolean removeItem(String line) {
+               boolean deleted = false;
+
+               List<Runnable> copy = lines.getItems();
+               for (int index = 0; index < copy.size(); index++) {
+                       if (copy.get(index).toString().equals(line)) {
+                               deleted = true;
+                               copy.remove(index);
+                               break;
+                       }
+               }
+
+               int index = getSelectedIndex();
+               clearItems();
+               for (Runnable run : copy) {
+                       addItem(run.toString());
+               }
+               setSelectedIndex(index);
+
+               return deleted;
+       }
+
        /**
         * Clear all the items in this {@link MainContentList}
         */
@@ -193,16 +226,17 @@ abstract public class MainContentList extends MainContent implements Runnable {
         * 
         * @return the text representation
         */
-       protected List<TextPart> getLabel(int index, int width, boolean selected,
+       protected List<TextPart> getLabel(int index,
+                       @SuppressWarnings("unused") int width, boolean selected,
                        boolean focused) {
                List<TextPart> parts = new LinkedList<TextPart>();
 
                if (selected && focused) {
                        parts.add(new TextPart("" + lines.getItems().get(index),
-                                       Element.CONTACT_LINE_SELECTED));
+                                       ColorOption.CONTACT_LINE_SELECTED));
                } else {
                        parts.add(new TextPart("" + lines.getItems().get(index),
-                                       Element.CONTACT_LINE));
+                                       ColorOption.CONTACT_LINE));
                }
 
                return parts;