summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/IView.java
blob: 797c70403d0e7dab0f99a22de0e216da84902aef (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
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);

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

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

	public void clearView();
}