diff options
Diffstat (limited to 'src/jrummikub/view/impl/PlayerPanel.java')
-rw-r--r-- | src/jrummikub/view/impl/PlayerPanel.java | 146 |
1 files changed, 83 insertions, 63 deletions
diff --git a/src/jrummikub/view/impl/PlayerPanel.java b/src/jrummikub/view/impl/PlayerPanel.java index dcd22ed..d69323f 100644 --- a/src/jrummikub/view/impl/PlayerPanel.java +++ b/src/jrummikub/view/impl/PlayerPanel.java @@ -53,11 +53,13 @@ class PlayerPanel extends JPanel implements IPlayerPanel { private JButton endTurnButton; private JButton keepStonesButton; private JButton redealButton; + private JButton pauseButton; private Event sortByGroupsEvent = new Event(); private Event sortByRunsEvent = new Event(); private Event endTurnEvent = new Event(); private Event redealEvent = new Event(); + private Event pauseEvent = new Event(); HandPanel getHandPanel() { return hand; @@ -117,6 +119,10 @@ class PlayerPanel extends JPanel implements IPlayerPanel { return redealEvent; } + IEvent getPauseEvent() { + return pauseEvent; + } + private void createLeftPanel() { leftPanel = new JPanel(); leftPanel.setLayout(null); @@ -206,6 +212,13 @@ class PlayerPanel extends JPanel implements IPlayerPanel { redealEvent.emit(); } }); + + pauseButton = createButton(rightPanel, null, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + pauseEvent.emit(); + } + }); } private JButton createButton(JPanel panel, String caption, @@ -271,6 +284,67 @@ class PlayerPanel extends JPanel implements IPlayerPanel { hand.addComponentListener(rescaleListener); } + @Override + public void setEndTurnMode(TurnMode turnMode) { + + switch (turnMode) { + case MAY_REDEAL: + endTurnButton.setVisible(false); + keepStonesButton.setVisible(true); + redealButton.setVisible(true); + break; + case INSPECT_ONLY: + endTurnButton.setText("N\u00e4chster Spieler"); + endTurnButton.setVisible(true); + keepStonesButton.setVisible(false); + redealButton.setVisible(false); + break; + case NORMAL_TURN: + endTurnButton.setText("Zug beenden"); + endTurnButton.setVisible(true); + keepStonesButton.setVisible(false); + redealButton.setVisible(false); + break; + } + } + + void showButtons(boolean show) { + currentPlayerNameLabel.setVisible(show); + hasLaidOutLabel.setVisible(show); + sortByGroupsButton.setVisible(show); + sortByRunsButton.setVisible(show); + timeBar.setVisible(show); + pauseButton.setVisible(show); + + if (!show) { + handRowDownButton.setForeground(Color.GRAY); + handRowDownButton.setEnabled(false); + handRowUpButton.setForeground(Color.GRAY); + handRowUpButton.setEnabled(false); + endTurnButton.setVisible(false); + redealButton.setVisible(false); + keepStonesButton.setVisible(false); + } + } + + void enableButtons(boolean enable) { + sortByGroupsButton.setEnabled(enable); + sortByRunsButton.setEnabled(enable); + if (!enable) { + setEndTurnMode(TurnMode.NORMAL_TURN); + endTurnButton.setText("<html><center>Computer denkt nach"); + hand.setStones(Collections.<Pair<Stone, Position>> emptyList()); + handRowDownButton.setForeground(Color.GRAY); + handRowDownButton.setEnabled(false); + handRowUpButton.setForeground(Color.GRAY); + handRowUpButton.setEnabled(false); + } + endTurnButton.setEnabled(enable); + redealButton.setEnabled(enable); + keepStonesButton.setEnabled(enable); + hand.setEnabled(enable); + } + private class LeftPanelResizeListener extends ComponentAdapter { @Override public void componentResized(ComponentEvent e) { @@ -341,10 +415,16 @@ class PlayerPanel extends JPanel implements IPlayerPanel { fontSize * 1.5f)); handRowDownButton.setBounds(0, getHeight() / 2, handButtonWidth, getHeight() / 2); - handRowDownButton.setFont(handRowDownButton.getFont().deriveFont( - fontSize * 1.5f)); + handRowDownButton.setFont(handRowDownButton.getFont() + .deriveFont(fontSize)); + + timeBar.setBounds(x, y, width - firstLineHeight - SIDE_PANEL_SEPARATOR, + firstLineHeight); + pauseButton.setBounds(x + width - firstLineHeight, y, firstLineHeight, + firstLineHeight); + pauseButton.setIcon(ImageUtil + .createPauseIcon((int) (firstLineHeight * 0.5f))); - timeBar.setBounds(x, y, width, firstLineHeight); endTurnButton.setBounds(x, y + firstLineHeight + SIDE_PANEL_SEPARATOR, buttonWidth, buttonHeight); endTurnButton.setFont(endTurnButton.getFont().deriveFont(fontSize)); @@ -360,64 +440,4 @@ class PlayerPanel extends JPanel implements IPlayerPanel { } } - - @Override - public void setEndTurnMode(TurnMode turnMode) { - - switch (turnMode) { - case MAY_REDEAL: - endTurnButton.setVisible(false); - keepStonesButton.setVisible(true); - redealButton.setVisible(true); - break; - case INSPECT_ONLY: - endTurnButton.setText("N\u00e4chster Spieler"); - endTurnButton.setVisible(true); - keepStonesButton.setVisible(false); - redealButton.setVisible(false); - break; - case NORMAL_TURN: - endTurnButton.setText("Zug beenden"); - endTurnButton.setVisible(true); - keepStonesButton.setVisible(false); - redealButton.setVisible(false); - break; - } - } - - void showButtons(boolean show) { - currentPlayerNameLabel.setVisible(show); - hasLaidOutLabel.setVisible(show); - sortByGroupsButton.setVisible(show); - sortByRunsButton.setVisible(show); - timeBar.setVisible(show); - - if (!show) { - handRowDownButton.setForeground(Color.GRAY); - handRowDownButton.setEnabled(false); - handRowUpButton.setForeground(Color.GRAY); - handRowUpButton.setEnabled(false); - endTurnButton.setVisible(false); - redealButton.setVisible(false); - keepStonesButton.setVisible(false); - } - } - - void enableButtons(boolean enable) { - sortByGroupsButton.setEnabled(enable); - sortByRunsButton.setEnabled(enable); - if (!enable) { - setEndTurnMode(TurnMode.NORMAL_TURN); - endTurnButton.setText("<html><center>Computer denkt nach"); - hand.setStones(Collections.<Pair<Stone, Position>> emptyList()); - handRowDownButton.setForeground(Color.GRAY); - handRowDownButton.setEnabled(false); - handRowUpButton.setForeground(Color.GRAY); - handRowUpButton.setEnabled(false); - } - endTurnButton.setEnabled(enable); - redealButton.setEnabled(enable); - keepStonesButton.setEnabled(enable); - hand.setEnabled(enable); - } } |