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);
}