java-laser-game/userInterface/Window.java
2024-03-27 14:24:27 +01:00

127 lines
No EOL
3.5 KiB
Java

package userInterface;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.net.URL;
import universe.Universe;
public class Window extends JFrame {
private JPanel panel;
private JMenuBar menuBar;
private Grid grid;
private Universe universe;
public Window(Universe universe) {
super("Laser Finder");
this.universe = universe;
panel = new JPanel();
panel.setPreferredSize(new Dimension(1000,800));
panel.setBackground(Color.decode("#EBEBD3"));
menuBar = new JMenuBar();
JMenu fichierMenu = new JMenu("File");
JMenu aideMenu = new JMenu("Help");
JMenu toolsMenu = new JMenu("Tools");
URL newUrl = getClass().getResource("../images/new.png");
URL openUrl = getClass().getResource("../images/open.png");
URL saveUrl = getClass().getResource("../images/save.png");
ImageIcon nouveauIcon = new ImageIcon(newUrl.getPath());
ImageIcon openIcon = new ImageIcon(openUrl.getPath());
ImageIcon saveIcon = new ImageIcon(saveUrl.getPath());
JMenuItem nouveauItem = new JMenuItem("Nouveau", nouveauIcon);
JMenuItem ouvrirItem = new JMenuItem("Ouvrir", openIcon);
JMenuItem enregistrerItem = new JMenuItem("Enregistrer", saveIcon);
JMenuItem apropos = new JMenuItem("About");
JMenuItem regles = new JMenuItem("Rules");
JRadioButtonMenuItem radioWall = new JRadioButtonMenuItem("Wall");
JRadioButtonMenuItem radioStart = new JRadioButtonMenuItem("Start");
radioWall.setSelected(true);
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(radioWall);
buttonGroup.add(radioStart);
JMenuItem changeSize = new JMenuItem("Change Size");
JMenuItem solve = new JMenuItem("Solve");
fichierMenu.add(nouveauItem);
fichierMenu.add(ouvrirItem);
fichierMenu.add(enregistrerItem);
aideMenu.add(apropos);
aideMenu.add(regles);
toolsMenu.add(radioWall);
toolsMenu.add(radioStart);
toolsMenu.addSeparator();
toolsMenu.add(changeSize);
toolsMenu.addSeparator();
toolsMenu.add(solve);
menuBar.add(fichierMenu);
menuBar.add(aideMenu);
menuBar.add(toolsMenu);
regles.addActionListener(e -> {
JOptionPane.showMessageDialog(this, "Définissez la taille du plateau ainsi que l'orientation du laser, enfin ajoutez des obstacles et laissez le programme trouver le bon chemin !");
});
changeSize.addActionListener(e -> {
int width = Integer.valueOf(JOptionPane.showInputDialog("Choose the width"));
int height = Integer.valueOf(JOptionPane.showInputDialog("Choose the height"));
this.universe.changeUniverseDim(width + 2, height + 2);
this.panel.remove(this.grid);
this.grid = new Grid(width, height, this.universe);
this.panel.add(this.grid);
super.pack();
super.repaint();
});
radioWall.addActionListener(e -> {
this.grid.setSelected(1);
});
radioStart.addActionListener(e -> {
this.grid.setSelected(0);
});
this.grid = new Grid(this.universe.getHeight() - 2, this.universe.getWidth() - 2, this.universe);
this.panel.add(grid, BorderLayout.CENTER);
super.setJMenuBar(menuBar);
super.setContentPane(this.panel);
super.setLocationRelativeTo(null);
super.setLocation(1000, 400);
super.pack();
super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}