Update lanterna, fix bugs, implement save...
[jvcard.git] / src / be / nikiroo / jvcard / tui / panes / MainContent.java
1 package be.nikiroo.jvcard.tui.panes;
2
3 import java.util.List;
4
5 import be.nikiroo.jvcard.tui.KeyAction;
6
7 import com.googlecode.lanterna.gui2.Direction;
8 import com.googlecode.lanterna.gui2.LinearLayout;
9 import com.googlecode.lanterna.gui2.Panel;
10
11 /**
12 * This class represents the main content that you can see in this application
13 * (i.e., everything but the title and the actions keys is a {@link Panel}
14 * extended from this class).
15 *
16 * @author niki
17 *
18 */
19 abstract public class MainContent extends Panel {
20
21 public MainContent() {
22 super();
23 }
24
25 public MainContent(Direction dir) {
26 super();
27 LinearLayout layout = new LinearLayout(dir);
28 layout.setSpacing(0);
29 setLayoutManager(layout);
30 }
31
32 /**
33 * The {@link KeyAction#Mode} that links to this {@link MainContent}.
34 *
35 * @return the linked mode
36 */
37 abstract public KeyAction.Mode getMode();
38
39 /**
40 * The kind of data displayed by this {@link MainContent}.
41 *
42 * @return the kind of data displayed
43 */
44 abstract public KeyAction.DataType getDataType();
45
46 /**
47 * Returns the list of actions and the keys that are bound to it.
48 *
49 * @return the list of actions
50 */
51 abstract public List<KeyAction> getKeyBindings();
52
53 /**
54 * The title to display in addition to the application name, or NULL for the
55 * default application name.
56 *
57 * @return the title or NULL
58 */
59 public String getTitle() {
60 return null;
61 }
62
63 /**
64 * Returns an error message ready to be displayed if we should ask something
65 * to the user before exiting.
66 *
67 * @return an error message or NULL
68 */
69 public String getExitWarning() {
70 return null;
71 }
72
73 /**
74 * Move the active cursor (not the text cursor, but the currently active
75 * item).
76 *
77 * @param x
78 * the horizontal move (&lt; 0 for left, &gt; 0 for right)
79 * @param y
80 * the vertical move (&lt; 0 for up, &gt; 0 for down)
81 *
82 * @return the error message to display if any
83 */
84 public String move(int x, int y) {
85 return null;
86 }
87
88 /**
89 * Return the number of items in this {@link MainContent}, or -1 if this
90 * {@link MainContent} is not countable.
91 *
92 * @return -1 or the number of present items
93 */
94 public int getCount() {
95 return -1;
96 }
97
98 /**
99 * Refresh the display according to the actual data (this method should be
100 * called when the data changed).
101 */
102 public void refreshData() {
103 invalidate();
104 }
105 }