package org.itsnat.droid.impl.xmlinflater.drawable.classtree;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LevelListDrawable;
import org.itsnat.droid.impl.dom.drawable.DOMElemDrawable;
import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChildBase;
import org.itsnat.droid.impl.xmlinflated.drawable.ElementDrawableChildRoot;
import org.itsnat.droid.impl.xmlinflated.drawable.LevelListDrawableChildItem;
import org.itsnat.droid.impl.xmlinflater.drawable.AttrDrawableContext;
import org.itsnat.droid.impl.xmlinflater.drawable.ClassDescDrawableMgr;
import org.itsnat.droid.impl.xmlinflater.drawable.XMLInflaterDrawable;
import java.util.ArrayList;
/**
* Created by jmarranz on 10/11/14.
*/
public class ClassDescLevelListDrawable extends ClassDescElementDrawableContainerBased<LevelListDrawable>
{
public ClassDescLevelListDrawable(ClassDescDrawableMgr classMgr,ClassDescElementDrawableContainer parent)
{
super(classMgr, "level-list", parent);
}
@Override
public ElementDrawableChildRoot createElementDrawableChildRoot(DOMElemDrawable rootElem, AttrDrawableContext attrCtx)
{
ElementDrawableChildRoot elementDrawableRoot = new ElementDrawableChildRoot();
XMLInflaterDrawable xmlInflaterDrawable = attrCtx.getXMLInflaterDrawable();
xmlInflaterDrawable.processChildElements(rootElem,elementDrawableRoot,attrCtx);
ArrayList<ElementDrawableChildBase> itemList = elementDrawableRoot.getElementDrawableChildList();
LevelListDrawable drawable = new LevelListDrawable();
for(int i = 0; i < itemList.size(); i++)
{
LevelListDrawableChildItem item = (LevelListDrawableChildItem)itemList.get(i);
Drawable drawableChild = item.getDrawable();
Integer minObj = item.getMinLevel();
Integer maxObj = item.getMaxLevel();
int min = minObj != null ? minObj : 0; // Según el código fuente
int max = maxObj != null ? maxObj : 0; // Según el código fuente
drawable.addLevel(min,max,drawableChild);
setCallback(drawableChild,drawable); // Se puede ver en el código fuente si se sigue hasta addChild(Drawable dr)
}
elementDrawableRoot.setDrawable(drawable);
return elementDrawableRoot;
}
@Override
public Class<LevelListDrawable> getDrawableOrElementDrawableClass()
{
return LevelListDrawable.class;
}
protected void init()
{
super.init();
// yo creo que sobra este atributo
// addAttrDescAN(new AttrDescReflecMethodBoolean(this, "oneshot", "setOneShot", false));
}
}