diff options
Diffstat (limited to 'src/jrummikub/view/impl/View.java')
-rw-r--r-- | src/jrummikub/view/impl/View.java | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/src/jrummikub/view/impl/View.java b/src/jrummikub/view/impl/View.java index dee5352..042421f 100644 --- a/src/jrummikub/view/impl/View.java +++ b/src/jrummikub/view/impl/View.java @@ -6,6 +6,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.File; import java.util.Arrays; import java.util.Collection; @@ -37,6 +39,8 @@ import jrummikub.view.IGameListPanel; import jrummikub.view.IHandPanel; import jrummikub.view.ILoginPanel; import jrummikub.view.IPlayerPanel; +import jrummikub.view.IQuitWarningPanel; +import jrummikub.view.IQuitWarningPanel.QuitMode; import jrummikub.view.IScorePanel; import jrummikub.view.ISettingsPanel; import jrummikub.view.ISidePanel; @@ -67,6 +71,7 @@ public class View extends JFrame implements IView { private ScorePanel scorePanel; private GameListPanel gameListPanel; private SidePanel sidePanel; + private QuitWarningPanel quitWarningPanel; private BottomPanelType bottomPanelType; @@ -76,8 +81,10 @@ public class View extends JFrame implements IView { private Event menuQuitEvent = new Event(); private Event networkGameEvent = new Event(); - private Event1<File> loadEvent = new Event1<File>(); + private Event loadEvent = new Event(); + private Event1<File> loadFileEvent = new Event1<File>(); private Event1<File> saveEvent = new Event1<File>(); + private Event quitEvent = new Event(); private static int even(double d) { return 2 * (int) (d / 2); @@ -119,6 +126,11 @@ public class View extends JFrame implements IView { } @Override + public IQuitWarningPanel getQuitWarningPanel() { + return quitWarningPanel; + } + + @Override public IGameListPanel getGameListPanel() { return gameListPanel; } @@ -134,7 +146,12 @@ public class View extends JFrame implements IView { } @Override - public IEvent1<File> getLoadEvent() { + public IEvent1<File> getLoadFileEvent() { + return loadFileEvent; + } + + @Override + public IEvent getLoadEvent(){ return loadEvent; } @@ -159,6 +176,11 @@ public class View extends JFrame implements IView { } @Override + public IEvent getQuitEvent() { + return quitEvent; + } + + @Override public void clearView() { showScorePanel(false); showSettingsPanel(false); @@ -201,7 +223,8 @@ public class View extends JFrame implements IView { loadItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - load(); + File file = new File(""); + loadEvent.emit(); } }); gameMenu.add(loadItem); @@ -238,10 +261,11 @@ public class View extends JFrame implements IView { saveItem.setEnabled(enable); } - private void load() { + @Override + public void load() { int returnVal = chooser.showOpenDialog(View.this); if (returnVal == JFileChooser.APPROVE_OPTION) { - loadEvent.emit(chooser.getSelectedFile()); + loadFileEvent.emit(chooser.getSelectedFile()); } } @@ -261,7 +285,14 @@ public class View extends JFrame implements IView { setSize(1000, 700); setMinimumSize(new Dimension(750, 550)); - setDefaultCloseOperation(EXIT_ON_CLOSE); + + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + quitEvent.emit(); + } + }); createFileChooser(); createMenuBar(); @@ -289,6 +320,12 @@ public class View extends JFrame implements IView { layeredPane.setLayer(gameListPanel, JLayeredPane.POPUP_LAYER); layeredPane.add(gameListPanel); + quitWarningPanel = new QuitWarningPanel(); + quitWarningPanel.setVisible(false); + + layeredPane.setLayer(quitWarningPanel, JLayeredPane.POPUP_LAYER); + layeredPane.add(quitWarningPanel); + scorePanel = new ScorePanel(); scorePanel.setVisible(false); layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER); @@ -346,6 +383,10 @@ public class View extends JFrame implements IView { winPanel.setVisible(false); mainLayer.add(winPanel); + quitWarningPanel = new QuitWarningPanel(); + quitWarningPanel.setVisible(false); + mainLayer.add(quitWarningPanel); + sidePanel = new SidePanel(); sidePanel.setVisible(false); mainLayer.add(sidePanel); @@ -394,7 +435,8 @@ public class View extends JFrame implements IView { rescaleSubpanel(scorePanel, 3 / 4.0, 1 / 2.0, 450, 300); rescaleSubpanel(loginPanel, 1 / 3.0, 1 / 3.0, 200, 200); rescaleSubpanel(gameListPanel, 1 / 2.0, 1 / 2.0, 475, 300); - } + rescaleSubpanel(quitWarningPanel, 1 / 2.0, 1 / 6.0, 400, 150); +} private void rescaleSubpanel(JPanel sub, double widthFactor, double heightFactor, int minWidth, int minHeight) { @@ -454,6 +496,10 @@ public class View extends JFrame implements IView { rescale(); } + public void showQuitWarningPanel(boolean show) { + quitWarningPanel.setVisible(show); + } + @Override public void setCurrentPlayerName(String playerName) { playerPanel.setCurrentPlayerName(playerName); |