2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.ui
.element
;
12 import org
.apache
.commons
.lang
.StringUtils
;
13 import org
.eclipse
.swt
.SWT
;
14 import org
.eclipse
.swt
.events
.ModifyEvent
;
15 import org
.eclipse
.swt
.widgets
.Display
;
19 * <p>NumberWithLabelElement class.</p>
22 * @created Mar 22, 2010
24 public class NumberWithLabelElement
extends TextWithLabelElement
{
29 private NumberFormatException exception
;
32 * <p>Constructor for NumberWithLabelElement.</p>
34 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
35 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
36 * @param labelString a {@link java.lang.String} object.
37 * @param initialNumber a {@link java.lang.Number} object.
40 public NumberWithLabelElement(CdmFormFactory toolkit
,
41 ICdmFormElement parentElement
, String labelString
,
42 Number initialNumber
, int style
) {
43 super(toolkit
, parentElement
, labelString
, null, null, style
);
44 setNumber(initialNumber
);
48 * <p>Constructor for NumberWithLabelElement.</p>
50 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
51 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
52 * @param labelString a {@link java.lang.String} object.
53 * @param initialNumber a {@link java.lang.Number} object.
56 public NumberWithLabelElement(CdmFormFactory toolkit
,
57 ICdmFormElement parentElement
, String labelString
,
58 Number initialNumber
, Integer height
, Integer length
, int style
) {
59 super(toolkit
, parentElement
, labelString
, null, null, style
);
60 setNumber(initialNumber
);
67 * @param number a {@link java.lang.Number} object.
69 public void setNumber(Number number
) {
70 super.setText(getStringRepresentation(number
));
74 * Get the value of this field as an {@link Integer}.
75 * @return the Integer value or null if {@link NumberFormatException} occurs.
77 public Integer
getInteger() {
78 if(super.getText()!=null){
79 String text
= super.getText().trim();
81 return StringUtils
.isBlank(text
) ?
null : new Integer(text
);
82 } catch (NumberFormatException e
) {
90 * Get the value of this field as a {@link Float}.
91 * @return the Float value or null if {@link NumberFormatException} occurs.
93 public Float
getFloat(){
94 String text
= super.getText();
96 return StringUtils
.isBlank(text
) ?
null : new Float(text
);
97 } catch (NumberFormatException e
) {
104 * Get the value of this field as an {@link Double}.
105 * @return the Double value or null if {@link NumberFormatException} occurs.
107 public Double
getDouble(){
108 String text
= super.getText();
110 return StringUtils
.isBlank(text
) ?
null : new Double(text
);
111 } catch (NumberFormatException e
) {
117 private String
getStringRepresentation(Object number
){
119 return number
.toString();
126 public void modifyText(ModifyEvent event
) {
127 String value
= text
.getText();
128 if(StringUtils
.isBlank(value
)){
129 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
130 super.modifyText(event
);
135 Float number
= Float
.parseFloat(value
);
136 if((start
!= null && number
< start
) || (end
!= null && number
> end
)){
137 exception
= new NumberFormatException("You entered a number that is not within the allowed bounds.");
140 }catch(NumberFormatException e
){
141 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
142 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
148 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
150 super.modifyText(event
);
156 * @param numberOfDigits a int.
157 * @param start a {@link java.lang.Integer} object.
158 * @param end a {@link java.lang.Integer} object.
160 public void setLimits(int numberOfDigits
, Integer start
, Integer end
){
161 setLimits(numberOfDigits
, start
.floatValue(), end
.floatValue());
167 * @param numberOfDigits a int.
168 * @param start a {@link java.lang.Float} object.
169 * @param end a {@link java.lang.Float} object.
171 public void setLimits(int numberOfDigits
, Float start
, Float end
){
172 text
.setTextLimit(numberOfDigits
);
178 * <p>Getter for the field <code>exception</code>.</p>
180 * @return the exception
182 public NumberFormatException
getException() {