Import menu items from original project

This commit is contained in:
2025-02-19 12:57:48 +01:00
parent 75bd5997df
commit 5f0bcda8ba
5 changed files with 229 additions and 9 deletions

View File

@@ -1,15 +1,20 @@
package ovh.gasser.newshapes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ovh.gasser.newshapes.shapes.SCircle;
import ovh.gasser.newshapes.shapes.SCollection;
import ovh.gasser.newshapes.shapes.SRectangle;
import ovh.gasser.newshapes.ui.ShapesView;
import ovh.gasser.newshapes.ui.menu.MenuAddListener;
import ovh.gasser.newshapes.ui.menu.MenuEditListener;
import javax.swing.*;
import java.awt.*;
import java.io.FileNotFoundException;
public class App {
private final static Logger logger = LoggerFactory.getLogger(App.class);
public static final Dimension WIN_SIZE = new Dimension(800, 600);
private SCollection model;
@@ -29,7 +34,7 @@ public class App {
frame.pack();
frame.setVisible(true);
this.buildMenuBar(frame);
this.buildMenuBar(frame, view);
}
private void buildModel() {
@@ -44,20 +49,68 @@ public class App {
);
}
private void buildMenuBar(JFrame frame) {
private void buildMenuBar(JFrame frame, ShapesView sview) {
var menubar = new JMenuBar();
var helpMenu = new JMenu("Help");
var aboutItem = new JMenuItem("About");
aboutItem.addActionListener(actionEvent -> {
JOptionPane.showMessageDialog(frame, "New shapes");
});
// About
JMenu helpMenu = new JMenu("Help");
JMenuItem aboutItem = new JMenuItem("About");
aboutItem.addActionListener(evt -> JOptionPane.showMessageDialog(frame, "This project was created by Alexandre Colicchio and Thibaud Gasser", "About this project", JOptionPane.INFORMATION_MESSAGE));
helpMenu.add(aboutItem);
menubar.add(buildFileMenu(sview));
menubar.add(buildEditMenu(sview));
menubar.add(helpMenu);
frame.setJMenuBar(menubar);
}
private JMenu buildFileMenu(ShapesView sview) {
JMenu menuFile = new JMenu("File");
JMenuItem addRectItem = new JMenuItem("Add SRectangle");
JMenuItem addCircleItem = new JMenuItem("Add SCircle");
JMenuItem htmlExportItem = new JMenuItem("Export to HTML");
JMenuItem exitItem = new JMenuItem("Exit");
addRectItem.addActionListener(new MenuAddListener("SRectangle", model, sview));
addCircleItem.addActionListener(new MenuAddListener("SCircle", model, sview));
htmlExportItem.addActionListener(evt -> {
try {
new HTMLExporter(model).export();
} catch (FileNotFoundException e) {
logger.error("Could not export as html: {}", e.getMessage());
}
});
exitItem.addActionListener(evt -> System.exit(0));
menuFile.add(addRectItem);
menuFile.add(addCircleItem);
menuFile.addSeparator();
menuFile.add(htmlExportItem);
menuFile.add(exitItem);
return menuFile;
}
private JMenu buildEditMenu(ShapesView sview) {
MenuEditListener editListener = new MenuEditListener(model, sview, sview.getController());
JMenu menuEdit = new JMenu("Edit");
JMenuItem editColor = new JMenuItem("Change color");
JMenuItem editBorderColor = new JMenuItem("Change border color");
JMenuItem deleteItem = new JMenuItem("Delete");
JCheckBoxMenuItem editFill = new JCheckBoxMenuItem("Fill Shape");
JCheckBoxMenuItem editBorder = new JCheckBoxMenuItem("Draw border");
editColor.addActionListener(editListener);
editBorderColor.addActionListener(editListener);
deleteItem.addActionListener(editListener);
editFill.addActionListener(editListener);
editBorder.addActionListener(editListener);
menuEdit.add(editColor);
menuEdit.add(editBorderColor);
menuEdit.add(deleteItem);
menuEdit.addSeparator();
menuEdit.add(editBorder);
menuEdit.add(editFill);
return menuEdit;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(App::new);
}