X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSlider.java;h=5dc335189802dc67a5fb9ee39a2aacac1a8263a4;hb=7f3e371b7fbae94e9b731956cbdebc866742c692;hp=b913ba0ea3cf518b34ba5382eb835c90080453ab;hpb=b645f92e338a4eea33bd2813c27917fb0fe5cc4d;p=jalview.git diff --git a/src/jalview/gui/Slider.java b/src/jalview/gui/Slider.java index b913ba0..5dc3351 100644 --- a/src/jalview/gui/Slider.java +++ b/src/jalview/gui/Slider.java @@ -1,3 +1,23 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.gui; import javax.swing.JSlider; @@ -16,6 +36,12 @@ import javax.swing.JSlider; public class Slider extends JSlider { /* + * the number of nominal positions the slider represents + * (higher number = more fine-grained positioning) + */ + private static final int SCALE_TICKS = 1000; + + /* * 'true' value corresponding to zero on the slider */ private float trueMin; @@ -29,7 +55,7 @@ public class Slider extends JSlider * scaleFactor applied to true value range to give a * slider range of 0 - 100 */ - private int sliderScaleFactor; + private float sliderScaleFactor; /** * Constructor that rescales min - max to 0 - 100 for the slider @@ -57,7 +83,7 @@ public class Slider extends JSlider trueMin = min; trueMax = max; setMinimum(0); - sliderScaleFactor = (int) (100f / (max - min)); + sliderScaleFactor = SCALE_TICKS / (max - min); int sliderMax = (int) ((max - min) * sliderScaleFactor); setMaximum(sliderMax); setSliderValue(value); @@ -75,7 +101,7 @@ public class Slider extends JSlider */ int value = getValue(); return value == getMaximum() ? trueMax - : value / (float) sliderScaleFactor + trueMin; + : value / sliderScaleFactor + trueMin; } /** @@ -85,12 +111,12 @@ public class Slider extends JSlider */ public void setSliderValue(float value) { - setValue((int) ((value - trueMin) * sliderScaleFactor)); + setValue(Math.round((value - trueMin) * sliderScaleFactor)); } /** - * Answers the value of the slider position as a percentage between minimum and - * maximum of its range + * Answers the value of the slider position as a percentage between minimum + * and maximum of its range * * @return */