Load error, save default file, save disable

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@483 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-06-19 16:11:20 +02:00
parent 0506b7f154
commit 92fe29000b
5 changed files with 55 additions and 12 deletions

View file

@ -244,4 +244,16 @@ public class MockView implements IView {
} }
@Override
public void showError() {
// TODO Auto-generated method stub
}
@Override
public void enableSave(boolean enable) {
// TODO Auto-generated method stub
}
} }

View file

@ -65,6 +65,12 @@ public class ApplicationControl {
} }
}); });
saveControl.getLoadErrorEvent().add(new IListener() {
@Override
public void handle() {
view.showError();
}
});
} }
private void addLoginControlListeners() { private void addLoginControlListeners() {
@ -123,10 +129,12 @@ public class ApplicationControl {
saveControl.setGameState(null); saveControl.setGameState(null);
settingsControl = new SettingsControl(view, new GameSettings()); settingsControl = new SettingsControl(view, new GameSettings());
view.enableSave(false);
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() { settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
@Override @Override
public void handle(GameSettings settings) { public void handle(GameSettings settings) {
view.enableSave(true);
settingsControl = null; settingsControl = null;
saveControl.setGameSettings(settings); saveControl.setGameSettings(settings);

View file

@ -9,6 +9,7 @@ import java.io.ObjectOutputStream;
import jrummikub.model.GameSettings; import jrummikub.model.GameSettings;
import jrummikub.model.GameState; import jrummikub.model.GameState;
import jrummikub.model.IRoundState; import jrummikub.model.IRoundState;
import jrummikub.util.Event;
import jrummikub.util.Event3; import jrummikub.util.Event3;
import jrummikub.util.IEvent3; import jrummikub.util.IEvent3;
import jrummikub.util.IListener1; import jrummikub.util.IListener1;
@ -22,6 +23,7 @@ public class SaveControl {
private GameState gameState; private GameState gameState;
private IRoundState roundState; private IRoundState roundState;
private Event3<GameSettings, GameState, IRoundState> loadEvent = new Event3<GameSettings, GameState, IRoundState>(); private Event3<GameSettings, GameState, IRoundState> loadEvent = new Event3<GameSettings, GameState, IRoundState>();
private Event loadErrorEvent = new Event();
/** /**
* Creates a new SaveControl * Creates a new SaveControl
@ -96,17 +98,20 @@ public class SaveControl {
stream.close(); stream.close();
if (gameState == null || gameSettings == null) { if (gameState == null || gameSettings == null) {
// TODO Fehlermeldung loadErrorEvent.emit();
System.err.println("laden ging nicht");
return; return;
} }
loadEvent.emit(gameSettings, gameState, roundState); loadEvent.emit(gameSettings, gameState, roundState);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); loadErrorEvent.emit();
} }
} }
public Event getLoadErrorEvent(){
return loadErrorEvent;
}
private void save(File file) { private void save(File file) {
if (gameState == null || gameSettings == null) { if (gameState == null || gameSettings == null) {

View file

@ -276,4 +276,7 @@ public interface IView {
/** */ /** */
WIN_PANEL WIN_PANEL
} }
void showError();
void enableSave(boolean enable);
} }

View file

@ -17,6 +17,7 @@ import javax.swing.JLayeredPane;
import javax.swing.JMenu; import javax.swing.JMenu;
import javax.swing.JMenuBar; import javax.swing.JMenuBar;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.border.MatteBorder; import javax.swing.border.MatteBorder;
import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileNameExtensionFilter;
@ -52,6 +53,7 @@ public class View extends JFrame implements IView {
private JLayeredPane layeredPane; private JLayeredPane layeredPane;
private JPanel mainLayer; private JPanel mainLayer;
private JMenuBar menuBar; private JMenuBar menuBar;
private JMenuItem saveItem;
private TablePanel table; private TablePanel table;
private PlayerPanel playerPanel; private PlayerPanel playerPanel;
@ -162,11 +164,20 @@ public class View extends JFrame implements IView {
setSelectedStones(Collections.<Stone> emptyList()); setSelectedStones(Collections.<Stone> emptyList());
} }
@Override
public void showError() {
JOptionPane.showMessageDialog(this, "Kein g\u00fcltiger Spielstand",
"Fehler", JOptionPane.ERROR_MESSAGE);
}
private void createFileChooser() { private void createFileChooser() {
chooser = new JFileChooser(); chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter( FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JRummikub-Spiele", "rum"); "JRummikub-Spiele", "rum");
chooser.setFileFilter(filter); chooser.setFileFilter(filter);
String defaultFile = "spiel.rum";
chooser.setSelectedFile(new File(defaultFile));
} }
private void createMenuBar() { private void createMenuBar() {
@ -188,7 +199,8 @@ public class View extends JFrame implements IView {
} }
}); });
gameMenu.add(loadItem); gameMenu.add(loadItem);
JMenuItem saveItem = new JMenuItem("Speichern...");
saveItem = new JMenuItem("Speichern...");
saveItem.addActionListener(new ActionListener() { saveItem.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -215,6 +227,11 @@ public class View extends JFrame implements IView {
return item; return item;
} }
@Override
public void enableSave(boolean enable) {
saveItem.setEnabled(enable);
}
private void load() { private void load() {
int returnVal = chooser.showOpenDialog(View.this); int returnVal = chooser.showOpenDialog(View.this);
if (returnVal == JFileChooser.APPROVE_OPTION) { if (returnVal == JFileChooser.APPROVE_OPTION) {
@ -322,7 +339,7 @@ public class View extends JFrame implements IView {
winPanel = new WinPanel(); winPanel = new WinPanel();
winPanel.setVisible(false); winPanel.setVisible(false);
mainLayer.add(winPanel); mainLayer.add(winPanel);
sidePanel = new SidePanel(); sidePanel = new SidePanel();
mainLayer.add(sidePanel); mainLayer.add(sidePanel);
} }
@ -339,8 +356,6 @@ public class View extends JFrame implements IView {
int width = getContentPane().getWidth(), height = getContentPane() int width = getContentPane().getWidth(), height = getContentPane()
.getHeight(); .getHeight();
layeredPane.setBounds(0, 0, width, height); layeredPane.setBounds(0, 0, width, height);
mainLayer.setBounds(0, 0, width, height); mainLayer.setBounds(0, 0, width, height);
@ -354,9 +369,9 @@ public class View extends JFrame implements IView {
playerPanel.setBounds(0, tableHeight, width, playerPanelHeight); playerPanel.setBounds(0, tableHeight, width, playerPanelHeight);
playerPanel.rescale(); playerPanel.rescale();
int sideWidth = playerPanel.getLeftPanelWidth() + 1; int sideWidth = playerPanel.getLeftPanelWidth() + 1;
table.setBounds(sideWidth, 0, width - sideWidth, tableHeight); table.setBounds(sideWidth, 0, width - sideWidth, tableHeight);
table.validate(); table.validate();
sidePanel.setBounds(0, 0, sideWidth, tableHeight); sidePanel.setBounds(0, 0, sideWidth, tableHeight);
@ -414,7 +429,7 @@ public class View extends JFrame implements IView {
startTurnPanel.setCurrentPlayerName(playerName); startTurnPanel.setCurrentPlayerName(playerName);
pausePanel.setCurrentPlayerName(playerName); pausePanel.setCurrentPlayerName(playerName);
} }
@Override @Override
public void setInitialMeldError(int points) { public void setInitialMeldError(int points) {
startTurnPanel.setInitialMeldError(points); startTurnPanel.setInitialMeldError(points);
@ -444,7 +459,7 @@ public class View extends JFrame implements IView {
public IEvent getAcknowledgeInvalidEvent() { public IEvent getAcknowledgeInvalidEvent() {
return startTurnPanel.getAcknowledgeInvalidEvent(); return startTurnPanel.getAcknowledgeInvalidEvent();
} }
@Override @Override
public IEvent getNewRoundEvent() { public IEvent getNewRoundEvent() {
return winPanel.getNewRoundEvent(); return winPanel.getNewRoundEvent();
@ -524,7 +539,7 @@ public class View extends JFrame implements IView {
playerPanel.showButtons(type != BottomPanelType.START_GAME_PANEL); playerPanel.showButtons(type != BottomPanelType.START_GAME_PANEL);
playerPanel.enableButtons(type != BottomPanelType.COMPUTER_HAND_PANEL); playerPanel.enableButtons(type != BottomPanelType.COMPUTER_HAND_PANEL);
} }
@Override @Override
public void setStoneCollectionHidden(boolean enable) { public void setStoneCollectionHidden(boolean enable) {
table.getStoneCollectionPanel().setHidden(enable); table.getStoneCollectionPanel().setHidden(enable);