Created basic view
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@3 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
793b4c6dac
commit
a526d2efbf
8 changed files with 299 additions and 0 deletions
12
src/jrummikub/view/Board.java
Normal file
12
src/jrummikub/view/Board.java
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class Board extends JPanel implements IBoard {
|
||||||
|
Board() {
|
||||||
|
setBackground(Color.DARK_GRAY);
|
||||||
|
}
|
||||||
|
}
|
4
src/jrummikub/view/IBoard.java
Normal file
4
src/jrummikub/view/IBoard.java
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
public interface IBoard {
|
||||||
|
}
|
8
src/jrummikub/view/IPlayerPanel.java
Normal file
8
src/jrummikub/view/IPlayerPanel.java
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
public interface IPlayerPanel {
|
||||||
|
public IBoard getBoard();
|
||||||
|
|
||||||
|
public void setCurrentPlayerName(String playerName);
|
||||||
|
public void setTimeLeft(int time);
|
||||||
|
}
|
7
src/jrummikub/view/ITable.java
Normal file
7
src/jrummikub/view/ITable.java
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
public interface ITable {
|
||||||
|
public void setLeftPlayerName(String playerName);
|
||||||
|
public void setTopPlayerName(String playerName);
|
||||||
|
public void setRightPlayerName(String playerName);
|
||||||
|
}
|
15
src/jrummikub/view/IView.java
Normal file
15
src/jrummikub/view/IView.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
public interface IView {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the table
|
||||||
|
*/
|
||||||
|
public ITable getTable();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the playerPanel
|
||||||
|
*/
|
||||||
|
public IPlayerPanel getPlayerPanel();
|
||||||
|
|
||||||
|
}
|
144
src/jrummikub/view/PlayerPanel.java
Normal file
144
src/jrummikub/view/PlayerPanel.java
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JProgressBar;
|
||||||
|
import javax.swing.border.LineBorder;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
|
private final static DecimalFormat intFormat = new DecimalFormat("00");
|
||||||
|
|
||||||
|
private Board board;
|
||||||
|
|
||||||
|
private JLabel currentPlayerNameLabel;
|
||||||
|
private JButton sortByNumberButton;
|
||||||
|
private JButton sortByColorButton;
|
||||||
|
private JProgressBar timeBar;
|
||||||
|
private JButton endTurnButton;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IBoard getBoard() {
|
||||||
|
return board;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCurrentPlayerName(String playerName) {
|
||||||
|
currentPlayerNameLabel.setText(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public
|
||||||
|
void setTimeLeft(int time) {
|
||||||
|
timeBar.setValue(time);
|
||||||
|
timeBar.setString(Integer.toString(time/60) + ":" + intFormat.format(time%60));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
JPanel createLeftPanel() {
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setPreferredSize(new Dimension(0, 0));
|
||||||
|
GridBagLayout layout = new GridBagLayout();
|
||||||
|
GridBagConstraints c = new GridBagConstraints();
|
||||||
|
panel.setLayout(layout);
|
||||||
|
panel.setOpaque(false);
|
||||||
|
|
||||||
|
|
||||||
|
currentPlayerNameLabel = new JLabel();
|
||||||
|
currentPlayerNameLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||||
|
currentPlayerNameLabel.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
|
currentPlayerNameLabel.setVerticalAlignment(JLabel.CENTER);
|
||||||
|
currentPlayerNameLabel.setVerticalTextPosition(JLabel.CENTER);
|
||||||
|
currentPlayerNameLabel.setPreferredSize(new Dimension(200, 30));
|
||||||
|
c.weightx = 0;
|
||||||
|
c.weighty = 1;
|
||||||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
|
c.insets = new Insets(25, 0, 0, 0);
|
||||||
|
layout.setConstraints(currentPlayerNameLabel, c);
|
||||||
|
panel.add(currentPlayerNameLabel);
|
||||||
|
|
||||||
|
sortByNumberButton = new JButton("<html>Sort by<br>number");
|
||||||
|
sortByNumberButton.setPreferredSize(new Dimension(95, 50));
|
||||||
|
c.gridwidth = GridBagConstraints.RELATIVE;
|
||||||
|
c.gridheight = GridBagConstraints.REMAINDER;
|
||||||
|
c.insets = new Insets(15, 0, 20, 5);
|
||||||
|
layout.setConstraints(sortByNumberButton, c);
|
||||||
|
panel.add(sortByNumberButton);
|
||||||
|
|
||||||
|
sortByColorButton = new JButton("<html>Sort by<br>color");
|
||||||
|
sortByColorButton.setPreferredSize(new Dimension(95, 50));
|
||||||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
|
c.insets = new Insets(15, 5, 20, 0);
|
||||||
|
layout.setConstraints(sortByColorButton, c);
|
||||||
|
panel.add(sortByColorButton);
|
||||||
|
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
JPanel createRightPanel() {
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setPreferredSize(new Dimension(0, 0));
|
||||||
|
GridBagLayout layout = new GridBagLayout();
|
||||||
|
GridBagConstraints c = new GridBagConstraints();
|
||||||
|
panel.setLayout(layout);
|
||||||
|
panel.setOpaque(false);
|
||||||
|
|
||||||
|
timeBar = new JProgressBar(0, 60);
|
||||||
|
timeBar.setStringPainted(true);
|
||||||
|
timeBar.setPreferredSize(new Dimension(200, 30));
|
||||||
|
c.weightx = 0;
|
||||||
|
c.weighty = 1;
|
||||||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
|
c.insets = new Insets(25, 0, 0, 0);
|
||||||
|
layout.setConstraints(timeBar, c);
|
||||||
|
panel.add(timeBar);
|
||||||
|
|
||||||
|
endTurnButton = new JButton("End turn");
|
||||||
|
endTurnButton.setPreferredSize(new Dimension(200, 50));
|
||||||
|
c.gridheight = GridBagConstraints.REMAINDER;
|
||||||
|
c.insets = new Insets(15, 0, 20, 0);
|
||||||
|
layout.setConstraints(endTurnButton, c);
|
||||||
|
panel.add(endTurnButton);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PlayerPanel() {
|
||||||
|
GridBagLayout layout = new GridBagLayout();
|
||||||
|
GridBagConstraints c = new GridBagConstraints();
|
||||||
|
setLayout(layout);
|
||||||
|
|
||||||
|
setBorder(new LineBorder(Color.BLACK, 1));
|
||||||
|
setBackground(Color.LIGHT_GRAY);
|
||||||
|
|
||||||
|
JPanel leftPanel = createLeftPanel();
|
||||||
|
c.fill = GridBagConstraints.BOTH;
|
||||||
|
c.weightx = 1;
|
||||||
|
c.weighty = 1;
|
||||||
|
c.gridheight = GridBagConstraints.REMAINDER;
|
||||||
|
layout.setConstraints(leftPanel, c);
|
||||||
|
add(leftPanel);
|
||||||
|
|
||||||
|
board = new Board();
|
||||||
|
c.weightx = 3;
|
||||||
|
layout.setConstraints(board, c);
|
||||||
|
add(board);
|
||||||
|
|
||||||
|
JPanel rightPanel = createRightPanel();
|
||||||
|
c.weightx = 1;
|
||||||
|
c.gridwidth = GridBagConstraints.REMAINDER;
|
||||||
|
layout.setConstraints(rightPanel, c);
|
||||||
|
add(rightPanel);
|
||||||
|
}
|
||||||
|
}
|
47
src/jrummikub/view/Table.java
Normal file
47
src/jrummikub/view/Table.java
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class Table extends JPanel implements ITable {
|
||||||
|
private JLabel leftPlayerLabel, topPlayerLabel, rightPlayerLabel;
|
||||||
|
private JPanel innerPanel;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setLeftPlayerName(String playerName) {
|
||||||
|
leftPlayerLabel.setText(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTopPlayerName(String playerName) {
|
||||||
|
topPlayerLabel.setText(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRightPlayerName(String playerName) {
|
||||||
|
rightPlayerLabel.setText(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
Table() {
|
||||||
|
setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
leftPlayerLabel = new JLabel();
|
||||||
|
add(leftPlayerLabel, BorderLayout.WEST);
|
||||||
|
|
||||||
|
topPlayerLabel = new JLabel();
|
||||||
|
topPlayerLabel.setHorizontalAlignment(JLabel.CENTER);
|
||||||
|
topPlayerLabel.setHorizontalTextPosition(JLabel.CENTER);
|
||||||
|
add(topPlayerLabel, BorderLayout.NORTH);
|
||||||
|
|
||||||
|
rightPlayerLabel = new JLabel();
|
||||||
|
add(rightPlayerLabel, BorderLayout.EAST);
|
||||||
|
|
||||||
|
innerPanel = new JPanel();
|
||||||
|
innerPanel.setOpaque(false);
|
||||||
|
add(innerPanel, BorderLayout.CENTER);
|
||||||
|
}
|
||||||
|
}
|
62
src/jrummikub/view/View.java
Normal file
62
src/jrummikub/view/View.java
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
package jrummikub.view;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class View extends JFrame implements IView {
|
||||||
|
private Table table;
|
||||||
|
private PlayerPanel playerPanel;
|
||||||
|
|
||||||
|
private final static int PLAYER_PANEL_HEIGHT = 150;
|
||||||
|
|
||||||
|
|
||||||
|
public ITable getTable() {
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPlayerPanel getPlayerPanel() {
|
||||||
|
return playerPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public View() {
|
||||||
|
super("JRummikub");
|
||||||
|
|
||||||
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
table = new Table();
|
||||||
|
add(table, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
playerPanel = new PlayerPanel();
|
||||||
|
playerPanel.setPreferredSize(new Dimension(0, PLAYER_PANEL_HEIGHT));
|
||||||
|
add(playerPanel, BorderLayout.SOUTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String nativeLF = UIManager.getSystemLookAndFeelClassName();
|
||||||
|
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(nativeLF);
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
View view = new View();
|
||||||
|
|
||||||
|
view.getPlayerPanel().setCurrentPlayerName("Player 1");
|
||||||
|
view.getPlayerPanel().setTimeLeft(42);
|
||||||
|
view.getTable().setLeftPlayerName("Player 2");
|
||||||
|
view.getTable().setTopPlayerName("Player 3");
|
||||||
|
view.getTable().setRightPlayerName("Player 4");
|
||||||
|
|
||||||
|
view.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue