summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/IView.java
blob: 91a2e231b6d876028eb50b0a881134210381cba2 (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
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
package jrummikub.view;

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

import jrummikub.model.Stone;
import jrummikub.model.StoneSet;
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();

	/**
	 * Returns the side panel
	 * 
	 * @return the side panel
	 */
	public ISidePanel getSidePanel();

	/**
	 * @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 start turn event is emitted when the player knows what invalid stones
	 * he played
	 * 
	 * @return the event
	 */
	IEvent getAcknowledgeInvalidEvent();

	/**
	 * 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 load event is emitted when the user wants to load a previously saved
	 * game state
	 * 
	 * @return the event
	 */
	public IEvent 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);

	/**
	 * Clears user input of the resetLoginPanel
	 */
	public void resetLoginPanel();

	/**
	 * 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);

	/**
	 * Show/hide side panel
	 * 
	 * @param show
	 *            true to show
	 */
	void showSidePanel(boolean show);

	/**
	 * Is set if a player tried to lay out less than initial meld threshold
	 * 
	 * @param points
	 *            initial meld threshold
	 */
	public void setInitialMeldError(int points);

	/**
	 * Show stone collection
	 * 
	 * @param enable
	 *            showing collection
	 */
	public void setStoneCollectionHidden(boolean enable);

	/**
	 * Is set if the player tried to modify the table without laying out first
	 */
	public void setInitialMeldFirstError();

	/**
	 * Set invalid sets to enable showing
	 * 
	 * @param sets
	 *            invalid sets on table
	 */
	public void setInvalidStoneSets(Collection<StoneSet> sets);

	/**
	 * Show when loading is unsuccessful
	 */
	public void showLoadingError();

	/**
	 * Show an error message when the server couldn't be started
	 * 
	 * @param alreadyRunning
	 *            true when the server is already running on this machine
	 */
	public void showServerStartupError(boolean alreadyRunning);

	/**
	 * Enables/disables saving in menu bar
	 * 
	 * @param enable
	 *            saving possible
	 */
	public void enableSave(boolean enable);

	/**
	 * Sets the quit warning panel visible
	 * 
	 * @param show
	 *            is visible
	 */
	public void showQuitWarningPanel(boolean show);

	/**
	 * The quit event is emitted when the user wants to leave the application
	 * 
	 * @return the event
	 */
	public IEvent getQuitEvent();

	/**
	 * Getter for quit warning panel
	 * 
	 * @return the panel
	 */
	public IQuitWarningPanel getQuitWarningPanel();

	/**
	 * The load file event is emitted when the user chose to discard the current
	 * game to save another
	 * 
	 * @return the event
	 */
	public IEvent1<File> getLoadFileEvent();

	/**
	 * Loading a game
	 */
	public void load();

	/**
	 * Set the connect panel visible
	 * 
	 * @param show
	 *            is visible
	 */
	public void showConnectPanel(boolean show);

	/**
	 * Getter for connect panel
	 * 
	 * @return the panel
	 */
	public IConnectPanel getConnectPanel();

	/**
	 * Sets the pause button if pausing should be possible in the current
	 * situation
	 * 
	 * @param mayPause
	 *            pausing possible
	 */
	public void setMayPause(boolean mayPause);

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