package org.itsnat.droid.impl.xmlinflater.values.classtree;
import org.itsnat.droid.ItsNatDroidException;
import org.itsnat.droid.impl.dom.DOMAttr;
import org.itsnat.droid.impl.dom.DOMElement;
import org.itsnat.droid.impl.dom.values.DOMElemValuesItemStyle;
import org.itsnat.droid.impl.dom.values.DOMElemValuesStyle;
import org.itsnat.droid.impl.xmlinflated.values.ElementValuesItemStyle;
import org.itsnat.droid.impl.xmlinflated.values.ElementValuesResources;
import org.itsnat.droid.impl.xmlinflated.values.ElementValuesStyle;
import org.itsnat.droid.impl.xmlinflater.values.ClassDescValuesMgr;
import java.util.List;
/**
* Created by jmarranz on 07/01/2016.
*/
public class ClassDescValuesStyle extends ClassDescValues<ElementValuesStyle>
{
public ClassDescValuesStyle(ClassDescValuesMgr classMgr)
{
super(classMgr, "style", null);
}
public ElementValuesStyle createElementValuesStyle(DOMElemValuesStyle domElement, ElementValuesResources parentChildValues)
{
DOMAttr attrName = domElement.getDOMAttribute(null, "name");
if (attrName == null)
throw new ItsNatDroidException("Missing attribute name in <style>");
String name = attrName.getValue();
DOMAttr attrParent = domElement.getDOMAttribute(null, "parent"); // Puede ser null (no definido)
ElementValuesStyle elementValuesStyle = new ElementValuesStyle(name,attrParent,parentChildValues);
processChildElementValuesItemStyle(domElement, elementValuesStyle);
return elementValuesStyle;
}
private void processChildElementValuesItemStyle(DOMElemValuesStyle domElemParent, ElementValuesStyle parentChildValues)
{
List<DOMElement> childDOMElemList = domElemParent.getChildDOMElementList();
if (childDOMElemList == null) return;
parentChildValues.initChildElementValuesList(childDOMElemList.size());
for (DOMElement childDOMElem : childDOMElemList)
{
ElementValuesItemStyle childElemValues = inflateNextElement((DOMElemValuesItemStyle)childDOMElem,parentChildValues);
parentChildValues.addChildElementValues(childElemValues);
}
}
private ElementValuesItemStyle inflateNextElement(DOMElemValuesItemStyle domElement,ElementValuesStyle parentChildValues)
{
DOMAttr attrName = domElement.getDOMAttribute(null, "name");
if (attrName == null)
throw new ItsNatDroidException("Missing attribute name in <item>");
String name = attrName.getValue();
DOMAttr valueAsDOMAttr = domElement.getValueAsDOMAttr();
return new ElementValuesItemStyle(parentChildValues,name,valueAsDOMAttr);
}
}