3 * Copyright (C) 2007 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.
11 package eu
.etaxonomy
.taxeditor
.ui
.element
;
13 import org
.eclipse
.swt
.SWT
;
14 import org
.eclipse
.swt
.events
.ModifyEvent
;
15 import org
.eclipse
.swt
.widgets
.Display
;
17 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
18 import eu
.etaxonomy
.taxeditor
.ui
.campanula
.compatibility
.ICdmFormElement
;
22 * <p>NumberWithLabelElement class.</p>
25 * @created Mar 22, 2010
28 public class NumberWithLabelElement
extends TextWithLabelElement
{
33 private NumberFormatException exception
;
36 * <p>Constructor for NumberWithLabelElement.</p>
38 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
39 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
40 * @param labelString a {@link java.lang.String} object.
41 * @param initialNumber a {@link java.lang.Number} object.
44 public NumberWithLabelElement(CdmFormFactory toolkit
,
45 ICdmFormElement parentElement
, String labelString
,
46 Number initialNumber
, int style
) {
47 super(toolkit
, parentElement
, labelString
, null, null, style
);
48 setNumber(initialNumber
);
55 * @param number a {@link java.lang.Number} object.
57 public void setNumber(Number number
) {
58 super.setText(getStringRepresentation(number
));
64 * @return a {@link java.lang.Integer} object.
66 public Integer
getInteger() {
67 String text
= super.getText().trim();
68 return text
.equals("") ?
0 : new Integer(text
);
74 * @return a {@link java.lang.Float} object.
76 public Float
getFloat(){
77 String text
= super.getText();
78 return new Float(text
);
84 * @return a {@link java.lang.Float} object.
86 public Double
getDouble(){
87 String text
= super.getText();
88 return new Double(text
);
91 private String
getStringRepresentation(Object number
){
93 return number
.toString();
99 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
103 public void modifyText(ModifyEvent event
) {
104 String value
= text
.getText();
105 if(CdmUtils
.isEmpty(value
)){
106 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
112 Float number
= Float
.parseFloat(value
);
114 if((start
!= null && number
< start
) || (end
!= null && number
> end
)){
115 throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
118 }catch(NumberFormatException e
){
119 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
120 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e
));
126 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
128 super.modifyText(event
);
134 * @param numberOfDigits a int.
135 * @param start a {@link java.lang.Integer} object.
136 * @param end a {@link java.lang.Integer} object.
138 public void setLimits(int numberOfDigits
, Integer start
, Integer end
){
139 setLimits(numberOfDigits
, start
.floatValue(), end
.floatValue());
145 * @param numberOfDigits a int.
146 * @param start a {@link java.lang.Float} object.
147 * @param end a {@link java.lang.Float} object.
149 public void setLimits(int numberOfDigits
, Float start
, Float end
){
150 text
.setTextLimit(numberOfDigits
);
156 * <p>Getter for the field <code>exception</code>.</p>
158 * @return the exception
160 public NumberFormatException
getException() {