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 MarginConverter extends LayoutConverter {
private Object margin[] = new Object[]{null, null, null, null};//left,top,right,bottom
@Override
public LayoutAttribute onConvertLayoutAttribute(String attributeStartValue, String attributeValue, String attributeName, boolean isString) {
switch (attributeName) {
case "android:layout_marginLeft":
margin = new Object[]{attributeValue, margin[1], margin[2], margin[3]};
return new LayoutAttribute();
case "android:layout_marginTop":
margin = new Object[]{margin[0], attributeValue, margin[2], margin[3]};
return new LayoutAttribute();
case "android:layout_marginRight":
margin = new Object[]{margin[0], margin[1], attributeValue, margin[3]};
return new LayoutAttribute();
case "android:layout_marginBottom":
margin = new Object[]{margin[0], margin[1], margin[2], attributeValue};
return new LayoutAttribute();
case "android:layout_margin":
margin = new Object[]{attributeValue, attributeValue, attributeValue, attributeValue};
return new LayoutAttribute();
case "android:layout_marginEnd":
return new LayoutAttribute(LayoutAttribute.Type.PARAM, setter(attributeToName(attributeName).replace("Layout", ""), attributeValue, false));
case "android:layout_marginStart":
return new LayoutAttribute(LayoutAttribute.Type.PARAM, setter(attributeToName(attributeName).replace("Layout", ""), attributeValue, false));
}
return null;
}
@Override
public List<LayoutAttribute> onFinish() {
List<LayoutAttribute> finished = new ArrayList<>();
if (margin[0] != null || margin[1] != null || margin[2] != null || margin[3] != null) {
for (int i = 0; i < margin.length; i++) {
Object current = margin[i];
if (current == null) {
margin[i] = 0;
}
}
finished.add(new LayoutAttribute(LayoutAttribute.Type.PARAM, setter("Margins", margin[0] + "," + margin[1] + "," + margin[2] + "," + margin[3], false)));
}
return finished;
}
}