public void actionPerformed(ActionEvent e) {
        Object obj;

        if ((obj = e.getSource()) == bFile) {
            JFileChooser filechooser = new JFileChooser(new File("./"));

            int selected = filechooser.showOpenDialog(this);
            if (selected == JFileChooser.APPROVE_OPTION) {
                File file = filechooser.getSelectedFile();
                newRun.createMaze(file.getPath());
                initMaze();
                fileName.setText("Opened file: " + file.getName());
                bStart.setEnabled(true);
            } else if (selected == JFileChooser.CANCEL_OPTION) {
                fileName.setText("Operation canceled");
            } else if (selected == JFileChooser.ERROR_OPTION) {
                fileName.setText("Error opening file");
            }
        } else if (obj == bClear) {
            bStart.setEnabled(false);
            bNext.setEnabled(false);
            unsetColor();
            newRun.resetAll();
            initMaze();
        } else if (obj == bReset) {
            bStart.setEnabled(true);
            bNext.setEnabled(false);
            unsetColor();
            newRun.resetDroid();
            initMaze();
        } else if (obj == bNext) {
            unsetColor();
            newRun.makeNextMove();
            setColors();
            updateMaze();
        } else if (obj == bStart) {
            bStart.setEnabled(false);
            bNext.setEnabled(true);
            startMaze();
            setColors();
        } else {
            JOptionPane.showMessageDialog(this, "Something went wrong...");
        }
    } // end method