summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/view/MockView.java6
-rw-r--r--src/jrummikub/control/ApplicationControl.java2
-rw-r--r--src/jrummikub/view/IView.java28
-rw-r--r--src/jrummikub/view/impl/PlayerPanel.java77
-rw-r--r--src/jrummikub/view/impl/View.java40
5 files changed, 106 insertions, 47 deletions
diff --git a/mock/jrummikub/view/MockView.java b/mock/jrummikub/view/MockView.java
index b1d9d95..6bc41a9 100644
--- a/mock/jrummikub/view/MockView.java
+++ b/mock/jrummikub/view/MockView.java
@@ -131,4 +131,10 @@ public class MockView implements IView {
return newGameEvent;
}
+ @Override
+ public void showInterface(boolean enable) {
+ // TODO Auto-generated method stub
+
+ }
+
}
diff --git a/src/jrummikub/control/ApplicationControl.java b/src/jrummikub/control/ApplicationControl.java
index 88c04e3..bcaf437 100644
--- a/src/jrummikub/control/ApplicationControl.java
+++ b/src/jrummikub/control/ApplicationControl.java
@@ -28,6 +28,7 @@ public class ApplicationControl {
public void startApplication() {
view.showScorePanel(false);
view.enableWinPanel(false);
+ view.showInterface(false);
SettingsControl settingsControl = new SettingsControl(view,
new GameSettings());
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
@@ -41,6 +42,7 @@ public class ApplicationControl {
startApplication();
}
});
+ view.showInterface(true);
gameControl.startGame();
}
diff --git a/src/jrummikub/view/IView.java b/src/jrummikub/view/IView.java
index 12475b5..c2afcf8 100644
--- a/src/jrummikub/view/IView.java
+++ b/src/jrummikub/view/IView.java
@@ -47,7 +47,7 @@ public interface IView {
* Sets the current player's name
*
* @param playerName
- * the player name
+ * the player name
*/
public void setCurrentPlayerName(String playerName);
@@ -55,7 +55,7 @@ public interface IView {
* Sets the stones that are to be painted selected
*
* @param stones
- * the stones to be painted selected
+ * the stones to be painted selected
*/
public void setSelectedStones(Collection<Stone> stones);
@@ -63,7 +63,7 @@ public interface IView {
* Enables or disables the player's StartTurnPanel
*
* @param enable
- * enable/disable
+ * enable/disable
*/
public void enableStartTurnPanel(boolean enable);
@@ -78,7 +78,7 @@ public interface IView {
* Enables or disables the panel shown when a player has won
*
* @param enable
- * enable/disable
+ * enable/disable
*/
public void enableWinPanel(boolean enable);
@@ -100,7 +100,7 @@ public interface IView {
* Shows or hides the game settings panel
*
* @param show
- * specifies if the panel shall be shown or hidden
+ * specifies if the panel shall be shown or hidden
*/
public void showSettingsPanel(boolean show);
@@ -108,7 +108,7 @@ public interface IView {
* Shows or hides the score panel
*
* @param show
- * specifies if the panel shall be shown or hidden
+ * specifies if the panel shall be shown or hidden
*/
public void showScorePanel(boolean show);
@@ -116,15 +116,15 @@ public interface IView {
* Is used for the PlayerPanel and ScorePanel to display a player's color
* along with the name
*
- * @param color
+ * @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
+ * Is used for the PlayerPanel to display if a player has laid out along with
+ * the name
*
- * @param hasLaidOut
+ * @param hasLaidOut specifies if the current player has laid out or not
*/
public void setHasLaidOut(boolean hasLaidOut);
@@ -134,4 +134,12 @@ public interface IView {
* @return newGameEvent
*/
IEvent getNewGameEvent();
+
+ /**
+ * Enables or disables most parts of the interface
+ *
+ * @param enable
+ * specifies if the interface is to be enabled or disabled
+ */
+ void showInterface(boolean enable);
}
diff --git a/src/jrummikub/view/impl/PlayerPanel.java b/src/jrummikub/view/impl/PlayerPanel.java
index e3bf2b8..1db7f50 100644
--- a/src/jrummikub/view/impl/PlayerPanel.java
+++ b/src/jrummikub/view/impl/PlayerPanel.java
@@ -62,7 +62,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
* Sets the current player name
*
* @param playerName
- * the player name
+ * the player name
*/
void setCurrentPlayerName(String playerName) {
currentPlayerNameLabel.setText(playerName);
@@ -129,8 +129,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
leftPanel.add(hasLaidOutLabel);
sortByGroupsButton = createButton(leftPanel,
- "<html><center>Nach Sammlungen sortieren",
- new ActionListener() {
+ "<html><center>Nach Sammlungen sortieren", new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
sortByGroupsEvent.emit();
@@ -151,8 +150,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
private void createRightPanel() {
rightPanel = new JPanel();
rightPanel.setLayout(null);
- rightPanel.setBorder(new EmptyBorder(SIDE_PANEL_INSET,
- SIDE_PANEL_INSET, SIDE_PANEL_INSET, SIDE_PANEL_INSET));
+ rightPanel.setBorder(new EmptyBorder(SIDE_PANEL_INSET, SIDE_PANEL_INSET,
+ SIDE_PANEL_INSET, SIDE_PANEL_INSET));
handRowUpButton = createButton(rightPanel, "<html><center>\u25B2",
new ActionListener() {
@@ -213,8 +212,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
private void rescale() {
Insets insets = getInsets();
int x = insets.left, y = insets.top, width = getWidth() - insets.left
- - insets.right, height = getHeight() - insets.top
- - insets.bottom;
+ - insets.right, height = getHeight() - insets.top - insets.bottom;
int boardWidth = hand.getWidth();
int handButtonWidth = (int) (width * HAND_ROW_BUTTON_RATIO);
int meanPanelWidth = (width - boardWidth) / 2;
@@ -223,8 +221,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
leftPanel.setBounds(x, y, leftPanelWidth, height);
hand.setBounds(x + leftPanelWidth, y, boardWidth, height);
- rightPanel.setBounds(x + leftPanelWidth + boardWidth, y,
- rightPanelWidth, height);
+ rightPanel.setBounds(x + leftPanelWidth + boardWidth, y, rightPanelWidth,
+ height);
leftPanel.validate();
rightPanel.validate();
@@ -232,8 +230,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
void updateButtons() {
handRowUpButton.setEnabled(hand.canRowUp());
- handRowUpButton.setForeground(hand.canRowUp() ? Color.BLACK
- : Color.GRAY);
+ handRowUpButton.setForeground(hand.canRowUp() ? Color.BLACK : Color.GRAY);
handRowDownButton.setEnabled(hand.canRowDown());
handRowDownButton.setForeground(hand.canRowDown() ? Color.BLACK
: Color.GRAY);
@@ -272,8 +269,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
public void componentResized(ComponentEvent e) {
Insets insets = leftPanel.getInsets();
int x = insets.left, y = insets.top, width = leftPanel.getWidth()
- - insets.left - insets.right, height = leftPanel
- .getHeight() - insets.top - insets.bottom;
+ - insets.left - insets.right, height = leftPanel.getHeight()
+ - insets.top - insets.bottom;
if (width > SIDE_PANEL_MAX_WIDTH) {
x += (width - SIDE_PANEL_MAX_WIDTH) / 4;
@@ -289,22 +286,18 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
fontSize = MAX_BUTTON_FONT_SIZE;
currentPlayerNameLabel.setBounds(x, y, width, oneLabelHeight);
- hasLaidOutLabel.setBounds(x, y + oneLabelHeight, width,
- oneLabelHeight);
- sortByGroupsButton.setBounds(x, y + labelHeight
- + SIDE_PANEL_SEPARATOR, buttonWidth, buttonHeight);
- sortByRunsButton.setBounds(x + buttonWidth + SIDE_PANEL_SEPARATOR,
- y + labelHeight + SIDE_PANEL_SEPARATOR, buttonWidth,
- buttonHeight);
+ hasLaidOutLabel.setBounds(x, y + oneLabelHeight, width, oneLabelHeight);
+ sortByGroupsButton.setBounds(x, y + labelHeight + SIDE_PANEL_SEPARATOR,
+ buttonWidth, buttonHeight);
+ sortByRunsButton.setBounds(x + buttonWidth + SIDE_PANEL_SEPARATOR, y
+ + labelHeight + SIDE_PANEL_SEPARATOR, buttonWidth, buttonHeight);
currentPlayerNameLabel.setFont(currentPlayerNameLabel.getFont()
.deriveFont(fontSize));
- hasLaidOutLabel.setFont(hasLaidOutLabel.getFont().deriveFont(
- fontSize));
+ hasLaidOutLabel.setFont(hasLaidOutLabel.getFont().deriveFont(fontSize));
sortByGroupsButton.setFont(sortByGroupsButton.getFont().deriveFont(
fontSize));
- sortByRunsButton.setFont(sortByRunsButton.getFont().deriveFont(
- fontSize));
+ sortByRunsButton.setFont(sortByRunsButton.getFont().deriveFont(fontSize));
}
}
@@ -328,8 +321,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
int smallButtonWidth = (width - SIDE_PANEL_SEPARATOR) / 2;
int buttonHeight = height - SIDE_PANEL_SEPARATOR - firstLineHeight;
float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 5;
- float smallFontSize = (float) Math.sqrt(smallButtonWidth
- * buttonHeight) / 5;
+ float smallFontSize = (float) Math.sqrt(smallButtonWidth * buttonHeight) / 5;
if (fontSize > MAX_BUTTON_FONT_SIZE)
fontSize = MAX_BUTTON_FONT_SIZE;
@@ -342,17 +334,16 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
fontSize * 1.5f));
timeBar.setBounds(x, y, width, firstLineHeight);
- endTurnButton.setBounds(x, y + firstLineHeight
- + SIDE_PANEL_SEPARATOR, buttonWidth, buttonHeight);
+ endTurnButton.setBounds(x, y + firstLineHeight + SIDE_PANEL_SEPARATOR,
+ buttonWidth, buttonHeight);
endTurnButton.setFont(endTurnButton.getFont().deriveFont(fontSize));
- redealButton.setBounds(x, y + firstLineHeight
- + SIDE_PANEL_SEPARATOR, smallButtonWidth, buttonHeight);
- redealButton.setFont(redealButton.getFont().deriveFont(
- smallFontSize));
- keepStonesButton.setBounds(x + smallButtonWidth
- + SIDE_PANEL_SEPARATOR, y + firstLineHeight
- + SIDE_PANEL_SEPARATOR, smallButtonWidth, buttonHeight);
+ redealButton.setBounds(x, y + firstLineHeight + SIDE_PANEL_SEPARATOR,
+ smallButtonWidth, buttonHeight);
+ redealButton.setFont(redealButton.getFont().deriveFont(smallFontSize));
+ keepStonesButton.setBounds(x + smallButtonWidth + SIDE_PANEL_SEPARATOR, y
+ + firstLineHeight + SIDE_PANEL_SEPARATOR, smallButtonWidth,
+ buttonHeight);
keepStonesButton.setFont(keepStonesButton.getFont().deriveFont(
smallFontSize));
@@ -371,4 +362,20 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
keepStonesButton.setVisible(smallButtons);
redealButton.setVisible(smallButtons);
}
+
+ void showButtons(boolean show) {
+ currentPlayerNameLabel.setVisible(show);
+ hasLaidOutLabel.setVisible(show);
+ sortByGroupsButton.setVisible(show);
+ sortByRunsButton.setVisible(show);
+ timeBar.setVisible(show);
+
+ if (!show) {
+ handRowDownButton.setEnabled(false);
+ handRowUpButton.setEnabled(false);
+ endTurnButton.setVisible(false);
+ redealButton.setVisible(false);
+ keepStonesButton.setVisible(false);
+ }
+ }
}
diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java
index b2ae7fb..e374f8c 100644
--- a/src/jrummikub/view/impl/View.java
+++ b/src/jrummikub/view/impl/View.java
@@ -4,15 +4,22 @@ import java.awt.Color;
import java.awt.Insets;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.border.MatteBorder;
+import jrummikub.model.Position;
import jrummikub.model.Stone;
+import jrummikub.model.StoneColor;
+import jrummikub.model.StoneSet;
import jrummikub.util.IEvent;
+import jrummikub.util.Pair;
import jrummikub.view.IHandPanel;
import jrummikub.view.IPlayerPanel;
import jrummikub.view.IScorePanel;
@@ -90,8 +97,8 @@ public class View extends JFrame implements IView {
mainLayer.add(table);
playerPanel = new PlayerPanel();
- playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0,
- 0, Color.BLACK));
+ playerPanel.setBorder(new MatteBorder(PLAYER_PANEL_BORDER_WIDTH, 0, 0, 0,
+ Color.BLACK));
mainLayer.add(playerPanel);
startTurnPanel = new StartTurnPanel();
@@ -214,4 +221,33 @@ public class View extends JFrame implements IView {
return winPanel.getEndProgramEvent();
}
+ @SuppressWarnings("unchecked")
+ private List<Pair<Stone, Position>> createDecorationStones() {
+ Pair<Stone, Position> stone1 = new Pair<Stone, Position>(new Stone(
+ StoneColor.RED), new Position(3.5f, 0));
+ Pair<Stone, Position> stone2 = new Pair<Stone, Position>(new Stone(13,
+ StoneColor.BLACK), new Position(5, 0));
+ Pair<Stone, Position> stone3 = new Pair<Stone, Position>(new Stone(13,
+ StoneColor.ORANGE), new Position(6, 0));
+ Pair<Stone, Position> stone4 = new Pair<Stone, Position>(new Stone(13,
+ StoneColor.BLUE), new Position(7, 0));
+ Pair<Stone, Position> stone5 = new Pair<Stone, Position>(new Stone(13,
+ StoneColor.RED), new Position(8, 0));
+ Pair<Stone, Position> stone6 = new Pair<Stone, Position>(new Stone(
+ StoneColor.BLACK), new Position(9.5f, 0));
+
+ return Arrays.asList(stone1, stone2, stone3, stone4, stone5, stone6);
+ }
+
+ @Override
+ public void showInterface(boolean enable) {
+ if (enable) {
+ playerPanel.showButtons(true);
+ } else {
+ List<Pair<StoneSet, Position>> emptyTable = Collections.emptyList();
+ table.setStoneSets(emptyTable);
+ playerPanel.getHandPanel().setStones(createDecorationStones());
+ playerPanel.showButtons(false);
+ }
+ }
}