root / trunk / libraries / libTopology / src / com / vividsolutions / jcs / plugin / conflate / polygonmatch / ColorSliderPanel.java @ 22873
History | View | Annotate | Download (2.86 KB)
1 | 22873 | azabala | 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 | } |