package com.jasonette.seed.Component;
import android.content.Context;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import com.jasonette.seed.Helper.JasonHelper;
import org.json.JSONObject;
public class JasonButtonComponent{
public static View build(View view, final JSONObject component, final JSONObject parent, final Context context) {
if(component.has("url")){
// image button
view = JasonImageComponent.build(view, component, parent, context);
} else if(component.has("text")){
// label button
view = JasonLabelComponent.build(view, component, parent, context);
try {
JSONObject style = component.getJSONObject("style");
/*******
* ALIGN : By default align center
******/
// Default is center
int g = Gravity.CENTER;
if (style.has("align")) {
String align = style.getString("align");
if (align.equalsIgnoreCase("center")) {
g = g | Gravity.CENTER_HORIZONTAL;
((TextView) view).setGravity(Gravity.CENTER_HORIZONTAL);
} else if (align.equalsIgnoreCase("right")) {
g = g | Gravity.RIGHT;
((TextView) view).setGravity(Gravity.RIGHT);
} else if (align.equalsIgnoreCase("left")) {
g = g | Gravity.LEFT;
}
if (align.equalsIgnoreCase("top")) {
g = g | Gravity.TOP;
} else if (align.equalsIgnoreCase("bottom")) {
g = g | Gravity.BOTTOM;
} else {
g = g | Gravity.CENTER_VERTICAL;
}
}
((TextView)view).setGravity(g);
/*******
* Padding: By default padding is 15
******/
// override each padding value only if it's not specified
int padding_top = -1;
int padding_left = -1;
int padding_bottom = -1;
int padding_right = -1;
if(style.has("padding")){
padding_top = (int)JasonHelper.pixels(context, style.getString("padding_top"), "horizontal");
padding_left = padding_top;
padding_right = padding_top;
padding_bottom = padding_top;
}
if(style.has("padding_top")){
padding_top = (int)JasonHelper.pixels(context, style.getString("padding_top"), "vertical");
}
if(style.has("padding_left")){
padding_left = (int)JasonHelper.pixels(context, style.getString("padding_left"), "horizontal");
}
if(style.has("padding_bottom")){
padding_bottom = (int)JasonHelper.pixels(context, style.getString("padding_bottom"), "vertical");
}
if(style.has("padding_right")){
padding_right = (int)JasonHelper.pixels(context, style.getString("padding_right"), "horizontal");
}
// if not specified, default is 15
if(padding_top < 0){
padding_top = 15;
}
if(padding_left < 0){
padding_left = 15;
}
if(padding_bottom < 0){
padding_bottom = 15;
}
if(padding_right < 0){
padding_right = 15;
}
view.setPadding(padding_left, padding_top, padding_right, padding_bottom);
} catch (Exception e) {
Log.d("Error", e.toString());
}
} else {
// shouldn't happen
if (view == null) {
return new View(context);
} else {
return view;
}
}
JasonComponent.addListener(view, context);
return view;
}
}