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); public void setRedealedPlayerName(String name); public void setLastStonePlayerName(String name); /** * Sets the stones that are to be painted selected * * @param stones * the stones to be painted selected */ public void setSelectedStones(Collection 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 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 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 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, /** */ START_REDEAL_TURN_PANEL, /** */ START_LAST_TURN_PANEL, /** */ INVALID_TURN_PANEL, /** */ HUMAN_HAND_PANEL, /** */ NONHUMAN_HAND_PANEL, /** */ WIN_PANEL, /** */ NETWORK_WIN_PANEL } }