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 newRoundEvent = 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
|
||||
public MockTablePanel getTablePanel() {
|
||||
|
@ -124,4 +131,23 @@ public class MockView implements IView {
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,13 @@ public class ApplicationControl {
|
|||
*/
|
||||
public ApplicationControl(IView 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
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
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.ComponentEvent;
|
||||
import java.util.Arrays;
|
||||
|
@ -11,6 +12,9 @@ import java.util.List;
|
|||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLayeredPane;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.border.MatteBorder;
|
||||
|
||||
|
@ -18,6 +22,7 @@ import jrummikub.model.Position;
|
|||
import jrummikub.model.Stone;
|
||||
import jrummikub.model.StoneColor;
|
||||
import jrummikub.model.StoneSet;
|
||||
import jrummikub.util.Event;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.Pair;
|
||||
import jrummikub.view.IHandPanel;
|
||||
|
@ -32,8 +37,13 @@ import jrummikub.view.IView;
|
|||
*/
|
||||
@SuppressWarnings("serial")
|
||||
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 JPanel mainLayer;
|
||||
private JMenuBar menuBar;
|
||||
|
||||
private TablePanel table;
|
||||
private PlayerPanel playerPanel;
|
||||
|
@ -42,9 +52,10 @@ public class View extends JFrame implements IView {
|
|||
private SettingsPanel settingsPanel;
|
||||
private ScorePanel scorePanel;
|
||||
|
||||
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 Event menuNewGameEvent = new Event();
|
||||
private Event menuLoadEvent = new Event();
|
||||
private Event menuSaveEvent = new Event();
|
||||
private Event menuQuitEvent = new Event();
|
||||
|
||||
private static int even(double d) {
|
||||
return 2 * (int) (d / 2);
|
||||
|
@ -75,6 +86,74 @@ public class View extends JFrame implements IView {
|
|||
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
|
||||
*/
|
||||
|
@ -85,6 +164,8 @@ public class View extends JFrame implements IView {
|
|||
setSize(1000, 700);
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
|
||||
createMenuBar();
|
||||
|
||||
layeredPane = new JLayeredPane();
|
||||
layeredPane.setLayout(null);
|
||||
add(layeredPane);
|
||||
|
@ -130,9 +211,8 @@ public class View extends JFrame implements IView {
|
|||
}
|
||||
|
||||
private void rescale() {
|
||||
Insets insets = getInsets();
|
||||
int width = getWidth() - insets.left - insets.right, height = getHeight()
|
||||
- insets.top - insets.bottom;
|
||||
int width = getContentPane().getWidth(), height = getContentPane()
|
||||
.getHeight();
|
||||
|
||||
layeredPane.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);
|
||||
}
|
||||
|
||||
/*
|
||||
* @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
|
||||
public void showSettingsPanel(boolean show) {
|
||||
settingsPanel.setVisible(show);
|
||||
|
|
Reference in a new issue