package org.geogebra.common.gui.dialog.options.model;
import org.geogebra.common.kernel.geos.AngleProperties;
import org.geogebra.common.kernel.geos.GeoAngle;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.main.App;
public class DecoAngleModel extends NumberOptionsModel {
public interface IDecoAngleListener extends IComboListener {
void setArcSizeMinValue();
}
private IDecoAngleListener listener;
public DecoAngleModel(App app) {
super(app);
}
private AngleProperties getAnglePropertiesAt(int index) {
return (AngleProperties) getObjectAt(index);
}
@Override
public void updateProperties() {
AngleProperties geo0 = getAnglePropertiesAt(0);
listener.setSelectedIndex(geo0.getDecorationType());
}
public void setListener(IDecoAngleListener listener) {
this.listener = listener;
}
@Override
public boolean isValidAt(int index) {
return (getObjectAt(index) instanceof AngleProperties);
}
@Override
protected void apply(int index, int value) {
AngleProperties geo = getAnglePropertiesAt(index);
geo.setDecorationType(value);
// addded by Loic BEGIN
// check if decoration could be drawn
if (geo.getArcSize() < 20 && (geo
.getDecorationType() == GeoElement.DECORATION_ANGLE_THREE_ARCS
|| geo.getDecorationType() == GeoElement.DECORATION_ANGLE_TWO_ARCS)) {
geo.setArcSize(20);
listener.setArcSizeMinValue();
}
// END
geo.updateRepaint();
}
@Override
protected int getValueAt(int index) {
return getAnglePropertiesAt(index).getDecorationType();
}
public static int getDecoTypeLength() {
return GeoAngle.getDecoTypes().length;
}
@Override
public PropertyListener getListener() {
return listener;
}
}