Project

General

Profile

Download (3.51 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.ui.element;
11

    
12
import org.eclipse.swt.SWT;
13
import org.eclipse.swt.events.SelectionEvent;
14
import org.eclipse.swt.events.SelectionListener;
15
import org.eclipse.swt.graphics.Color;
16
import org.eclipse.swt.widgets.Button;
17
import org.eclipse.swt.widgets.Label;
18

    
19
import eu.etaxonomy.taxeditor.preference.Resources;
20

    
21
/**
22
 * <p>CheckboxElement class.</p>
23
 *
24
 * @author n.hoffmann
25
 * @created Nov 5, 2009
26
 * @version 1.0
27
 */
28
public class CheckboxElement extends AbstractCdmFormElement implements SelectionListener, IEnableableFormElement, ISelectable {
29

    
30
	private final Button checkbox;
31

    
32
	private Label label;
33

    
34
	/**
35
	 * <p>Constructor for CheckboxElement.</p>
36
	 *
37
	 * @param initialState a boolean.
38
	 * @param style a int.
39
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
40
	 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
41
	 * @param labelString a {@link java.lang.String} object.
42
	 */
43
	protected CheckboxElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString, boolean initialState,
44
			int style) {
45
		super(formFactory, parentElement);
46

    
47
		if(labelString != null){
48
			label = formFactory.createLabel(getLayoutComposite(), labelString);
49
			addControl(label);
50
		}
51

    
52
		checkbox = formFactory.createButton(getLayoutComposite(), null, SWT.CHECK | style);
53
		checkbox.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
54

    
55
		checkbox.setSelection(initialState);
56

    
57
		checkbox.addSelectionListener(this);
58
		addControl(checkbox);
59
	}
60

    
61
	/**
62
	 * <p>setSelection</p>
63
	 *
64
	 * @param selected a boolean.
65
	 */
66
	public void setSelection(boolean selected){
67
		checkbox.removeSelectionListener(this);
68
		checkbox.setSelection(selected);
69
		checkbox.addSelectionListener(this);
70
	}
71

    
72
	/**
73
	 * <p>getSelection</p>
74
	 *
75
	 * @return a boolean.
76
	 */
77
	public boolean getSelection(){
78
		return checkbox.getSelection();
79
	}
80

    
81
	/* (non-Javadoc)
82
	 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
83
	 */
84
	/** {@inheritDoc} */
85
	@Override
86
    public void widgetSelected(SelectionEvent e) {
87
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
88
	}
89

    
90
	/** {@inheritDoc} */
91
	@Override
92
    public void widgetDefaultSelected(SelectionEvent e) {}
93

    
94
	/** {@inheritDoc} */
95
	@Override
96
    public void setSelected(boolean selected) {
97
		setBackground(selected ? SELECTED : getPersistentBackground());
98
	}
99

    
100
	/** {@inheritDoc} */
101
	@Override
102
    public void setEnabled(boolean enabled) {
103
		checkbox.setEnabled(enabled);
104
		label.setEnabled(enabled);
105
	}
106

    
107
	/* (non-Javadoc)
108
	 * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
109
	 */
110
	@Override
111
	public boolean isEnabled() {
112
	    return checkbox.isEnabled();
113
	}
114

    
115
	/** {@inheritDoc} */
116
	@Override
117
    public void setIrrelevant(boolean irrelevant) {
118
		String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
119

    
120
		Color color = getColor(colorId);
121
		setBackground(color);
122
	}
123

    
124
	/* (non-Javadoc)
125
	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#setBackground(org.eclipse.swt.graphics.Color)
126
	 */
127
	/** {@inheritDoc} */
128
	@Override
129
	public void setBackground(Color color) {
130
		checkbox.setBackground(color);
131
		if (label != null) {
132
            label.setBackground(color);
133
        }
134
	}
135
}
(9-9/45)