Added UI for readealing

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@278 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Jannis Harder 2011-05-25 23:38:05 +02:00
parent 10e8c1f0e6
commit d69fdbacb9
3 changed files with 74 additions and 4 deletions

View file

@ -10,6 +10,8 @@ public class MockPlayerPanel implements IPlayerPanel {
/** */
public MockEvent endTurnEvent = new MockEvent();
/** */
public MockEvent redealEvent = new MockEvent();
/** */
public MockEvent sortByGroupsEvent = new MockEvent();
/** */
public MockEvent sortByRunsEvent = new MockEvent();
@ -35,4 +37,9 @@ public class MockPlayerPanel implements IPlayerPanel {
return endTurnEvent;
}
@Override
public IEvent getRedealEvent() {
return redealEvent;
}
}

View file

@ -10,7 +10,7 @@ public interface IPlayerPanel {
* Sets the time the player has left for his turn
*
* @param time
* the time left
* the time left
*/
public void setTimeLeft(int time);
@ -23,8 +23,8 @@ public interface IPlayerPanel {
public IEvent getSortByGroupsEvent();
/**
* The sort by runs event is emitted when the player wants to sort his stones
* by runs
* The sort by runs event is emitted when the player wants to sort his
* stones by runs
*
* @return the event
*/
@ -36,4 +36,11 @@ public interface IPlayerPanel {
* @return the event
*/
public IEvent getEndTurnEvent();
/**
* The redeal event is emitted when the player wants to get new stones
*
* @return the event
*/
IEvent getRedealEvent();
}

View file

@ -45,10 +45,14 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
private JButton handRowDownButton;
private JProgressBar timeBar;
private JButton endTurnButton;
private JButton keepStonesButton;
private JButton redealButton;
private Event sortByGroupsEvent = new Event();
private Event sortByRunsEvent = new Event();
private Event endTurnEvent = new Event();
private Event redealEvent = new Event();
HandPanel getHandPanel() {
return hand;
@ -90,6 +94,11 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
public IEvent getEndTurnEvent() {
return endTurnEvent;
}
@Override
public IEvent getRedealEvent() {
return redealEvent;
}
private void createLeftPanel() {
leftPanel = new JPanel();
@ -159,7 +168,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
timeBar.setStringPainted(true);
rightPanel.add(timeBar);
endTurnButton = new JButton("Zug beenden");
endTurnButton = new JButton("---");
endTurnButton.setFont(endTurnButton.getFont().deriveFont(0));
endTurnButton.setMargin(new Insets(0, 0, 0, 0));
endTurnButton.addActionListener(new ActionListener() {
@ -170,6 +179,30 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
});
rightPanel.add(endTurnButton);
keepStonesButton = new JButton("<html><center>Steine<br>behalten");
keepStonesButton.setFont(keepStonesButton.getFont().deriveFont(0));
keepStonesButton.setMargin(new Insets(0, 0, 0, 0));
keepStonesButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
endTurnEvent.emit();
}
});
rightPanel.add(keepStonesButton);
redealButton= new JButton("<html><center>Neu<br>geben");
redealButton.setFont(redealButton.getFont().deriveFont(0));
redealButton.setMargin(new Insets(0, 0, 0, 0));
redealButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
redealEvent.emit();
}
});
rightPanel.add(redealButton);
rightPanel.addComponentListener(new RightPanelResizeListener());
}
@ -225,6 +258,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
addComponentListener(rescaleListener);
hand.addComponentListener(rescaleListener);
setEndTurnMode(true, true);
}
private class LeftPanelResizeListener extends ComponentAdapter {
@ -276,8 +311,10 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
int firstLineHeight = (int) ((height - SIDE_PANEL_SEPARATOR) * SIDE_PANEL_FIRST_LINE_HEIGHT);
int buttonWidth = width;
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;
if (fontSize > MAX_BUTTON_FONT_SIZE)
fontSize = MAX_BUTTON_FONT_SIZE;
@ -293,6 +330,25 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
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);
keepStonesButton.setFont(keepStonesButton.getFont().deriveFont(smallFontSize));
}
}
public void setEndTurnMode(boolean inspectOnly, boolean mayRedeal) {
if (!inspectOnly) {
endTurnButton.setText("Zug beenden");
} else if (!mayRedeal) {
endTurnButton.setText("Nächster Spieler");
}
boolean smallButtons = mayRedeal && inspectOnly;
endTurnButton.setVisible(!smallButtons);
keepStonesButton.setVisible(smallButtons);
redealButton.setVisible(smallButtons);
}
}