package io.fabianterhorst.fastlayout.converters; import java.util.ArrayList; import java.util.List; import io.fabianterhorst.fastlayout.annotations.Converter; /** * Created by fabianterhorst on 18.05.16. */ @Converter public class PaddingConverter extends LayoutConverter { private Object padding[] = new Object[]{null, null, null, null};//left,top,right,bottom private Object paddingRelative[] = new Object[]{null, null};//start,end @Override public LayoutAttribute onConvertLayoutAttribute(String attributeStartValue, String attributeValue, String attributeName, boolean isString) { switch (attributeName) { case "android:paddingLeft": padding = new Object[]{attributeValue, padding[1], padding[2], padding[3]}; return new LayoutAttribute(); case "android:paddingTop": padding = new Object[]{padding[0], attributeValue, padding[2], padding[3]}; return new LayoutAttribute(); case "android:paddingRight": padding = new Object[]{padding[0], padding[1], attributeValue, padding[3]}; return new LayoutAttribute(); case "android:paddingBottom": padding = new Object[]{padding[0], padding[1], padding[2], attributeValue}; return new LayoutAttribute(); case "android:paddingStart": paddingRelative = new Object[]{attributeValue, padding[1], padding[2], padding[3] != null ? padding[3] : paddingRelative[1]}; return new LayoutAttribute(); case "android:paddingEnd": paddingRelative = new Object[]{padding[0] != null ? padding[0] : paddingRelative[0], padding[1], attributeValue, padding[3]}; return new LayoutAttribute(); case "android:padding": padding = new Object[]{attributeValue, attributeValue, attributeValue, attributeValue}; paddingRelative = new Object[]{attributeValue, attributeValue, attributeValue, attributeValue}; return new LayoutAttribute(); } return null; } @Override public List<LayoutAttribute> onFinish() { List<LayoutAttribute> finished = new ArrayList<>(); if (padding[0] != null || padding[1] != null || padding[2] != null || padding[3] != null) { for (int i = 0; i < padding.length; i++) { Object current = padding[i]; if (current == null) { padding[i] = 0; } } finished.add(new LayoutAttribute(LayoutAttribute.Type.LAYOUT, setter("Padding", padding[0] + "," + padding[1] + "," + padding[2] + "," + padding[3], false))); } if (paddingRelative[0] != null || paddingRelative[1] != null) { for (int i = 0; i < padding.length; i++) { Object current = padding[i]; if (current == null) { padding[i] = 0; } } for (int i = 0; i < paddingRelative.length; i++) { Object current = paddingRelative[i]; if (current == null) { paddingRelative[i] = 0; } } finished.add(new LayoutAttribute(LayoutAttribute.Type.LAYOUT, setter("PaddingRelative", paddingRelative[0] + "," + padding[1] + "," + padding[2] + "," + paddingRelative[1], false))); } return finished; } }