ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / CheckboxElement.java
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 }