Fixed QuitWarningPanel event handling and disabling of UI

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@518 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Jannis Harder 2011-06-21 00:28:34 +02:00
parent 087f8f7267
commit b0fedc9808
3 changed files with 55 additions and 37 deletions

View file

@ -32,7 +32,7 @@ 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(final IView view) { public ApplicationControl(final IView view) {
this.view = view; this.view = view;
@ -51,11 +51,12 @@ public class ApplicationControl {
startApplication(); startApplication();
view.showQuitWarningPanel(false); view.showQuitWarningPanel(false);
tempConnection.remove(); tempConnection.remove();
tempConnection = null;
} }
}); });
} }
}); });
view.getMenuQuitEvent().add(new IListener() { IListener quitListener = new IListener() {
@Override @Override
public void handle() { public void handle() {
if (gameControl == null) { if (gameControl == null) {
@ -63,38 +64,28 @@ public class ApplicationControl {
} else { } else {
view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS); view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS);
view.showQuitWarningPanel(true); view.showQuitWarningPanel(true);
view.getQuitWarningPanel().getQuitEvent().add(new IListener() { tempConnection = view.getQuitWarningPanel().getQuitEvent()
@Override .add(new IListener() {
public void handle() { @Override
System.exit(0); public void handle() {
} System.exit(0);
}); }
});
} }
} }
}); };
view.getMenuQuitEvent().add(quitListener);
view.getQuitEvent().add(new IListener() { view.getQuitEvent().add(quitListener);
@Override
public void handle() {
if (gameControl == null) {
System.exit(0);
} else {
view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS);
view.showQuitWarningPanel(true);
view.getQuitWarningPanel().getQuitEvent().add(new IListener() {
@Override
public void handle() {
System.exit(0);
}
});
}
}
});
view.getQuitWarningPanel().getCancelEvent().add(new IListener() { view.getQuitWarningPanel().getCancelEvent().add(new IListener() {
@Override @Override
public void handle() { public void handle() {
view.showQuitWarningPanel(false); view.showQuitWarningPanel(false);
if (tempConnection != null) {
tempConnection.remove();
tempConnection = null;
}
} }
}); });
@ -110,10 +101,11 @@ public class ApplicationControl {
saveControl.getLoadEvent().add( saveControl.getLoadEvent().add(
new IListener3<GameSettings, GameState, IRoundState>() { new IListener3<GameSettings, GameState, IRoundState>() {
@Override @Override
public void handle(GameSettings settings, GameState gameState, public void handle(GameSettings settings,
IRoundState roundState) { GameState gameState, IRoundState roundState) {
abortControls(); abortControls();
gameControl = new GameControl(settings, saveControl, view); gameControl = new GameControl(settings, saveControl,
view);
addGameControlListeners(gameControl); addGameControlListeners(gameControl);
gameControl.continueGame(gameState, roundState); gameControl.continueGame(gameState, roundState);
} }
@ -206,7 +198,8 @@ public class ApplicationControl {
private void createNetworkControl(LoginData loginData) { private void createNetworkControl(LoginData loginData) {
ConnectionControl connectionControl = new ConnectionControl(loginData); ConnectionControl connectionControl = new ConnectionControl(loginData);
networkControl = new NetworkControl(loginData, connectionControl, saveControl, view); networkControl = new NetworkControl(loginData, connectionControl,
saveControl, view);
networkControl.getStopNetworkEvent().add(new IListener() { networkControl.getStopNetworkEvent().add(new IListener() {
@Override @Override

View file

@ -51,7 +51,7 @@ public class QuitWarningPanel extends JPanel implements IQuitWarningPanel {
c.gridy = 1; c.gridy = 1;
c.gridwidth = 1; c.gridwidth = 1;
quitButton = createButton("Beenden", quitEvent); quitButton = createButton("Fortfahren", quitEvent);
cancelButton = createButton("Abbrechen", cancelEvent); cancelButton = createButton("Abbrechen", cancelEvent);
add(cancelButton, c); add(cancelButton, c);
c.gridx = 1; c.gridx = 1;

View file

@ -86,6 +86,7 @@ public class View extends JFrame implements IView {
private Event1<File> loadFileEvent = new Event1<File>(); private Event1<File> loadFileEvent = new Event1<File>();
private Event1<File> saveEvent = new Event1<File>(); private Event1<File> saveEvent = new Event1<File>();
private Event quitEvent = new Event(); private Event quitEvent = new Event();
private JFrame quitWarningFrame;
private static int even(double d) { private static int even(double d) {
return 2 * (int) (d / 2); return 2 * (int) (d / 2);
@ -296,7 +297,9 @@ public class View extends JFrame implements IView {
addWindowListener(new WindowAdapter() { addWindowListener(new WindowAdapter() {
@Override @Override
public void windowClosing(WindowEvent e) { public void windowClosing(WindowEvent e) {
quitEvent.emit(); if (isEnabled()) {
quitEvent.emit();
}
} }
}); });
@ -318,6 +321,10 @@ public class View extends JFrame implements IView {
public void componentResized(ComponentEvent e) { public void componentResized(ComponentEvent e) {
rescale(); rescale();
} }
@Override
public void componentMoved(ComponentEvent e) {
quitWarningFrame.setLocationRelativeTo(View.this);
}
}); });
setVisible(true); setVisible(true);
@ -343,10 +350,15 @@ public class View extends JFrame implements IView {
layeredPane.add(connectPanel); layeredPane.add(connectPanel);
quitWarningPanel = new QuitWarningPanel(); quitWarningPanel = new QuitWarningPanel();
quitWarningPanel.setVisible(false); quitWarningFrame = new JFrame();
layeredPane.setLayer(quitWarningPanel, JLayeredPane.POPUP_LAYER); quitWarningFrame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
layeredPane.add(quitWarningPanel); quitWarningFrame.add(quitWarningPanel);
quitWarningFrame.setAlwaysOnTop(true);
quitWarningFrame.setUndecorated(true);
//layeredPane.setLayer(quitWarningPanel, JLayeredPane.POPUP_LAYER);
//layeredPane.add(quitWarningPanel);
//quitWarningPanel.setVisible(true);
scorePanel = new ScorePanel(); scorePanel = new ScorePanel();
scorePanel.setVisible(false); scorePanel.setVisible(false);
layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER); layeredPane.setLayer(scorePanel, JLayeredPane.POPUP_LAYER);
@ -446,6 +458,9 @@ public class View extends JFrame implements IView {
rescaleSubpanel(loginPanel, 1 / 3.0, 1 / 3.0, 200, 200); rescaleSubpanel(loginPanel, 1 / 3.0, 1 / 3.0, 200, 200);
rescaleSubpanel(gameListPanel, 1 / 2.0, 1 / 2.0, 475, 300); rescaleSubpanel(gameListPanel, 1 / 2.0, 1 / 2.0, 475, 300);
rescaleSubpanel(quitWarningPanel, 1 / 2.0, 1 / 6.0, 400, 150); rescaleSubpanel(quitWarningPanel, 1 / 2.0, 1 / 6.0, 400, 150);
quitWarningPanel.setLocation(0, 0);
quitWarningFrame.setSize(quitWarningPanel.getSize());
quitWarningFrame.setLocationRelativeTo(this);
rescaleSubpanel(connectPanel, 1 / 2.0, 1 / 6.0, 400, 150); rescaleSubpanel(connectPanel, 1 / 2.0, 1 / 6.0, 400, 150);
} }
@ -508,7 +523,17 @@ public class View extends JFrame implements IView {
} }
public void showQuitWarningPanel(boolean show) { public void showQuitWarningPanel(boolean show) {
quitWarningPanel.setVisible(show); quitWarningFrame.setLocationRelativeTo(this);
quitWarningFrame.setVisible(show);
setEnabled(!show);
/*mainLayer.setEnabled(!show);
menuBar.setEnabled(!show);
settingsPanel.setEnabled(!show);
loginPanel.setEnabled(!show);
scorePanel.setEnabled(!show);
gameListPanel.setEnabled(!show);
connectPanel.setEnabled(!show);*/
} }
@Override @Override