// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.ui.element;
+import org.apache.commons.lang.StringUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.widgets.Display;
-import eu.etaxonomy.cdm.common.CdmUtils;
-
/**
* <p>NumberWithLabelElement class.</p>
private Float start;
private Float end;
-
+
private NumberFormatException exception;
/**
* @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
* @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
* @param labelString a {@link java.lang.String} object.
- * @param initialInteger a {@link java.lang.Integer} object.
- * @param style a int.
- */
- public NumberWithLabelElement(CdmFormFactory toolkit,
- ICdmFormElement parentElement, String labelString,
- Integer initialInteger, int style) {
- super(toolkit, parentElement, labelString, null, null, style);
- setInteger(initialInteger);
- }
-
- /**
- * <p>Constructor for NumberWithLabelElement.</p>
- *
- * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
- * @param labelString a {@link java.lang.String} object.
- * @param initialFloat a {@link java.lang.Float} object.
+ * @param initialNumber a {@link java.lang.Number} object.
* @param style a int.
*/
public NumberWithLabelElement(CdmFormFactory toolkit,
ICdmFormElement parentElement, String labelString,
- Float initialFloat, int style) {
+ Number initialNumber, int style) {
super(toolkit, parentElement, labelString, null, null, style);
- setFloat(initialFloat);
+ setNumber(initialNumber);
}
-
+
+
/**
- * <p>setInteger</p>
+ * <p>setNumber</p>
*
- * @param number a {@link java.lang.Integer} object.
+ * @param number a {@link java.lang.Number} object.
*/
- public void setInteger(Integer number) {
+ public void setNumber(Number number) {
super.setText(getStringRepresentation(number));
}
-
+
/**
- * <p>setFloat</p>
- *
- * @param number a {@link java.lang.Float} object.
+ * Get the value of this field as an {@link Integer}.
+ * @return the Integer value or null if {@link NumberFormatException} occurs.
*/
- public void setFloat(Float number) {
- super.setText(getStringRepresentation(number));
+ public Integer getInteger() {
+ if(super.getText()!=null){
+ String text = super.getText().trim();
+ try {
+ return StringUtils.isBlank(text) ? 0 : new Integer(text);
+ } catch (NumberFormatException e) {
+ exception = e;
+ }
+ }
+ return null;
}
-
+
/**
- * <p>getInteger</p>
- *
- * @return a {@link java.lang.Integer} object.
+ * Get the value of this field as a {@link Float}.
+ * @return the Float value or null if {@link NumberFormatException} occurs.
*/
- public Integer getInteger() {
- String text = super.getText().trim();
- return text.equals("") ? 0 : new Integer(text);
+ public Float getFloat(){
+ String text = super.getText();
+ try {
+ return StringUtils.isBlank(text) ? 0 : new Float(text);
+ } catch (NumberFormatException e) {
+ exception = e;
+ }
+ return null;
}
-
+
/**
- * <p>getFloat</p>
- *
- * @return a {@link java.lang.Float} object.
+ * Get the value of this field as an {@link Double}.
+ * @return the Double value or null if {@link NumberFormatException} occurs.
*/
- public Float getFloat(){
- String text = super.getText();
- return new Float(text);
+ public Double getDouble(){
+ String text = super.getText();
+ try {
+ return new Double(text);
+ } catch (NumberFormatException e) {
+ exception = e;
+ }
+ return null;
}
-
+
private String getStringRepresentation(Object number){
if(number != null){
return number.toString();
- }
+ }
return null;
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
*/
@Override
public void modifyText(ModifyEvent event) {
String value = text.getText();
- if(CdmUtils.isEmpty(value)){
+ if(StringUtils.isBlank(value)){
text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+ super.modifyText(event);
return;
}
-
+
try{
-
- Float number = Float.parseFloat(value);
-
+
+ Float number = Float.parseFloat(value);
+
if((start != null && number < start) || (end != null && number > end)){
- throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
+ exception = new NumberFormatException("You entered a number that is not within the allowed bounds.");
+ throw exception;
}
-
+
}catch(NumberFormatException e){
text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
- firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+ exception = e;
return;
}
-
+
exception = null;
text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
-
+
super.modifyText(event);
}
-
+
/**
* <p>setLimits</p>
*
public void setLimits(int numberOfDigits, Integer start, Integer end){
setLimits(numberOfDigits, start.floatValue(), end.floatValue());
}
-
+
/**
* <p>setLimits</p>
*
this.start = start;
this.end = end;
}
-
+
/**
* <p>Getter for the field <code>exception</code>.</p>
*