Some changes to support Files
[jvcard.git] / src / be / nikiroo / jvcard / tui / panes / FileList.java
1 package be.nikiroo.jvcard.tui.panes;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.LinkedList;
6 import java.util.List;
7
8 import be.nikiroo.jvcard.Card;
9 import be.nikiroo.jvcard.i18n.Trans;
10 import be.nikiroo.jvcard.parsers.Format;
11 import be.nikiroo.jvcard.tui.KeyAction;
12 import be.nikiroo.jvcard.tui.UiColors;
13 import be.nikiroo.jvcard.tui.KeyAction.DataType;
14 import be.nikiroo.jvcard.tui.KeyAction.Mode;
15
16 import com.googlecode.lanterna.input.KeyType;
17
18 public class FileList extends MainContentList {
19 private List<File> files;
20
21 public FileList(List<File> files) {
22 super(UiColors.Element.CONTACT_LINE,
23 UiColors.Element.CONTACT_LINE_SELECTED);
24
25 setFiles(files);
26 }
27
28 /**
29 * Change the list of currently selected files.
30 *
31 * @param files
32 * the new files
33 */
34 public void setFiles(List<File> files) {
35 clearItems();
36 this.files = files;
37
38 // TODO
39 for (File file : files) {
40 addItem(file.getName());
41 }
42
43 setSelectedIndex(0);
44 }
45
46 @Override
47 public DataType getDataType() {
48 return DataType.CARD_FILES;
49 }
50
51 @Override
52 public String getExitWarning() {
53 // TODO Auto-generated method stub
54 return null;
55 }
56
57 @Override
58 public List<KeyAction> getKeyBindings() {
59 List<KeyAction> actions = new LinkedList<KeyAction>();
60
61 // TODO del, save...
62 actions.add(new KeyAction(Mode.CONTACT_LIST, KeyType.Enter,
63 Trans.StringId.KEY_ACTION_VIEW_CARD) {
64 @Override
65 public Object getObject() {
66 File file = files.get(getSelectedIndex());
67 Format format = Format.Abook;
68 String ext = file.getName();
69 if (ext.contains(".")) {
70 String tab[] = ext.split("\\.");
71 if (tab.length > 1
72 && tab[tab.length - 1].equalsIgnoreCase("vcf")) {
73 format = Format.VCard21;
74 }
75 }
76 try {
77 return new Card(file, format);
78 } catch (IOException ioe) {
79 ioe.printStackTrace();
80 return null;
81 }
82 }
83 });
84
85 return actions;
86 }
87
88 @Override
89 public Mode getMode() {
90 return Mode.FILE_LIST;
91 }
92
93 @Override
94 public String getTitle() {
95 // TODO Auto-generated method stub
96 return null;
97 }
98
99 }