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}