public void setStepWithAnimationSpeed(int step, int fps) {
    int currentFramesPerStep = artist.getFramesPerStep();

    artist.setFramesPerStep(fps);
    artist.setStepNum(step);

    repaint();

    artist.setFramesPerStep(currentFramesPerStep);
  }
 @Override
 public void mouseClicked(MouseEvent e) {
   if (isReady() && paintColor == -1) {
     if (artist
         .getSequence()
         .changeCardSide(
             artist.getPerspectiveEditPanel(),
             PointUtil.descalePoint(e.getPoint(), scale),
             artist.getStepNum())) {
       setStep(getStep());
     }
   }
 }
 @Override
 public void mouseDragged(MouseEvent e) {
   if (paintColor != -1) {
     if (artist
         .getSequence()
         .changeCardSide(
             artist.getPerspectiveEditPanel(),
             PointUtil.descalePoint(e.getPoint(), scale),
             artist.getStepNum(),
             paintColor)) {
       setStepWithNoAnimation(getStep());
     }
   }
 }
 /** Update the buffer for the display. Call only from paint(Graphics g). */
 private void updateDisplay() {
   if (isReady()) {
     this.cards = null;
     System.gc();
     this.cards = artist.drawFrame();
   }
 }
 /**
  * Set the step of the panel
  *
  * @param step
  */
 public void setStep(int step) {
   artist.setStepNum(step);
   updated = true;
 }
 /**
  * Set the sequence of the panel
  *
  * @param sequence
  */
 public void setSequence(Sequence sequence) {
   artist.setSequence(sequence);
   updated = true;
 }
 /**
  * Set the FPS (Frames per STEP) of the animation
  *
  * @param fps
  */
 public void setAnimationTiming(int fps) {
   artist.setFramesPerStep(fps);
   updated = true;
 }
 /**
  * Check to see if this panel is ready to display
  *
  * @return
  */
 private boolean isReady() {
   return (artist.getSequence() != null
       && (new Integer(artist.getStepNum()) != null && artist.getStepNum() != -1)
       && (new Integer(artist.getError()) != null && artist.getError() != -1));
 }
 /**
  * Set the error of the panel
  *
  * @param error
  */
 public void setError(int error) {
   artist.setError(error);
   updated = true;
 }
 /**
  * Set the scale of the panel
  *
  * @param scale
  */
 public void setScale(double scale) {
   artist.setScale(scale);
   this.scale = scale;
   updated = true;
 }
 /**
  * Get the current step
  *
  * @return int
  */
 public int getStep() {
   return artist.getStepNum();
 }