package org.itsnat.droid.impl.xmlinflater.shared.attr; import org.itsnat.droid.impl.dom.DOMAttr; import org.itsnat.droid.impl.xmlinflater.AttrContext; import org.itsnat.droid.impl.xmlinflater.XMLInflaterContext; import org.itsnat.droid.impl.xmlinflater.shared.classtree.ClassDesc; /** * Aunque la entrada de datos sea una dimensión float con sufijo y to_do, el método que define el valor sólo admite un entero * Created by jmarranz on 30/04/14. */ public abstract class AttrDescReflecMethodDimensionIntBase<TclassDesc extends ClassDesc,TattrTarget,TattrContext extends AttrContext> extends AttrDescReflecMethod<TclassDesc,TattrTarget,TattrContext> { protected Float defaultValue; public AttrDescReflecMethodDimensionIntBase(TclassDesc parent, String name, String methodName, Float defaultValue) { super(parent,name,methodName,getClassParam()); this.defaultValue = defaultValue; } public AttrDescReflecMethodDimensionIntBase(TclassDesc parent, String name, Float defaultValue) { super(parent,name,getClassParam()); this.defaultValue = defaultValue; } protected static Class<?> getClassParam() { return int.class; } @Override public void setAttribute(TattrTarget target, DOMAttr attr, TattrContext attrCtx) { int convValue = getDimensionIntAbstract(attr,attrCtx.getXMLInflaterContext()); callMethod(target, convValue); } @Override public void removeAttribute(TattrTarget target, TattrContext attrCtx) { // En el caso de defaultValue nulo es que no sabemos qué poner, es el caso por ejemplo de poner a cero el tamaño texto, no tiene sentido, se tendría que extraer el tamaño por defecto del Theme actual, un follón y total será muy raro if (defaultValue != null) callMethod(target, defaultValue); } public abstract int getDimensionIntAbstract(DOMAttr attr, XMLInflaterContext xmlInflaterContext); }