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
{
18 private TApplication app
;
20 private String filter
;
21 private List
<String
> formats
;
22 private int selectedFormat
;
23 private String format
;
25 public TuiContactListWindow(TApplication app
, Card card
) {
26 super(app
, "Contacts", false);
30 this.selectedFormat
= -1;
32 DisplayBundle map
= new DisplayBundle();
33 formats
= new LinkedList
<String
>();
34 for (String format
: map
.getString(DisplayOption
.CONTACT_LIST_FORMAT
)
39 addKeyBinding(TKeypress
.kbTab
, new TAction() {
46 addKeyBinding(TKeypress
.kbQ
, new TAction() {
58 public void onAction(int selectedLine
, int selectedColumn
) {
60 @SuppressWarnings("unused")
61 TWindow w
= new TuiContactWindow(app
, card
.get(selectedLine
));
62 } catch (IndexOutOfBoundsException e
) {
63 setMessage("Fail to get contact", true);
67 private void setCard(Card card
) {
68 List
<String
> headers
= new ArrayList
<String
>();
69 for (String field
: format
.split("\\|")) {
73 List
<List
<String
>> dataLines
= new ArrayList
<List
<String
>>();
75 for (Contact c
: card
) {
77 || c
.toString(format
, "|").toLowerCase()
78 .contains(filter
.toLowerCase())) {
79 dataLines
.add(Arrays
.asList(c
.toStringArray(format
,
85 setData(headers
, dataLines
);
88 private void switchFormat() {
89 if (formats
.size() == 0)
93 if (selectedFormat
>= formats
.size()) {
97 format
= formats
.get(selectedFormat
);
103 private void setMessage(String message
, boolean error
) {
105 System
.err
.println(message
);
107 System
.out
.println(message
);