I started to implement OceanTheme support for the MetalSliderUI. It is
not complete yet, for now we only have Ocean'ish slider track painting.
The thumb with the gradient is still missing.

2006-03-14  Roman Kennke  <[EMAIL PROTECTED]>

        * javax/swing/plaf/metal/MetalSliderUI.java
        (paintTrack): Added OceanTheme support.

/Roman
Index: javax/swing/plaf/metal/MetalSliderUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalSliderUI.java,v
retrieving revision 1.7
diff -u -r1.7 MetalSliderUI.java
--- javax/swing/plaf/metal/MetalSliderUI.java	27 Oct 2005 09:50:58 -0000	1.7
+++ javax/swing/plaf/metal/MetalSliderUI.java	14 Mar 2006 16:27:51 -0000
@@ -224,22 +224,40 @@
           }
 
         // fill track (if required)
-        if (filledSlider) 
-        {
-          int xPos = xPositionForValue(slider.getValue());
-          int x = (slider.getInverted() ? xPos : trackRect.x);
-          int w = (slider.getInverted() ? trackX + trackW - xPos 
-                  : xPos - trackRect.x);
-          g.setColor(MetalLookAndFeel.getControlShadow());
-          g.fillRect(x + 1, trackY + 1, w - 3, getTrackWidth() - 3);
-          if (slider.isEnabled())
-            {
-              g.setColor(MetalLookAndFeel.getControl());
-              g.drawLine(x + 1, trackY + 1, x + w - 3, trackY + 1);
-              g.drawLine(x + 1, trackY + 1, x + 1, 
-                      trackY + getTrackWidth() - 3);
-            }
-        }
+        if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
+          {
+            if (slider.isEnabled())
+              {
+                int xPos = xPositionForValue(slider.getValue());
+                int x = (slider.getInverted() ? xPos : trackRect.x);
+                int w = (slider.getInverted() ? trackX + trackW - xPos 
+                                              : xPos - trackRect.x);
+                g.setColor(MetalLookAndFeel.getWhite());
+                g.drawLine(x + 1, trackY + 1, x + w - 3, trackY + 1);
+                g.setColor(UIManager.getColor("Slider.altTrackColor"));
+                g.drawLine(x + 1, trackY + 2, x + w - 3, trackY + 2);
+                g.setColor(MetalLookAndFeel.getControlShadow());
+                g.drawLine(x + 1, trackY + 3, x + w - 3, trackY + 3);
+                g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
+                g.drawLine(x + 1, trackY + 4, x + w - 3, trackY + 4);
+              }
+          }
+        else if (filledSlider) 
+          {
+            int xPos = xPositionForValue(slider.getValue());
+            int x = (slider.getInverted() ? xPos : trackRect.x);
+            int w = (slider.getInverted() ? trackX + trackW - xPos 
+                                          : xPos - trackRect.x);
+            g.setColor(MetalLookAndFeel.getControlShadow());
+            g.fillRect(x + 1, trackY + 1, w - 3, getTrackWidth() - 3);
+            if (slider.isEnabled())
+              {
+                g.setColor(MetalLookAndFeel.getControl());
+                g.drawLine(x + 1, trackY + 1, x + w - 3, trackY + 1);
+                g.drawLine(x + 1, trackY + 1, x + 1, 
+                           trackY + getTrackWidth() - 3);
+              }
+          }
       }
     else
       {
@@ -255,8 +273,28 @@
             g.setColor(MetalLookAndFeel.getControlShadow());
             g.drawRect(trackX, trackY, trackW - 2, trackH - 2);
           }
-        
-        if (filledSlider) 
+
+        // Fill track if necessary.
+        if (MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
+          {
+            if (slider.isEnabled())
+              {
+                int yPos = yPositionForValue(slider.getValue());
+                int y = (slider.getInverted() ? trackY : yPos);
+                int h = (slider.getInverted() ? yPos - trackY 
+                        : trackY + trackH - yPos);
+                
+                g.setColor(MetalLookAndFeel.getWhite());
+                g.drawLine(trackX + 1, y + 1, trackX + 1, y + h - 3);
+                g.setColor(UIManager.getColor("Slider.altTrackColor"));
+                g.drawLine(trackX + 2, y + 1, trackX + 2, y + h - 3);
+                g.setColor(MetalLookAndFeel.getControlShadow());
+                g.drawLine(trackX + 3, y + 1, trackX + 3, y + h - 3);
+                g.setColor(MetalLookAndFeel.getPrimaryControlShadow());
+                g.drawLine(trackX + 4, y + 1, trackX + 4, y + h - 3);
+              }
+          }
+        else if (filledSlider) 
           {
           int yPos = yPositionForValue(slider.getValue());
           int y = (slider.getInverted() ? trackY : yPos);

Reply via email to