diff options
Diffstat (limited to 'src/jrummikub/view/impl')
-rw-r--r-- | src/jrummikub/view/impl/View.java | 64 | ||||
-rw-r--r-- | src/jrummikub/view/impl/WinPanel.java | 99 |
2 files changed, 100 insertions, 63 deletions
diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java index 0900f92..962ecf0 100644 --- a/src/jrummikub/view/impl/View.java +++ b/src/jrummikub/view/impl/View.java @@ -187,8 +187,7 @@ public class View extends JFrame implements IView { showSettingsPanel(false); showLoginPanel(false); showGameListPanel(false); - getHandPanel().setStones( - Collections.<Pair<Stone, Position>> emptyList()); + getHandPanel().setStones(Collections.<Pair<Stone, Position>> emptyList()); getTablePanel().setStoneSets( Collections.<Pair<StoneSet, Position>> emptyList()); setSelectedStones(Collections.<Stone> emptyList()); @@ -206,8 +205,8 @@ public class View extends JFrame implements IView { .showMessageDialog( this, alreadyRunning ? "Ein XMPP-Server l\u00e4ft bereits auf diesem Computer" - : "Der Server konnte nicht gestartet werden", - "Fehler", JOptionPane.ERROR_MESSAGE); + : "Der Server konnte nicht gestartet werden", "Fehler", + JOptionPane.ERROR_MESSAGE); } @@ -396,8 +395,7 @@ public class View extends JFrame implements IView { table = new TablePanel(); mainLayer.add(table); - table.setBorder(new MatteBorder(0, 0, TABLE_BORDER_WIDTH, 0, - Color.BLACK)); + table.setBorder(new MatteBorder(0, 0, TABLE_BORDER_WIDTH, 0, Color.BLACK)); playerPanel = new PlayerPanel(); mainLayer.add(playerPanel); @@ -417,9 +415,9 @@ public class View extends JFrame implements IView { sidePanel = new SidePanel(); sidePanel.setVisible(false); mainLayer.add(sidePanel); - sidePanel.setBorder(new CompoundBorder(new MatteBorder(0, 0, 0, 1, - Color.BLACK), new MatteBorder(0, 0, TABLE_BORDER_WIDTH, 0, - Color.GRAY))); + sidePanel + .setBorder(new CompoundBorder(new MatteBorder(0, 0, 0, 1, Color.BLACK), + new MatteBorder(0, 0, TABLE_BORDER_WIDTH, 0, Color.GRAY))); } @Override @@ -623,24 +621,24 @@ public class View extends JFrame implements IView { @SuppressWarnings("unchecked") private List<Pair<Stone, Position>> createDecorationStones() { - Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone( - -'J', StoneColor.BLACK), new Position(2.5f, 0)); - Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone( - -'R', StoneColor.ORANGE), new Position(3.5f, 0)); - Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone( - -'u', StoneColor.BLUE), new Position(4.5f, 0)); - Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone( - -'m', StoneColor.RED), new Position(5.5f, 0)); - Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone( - -'m', StoneColor.GREEN), new Position(6.5f, 0)); - Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone( - -'i', StoneColor.VIOLET), new Position(7.5f, 0)); - Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone( - -'k', StoneColor.AQUA), new Position(8.5f, 0)); - Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone( - -'u', StoneColor.GRAY), new Position(9.5f, 0)); - Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone( - -'b', StoneColor.BLACK), new Position(10.5f, 0)); + Pair<Stone, Position> stoneJ = new Pair<Stone, Position>(new Stone(-'J', + StoneColor.BLACK), new Position(2.5f, 0)); + Pair<Stone, Position> stoneR = new Pair<Stone, Position>(new Stone(-'R', + StoneColor.ORANGE), new Position(3.5f, 0)); + Pair<Stone, Position> stoneu1 = new Pair<Stone, Position>(new Stone(-'u', + StoneColor.BLUE), new Position(4.5f, 0)); + Pair<Stone, Position> stonem1 = new Pair<Stone, Position>(new Stone(-'m', + StoneColor.RED), new Position(5.5f, 0)); + Pair<Stone, Position> stonem2 = new Pair<Stone, Position>(new Stone(-'m', + StoneColor.GREEN), new Position(6.5f, 0)); + Pair<Stone, Position> stonei = new Pair<Stone, Position>(new Stone(-'i', + StoneColor.VIOLET), new Position(7.5f, 0)); + Pair<Stone, Position> stonek = new Pair<Stone, Position>(new Stone(-'k', + StoneColor.AQUA), new Position(8.5f, 0)); + Pair<Stone, Position> stoneu2 = new Pair<Stone, Position>(new Stone(-'u', + StoneColor.GRAY), new Position(9.5f, 0)); + Pair<Stone, Position> stoneb = new Pair<Stone, Position>(new Stone(-'b', + StoneColor.BLACK), new Position(10.5f, 0)); Pair<Stone, Position> stone1 = new Pair<Stone, Position>(new Stone( StoneColor.RED), new Position(2, 1)); @@ -655,9 +653,9 @@ public class View extends JFrame implements IView { Pair<Stone, Position> stone6 = new Pair<Stone, Position>(new Stone( StoneColor.BLACK), new Position(11, 1)); - return Arrays.asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei, - stonek, stoneu2, stoneb, stone1, stone2, stone3, stone4, - stone5, stone6); + return Arrays + .asList(stoneJ, stoneR, stoneu1, stonem1, stonem2, stonei, stonek, + stoneu2, stoneb, stone1, stone2, stone3, stone4, stone5, stone6); } @Override @@ -673,7 +671,8 @@ public class View extends JFrame implements IView { startTurnPanel.setType(type); startTurnPanel.setVisible(showStartTurnPanel); - boolean showWinPanel = (type == BottomPanelType.WIN_PANEL || type == BottomPanelType.NETWORK_WIN_PANEL); + boolean showWinPanel = (type == BottomPanelType.WIN_PANEL + || type == BottomPanelType.NETWORK_WIN_PANEL || type == BottomPanelType.NETWORK_CONNECTION_LOST_PANEL); winPanel.setType(type); winPanel.setVisible(showWinPanel); @@ -681,8 +680,7 @@ public class View extends JFrame implements IView { && type != null); if (type == BottomPanelType.START_GAME_PANEL) { - table.setStoneSets(Collections - .<Pair<StoneSet, Position>> emptyList()); + table.setStoneSets(Collections.<Pair<StoneSet, Position>> emptyList()); playerPanel.getHandPanel().setStones(createDecorationStones()); } diff --git a/src/jrummikub/view/impl/WinPanel.java b/src/jrummikub/view/impl/WinPanel.java index 4d9aacc..888cf75 100644 --- a/src/jrummikub/view/impl/WinPanel.java +++ b/src/jrummikub/view/impl/WinPanel.java @@ -28,6 +28,8 @@ class WinPanel extends JPanel { private final static float MAX_BUTTON_FONT_SIZE = 12; private JLabel waitingLabel; + private JLabel connectionLostLabel; + private JButton newRoundButton; private JButton newGameButton; private JButton endProgramButton; @@ -50,6 +52,12 @@ class WinPanel extends JPanel { waitingLabel.setVerticalAlignment(JLabel.CENTER); add(waitingLabel); + connectionLostLabel = new JLabel( + "Die Verbindung zu einem Spieler ist abgebrochen."); + connectionLostLabel.setHorizontalAlignment(JLabel.CENTER); + connectionLostLabel.setVerticalAlignment(JLabel.CENTER); + add(connectionLostLabel); + newRoundButton = new JButton("Neue Runde"); newRoundButton.addActionListener(new ActionListener() { @Override @@ -117,44 +125,26 @@ class WinPanel extends JPanel { width = width / 2 + PANEL_MAX_WIDTH / 2; } - int buttonWidth; - int buttonHeight; - int buttonY; if (type == BottomPanelType.WIN_PANEL) { - buttonWidth = (width - 2 * PANEL_SEPARATOR) / 3; - buttonHeight = height; - buttonY = y; - } else { - buttonWidth = (width - PANEL_SEPARATOR) / 2; - buttonHeight = height * 2 / 3 - PANEL_SEPARATOR; - buttonY = y + height - buttonHeight; + rescaleWinPanel(x, y, width, height); + } else if (type == BottomPanelType.NETWORK_WIN_PANEL) { + rescaleNetworkWinPanel(x, y, width, height); + } else if (type == BottomPanelType.NETWORK_CONNECTION_LOST_PANEL) { + rescaleNetworkConnectionLostPanel(x, y, width, height); } - int labelHeight = height - buttonHeight - PANEL_SEPARATOR; + } + + private void rescaleWinPanel(int x, int y, int width, int height) { + int buttonWidth = (width - 2 * PANEL_SEPARATOR) / 3; + int buttonHeight = height; + int buttonY = y; float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 5; if (fontSize > MAX_BUTTON_FONT_SIZE) fontSize = MAX_BUTTON_FONT_SIZE; - if (type == BottomPanelType.WIN_PANEL) { - rescaleWinPanel(x, buttonWidth, buttonHeight, buttonY, fontSize); - } else if (type == BottomPanelType.NETWORK_WIN_PANEL) { - waitingLabel.setBounds(x, y, width, labelHeight); - waitingLabel.setVisible(true); - - newRoundButton.setVisible(false); - - newGameButton.setBounds(x, buttonY, buttonWidth, buttonHeight); - newGameButton.setFont(newGameButton.getFont().deriveFont(fontSize)); - - endProgramButton.setBounds(x + buttonWidth + PANEL_SEPARATOR, buttonY, - buttonWidth, buttonHeight); - endProgramButton.setFont(endProgramButton.getFont().deriveFont(fontSize)); - } - } - - private void rescaleWinPanel(int x, int buttonWidth, int buttonHeight, - int buttonY, float fontSize) { waitingLabel.setVisible(false); + connectionLostLabel.setVisible(false); newRoundButton.setBounds(x, buttonY, buttonWidth, buttonHeight); newRoundButton.setFont(newRoundButton.getFont().deriveFont(fontSize)); newRoundButton.setVisible(true); @@ -168,6 +158,55 @@ class WinPanel extends JPanel { endProgramButton.setFont(endProgramButton.getFont().deriveFont(fontSize)); } + private void rescaleNetworkWinPanel(int x, int y, int width, int height) { + int buttonWidth = (width - PANEL_SEPARATOR) / 2; + int buttonHeight = height * 2 / 3 - PANEL_SEPARATOR; + int buttonY = y + height - buttonHeight; + int labelHeight = height - buttonHeight - PANEL_SEPARATOR; + + float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 5; + if (fontSize > MAX_BUTTON_FONT_SIZE) + fontSize = MAX_BUTTON_FONT_SIZE; + + waitingLabel.setBounds(x, y, width, labelHeight); + waitingLabel.setVisible(true); + connectionLostLabel.setVisible(false); + + newRoundButton.setVisible(false); + + newGameButton.setBounds(x, buttonY, buttonWidth, buttonHeight); + newGameButton.setFont(newGameButton.getFont().deriveFont(fontSize)); + + endProgramButton.setBounds(x + buttonWidth + PANEL_SEPARATOR, buttonY, + buttonWidth, buttonHeight); + endProgramButton.setFont(endProgramButton.getFont().deriveFont(fontSize)); + } + + private void rescaleNetworkConnectionLostPanel(int x, int y, int width, + int height) { + int buttonWidth = (width - PANEL_SEPARATOR) / 2; + int buttonHeight = height * 2 / 3 - PANEL_SEPARATOR; + int buttonY = y + height - buttonHeight; + int labelHeight = height - buttonHeight - PANEL_SEPARATOR; + + float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 5; + if (fontSize > MAX_BUTTON_FONT_SIZE) + fontSize = MAX_BUTTON_FONT_SIZE; + + waitingLabel.setVisible(false); + connectionLostLabel.setBounds(x, y, width, labelHeight); + connectionLostLabel.setVisible(true); + + newRoundButton.setVisible(false); + + newGameButton.setBounds(x, buttonY, buttonWidth, buttonHeight); + newGameButton.setFont(newGameButton.getFont().deriveFont(fontSize)); + + endProgramButton.setBounds(x + buttonWidth + PANEL_SEPARATOR, buttonY, + buttonWidth, buttonHeight); + endProgramButton.setFont(endProgramButton.getFont().deriveFont(fontSize)); + } + void setType(BottomPanelType type) { this.type = type; rescale(); |