001    /*
002     * $Id: BasicMultiThumbSliderUI.java 3200 2009-01-21 20:35:34Z kschaefe $
003     *
004     * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
005     * Santa Clara, California 95054, U.S.A. All rights reserved.
006     *
007     * This library is free software; you can redistribute it and/or
008     * modify it under the terms of the GNU Lesser General Public
009     * License as published by the Free Software Foundation; either
010     * version 2.1 of the License, or (at your option) any later version.
011     *
012     * This library is distributed in the hope that it will be useful,
013     * but WITHOUT ANY WARRANTY; without even the implied warranty of
014     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
015     * Lesser General Public License for more details.
016     *
017     * You should have received a copy of the GNU Lesser General Public
018     * License along with this library; if not, write to the Free Software
019     * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
020     */
021    package org.jdesktop.swingx.plaf.basic;
022    
023    import java.awt.Color;
024    import java.awt.Dimension;
025    import java.awt.Graphics;
026    import java.awt.Polygon;
027    
028    import javax.swing.JComponent;
029    import javax.swing.plaf.ComponentUI;
030    
031    import org.jdesktop.swingx.JXMultiThumbSlider;
032    import org.jdesktop.swingx.multislider.ThumbRenderer;
033    import org.jdesktop.swingx.multislider.TrackRenderer;
034    import org.jdesktop.swingx.plaf.MultiThumbSliderUI;
035    
036    /**
037     *
038     * @author Joshua Marinacci
039     */
040    public class BasicMultiThumbSliderUI extends MultiThumbSliderUI {
041        
042        protected JXMultiThumbSlider<?> slider;
043        
044        public static ComponentUI createUI(JComponent c) {
045            return new BasicMultiThumbSliderUI();
046        }
047        
048        public void installUI(JComponent c) {
049            slider = (JXMultiThumbSlider<?>)c;
050            slider.setThumbRenderer(new BasicThumbRenderer());
051            slider.setTrackRenderer(new BasicTrackRenderer());        
052        }
053        public void uninstallUI(JComponent c) {
054            slider = null;
055        }
056    
057        private class BasicThumbRenderer extends JComponent implements ThumbRenderer {
058            public BasicThumbRenderer() {
059                setPreferredSize(new Dimension(14,14));
060            }
061    
062            protected void paintComponent(Graphics g) {
063                g.setColor(Color.green);
064                Polygon poly = new Polygon();
065                JComponent thumb = this;
066                poly.addPoint(thumb.getWidth()/2,0);
067                poly.addPoint(0,thumb.getHeight()/2);
068                poly.addPoint(thumb.getWidth()/2,thumb.getHeight());
069                poly.addPoint(thumb.getWidth(),thumb.getHeight()/2);
070                g.fillPolygon(poly);
071            }
072    
073            public JComponent getThumbRendererComponent(JXMultiThumbSlider slider, int index, boolean selected) {
074                return this;
075            }
076        }
077    
078        private class BasicTrackRenderer extends JComponent implements TrackRenderer {
079            private JXMultiThumbSlider<?> slider;
080            public void paintComponent(Graphics g) {
081                g.setColor(slider.getBackground());
082                g.fillRect(0, 0, slider.getWidth(), slider.getHeight());
083                g.setColor(Color.black);
084                g.drawLine(0,slider.getHeight()/2,slider.getWidth(),slider.getHeight()/2);
085                g.drawLine(0,slider.getHeight()/2+1,slider.getWidth(),slider.getHeight()/2+1);
086            }
087    
088            public JComponent getRendererComponent(JXMultiThumbSlider slider) {
089                this.slider = slider;
090                return this;
091            }
092        }
093    }