import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
public class MyMenu extends JPanel {
private String shapeSelected;
private static ArrayList<Shape> shapeList = new ArrayList<>();//static gia na to vlepei kai h drawing panel
private String buttonPressed;
private boolean loadFile = false;
private boolean deletePressed = false;
private String colorSelected;
private Color borderColor = null ;
private Color fillColor;
private static boolean isColorSelected = true;
public MyMenu() {
JToolBar toolBar = new JToolBar();
JButton rectangle = new JButton();
JButton square = new JButton();
JButton triangle = new JButton();
JButton oval = new JButton();
JButton star = new JButton();
JButton circle = new JButton();
JButton line = new JButton();
JButton copy = new JButton();
JButton move = new JButton();
JButton delete = new JButton();
JButton undo = new JButton();
JButton red = new JButton();
JButton green = new JButton();
JButton orange = new JButton();
JButton yellow = new JButton();
JButton turquoise= new JButton();
ImageIcon rectangleImage = new ImageIcon("Rectangle.png");
ImageIcon squareImage = new ImageIcon("Square.png");
ImageIcon triangleImage = new ImageIcon("Triangle.png");
ImageIcon ovalImage = new ImageIcon("Oval.png");
ImageIcon starImage = new ImageIcon("Star.png");
ImageIcon circleImage = new ImageIcon("Circle.png");
ImageIcon lineImage = new ImageIcon("Line.png");
ImageIcon copyImage = new ImageIcon("Copy.png");
ImageIcon moveImage = new ImageIcon("Move.png");
ImageIcon deleteImage = new ImageIcon("Delete.png");
ImageIcon undoImage = new ImageIcon("Undo.png");
ImageIcon redImage = new ImageIcon("Red.png");
ImageIcon greenImage = new ImageIcon("Green.png");
ImageIcon yellowImage = new ImageIcon("Yellow.png");
ImageIcon turquoiseImage = new ImageIcon("Turquoise.jpg");
ImageIcon orangeImage = new ImageIcon("Orange.png");
//Rescaling all the images
Image rectScaled = rectangleImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
rectangle.setIcon(new ImageIcon(rectScaled));
rectangle.setToolTipText("Rectangle");
Image sqrScaled = squareImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
square.setIcon(new ImageIcon(sqrScaled));
square.setToolTipText("Square");
Image triScaled = triangleImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
triangle.setIcon(new ImageIcon(triScaled));
triangle.setToolTipText("Triangle");
Image strScaled = starImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
star.setIcon(new ImageIcon(strScaled));
star.setToolTipText("Star");
Image crcScaled = circleImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
circle.setIcon(new ImageIcon(crcScaled));
circle.setToolTipText("Circle");
Image ovlScaled = ovalImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
oval.setIcon(new ImageIcon(ovlScaled));
oval.setToolTipText("Oval");
Image lnScaled = lineImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
line.setIcon(new ImageIcon(lnScaled));
line.setToolTipText("Line");
Image cpScaled = copyImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
copy.setIcon(new ImageIcon(cpScaled));
copy.setText("Copy");
Image redScaled = redImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
red.setIcon(new ImageIcon(redScaled));
red.setToolTipText("Red");
Image greenScaled = greenImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
green.setIcon(new ImageIcon(greenScaled));
green.setToolTipText("Green");
Image yellowScaled = yellowImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
yellow.setIcon(new ImageIcon(yellowScaled));
yellow.setToolTipText("Yellow");
Image turquoiseScaled = turquoiseImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
turquoise.setIcon(new ImageIcon(turquoiseScaled));
turquoise.setToolTipText("Turquoise");
Image orangeScaled = orangeImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
orange.setIcon(new ImageIcon(orangeScaled));
orange.setToolTipText("Orange");
Image mvScaled = moveImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
move.setIcon(new ImageIcon(mvScaled));
move.setText("Move");
Image delScaled = deleteImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
delete.setIcon(new ImageIcon(delScaled));
delete.setText("Delete");
delete.setToolTipText("Select the shape and press Delete key");
Image undScaled = undoImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
undo.setIcon(new ImageIcon(undScaled));
undo.setText("Undo");
undo.setToolTipText("Ctrl+Z to restore your last action");
JMenu file = new JMenu("File");
JMenuBar menuBar = new JMenuBar();
toolBar.setFloatable(false);
toolBar.add(line);
toolBar.add(oval);
toolBar.add(rectangle);
toolBar.add(triangle);
toolBar.add(square);
toolBar.add(star);
toolBar.add(circle);
toolBar.add(red);
toolBar.add(orange);
toolBar.add(turquoise);
toolBar.add(yellow);
toolBar.add(green);
toolBar.add(turquoise);
//Making buttons transparent
copy.setOpaque(false);
copy.setBorderPainted(false);
move.setOpaque(false);
move.setBorderPainted(false);
delete.setOpaque(false);
delete.setBorderPainted(false);
undo.setOpaque(false);
undo.setBorderPainted(false);
red.setOpaque(false);
red.setBorderPainted(false);
//red.setContentAreaFilled(false);
green.setOpaque(false);
green.setBorderPainted(false);
yellow.setOpaque(false);
yellow.setBorderPainted(false);
turquoise.setOpaque(false);
turquoise.setBorderPainted(false);
orange.setOpaque(false);
orange.setBorderPainted(false);
toolBar.add(copy);
toolBar.add(move);
toolBar.add(delete);
toolBar.add(undo);
JMenuItem load = new JMenuItem("Load");
JMenuItem save = new JMenuItem("Save");
JMenuItem exit = new JMenuItem("Exit");
ImageIcon loadImage = new ImageIcon("Load.png");
Image ldScaled = loadImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
load.setIcon(new ImageIcon(ldScaled));
ImageIcon saveImage = new ImageIcon("Save.png");
Image svScaled = saveImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
save.setIcon(new ImageIcon(svScaled));
ImageIcon exitImage = new ImageIcon("Exit.png");
Image exScaled = exitImage.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH);
exit.setIcon(new ImageIcon(exScaled));
file.add(load);
file.add(save);
file.add(exit);
menuBar.add(file);
//Adding action listeners for each button
line.addActionListener(new ButtonClicked());
square.addActionListener(new ButtonClicked());
rectangle.addActionListener(new ButtonClicked());
triangle.addActionListener(new ButtonClicked());
oval.addActionListener(new ButtonClicked());
circle.addActionListener(new ButtonClicked());
star.addActionListener(new ButtonClicked());
save.addActionListener(new ButtonClicked());
load.addActionListener(new ButtonClicked());
copy.addActionListener(new ButtonClicked());
move.addActionListener(new ButtonClicked());
delete.addActionListener(new ButtonClicked());
undo.addActionListener(new ButtonClicked());
red.addActionListener(new ButtonClicked());
orange.addActionListener(new ButtonClicked());
turquoise.addActionListener(new ButtonClicked());
green.addActionListener(new ButtonClicked());
yellow.addActionListener(new ButtonClicked());
//save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
setLayout(new BorderLayout());
add(menuBar,BorderLayout.PAGE_START);
add(toolBar);
}
public static ArrayList<Shape> getShapeList() {
return shapeList;
}
public String getButtonPressed() { return buttonPressed; }
public boolean isDeletePressed() { return deletePressed; }
public String getShapeSelected() {
return shapeSelected;
}
public boolean isLoadFile() { return loadFile; }
public Color getBorderColor() { return borderColor; }
public static boolean isColorSelected() {return isColorSelected;}
public void setDeletePressed(boolean deletePressed) {
this.deletePressed = deletePressed;
}
public void save(ArrayList<Shape> shapeList) {
System.out.println("Saving:");
ObjectOutputStream out;
try {
out = new ObjectOutputStream(new FileOutputStream("Shapes.txt"));
for (Shape s : shapeList) {
out.writeObject(s);
}
System.out.println(colorSelected);
out.flush();
out.close();
} catch (FileNotFoundException fnf) {
System.out.println("File not found");
fnf.printStackTrace();
} catch(IOException ioe) {
System.out.println("Error with I/O processes") ;
ioe.printStackTrace();
}
}
class ButtonClicked implements ActionListener {
//Getting the value from each JButton
@Override
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o instanceof JButton) {
colorSelected = ((JButton) o).getToolTipText(); {//toDO: if color selected is shape
switch(colorSelected) {
case"Red":
borderColor = Color.RED;
break;
case"Green":
borderColor = Color.GREEN;
break;
case"Yellow":
borderColor = Color.YELLOW;
break;
case"Orange":
borderColor = Color.ORANGE;
break;
case"Turquoise":
borderColor = Color.CYAN;
break;
default:
//borderColor = null;
System.out.println();
}
}
shapeSelected = ((JButton) o).getToolTipText();
// if(shapeSelected.equals("Red"))
// shapeSelected = null;//toDO:fix if shape selected is color
buttonPressed = ((JButton) o).getText();
if(buttonPressed.equals("Delete"))
deletePressed = true;
}
if(o instanceof JMenuItem) {
buttonPressed = ((JMenuItem) o).getText();
if(buttonPressed.equals("Save"))
save(MyMenu.shapeList);
if(buttonPressed.equals("Load"))
loadFile = true;
}
}
}
}