package org.geogebra.common.gui.dialog.options.model;
import org.geogebra.common.kernel.arithmetic.NumberValue;
import org.geogebra.common.kernel.geos.GeoInputBox;
import org.geogebra.common.main.App;
import org.geogebra.common.main.error.ErrorHelper;
public class TextFieldSizeModel extends OptionsModel {
private ITextFieldListener listener;
public void setListener(ITextFieldListener listener) {
this.listener = listener;
}
public TextFieldSizeModel(App app) {
super(app);
}
private GeoInputBox getTextFieldAt(int index) {
return (GeoInputBox) getObjectAt(index);
}
@Override
public void updateProperties() {
GeoInputBox temp, geo0 = getTextFieldAt(0);
boolean equalSize = true;
for (int i = 0; i < getGeosLength(); i++) {
temp = getTextFieldAt(i);
if (geo0.getLength() != temp.getLength()) {
equalSize = false;
}
}
if (equalSize) {
listener.setText(geo0.getLength() + "");
} else {
listener.setText("");
}
}
public void applyChanges(final String strValue) {
applyChanges(app.getKernel().getAlgebraProcessor()
.evaluateToNumeric(strValue, ErrorHelper.silent()));
}
public void applyChanges(NumberValue value) {
if (value != null && !Double.isNaN(value.getDouble())) {
for (int i = 0; i < getGeosLength(); i++) {
GeoInputBox geo = getTextFieldAt(i);
geo.setLength((int) value.getDouble());
geo.updateRepaint();
}
}
storeUndoInfo();
}
@Override
public boolean isValidAt(int index) {
return (getGeoAt(index) instanceof GeoInputBox);
}
@Override
public PropertyListener getListener() {
return listener;
}
}