package org.geogebra.common.gui.dialog.options.model; import java.util.List; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.main.App; import org.geogebra.common.main.Localization; public abstract class MultipleOptionsModel extends NumberOptionsModel { public static final int MAX_CHOICES = 200; private IComboListener listener; public MultipleOptionsModel(App app) { super(app); } public abstract List<String> getChoiches(Localization loc); @Override public void updateProperties() { int value0 = getValueAt(0); boolean isEqual = true; for (int i = 0; i < getGeosLength(); i++) { if (value0 != getValueAt(i)) { isEqual = false; } } listener.setSelectedIndex(isEqual ? value0 : -1); } public void fillModes(Localization loc) { if (getListener() == null) { return; } if (getListener() instanceof GeoComboListener) { for (GeoElement geo : ((MultipleGeosModel) this) .getGeoChoiches(loc)) { ((GeoComboListener) getListener()).addItem(geo); } return; } for (String item : getChoiches(loc)) { getListener().addItem(item); } } @Override public IComboListener getListener() { return listener; } public void setListener(IComboListener listener) { this.listener = listener; } }