1 package be
.nikiroo
.jvcard
.tui
.windows
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Arrays
;
5 import java
.util
.LinkedList
;
9 import jexer
.TApplication
;
10 import jexer
.TKeypress
;
12 import be
.nikiroo
.jvcard
.Card
;
13 import be
.nikiroo
.jvcard
.Contact
;
14 import be
.nikiroo
.jvcard
.resources
.DisplayBundle
;
15 import be
.nikiroo
.jvcard
.resources
.DisplayOption
;
17 public class TuiContactListWindow
extends TuiBrowserWindow
{
19 private String filter
;
20 private List
<String
> formats
;
21 private int selectedFormat
;
22 private String format
;
24 public TuiContactListWindow(TuiBasicWindow parent
, Card card
) {
25 super(parent
, "Contacts", false);
28 this.selectedFormat
= -1;
30 DisplayBundle map
= new DisplayBundle();
31 formats
= new LinkedList
<String
>();
32 for (String format
: map
.getString(DisplayOption
.CONTACT_LIST_FORMAT
)
37 addKeyBinding(TKeypress
.kbQ
, "Quit", new TAction() {
44 addKeyBinding(TKeypress
.kbTab
, "Switch format", new TAction() {
56 public void onAction(int selectedLine
, int selectedColumn
) {
58 @SuppressWarnings("unused")
59 TWindow w
= new TuiContactWindow(TuiContactListWindow
.this, card
.get(selectedLine
));
60 } catch (IndexOutOfBoundsException e
) {
61 setMessage("Fail to get contact", true);
65 private void setCard(Card card
) {
66 List
<String
> headers
= new ArrayList
<String
>();
67 for (String field
: format
.split("\\|")) {
71 List
<List
<String
>> dataLines
= new ArrayList
<List
<String
>>();
73 for (Contact c
: card
) {
75 || c
.toString(format
, "|").toLowerCase()
76 .contains(filter
.toLowerCase())) {
77 dataLines
.add(Arrays
.asList(c
.toStringArray(format
,
83 setData(headers
, dataLines
);
86 private void switchFormat() {
87 if (formats
.size() == 0)
91 if (selectedFormat
>= formats
.size()) {
95 format
= formats
.get(selectedFormat
);
101 private void setMessage(String message
, boolean error
) {
103 System
.err
.println(message
);
105 System
.out
.println(message
);