001    /*
002     * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,
003     * Santa Clara, California 95054, U.S.A. All rights reserved.
004     *
005     * This library is free software; you can redistribute it and/or
006     * modify it under the terms of the GNU Lesser General Public
007     * License as published by the Free Software Foundation; either
008     * version 2.1 of the License, or (at your option) any later version.
009     *
010     * This library is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013     * Lesser General Public License for more details.
014     *
015     * You should have received a copy of the GNU Lesser General Public
016     * License along with this library; if not, write to the Free Software
017     * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
018     */
019    
020    package org.jdesktop.swingx.plaf.basic;
021    
022    import java.awt.Color;
023    import java.awt.Dimension;
024    import java.awt.Graphics;
025    import java.awt.Graphics2D;
026    import java.awt.Image;
027    import java.awt.Polygon;
028    import javax.imageio.ImageIO;
029    import javax.swing.JComponent;
030    import javax.swing.plaf.ComponentUI;
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            Image thumb;
059            public BasicThumbRenderer() {
060                try {
061                    thumb = ImageIO.read(this.getClass().getResourceAsStream("resources/JXMultiThumbSlider.thumb.png"));
062                } catch (Exception ex) {
063                    System.out.println(ex.getMessage());
064                    ex.printStackTrace();
065                }
066                setPreferredSize(new Dimension(14,14));
067            }
068    
069            protected void paintComponent(Graphics g) {
070                g.setColor(Color.green);
071                Polygon poly = new Polygon();
072                JComponent thumb = this;
073                poly.addPoint(thumb.getWidth()/2,0);
074                poly.addPoint(0,thumb.getHeight()/2);
075                poly.addPoint(thumb.getWidth()/2,thumb.getHeight());
076                poly.addPoint(thumb.getWidth(),thumb.getHeight()/2);
077                g.fillPolygon(poly);
078            }
079    
080            public JComponent getThumbRendererComponent(JXMultiThumbSlider slider, int index, boolean selected) {
081                return this;
082            }
083        }
084    
085        private class BasicTrackRenderer extends JComponent implements TrackRenderer {
086            private JXMultiThumbSlider slider;
087            public void paintComponent(Graphics g) {
088                g.setColor(slider.getBackground());
089                g.fillRect(0, 0, slider.getWidth(), slider.getHeight());
090                g.setColor(Color.black);
091                g.drawLine(0,slider.getHeight()/2,slider.getWidth(),slider.getHeight()/2);
092                g.drawLine(0,slider.getHeight()/2+1,slider.getWidth(),slider.getHeight()/2+1);
093            }
094    
095            public JComponent getRendererComponent(JXMultiThumbSlider slider) {
096                this.slider = slider;
097                return this;
098            }
099        }
100    
101    
102        
103    }