Browse Source

slider now jumps to mouse postion on left click

jess 7 years ago
parent
commit
a541bbcfb5
1 changed files with 17 additions and 0 deletions
  1. 17 0
      src/ui/view/TimePanel.java

+ 17 - 0
src/ui/view/TimePanel.java

@@ -21,6 +21,10 @@ import javax.swing.event.CaretEvent;
 import javax.swing.event.CaretListener;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
+import javax.swing.plaf.SliderUI;
+import javax.swing.plaf.basic.BasicSliderUI;
+import javax.swing.plaf.metal.MetalSliderUI;
+import javax.swing.plaf.synth.SynthSliderUI;
 
 import ui.controller.Control;
 import ui.model.Model;
@@ -208,6 +212,19 @@ public class TimePanel extends JPanel {
 
 		this.add(timeBtnPanel, BorderLayout.WEST);
 		this.add(timeSlider);
+		
+		// Make the slider jump to mouse position on left click
+		timeSlider.setUI(new SynthSliderUI(timeSlider) {
+		    protected void scrollDueToClickInTrack(int direction) {
+		        int value = timeSlider.getValue(); 
+		        if (timeSlider.getOrientation() == JSlider.HORIZONTAL) {
+		            value = this.valueForXPosition(timeSlider.getMousePosition().x);
+		        } else if (timeSlider.getOrientation() == JSlider.VERTICAL) {
+		            value = ((BasicSliderUI)this).valueForYPosition(timeSlider.getMousePosition().y);
+		        }
+		        timeSlider.setValue(value);
+		    }
+		});
 	}
 
 	/**