Statistics
| Revision:

root / trunk / libraries / libTopology / src / com / vividsolutions / jcs / plugin / conflate / polygonmatch / ColorSliderPanel.java @ 22873

History | View | Annotate | Download (2.86 KB)

1
package com.vividsolutions.jcs.plugin.conflate.polygonmatch;
2

    
3
import java.awt.BorderLayout;
4
import java.text.DecimalFormat;
5

    
6
import javax.swing.JLabel;
7
import javax.swing.JPanel;
8
import javax.swing.JSlider;
9
import javax.swing.SwingConstants;
10
import javax.swing.event.ChangeEvent;
11
import javax.swing.event.ChangeListener;
12

    
13
import com.vividsolutions.jump.workbench.WorkbenchContext;
14
import com.vividsolutions.jump.workbench.model.Layer;
15
import com.vividsolutions.jump.workbench.model.LayerManager;
16
import java.awt.Color;
17

    
18
public class ColorSliderPanel extends JPanel {
19
    private BorderLayout borderLayout1 = new BorderLayout();
20
    private JSlider slider = new JSlider();
21
    private WorkbenchContext context;
22

    
23
    public JSlider getSlider() {
24
        return slider;
25
    }
26
    private LayerManager dummyLayerManager = new LayerManager();
27
    private JLabel label = new JLabel();
28
    public ColorSliderPanel(WorkbenchContext context) {
29
        this.context = context;
30
        try {
31
            jbInit();
32
        } catch (Exception ex) {
33
            ex.printStackTrace();
34
        }
35
        label.setToolTipText(slider.getToolTipText());
36
        ChangeListener changeListener = new ChangeListener() {
37
            private DecimalFormat formatter = new DecimalFormat("0.00");
38
            public void stateChanged(ChangeEvent e) {
39
                label.setText(formatter.format(
40
                    Math.round(getThreshold() * 100) / 100.0));
41
                if (slider.getValueIsAdjusting()) {
42
                    return;
43
                }
44
                Layer layer = layerManager().getLayer(MatchPlugIn.MATCH_PAIR_LAYER_NAME);
45
                if (layer == null) {
46
                    return;
47
                }
48
                ((MatchPairStyle) layer.getStyle(MatchPairStyle.class)).setThreshold(getThreshold());
49
                layer.fireAppearanceChanged();
50
            }
51
        };
52
        slider.addChangeListener(changeListener);
53
        changeListener.stateChanged(null);
54
    }
55

    
56
    private LayerManager layerManager() {
57
        return (context.getLayerManager() == null)
58
            ? dummyLayerManager
59
            : context.getLayerManager();
60
    }
61
    void jbInit() throws Exception {
62
        this.setLayout(borderLayout1);
63
        slider.setOrientation(SwingConstants.VERTICAL);
64
        slider.setToolTipText("Matches below this score will be drawn with a paler color");
65
        label.setForeground(Color.blue);
66
        label.setHorizontalAlignment(SwingConstants.CENTER);
67
        label.setText("0.0");
68
        this.add(slider, BorderLayout.CENTER);
69
        this.add(label,  BorderLayout.SOUTH);
70
        slider.setValue(0);
71
    }
72
    public double getThreshold() {
73
        return slider.getValue() / 100.0;
74
    }
75
    public void setThreshold(double threshold) {
76
        slider.setValue((int) (threshold * 100));
77
    }
78
    public void addChangeListener(ChangeListener l) {
79
        slider.addChangeListener(l);
80
    }
81

    
82
}