Skip to content
Snippets Groups Projects
Select Git revision
  • aadfe671f910cc66bddc32d7077e4e02d5f22e04
  • master default protected
2 results

Simulation.class

Blame
  • PaintGUI.java 7.43 KiB
    package client;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    public class PaintGUI {
    
    
        String[] shapes = {"Freehand", "Line", "Circle", "Rectangle", "Oval", "Eraser"};
        String[] colors = {"Aqua", "Black", "Blue", "Fuchsia", "Gray", "Green", "Lime", "Maroon", "Navy", "Olive", "Purple", "Red", "Silver", "Teal", "White", "Yellow"};
        JFrame frame;
        JButton clearBtn, newBtn, openBtn, saveBtn, saveAsBtn, closeBtn;
        JComboBox colorOptions;
        JComboBox shapeOptions;
    
        DrawingArea drawingArea;
    
        JFileChooser fileChooser= new JFileChooser();
        JPanel toolbox = new JPanel();
        JPanel fileControl = new JPanel();
        ActionListener actionListener = new ActionListener() {
    
            public void actionPerformed(ActionEvent e) {
    
    /// Clear button ///
                if (e.getSource() == clearBtn) {
                    drawingArea.clear();
    
    /// Create new canvas ///
                } else if (e.getSource() == newBtn) {
                    int returnVal = JOptionPane.showConfirmDialog(new JFrame(), "Save your current whiteboard?", "Save or Discard", JOptionPane.YES_NO_CANCEL_OPTION);
                    if (returnVal == JOptionPane.YES_OPTION) {
    
                        drawingArea.saveFile();
                        drawingArea.clear();
    
                    } else if (returnVal == JOptionPane.NO_OPTION) {
    
                        drawingArea.clear();
    
                    }
    
    // Open file (PNG only) ///
                } else if (e.getSource() == openBtn) {
                    int returnVal = fileChooser.showOpenDialog(frame);
                    if (returnVal == JFileChooser.APPROVE_OPTION) {
                        File file = fileChooser.getSelectedFile();
                        drawingArea.openFile(file);
                    }
    
    /// Save under project directory without filename (PNG file with default filename) ///
                } else if (e.getSource() == saveBtn) {
                    drawingArea.saveFile();
    
    /// Save with other filename (PNG only) ///
                } else if (e.getSource() == saveAsBtn) {
                    fileChooser = new JFileChooser();
                    int returnVal = fileChooser.showSaveDialog(frame);
                    if (returnVal == JFileChooser.APPROVE_OPTION) {
                        File file = fileChooser.getSelectedFile();
                        drawingArea.saveAsFile(file);
                    }
    
    /// Close application ///
                } else if (e.getSource() == closeBtn) {
                    System.exit(0);
    
    /// Choose drawing color ///
                } else if (e.getSource() == colorOptions) {
    
                    String colorChosen = (String) colorOptions.getSelectedItem();
    
                    switch (colorChosen){
                        case "Aqua":
                            drawingArea.setColorAqua();
                            break;
                        case "Black":
                            drawingArea.setColorBlack();
                            break;
                        case "Blue":
                            drawingArea.setColorBlue();
                            break;
                        case "Fuchsia":
                            drawingArea.setColorFuchsia();
                            break;
                        case "Gray":
                            drawingArea.setColorGray();
                            break;
                        case "Green":
                            drawingArea.setColorGreen();
                            break;
                        case "Lime":
                            drawingArea.setColorLime();
                            break;
                        case "Maroon":
                            drawingArea.setColorMaroon();
                            break;
                        case "Navy":
                            drawingArea.setColorNavy();
                            break;
                        case "Olive":
                            drawingArea.setColorOlive();
                            break;
                        case "Purple":
                            drawingArea.setColorPurple();
                            break;
                        case "Red":
                            drawingArea.setColorRed();
                            break;
                        case "Silver":
                            drawingArea.setColorSilver();
                            break;
                        case "Teal":
                            drawingArea.setColorTeal();
                            break;
                        case "White":
                            drawingArea.setColorWhite();
                            break;
                        case "Yellow":
                            drawingArea.setColorYellow();
                            break;
                    }
    
    /// Choose drawing tool ///
                } else if (e.getSource() == shapeOptions) {
    
                    String shapeChosen = (String) shapeOptions.getSelectedItem();
    
                    switch (shapeChosen){
                        case "Freehand":
                            drawingArea.setModeFreehand();
                            break;
                        case "Line":
                            drawingArea.setModeLine();
                            break;
                        case "Circle":
                            drawingArea.setModeCircle();
                            break;
                        case "Rectangle":
                            drawingArea.setModeRectangle();
                            break;
                        case "Oval":
                            drawingArea.setModeOval();
                            break;
                        case "Eraser":
                            drawingArea.setModeErase();
                            break;
                    }
                }
            }
        };
    
    /// Main program ///
        public static void main(String[] args) {
            new PaintGUI().createAndShowGUI();
        }
    
    
    /// GUI setup ///
        private void createAndShowGUI() {
    
    /// Main drawing area ///
            drawingArea = new DrawingArea();
    
    /// Set up main frame and container ///
            frame = new JFrame("Shared Whiteboard System");
            JFrame.setDefaultLookAndFeelDecorated(true);
            Container content = frame.getContentPane();
            content.setLayout(new BorderLayout());
    
    /// Set up elements ///
            shapeOptions = new JComboBox(shapes);
            shapeOptions.addActionListener(actionListener);
            colorOptions = new JComboBox(colors);
            colorOptions.setSelectedItem("Black");
            colorOptions.addActionListener(actionListener);
            clearBtn = new JButton("Clear");
            clearBtn.addActionListener(actionListener);
            newBtn = new JButton("New");
            newBtn.addActionListener(actionListener);
            openBtn = new JButton("Open");
            openBtn.addActionListener(actionListener);
            saveBtn = new JButton("Save");
            saveBtn.addActionListener(actionListener);
            saveAsBtn = new JButton("Save As");
            saveAsBtn.addActionListener(actionListener);
            closeBtn = new JButton("Close");
            closeBtn.addActionListener(actionListener);
    
    /// Toolbox panel ///
            toolbox.add(colorOptions);
            toolbox.add(shapeOptions);
            toolbox.add(clearBtn);
    
    /// File control panel ///
            fileControl.add(newBtn);
            fileControl.add(openBtn);
            fileControl.add(saveBtn);
            fileControl.add(saveAsBtn);
            fileControl.add(closeBtn);
    
    /// Layout ///
            content.add(fileControl, BorderLayout.NORTH);
            content.add(drawingArea);
            content.add(toolbox, BorderLayout.SOUTH);
    
    /// Miscellaneous ///
            frame.setSize(800, 600);
            frame.setLocationRelativeTo( null );
            frame.setResizable(false);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
    
        }
    
    }