001package conexp.fx.gui.graph.option;
002
003/*
004 * #%L
005 * Concept Explorer FX
006 * %%
007 * Copyright (C) 2010 - 2023 Francesco Kriegel
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025import conexp.fx.core.util.Constants;
026import javafx.util.Duration;
027
028public enum AnimationSpeed {
029  OFF(0, "Off"),
030  FASTESTEST(1, "Fastestest"),
031  FASTESTER(2, "Fastester"),
032  FASTEST(3, "Fastest"),
033  FASTER(5, "Faster"),
034  FAST(7, "Fast"),
035  DEFAULT(10, "Default"),
036  SLOW(14, "Slow"),
037  SLOWER(19, "Slower"),
038  SLOWEST(25, "Slowest"),
039  SLOWESTER(32, "Slowester"),
040  SLOWESTEST(40, "Slowestest");
041
042  public final int      n;
043  public final String   title;
044  public final Duration frameSize;
045
046  private AnimationSpeed(final int n, final String title) throws IllegalArgumentException {
047    this.n = n;
048    this.title = title;
049    if (n < 0)
050      throw new IllegalArgumentException("Unable to set negative frame size.");
051    else if (n == 0)
052      this.frameSize = Duration.ONE;
053    else
054      this.frameSize = Duration.millis(Constants.FRAME_SIZE_MILLIS * n);
055  }
056
057  public String toString() {
058    return title;
059  }
060}