Thursday 28 February 2013

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