Add menu bar and make quit item work
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@379 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
682357b584
commit
c59332950b
4 changed files with 154 additions and 19 deletions
|
@ -36,9 +36,16 @@ public class MockView implements IView {
|
||||||
public MockEvent quitEvent = new MockEvent();
|
public MockEvent quitEvent = new MockEvent();
|
||||||
/** */
|
/** */
|
||||||
public MockEvent newRoundEvent = new MockEvent();
|
public MockEvent newRoundEvent = new MockEvent();
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public MockEvent newGameEvent = new MockEvent();
|
public MockEvent newGameEvent = new MockEvent();
|
||||||
|
/** */
|
||||||
|
public MockEvent menuNewGameEvent = new MockEvent();
|
||||||
|
/** */
|
||||||
|
public MockEvent menuLoadEvent = new MockEvent();
|
||||||
|
/** */
|
||||||
|
public MockEvent menuSaveEvent = new MockEvent();
|
||||||
|
/** */
|
||||||
|
public MockEvent menuQuitEvent = new MockEvent();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MockTablePanel getTablePanel() {
|
public MockTablePanel getTablePanel() {
|
||||||
|
@ -124,4 +131,23 @@ public class MockView implements IView {
|
||||||
bottomPanelType = type;
|
bottomPanelType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuNewGameEvent() {
|
||||||
|
return menuNewGameEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuLoadEvent() {
|
||||||
|
return menuLoadEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuSaveEvent() {
|
||||||
|
return menuSaveEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuQuitEvent() {
|
||||||
|
return menuQuitEvent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,17 @@ public class ApplicationControl {
|
||||||
* Creates a new application control
|
* Creates a new application control
|
||||||
*
|
*
|
||||||
* @param view
|
* @param view
|
||||||
* the view to use
|
* the view to use
|
||||||
*/
|
*/
|
||||||
public ApplicationControl(IView view) {
|
public ApplicationControl(IView view) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
|
||||||
|
view.getMenuQuitEvent().add(new IListener() {
|
||||||
|
@Override
|
||||||
|
public void handle() {
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -144,4 +144,36 @@ public interface IView {
|
||||||
/** */
|
/** */
|
||||||
WIN_PANEL
|
WIN_PANEL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The menu new game event is emitted when the user selects the new game menu
|
||||||
|
* entry
|
||||||
|
*
|
||||||
|
* @return the event
|
||||||
|
*/
|
||||||
|
public IEvent getMenuNewGameEvent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The menu load event is emitted when the user selects the load menu
|
||||||
|
* entry
|
||||||
|
*
|
||||||
|
* @return the event
|
||||||
|
*/
|
||||||
|
public IEvent getMenuLoadEvent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The menu save event is emitted when the user selects the save menu
|
||||||
|
* entry
|
||||||
|
*
|
||||||
|
* @return the event
|
||||||
|
*/
|
||||||
|
public IEvent getMenuSaveEvent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The menu quit event is emitted when the user selects the quit menu
|
||||||
|
* entry
|
||||||
|
*
|
||||||
|
* @return the event
|
||||||
|
*/
|
||||||
|
public IEvent getMenuQuitEvent();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package jrummikub.view.impl;
|
package jrummikub.view.impl;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Insets;
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentAdapter;
|
||||||
import java.awt.event.ComponentEvent;
|
import java.awt.event.ComponentEvent;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -11,6 +12,9 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JLayeredPane;
|
import javax.swing.JLayeredPane;
|
||||||
|
import javax.swing.JMenu;
|
||||||
|
import javax.swing.JMenuBar;
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.border.MatteBorder;
|
import javax.swing.border.MatteBorder;
|
||||||
|
|
||||||
|
@ -18,6 +22,7 @@ import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
import jrummikub.model.StoneColor;
|
import jrummikub.model.StoneColor;
|
||||||
import jrummikub.model.StoneSet;
|
import jrummikub.model.StoneSet;
|
||||||
|
import jrummikub.util.Event;
|
||||||
import jrummikub.util.IEvent;
|
import jrummikub.util.IEvent;
|
||||||
import jrummikub.util.Pair;
|
import jrummikub.util.Pair;
|
||||||
import jrummikub.view.IHandPanel;
|
import jrummikub.view.IHandPanel;
|
||||||
|
@ -32,8 +37,13 @@ import jrummikub.view.IView;
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class View extends JFrame implements IView {
|
public class View extends JFrame implements IView {
|
||||||
|
private final static float PLAYER_PANEL_RATIO = 0.14f;
|
||||||
|
private final static int PLAYER_PANEL_BORDER_WIDTH = 1;
|
||||||
|
private final static int PLAYER_PANEL_MAX_HEIGHT = 180 + PLAYER_PANEL_BORDER_WIDTH;
|
||||||
|
|
||||||
private JLayeredPane layeredPane;
|
private JLayeredPane layeredPane;
|
||||||
private JPanel mainLayer;
|
private JPanel mainLayer;
|
||||||
|
private JMenuBar menuBar;
|
||||||
|
|
||||||
private TablePanel table;
|
private TablePanel table;
|
||||||
private PlayerPanel playerPanel;
|
private PlayerPanel playerPanel;
|
||||||
|
@ -42,9 +52,10 @@ public class View extends JFrame implements IView {
|
||||||
private SettingsPanel settingsPanel;
|
private SettingsPanel settingsPanel;
|
||||||
private ScorePanel scorePanel;
|
private ScorePanel scorePanel;
|
||||||
|
|
||||||
private final static float PLAYER_PANEL_RATIO = 0.14f;
|
private Event menuNewGameEvent = new Event();
|
||||||
private final static int PLAYER_PANEL_BORDER_WIDTH = 1;
|
private Event menuLoadEvent = new Event();
|
||||||
private final static int PLAYER_PANEL_MAX_HEIGHT = 180 + PLAYER_PANEL_BORDER_WIDTH;
|
private Event menuSaveEvent = new Event();
|
||||||
|
private Event menuQuitEvent = new Event();
|
||||||
|
|
||||||
private static int even(double d) {
|
private static int even(double d) {
|
||||||
return 2 * (int) (d / 2);
|
return 2 * (int) (d / 2);
|
||||||
|
@ -75,6 +86,74 @@ public class View extends JFrame implements IView {
|
||||||
return playerPanel;
|
return playerPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuNewGameEvent() {
|
||||||
|
return menuNewGameEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuLoadEvent() {
|
||||||
|
return menuLoadEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuSaveEvent() {
|
||||||
|
return menuSaveEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IEvent getMenuQuitEvent() {
|
||||||
|
return menuQuitEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createMenuBar() {
|
||||||
|
menuBar = new JMenuBar();
|
||||||
|
|
||||||
|
JMenu gameMenu = new JMenu("Spiel");
|
||||||
|
menuBar.add(gameMenu);
|
||||||
|
|
||||||
|
JMenuItem newItem = new JMenuItem("Neu");
|
||||||
|
newItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
menuNewGameEvent.emit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gameMenu.add(newItem);
|
||||||
|
|
||||||
|
gameMenu.addSeparator();
|
||||||
|
|
||||||
|
JMenuItem loadItem = new JMenuItem("Laden...");
|
||||||
|
loadItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
menuLoadEvent.emit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gameMenu.add(loadItem);
|
||||||
|
JMenuItem saveItem = new JMenuItem("Speichern...");
|
||||||
|
saveItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
menuSaveEvent.emit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gameMenu.add(saveItem);
|
||||||
|
|
||||||
|
gameMenu.addSeparator();
|
||||||
|
|
||||||
|
JMenuItem quitItem = new JMenuItem("Beenden");
|
||||||
|
quitItem.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
menuQuitEvent.emit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
gameMenu.add(quitItem);
|
||||||
|
|
||||||
|
setJMenuBar(menuBar);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new instance of the view
|
* Create a new instance of the view
|
||||||
*/
|
*/
|
||||||
|
@ -85,6 +164,8 @@ public class View extends JFrame implements IView {
|
||||||
setSize(1000, 700);
|
setSize(1000, 700);
|
||||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
createMenuBar();
|
||||||
|
|
||||||
layeredPane = new JLayeredPane();
|
layeredPane = new JLayeredPane();
|
||||||
layeredPane.setLayout(null);
|
layeredPane.setLayout(null);
|
||||||
add(layeredPane);
|
add(layeredPane);
|
||||||
|
@ -130,9 +211,8 @@ public class View extends JFrame implements IView {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rescale() {
|
private void rescale() {
|
||||||
Insets insets = getInsets();
|
int width = getContentPane().getWidth(), height = getContentPane()
|
||||||
int width = getWidth() - insets.left - insets.right, height = getHeight()
|
.getHeight();
|
||||||
- insets.top - insets.bottom;
|
|
||||||
|
|
||||||
layeredPane.setBounds(0, 0, width, height);
|
layeredPane.setBounds(0, 0, width, height);
|
||||||
mainLayer.setBounds(0, 0, width, height);
|
mainLayer.setBounds(0, 0, width, height);
|
||||||
|
@ -160,16 +240,6 @@ public class View extends JFrame implements IView {
|
||||||
playerPanel.getHandPanel().setSelectedStones(stones);
|
playerPanel.getHandPanel().setSelectedStones(stones);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @Override public void enableStartTurnPanel(boolean enable) {
|
|
||||||
* playerPanel.setVisible(!enable); startTurnPanel.setVisible(enable);
|
|
||||||
* winPanel.setVisible(false); }
|
|
||||||
*
|
|
||||||
* @Override public void enableWinPanel(boolean enable) {
|
|
||||||
* playerPanel.setVisible(!enable); startTurnPanel.setVisible(false);
|
|
||||||
* winPanel.setVisible(enable); }
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showSettingsPanel(boolean show) {
|
public void showSettingsPanel(boolean show) {
|
||||||
settingsPanel.setVisible(show);
|
settingsPanel.setVisible(show);
|
||||||
|
|
Reference in a new issue