3 * Copyright (C) 2013 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.ui
.element
;
12 import org
.eclipse
.swt
.SWT
;
13 import org
.eclipse
.swt
.events
.ModifyEvent
;
14 import org
.eclipse
.swt
.widgets
.Composite
;
15 import org
.eclipse
.swt
.widgets
.Display
;
16 import org
.eclipse
.ui
.forms
.widgets
.FormToolkit
;
18 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
25 public class NumberWithLabelElementComposite
extends TextWithLabelComposite
{
30 private NumberFormatException exception
;
33 * <p>Constructor for NumberWithLabelElement.</p>
35 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
36 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
37 * @param labelString a {@link java.lang.String} object.
38 * @param initialInteger a {@link java.lang.Integer} object.
41 public NumberWithLabelElementComposite(Composite parent
, FormToolkit formFactory
, ICdmFormElement parentFormElement
,
42 String labelString
, Integer initialInteger
, int style
){
43 this(parent
, formFactory
, parentFormElement
, labelString
, new Float(initialInteger
), style
);
47 * <p>Constructor for NumberWithLabelElement.</p>
49 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
50 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
51 * @param labelString a {@link java.lang.String} object.
52 * @param initialFloat a {@link java.lang.Float} object.
54 * @wbp.parser.constructor
56 public NumberWithLabelElementComposite(Composite parent
, FormToolkit formFactory
,
57 ICdmFormElement parentElement
, String labelString
,
58 Float initialFloat
, int style
) {
59 super(parent
, formFactory
, parentElement
, labelString
, null, null, style
);
60 setFloat(initialFloat
);
66 * @param number a {@link java.lang.Integer} object.
68 public void setInteger(Integer number
) {
69 super.setText(getStringRepresentation(number
));
75 * @param number a {@link java.lang.Float} object.
77 public void setFloat(Float number
) {
78 super.setText(getStringRepresentation(number
));
84 * @return a {@link java.lang.Integer} object.
86 public Integer
getInteger() {
87 String text
= super.getText().trim();
88 return text
.equals("") ?
0 : new Integer(text
);
94 * @return a {@link java.lang.Float} object.
96 public Float
getFloat(){
97 String text
= super.getText();
98 return new Float(text
);
101 private String
getStringRepresentation(Object number
){
103 return number
.toString();
109 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
113 public void modifyText(ModifyEvent event
) {
114 String value
= text
.getText();
115 if(CdmUtils
.isEmpty(value
)){
116 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
122 Float number
= Float
.parseFloat(value
);
124 if((start
!= null && number
< start
) || (end
!= null && number
> end
)){
125 throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
128 }catch(NumberFormatException e
){
129 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
130 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e
));
136 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
138 super.modifyText(event
);
144 * @param numberOfDigits a int.
145 * @param start a {@link java.lang.Integer} object.
146 * @param end a {@link java.lang.Integer} object.
148 public void setLimits(int numberOfDigits
, Integer start
, Integer end
){
149 setLimits(numberOfDigits
, start
.floatValue(), end
.floatValue());
155 * @param numberOfDigits a int.
156 * @param start a {@link java.lang.Float} object.
157 * @param end a {@link java.lang.Float} object.
159 public void setLimits(int numberOfDigits
, Float start
, Float end
){
160 text
.setTextLimit(numberOfDigits
);
166 * <p>Getter for the field <code>exception</code>.</p>
168 * @return the exception
170 public NumberFormatException
getException() {