package org.geogebra.common.kernel.algos; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoText; import org.geogebra.common.plugin.GeoClass; import org.geogebra.common.plugin.Operation; /** * Helper for Sum[list of text] */ public class TextFold implements FoldComputer { private GeoText result; private StringBuilder sb; @Override public GeoElement getTemplate(Construction cons, GeoClass listElement) { return this.result = new GeoText(cons); } @Override public void add(GeoElement p, Operation op) { if (p.isGeoText()) { sb.append(((GeoText) p).getTextString()); } else { result.setUndefined(); return; } } @Override public void setFrom(GeoElement geoElement, Kernel kernel) { if (sb == null) { sb = new StringBuilder(); } else { sb.setLength(0); } add(geoElement, Operation.PLUS); } @Override public boolean check(GeoElement geoElement) { return geoElement.isGeoText(); } @Override public void finish() { result.setTextString(sb.toString()); } }