Index: trunk/src/scriptbuilder/gui/drawers/RangeSliderUI.java
===================================================================
--- trunk/src/scriptbuilder/gui/drawers/RangeSliderUI.java	(revision 26)
+++ trunk/src/scriptbuilder/gui/drawers/RangeSliderUI.java	(revision 27)
@@ -15,4 +15,5 @@
 import javax.swing.JComponent;
 import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
 import javax.swing.JPopupMenu;
 import javax.swing.JSlider;
@@ -48,4 +49,6 @@
  * UI delegate for the RangeSlider component. RangeSliderUI paints two thumbs,
  * one for the lower value and one for the upper value.
+ *
+ * Hacked to display and drag only the lower thumb by jdalbey
  */
 class RangeSliderUI extends BasicSliderUI
@@ -127,5 +130,6 @@
 
     /**
-     * Updates the locations for both thumbs.
+     * Updates the locations for both thumbs if the value change is not caused
+     * by dragging a thumb.
      */
     @Override
@@ -342,27 +346,28 @@
     private void paintUpperThumb(Graphics g)
     {
-        Rectangle knobBounds = upperThumbRect;
-        int w = knobBounds.width;
-        int h = knobBounds.height;
-
-        // Create graphics copy.
-        Graphics2D g2d = (Graphics2D) g.create();
-
-        // Create default thumb shape.
-        Shape thumbShape = createThumbShape(w - 1, h - 1);
-
-        // Draw thumb.
-        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                RenderingHints.VALUE_ANTIALIAS_ON);
-        g2d.translate(knobBounds.x, knobBounds.y);
-
-        g2d.setColor(Color.PINK);
-        g2d.fill(thumbShape);
-
-        g2d.setColor(Color.RED);
-        g2d.draw(thumbShape);
-
-        // Dispose graphics.
-        g2d.dispose();
+//        Remove drawing of upper thumb - jdalbey
+//        Rectangle knobBounds = upperThumbRect;
+//        int w = knobBounds.width;
+//        int h = knobBounds.height;
+//
+//        // Create graphics copy.
+//        Graphics2D g2d = (Graphics2D) g.create();
+//
+//        // Create default thumb shape.
+//        Shape thumbShape = createThumbShape(w - 1, h - 1);
+//
+//        // Draw thumb.
+//        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+//                RenderingHints.VALUE_ANTIALIAS_ON);
+//        g2d.translate(knobBounds.x, knobBounds.y);
+//
+//        g2d.setColor(Color.PINK);
+//        g2d.fill(thumbShape);
+//
+//        g2d.setColor(Color.RED);
+//        g2d.draw(thumbShape);
+//
+//        // Dispose graphics.
+//        g2d.dispose();
     }
 
@@ -493,5 +498,5 @@
         public void actionPerformed(ActionEvent e)
         {
-            System.out.println(e.getActionCommand() + " will be handled here.");
+            JOptionPane.showMessageDialog(null, e.getActionCommand() + " will be handled here.");
         }
     }
@@ -533,5 +538,5 @@
                 if (upperThumbRect.contains(currentMouseX, currentMouseY))
                 {
-                    upperPressed = true;
+                    //upperPressed = true;
                 }
                 else if (thumbRect.contains(currentMouseX, currentMouseY))
@@ -548,5 +553,5 @@
                 else if (upperThumbRect.contains(currentMouseX, currentMouseY))
                 {
-                    upperPressed = true;
+                    //upperPressed = true;
                 }
             }
@@ -566,4 +571,5 @@
                 upperThumbSelected = false;
                 lowerDragging = true;
+                // ALERT: Return from middle of method
                 return;
             }
@@ -584,4 +590,5 @@
                 upperThumbSelected = true;
                 upperDragging = true;
+                // ALERT: Return from middle of method
                 return;
             }
@@ -613,5 +620,5 @@
                 slider.setValueIsAdjusting(true);
                 moveLowerThumb();
-
+                syncUpperThumb();
             }
             else if (upperDragging)
@@ -657,5 +664,5 @@
                     thumbTop = Math.min(thumbTop, trackBottom - halfThumbHeight);
 
-                    setThumbLocation(thumbRect.x, thumbTop);
+                    setThumbLocation(thumbRect.x, thumbTop); // repaint
 
                     // Update slider value.
@@ -683,9 +690,52 @@
                     thumbLeft = Math.min(thumbLeft, trackRight - halfThumbWidth);
 
-                    setThumbLocation(thumbLeft, thumbRect.y);
+                    setThumbLocation(thumbLeft, thumbRect.y); //repaint
 
                     // Update slider value.
                     thumbMiddle = thumbLeft + halfThumbWidth;
                     slider.setValue(valueForXPosition(thumbMiddle));
+                    break;
+
+                default:
+                    return;
+            }
+        }
+
+        /**
+         * Moves the location of the upper thumb to be in sync with the lower
+         * thumb so that the extent is unchanged.
+         *
+         * @author jdalbey
+         */
+        private void syncUpperThumb()
+        {
+            int thumbMiddle = 0;
+
+            switch (slider.getOrientation())
+            {
+                case JSlider.HORIZONTAL:
+                    int halfThumbWidth = thumbRect.width / 2;
+                    int sliderLength = xPositionForValue(slider.getExtent());
+                    int thumbLeft = currentMouseX - offset + sliderLength;
+                    int trackLeft = trackRect.x;
+                    int trackRight = trackRect.x + (trackRect.width - 1);
+                    int hMin = xPositionForValue(slider.getValue());
+
+                    // Handle backwards (inverted) slider
+                    if (drawInverted())
+                    {
+                        trackRight = hMin;
+                    }
+                    else
+                    {
+                        trackLeft = hMin;
+                    }
+                    // Apply bounds to thumb position.
+                    thumbLeft = Math.max(thumbLeft, trackLeft - halfThumbWidth);
+                    thumbLeft = Math.min(thumbLeft, trackRight - halfThumbWidth);
+
+                    setUpperThumbLocation(thumbLeft, thumbRect.y);  // repaint slider
+
+                    // Don't Update slider extent.
                     break;
 
Index: trunk/src/scriptbuilder/gui/drawers/RangeSlider.java
===================================================================
--- trunk/src/scriptbuilder/gui/drawers/RangeSlider.java	(revision 26)
+++ trunk/src/scriptbuilder/gui/drawers/RangeSlider.java	(revision 27)
@@ -26,5 +26,4 @@
 THE SOFTWARE.
  */
-
 /**
  * An extension of JSlider to select a range of values using two thumb controls.
@@ -104,8 +103,9 @@
         int oldExtent = getExtent();
         int newValue = Math.min(Math.max(getMinimum(), value), oldValue + oldExtent);
-        int newExtent = oldExtent + oldValue - newValue;
+        // Hacked to not change the extent (move the entire slider)
+        //int newExtent = oldExtent + oldValue - newValue;
 
-        // Set new value and extent, and fire a single change event.
-        getModel().setRangeProperties(newValue, newExtent, getMinimum(),
+        // Set new value and fire a single change event.
+        getModel().setRangeProperties(newValue, oldExtent, getMinimum(),
                 getMaximum(), getValueIsAdjusting());
     }
