136 lines
2.6 KiB
Java
136 lines
2.6 KiB
Java
package break_out.view;
|
|
|
|
import java.awt.*;
|
|
|
|
import javax.swing.JFrame;
|
|
|
|
import break_out.Constants;
|
|
import break_out.model.Game;
|
|
|
|
/**
|
|
* The view class manages the depiction of the components inside the JFrames. It
|
|
* gets the components from the game which is connected to this class
|
|
*
|
|
* @author dmlux, modified by Gruppe 175 (Moritz Henseleit, Ruben Meyer)
|
|
*/
|
|
public class View extends JFrame {
|
|
|
|
/**
|
|
* Automatic generated serial version UID
|
|
*/
|
|
private static final long serialVersionUID = -1850986636132660133L;
|
|
|
|
/**
|
|
* THe layout
|
|
*/
|
|
private CardLayout cardLayout;
|
|
|
|
/**
|
|
* The connected game
|
|
*/
|
|
private Game game;
|
|
|
|
/**
|
|
* The start screen of this application
|
|
*/
|
|
private StartScreen startScreen;
|
|
|
|
/**
|
|
* The playground
|
|
*/
|
|
private Field field;
|
|
|
|
|
|
/**
|
|
* The constructor of the view
|
|
*/
|
|
public View() {
|
|
super(Constants.APP_TITLE);
|
|
|
|
// sets the default close operation
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //DISPOSE_ON_CLOSE);
|
|
|
|
// adds a layout to the view
|
|
cardLayout = new CardLayout();
|
|
getContentPane().setLayout(cardLayout);
|
|
|
|
// adding screens to the view
|
|
startScreen = new StartScreen(this);
|
|
field = new Field(this);
|
|
|
|
getContentPane().add(startScreen, StartScreen.class.getName());
|
|
getContentPane().add(field, Field.class.getName());
|
|
|
|
// show start screen first
|
|
cardLayout.show(getContentPane(), StartScreen.class.getName());
|
|
|
|
// set the start position of the frame
|
|
setLocationRelativeTo(null);
|
|
setResizable(false);
|
|
setVisible(true);
|
|
pack();
|
|
|
|
// hotfix: zero-sized window size on linux
|
|
setMinimumSize(new Dimension(1, 1));
|
|
}
|
|
|
|
/**
|
|
* Getter for the start screen
|
|
*
|
|
* @return startScreen
|
|
*/
|
|
public StartScreen getStartScreen() {
|
|
return startScreen;
|
|
}
|
|
|
|
/**
|
|
* Getter for the playground
|
|
*
|
|
* @return field
|
|
*/
|
|
public Field getField() {
|
|
return field;
|
|
}
|
|
|
|
/**
|
|
* Getter for the game
|
|
*
|
|
* @return game
|
|
*/
|
|
public Game getGame() {
|
|
return game;
|
|
}
|
|
|
|
/**
|
|
* Setter for the game
|
|
*
|
|
* @param game The current game
|
|
*/
|
|
public void setGame(Game game) {
|
|
// set the game as model
|
|
this.game = game;
|
|
game.addObserver(this);
|
|
}
|
|
|
|
/**
|
|
* Shows a given screen if the card layout contains this screen
|
|
*
|
|
* @param screenName The screen to be shown
|
|
*/
|
|
public void showScreen(String screenName) {
|
|
cardLayout.show(getContentPane(), screenName);
|
|
}
|
|
|
|
/**
|
|
* Called by game.notifyObservers() in the run()-method of Level class
|
|
* to repaint the playground
|
|
*
|
|
* @param game The game to observe
|
|
*/
|
|
public void modelChanged(Game game) {
|
|
this.game = game;
|
|
// Calls the method paintComponents() in the Field class
|
|
field.repaint();
|
|
}
|
|
}
|