GWT composite Component an Example
A Proportion component.
Creating GWT Proportion component
public class PropotionComponent extends Composite {
private TextBox numerator = new TextBox();
private TextBox denominator = new TextBox();
private ListBox type = new ListBox();
public static native void alert(String msg) /*-{
$wnd.alert(msg);
}-*/;
private TextBox wholeNumber = new TextBox();
public PropotionComponent(String numeratorValue, String denominatorValue,
String wholeNumberValue) {
HorizontalPanel hp = new HorizontalPanel();
denominator.setStyleName("valueNotInRangeTextBox");
wholeNumber.setStyleName("valueNotInRangeTextBox");
hp.add(type);
hp.add(wholeNumber);
hp.add(numerator);
hp.add(denominator);
wholeNumber.getElement().setAttribute("placeHolder", "whole number");
numerator.getElement().setAttribute("placeHolder", "numerator");
denominator.getElement().setAttribute("placeHolder", "denominator");
type.addItem("ratio");
type.addItem("unitary");
type.addItem("percent");
type.addItem("fraction");
type.addItem("integer fraction");
type.addItem("select type");
initWidget(hp);
// default
wholeNumber.setVisible(false);
denominator.setVisible(false);
numerator.setVisible(false);
type.setItemSelected(5, true);
numerator.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
try {
Double.parseDouble(numerator.getValue());
} catch (Exception ex) {
numerator.setValue("");
return;
});
wholeNumber.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
try {
Integer.parseInt(wholeNumber.getValue());
} catch (Exception ex) {
wholeNumber.setValue("");
return;
});
denominator.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
try {
Double.parseDouble(denominator.getValue());
} catch (Exception ex) {
denominator.setValue("");
return;
});
type.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
int itemSelected = type.getSelectedIndex();
switch (itemSelected) {
case 0: // ratio
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
numerator.setVisible(true);
denominator.setVisible(true);
numerator.getElement().setAttribute("placeHolder",
"numerator");
wholeNumber.setVisible(false);
break;
case 1: // unitary, denominator will be 1
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
numerator.setVisible(true);
wholeNumber.setVisible(false);
numerator.getElement().setAttribute("placeHolder",
"numerator");
denominator.setVisible(false);
break;
case 2: // percentage, denominater is 100
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
wholeNumber.setVisible(false);
denominator.setVisible(false);
numerator.getElement().setAttribute("placeHolder",
"numerator");
numerator.setVisible(true);
break;
case 3: // fraction eg:- 0.23
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
wholeNumber.setVisible(false);
numerator.setVisible(true);
numerator.getElement().setAttribute("placeHolder",
"fraction");
denominator.setVisible(false);
break;
case 4: // intiger fraction eg:- 1 1/2
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
wholeNumber.setVisible(true);
numerator.setVisible(true);
numerator.getElement().setAttribute("placeHolder",
"numerator");
denominator.setVisible(true);
break;
case 5: // select type
numerator.setValue("");
denominator.setValue("");
wholeNumber.setValue("");
wholeNumber.setVisible(false);
denominator.setVisible(false);
numerator.setVisible(false);
break;
}
}
});
if (!"".equals(numeratorValue)) {
numerator.setValue(numeratorValue);
}
if (!"".equals(wholeNumberValue)) {
denominator.setValue(wholeNumberValue);
}
if (!"".equals(denominatorValue)) {
wholeNumber.setValue(denominatorValue);
}
}
public void setNumerator(String numeratorValue) {
numerator.setValue(numeratorValue);
}
public void setDenominator(String denominatorValue) {
denominator.setValue(denominatorValue);
}
public Double getNumerator() {
if (getType() != 4)
return numerator.getValue() == null ? null : Double
.parseDouble(numerator.getValue());
else
return createNumeratorFromIntegerFraction();
}
private Double createNumeratorFromIntegerFraction() {
if (wholeNumber.getValue() == null || denominator.getValue() == null
|| numerator.getValue() == null) {
return null;
}
return Double.parseDouble(numerator.getValue())
+ (Double.parseDouble(wholeNumber.getValue()) * Double
.parseDouble(denominator.getValue()));
}
public Double getDenominator() {
return denominator.getValue() != null ? Double.parseDouble(denominator
.getValue()) : null;
}
public void setType(int index, boolean selected) {
type.setItemSelected(index, selected);
}
public int getType() {
return type.getSelectedIndex();
}
}
No comments:
Post a Comment