package org.geogebra.common.gui.dialog.options.model; import org.geogebra.common.kernel.StringTemplate; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoFunction; import org.geogebra.common.kernel.geos.InequalityProperties; import org.geogebra.common.main.App; public class IneqStyleModel extends BooleanOptionModel { public interface IIneqStyleListener extends IBooleanOptionListener { void enableFilling(boolean value); } public IneqStyleModel(App app) { super(null, app); } private InequalityProperties getInequalityPropertiesAt(int index) { return (InequalityProperties) getObjectAt(index); } @Override public void updateProperties() { if (!(getObjectAt(0) instanceof InequalityProperties)) { return; } InequalityProperties temp, geo0 = getInequalityPropertiesAt(0); boolean equalFix = true; for (int i = 0; i < getGeosLength(); i++) { if (!(getObjectAt(i) instanceof InequalityProperties)) { return; } temp = getInequalityPropertiesAt(i); if (geo0.showOnAxis() != temp.showOnAxis()) { equalFix = false; } } if (equalFix) { getListener().updateCheckbox(geo0.showOnAxis()); if (geo0.showOnAxis()) { ((IIneqStyleListener) getListener()).enableFilling(false); } } else { getListener().updateCheckbox(false); } } @Override public boolean isValidAt(int index) { GeoElement geo = getGeoAt(index).getGeoElementForPropertiesDialog(); if (!(geo instanceof GeoFunction)) { return false; } GeoFunction gfun = (GeoFunction) geo; if (!gfun.isBooleanFunction() || gfun .getVarString(StringTemplate.defaultTemplate).equals("y")) { return false; } return true; } @Override public boolean getValueAt(int index) { // not used as updateProperties is overridden. return false; } @Override public void apply(int index, boolean value) { InequalityProperties geo = (InequalityProperties) getObjectAt(index); geo.setShowOnAxis(value); geo.updateRepaint(); } }