summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/IView.java
blob: 33f62841dbee238b1bb0681c737d4cc68018c77a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
package jrummikub.view;

import java.awt.Color;
import java.io.File;
import java.util.Collection;

import jrummikub.model.Stone;
import jrummikub.util.IEvent;
import jrummikub.util.IEvent1;

/**
 * The top-level view interface
 */
public interface IView {
	/**
	 * Returns the settings panel
	 * 
	 * @return the settings panel
	 */
	public ISettingsPanel getSettingsPanel();

	/**
	 * Returns the score panel
	 * 
	 * @return the score panel
	 */
	public IScorePanel getScorePanel();

	/**
	 * Returns the table
	 * 
	 * @return the table
	 */
	public ITablePanel getTablePanel();

	/**
	 * @return the board where the players hand stones are displayed
	 */
	public IHandPanel getHandPanel();

	/**
	 * Returns the player panel
	 * 
	 * @return the playerPanel
	 */
	public IPlayerPanel getPlayerPanel();

	/**
	 * Sets the current player's name
	 * 
	 * @param playerName
	 *            the player name
	 */
	public void setCurrentPlayerName(String playerName);

	/**
	 * Sets the stones that are to be painted selected
	 * 
	 * @param stones
	 *            the stones to be painted selected
	 */
	public void setSelectedStones(Collection<Stone> stones);

	/**
	 * The start turn event is emitted when the player wants to start his turn
	 * 
	 * @return the event
	 */
	public IEvent getStartTurnEvent();

	/**
	 * The quit event is emitted when the player wants to quit the game
	 * 
	 * @return the event
	 */
	public IEvent getEndProgramEvent();

	/**
	 * The new round event is emitted when the player wants to start a new round
	 * 
	 * @return the event
	 */
	public IEvent getNewRoundEvent();

	/**
	 * Shows or hides the game settings panel
	 * 
	 * @param show
	 *            specifies if the panel shall be shown or hidden
	 */
	public void showSettingsPanel(boolean show);

	/**
	 * Shows or hides the score panel
	 * 
	 * @param show
	 *            specifies if the panel shall be shown or hidden
	 */
	public void showScorePanel(boolean show);

	/**
	 * Is used for the PlayerPanel and ScorePanel to display a player's color
	 * along with the name
	 * 
	 * @param color
	 *            the current player's color
	 */
	public void setCurrentPlayerColor(Color color);

	/**
	 * Is used for the PlayerPanel to display if a player has laid out along
	 * with the name
	 * 
	 * @param hasLaidOut
	 *            specifies if the current player has laid out or not
	 */
	public void setCurrentPlayerHasLaidOut(boolean hasLaidOut);

	/**
	 * Is emitted if the player wants to end the game and start a new one
	 * 
	 * @return newGameEvent
	 */
	public IEvent getNewGameEvent();

	/**
	 * Sets the bottom panels type
	 * 
	 * @param type
	 *            the type of the bottom panel
	 */
	public void setBottomPanel(BottomPanelType type);

	/**
	 * The menu new game event is emitted when the user selects the new game
	 * menu entry
	 * 
	 * @return the event
	 */
	public IEvent getMenuNewGameEvent();

	/**
	 * The menu quit event is emitted when the user selects the quit menu entry
	 * 
	 * @return the event
	 */
	public IEvent getMenuQuitEvent();

	/**
	 * The load event is emitted when the user wants to load a previously saved
	 * game state
	 * 
	 * @return the event
	 */
	public IEvent1<File> getLoadEvent();

	/**
	 * The save event is emitted when the user wants to save the current game
	 * state
	 * 
	 * @return the event
	 */
	public IEvent1<File> getSaveEvent();

	/**
	 * The pause event is emitted when the user wants to pause the current turn
	 * 
	 * @return the event
	 */
	public IEvent getPauseEvent();

	/**
	 * The end pause event is emitted when the user wants to sresume the game
	 * after a pause
	 * 
	 * @return the event
	 */
	public IEvent getEndPauseEvent();

	/**
	 * Hides all view elements and panels except for the cleared table and an
	 * empty hand panel
	 */
	public void clearView();

	/**
	 * The network game event is emitted when the user chooses a network game
	 * 
	 * @return the event
	 */
	public IEvent getNetworkGameEvent();

	/**
	 * Getter for login panel
	 * 
	 * @return login panel
	 */
	public ILoginPanel getLoginPanel();

	/**
	 * Getter for game list panel
	 * 
	 * @return game list panel
	 */
	public IGameListPanel getGameListPanel();

	/**
	 * Show/hide login panel
	 * 
	 * @param show
	 *            true = login panel is shown
	 */
	public void showLoginPanel(boolean show);

	/**
	 * Enable/disable pause mode
	 * 
	 * @param enable
	 *            true = enable
	 */
	public void enablePauseMode(boolean enable);

	/**
	 * Show/hide game list panel
	 * 
	 * @param show
	 *            true = show
	 */
	public void showGameListPanel(boolean show);

	/**
	 * Different types of bottom panels
	 */
	public enum BottomPanelType {
		/** */
		START_GAME_PANEL,
		/** */
		START_TURN_PANEL,
		/** */
		HUMAN_HAND_PANEL,
		/** */
		COMPUTER_HAND_PANEL,
		/** */
		WIN_PANEL
	}

}