package org.geogebra.common.gui.dialog.options.model; import org.geogebra.common.kernel.geos.GeoButton; import org.geogebra.common.main.App; public class ButtonSizeModel extends OptionsModel { public interface IButtonSizeListener extends PropertyListener { void updateSizes(int width, int height, boolean isFixed); } private IButtonSizeListener listener; public ButtonSizeModel(App app) { super(app); } public void setListener(IButtonSizeListener listener) { this.listener = listener; } private GeoButton getButtonAt(int index) { Object geo = getObjectAt(index); if (geo instanceof GeoButton) { return (GeoButton) geo; } return null; } @Override public void updateProperties() { for (int i = 0; i < getGeosLength(); i++) { GeoButton geo = getButtonAt(i); if (geo != null) { listener.updateSizes(geo.getWidth(), geo.getHeight(), geo.isFixedSize()); } } } @Override public boolean isValidAt(int index) { return getGeoAt(index).isGeoButton() && !getGeoAt(index).isGeoInputBox(); } public void setSizesFromString(String strWidth, String strHeight, boolean isFixed) { for (int i = 0; i < getGeosLength(); i++) { GeoButton geo = getButtonAt(i); if (geo != null) { geo.setFixedSize(isFixed); if (isFixed) { geo.setHeight(Integer.parseInt(strHeight)); geo.setWidth(Integer.parseInt(strWidth)); } else { geo.setFixedSize(false); } } } } public void applyChanges(boolean isFixed) { for (int i = 0; i < getGeosLength(); i++) { GeoButton geo = getButtonAt(i); if (geo != null) { geo.setFixedSize(isFixed); listener.updateSizes(geo.getWidth(), geo.getHeight(), isFixed); } } storeUndoInfo(); } @Override public PropertyListener getListener() { return listener; } }