@Override
    public void mouseReleased(MouseEvent e)
    {
      JButton sourceButton = (JButton) e.getSource();

      switch (sourceButton.getName())
      {
        case "Start":
          start = mPlayer.getTime();
          sourceButton.setText("Sequence Start: " + start);
          parent.repaint();
          break;
        case "End":
          end = mPlayer.getTime();
          sourceButton.setText("Sequence End: " + end);
          if(mPlayer.isPlaying()) mPlayer.pause();

          break;
        case "SaveSequence":
          if (start > 0 && end > 0)
          {
            if (start < end)
            {
              JFileChooser jfc = new JFileChooser("Please choose destination folder for the sequence image(s) and enter a prefix for the images.");
              jfc.showSaveDialog(null);
              if (jfc.getSelectedFile() != null)
              {
                snapshotTimer = new Timer();
                long rate = 1000 / Long.parseLong(fps.getText());
                mPlayer.setTime(start);
                mPlayer.start();
                snapshotTimer.purge();
                snapshotTimer.scheduleAtFixedRate(new Shutter(jfc.getSelectedFile().toString()), 0, rate);
              }
            }
            else
            {
              JOptionPane.showMessageDialog(null, "Unable to Save Sequence! Start position must be less than the end position.");
            }
          }
          else
          {
            JOptionPane.showMessageDialog(null, "Unable to Save Sequence! Must have a start and end position.");
          }

          break;
      }
    }