0bc9b29fce7bc091d0f3696534776b640b340b34
[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 instead of the application name, or NULL for the
55 * default application name.
56 *
57 * @return the title or NULL
58 */
59 abstract public String getTitle();
60
61 /**
62 * Returns an error message ready to be displayed if we should ask something
63 * to the user before exiting.
64 *
65 * @return an error message or NULL
66 */
67 public String getExitWarning() {
68 return null;
69 }
70
71 /**
72 * Move the active cursor (not the text cursor, but the currently active
73 * item).
74 *
75 * @param x
76 * the horizontal move (&lt; 0 for left, &gt; 0 for right)
77 * @param y
78 * the vertical move (&lt; 0 for up, &gt; 0 for down)
79 *
80 * @return the error message to display if any
81 */
82 public String move(int x, int y) {
83 return null;
84 }
85
86 /**
87 * Return the number of items in this {@link MainContent}, or -1 if this
88 * {@link MainContent} is not countable.
89 *
90 * @return -1 or the number of present items
91 */
92 public int getCount() {
93 return -1;
94 }
95 }