package org.geogebra.common.gui.dialog.options.model;
import java.util.Arrays;
import java.util.List;
import org.geogebra.common.kernel.geos.GeoLine;
import org.geogebra.common.kernel.geos.GeoSegment;
import org.geogebra.common.main.App;
import org.geogebra.common.main.Localization;
public class LineEqnModel extends MultipleOptionsModel {
private List<Integer> eqnValues;
public LineEqnModel(App app) {
super(app);
eqnValues = Arrays.asList(GeoLine.EQUATION_IMPLICIT,
GeoLine.EQUATION_EXPLICIT, GeoLine.PARAMETRIC,
GeoLine.EQUATION_GENERAL, GeoLine.EQUATION_USER);
}
@Override
public boolean isValidAt(int index) {
if (!app.getSettings().getCasSettings().isEnabled()) {
return false;
}
boolean valid = true;
Object geo = getObjectAt(index);
if (!(geo instanceof GeoLine) || geo instanceof GeoSegment) {
valid = false;
}
return valid;
}
private GeoLine getLineAt(int index) {
return (GeoLine) getObjectAt(index);
}
@Override
public void updateProperties() {
int value0 = getValueAt(0);
boolean equalMode = true;
for (int i = 0; i < getGeosLength(); i++) {
if (getValueAt(i) != value0) {
equalMode = false;
}
}
getListener()
.setSelectedIndex(equalMode ? eqnValues.indexOf(value0) : -1);
}
@Override
public List<String> getChoiches(Localization loc) {
return Arrays.asList(loc.getPlain("ImplicitLineEquation"), // index 0
loc.getPlain("ExplicitLineEquation"), // index 1
loc.getPlain("ParametricForm"), // index 2
loc.getPlain("GeneralLineEquation"), // index 3
loc.getPlain("InputForm"));
}
@Override
protected void apply(int index, int value) {
getLineAt(index).setMode(eqnValues.get(value));
getGeoAt(index).updateRepaint();
}
@Override
public int getValueAt(int index) {
return getLineAt(index).getMode();
}
}