~josejuan-sanchez/+junk/original-jhv-experimental-version

« back to all changes in this revision

Viewing changes to src/jhv/src/org/helioviewer/jhv/internal_plugins/filter/opacity/OpacityPanel.java

  • Committer: José Juan Sánchez Hernández
  • Date: 2013-02-05 13:32:08 UTC
  • Revision ID: josejuan.sanchez@gmail.com-20130205133208-dfz1sh1uge5pjkny
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.helioviewer.jhv.internal_plugins.filter.opacity;
 
2
 
 
3
import javax.swing.BoxLayout;
 
4
import javax.swing.JSpinner;
 
5
import javax.swing.JTextField;
 
6
import javax.swing.SpinnerNumberModel;
 
7
import javax.swing.event.ChangeEvent;
 
8
import javax.swing.event.ChangeListener;
 
9
 
 
10
import org.helioviewer.jhv.gui.components.WheelSupport;
 
11
import org.helioviewer.viewmodel.filter.Filter;
 
12
import org.helioviewer.viewmodelplugin.filter.FilterAlignmentDetails;
 
13
import org.helioviewer.viewmodelplugin.filter.FilterPanel;
 
14
import org.helioviewer.viewmodelplugin.filter.FilterTabPanelManager.Area;
 
15
 
 
16
/**
 
17
 * Panel containing a spinner for changing the opacity of the image.
 
18
 * 
 
19
 * @author Markus Langenberg
 
20
 * @author Malte Nuhn
 
21
 */
 
22
public class OpacityPanel extends FilterPanel implements ChangeListener, FilterAlignmentDetails {
 
23
 
 
24
    private static final long serialVersionUID = 1L;
 
25
    private JSpinner opacitySpinner;
 
26
    private OpacityFilter filter;
 
27
 
 
28
    /**
 
29
     * Default constructor.
 
30
     * 
 
31
     */
 
32
    public OpacityPanel() {
 
33
        setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
 
34
 
 
35
        // title.setPreferredSize(new Dimension(AbstractFilterPanel.titleWidth,
 
36
        // AbstractFilterPanel.height));
 
37
        // add(title);
 
38
 
 
39
        opacitySpinner = new JSpinner();
 
40
        opacitySpinner.setModel(new SpinnerNumberModel(new Float(1), new Float(0), new Float(1), new Float(0.05f)));
 
41
        opacitySpinner.addChangeListener(this);
 
42
 
 
43
        JSpinner.NumberEditor editor = new JSpinner.NumberEditor(opacitySpinner, "0%");
 
44
        opacitySpinner.setEditor(editor);
 
45
        editor.getTextField().setColumns(3);
 
46
        editor.getTextField().setHorizontalAlignment(JTextField.CENTER);
 
47
 
 
48
        WheelSupport.installMouseWheelSupport(opacitySpinner);
 
49
        add(opacitySpinner);
 
50
 
 
51
        setEnabled(false);
 
52
    }
 
53
 
 
54
    /**
 
55
     * Override the setEnabled method in order to keep the containing
 
56
     * components' enabledState synced with the enabledState of this component.
 
57
     */
 
58
    public void setEnabled(boolean enabled) {
 
59
        super.setEnabled(enabled);
 
60
        opacitySpinner.setEnabled(enabled);
 
61
    }
 
62
 
 
63
    /**
 
64
     * {@inheritDoc}
 
65
     */
 
66
    @Override
 
67
    public void setFilter(Filter filter) {
 
68
        if (filter instanceof OpacityFilter) {
 
69
            this.filter = (OpacityFilter) filter;
 
70
            this.filter.setPanel(this);
 
71
            setEnabled(true);
 
72
        } else {
 
73
            setEnabled(false);
 
74
        }
 
75
    }
 
76
 
 
77
    /**
 
78
     * {@inheritDoc}
 
79
     */
 
80
    @Override
 
81
    public Area getArea() {
 
82
        return Area.TOP;
 
83
    }
 
84
 
 
85
    /**
 
86
     * Sets the opacity of the image.
 
87
     */
 
88
    public void stateChanged(ChangeEvent e) {
 
89
        if (filter != null) {
 
90
            float value = ((SpinnerNumberModel) opacitySpinner.getModel()).getNumber().floatValue();
 
91
            filter.setOpacity(value);
 
92
        }
 
93
    }
 
94
 
 
95
    /**
 
96
     * Sets the opacity value.
 
97
     * 
 
98
     * This may be useful, if the opacity is changed from another source than
 
99
     * the slider itself.
 
100
     * 
 
101
     * @param opacity
 
102
     *            New opacity value. Must be within [0, 100]
 
103
     */
 
104
    void setValue(float opacity) {
 
105
        ((SpinnerNumberModel) opacitySpinner.getModel()).setValue(opacity);
 
106
    }
 
107
 
 
108
    /**
 
109
     * {@inheritDoc}
 
110
     */
 
111
    public int getDetails() {
 
112
        return FilterAlignmentDetails.POSITION_OPACITY;
 
113
    }
 
114
}