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
.section
.campanula
;
12 import org
.eclipse
.swt
.SWT
;
13 import org
.eclipse
.swt
.events
.ModifyEvent
;
14 import org
.eclipse
.swt
.widgets
.Display
;
15 import org
.eclipse
.swt
.widgets
.Text
;
17 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
18 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
19 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
20 import eu
.etaxonomy
.taxeditor
.ui
.section
.campanula
.compatibility
.ICdmFormElement
;
27 public class NumberFieldController
extends TextFieldController
{
31 private NumberFormatException exception
;
34 * <p>Constructor for NumberWithLabelElement.</p>
36 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
37 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
38 * @param labelString a {@link java.lang.String} object.
39 * @param initialInteger a {@link java.lang.Integer} object.
42 public NumberFieldController(Text controlledText
, CdmFormFactory formFactory
, ICdmFormElement parentElement
, Integer initialInteger
){
43 super(controlledText
, formFactory
, parentElement
, null, null);
44 //WindowBuilder exception handling
45 if(initialInteger
==null){
48 setInteger(initialInteger
);
52 * <p>Constructor for NumberWithLabelElement.</p>
54 * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
55 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
56 * @param labelString a {@link java.lang.String} object.
57 * @param initialFloat a {@link java.lang.Float} object.
59 * @wbp.parser.constructor
61 public NumberFieldController(Text controlledText
, CdmFormFactory formFactory
,
62 ICdmFormElement parentElement
, Float initialFloat
) {
63 super(controlledText
, formFactory
, parentElement
, null, null);
64 //WindowBuilder exception handling
65 if(initialFloat
==null){
68 setFloat(initialFloat
);
74 * @param number a {@link java.lang.Integer} object.
76 public void setInteger(Integer number
) {
77 super.setText(getStringRepresentation(number
));
83 * @param number a {@link java.lang.Float} object.
85 public void setFloat(Float number
) {
86 super.setText(getStringRepresentation(number
));
92 * @return a {@link java.lang.Integer} object.
94 public Integer
getInteger() {
95 String text
= super.getText().trim();
96 return text
.equals("") ?
0 : new Integer(text
);
102 * @return a {@link java.lang.Float} object.
104 public Float
getFloat(){
105 String text
= super.getText();
106 return new Float(text
);
109 private String
getStringRepresentation(Object number
){
111 return number
.toString();
117 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
121 public void modifyText(ModifyEvent event
) {
122 String value
= text
.getText();
123 if(CdmUtils
.isEmpty(value
)){
124 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
130 Float number
= Float
.parseFloat(value
);
132 if((start
!= null && number
< start
) || (end
!= null && number
> end
)){
133 throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
136 }catch(NumberFormatException e
){
137 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
138 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e
));
144 text
.setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_WHITE
));
146 super.modifyText(event
);
152 * @param numberOfDigits a int.
153 * @param start a {@link java.lang.Integer} object.
154 * @param end a {@link java.lang.Integer} object.
156 public void setLimits(int numberOfDigits
, Integer start
, Integer end
){
157 setLimits(numberOfDigits
, start
.floatValue(), end
.floatValue());
163 * @param numberOfDigits a int.
164 * @param start a {@link java.lang.Float} object.
165 * @param end a {@link java.lang.Float} object.
167 public void setLimits(int numberOfDigits
, Float start
, Float end
){
168 text
.setTextLimit(numberOfDigits
);
174 * <p>Getter for the field <code>exception</code>.</p>
176 * @return the exception
178 public NumberFormatException
getException() {