public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();

    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

    if (source == btFirst) {
      prot.firstStep();
    } else if (source == btLast) {
      prot.lastStep();
    } else if (source == btPrev) {
      prot.previousStep();
    } else if (source == btNext) {
      prot.nextStep();
    } else if (source == btPlay) {
      if (isPlaying) {
        player.stopAnimation();
      } else {
        player = new AutomaticPlayer(playDelay);
        player.startAnimation();
      }
    }

    if (prot.isVisible()) prot.scrollToConstructionStep();

    setCursor(Cursor.getDefaultCursor());
  }