package org.itsnat.droid.impl.xmlinflater.layout.attr.view; import android.view.View; import android.view.ViewGroup; import org.itsnat.droid.impl.dom.DOMAttr; import org.itsnat.droid.impl.xmlinflater.layout.AttrLayoutContext; import org.itsnat.droid.impl.xmlinflater.layout.PendingViewPostCreateProcess; import org.itsnat.droid.impl.xmlinflater.layout.classtree.ClassDescViewBased; import org.itsnat.droid.impl.xmlinflater.shared.attr.AttrDesc; /** * Created by jmarranz on 30/04/14. */ public abstract class AttrDescView_view_View_layout_margin_Base extends AttrDesc<ClassDescViewBased,View,AttrLayoutContext> { public AttrDescView_view_View_layout_margin_Base(ClassDescViewBased parent, String name) { super(parent,name); } @Override public void setAttribute(final View view, DOMAttr attr, AttrLayoutContext attrCtx) { final int valueInt = getDimensionIntRound(attr.getResourceDesc(), attrCtx.getXMLInflaterContext()); Runnable task = new Runnable(){ @Override public void run() { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)view.getLayoutParams(); setAttribute(params, valueInt); }}; PendingViewPostCreateProcess pendingViewPostCreateProcess = attrCtx.getPendingViewPostCreateProcess(); if (pendingViewPostCreateProcess != null) { pendingViewPostCreateProcess.addPendingLayoutParamsTask(task); } else { task.run(); PendingViewPostCreateProcess.onChangedLayoutParams(view); } } protected abstract void setAttribute(ViewGroup.MarginLayoutParams params,int value); @Override public void removeAttribute(View view, AttrLayoutContext attrCtx) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)view.getLayoutParams(); removeAttribute(params); PendingViewPostCreateProcess.onChangedLayoutParams(view); } protected abstract void removeAttribute(ViewGroup.MarginLayoutParams params); }