package org.geogebra.common.gui.dialog.options.model; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.StringTemplate; import org.geogebra.common.kernel.geos.GeoImage; import org.geogebra.common.kernel.geos.GeoPoint; import org.geogebra.common.kernel.kernelND.GeoPointND; import org.geogebra.common.main.App; import org.geogebra.common.main.error.ErrorHandler; import org.geogebra.common.util.StringUtil; public class ImageCornerModel extends MultipleGeosModel { private Kernel kernel; private int cornerIdx; public ImageCornerModel(App app) { super(app); kernel = app.getKernel(); } @Override public void updateProperties() { GeoPoint p0 = getPointAt(0); boolean isEqual = true; for (int i = 0; i < getGeosLength(); i++) { if (p0 != getPointAt(i)) { isEqual = false; break; } } if (isEqual && p0 != null) { getListener().setSelectedItem( p0.getLabel(StringTemplate.defaultTemplate)); } else { getListener().setSelectedIndex(-1); } } public int getCornerNumber() { return cornerIdx < 2 ? (cornerIdx + 1) : (cornerIdx + 2); } private GeoImage getGeoImageAt(int index) { return (GeoImage) getObjectAt(index); } @Override protected void apply(int index, int value) { // Not used } public void applyChanges(final String strLoc, ErrorHandler handler) { GeoPointND newLoc = null; handler.resetError(); if (!StringUtil.emptyTrim(strLoc)) { newLoc = kernel.getAlgebraProcessor().evaluateToPoint(strLoc, handler, true); } if (newLoc == null) { return; } for (int i = 0; i < getGeosLength(); i++) { GeoImage im = getGeoImageAt(i); im.setCorner(newLoc, cornerIdx); im.updateRepaint(); } storeUndoInfo(); } protected GeoPoint getPointAt(int index) { return getGeoImageAt(index).getCorner(cornerIdx); } @Override protected boolean isValidAt(int index) { Object geo = getObjectAt(index); if (geo instanceof GeoImage) { GeoImage img = (GeoImage) geo; if (img.isAbsoluteScreenLocActive() || !img.isIndependent()) { return false; } return true; } return false; } public int getCornerIdx() { return cornerIdx; } public void setCornerIdx(int cornerIdx) { this.cornerIdx = cornerIdx; } @Override protected int getValueAt(int index) { // TODO Auto-generated method stub return 0; } }