package org.kvj.lima1.android.ui.page; import org.json.JSONException; import org.json.JSONObject; import org.kvj.lima1.android.ui.R; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.MarginLayoutParams; abstract public class UIElement { protected static int seq = 0; protected int getFullHeight(View view) { MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams(); return view.getMeasuredHeight() + params.topMargin + params.bottomMargin; } protected void styleDelimiter(ViewGroup element, JSONObject config) { if (null == config) { return; } String delim = config.optString("delimiter"); if ("1".equals(delim)) { element.setBackgroundResource(R.drawable.delimiter_1); } if ("2".equals(delim)) { element.setBackgroundResource(R.drawable.delimiter_2); } } protected void styleGrid(ViewGroup element, JSONObject config, MarginLayoutParams layoutParams) { if (null == config) { return; } String grid = config.optString("border"); if ("1".equals(grid)) { element.setBackgroundResource(R.drawable.grid_1); layoutParams.setMargins(0, 2, 0, 2); } if ("2".equals(grid)) { element.setBackgroundResource(R.drawable.grid_2); layoutParams.setMargins(0, 3, 0, 3); } } abstract protected void render(Renderer renderer, JSONObject item, JSONObject config, ViewGroup element, UIElementOptions options) throws JSONException; protected boolean canGrow(JSONObject config) { return false; } protected int grow(int height, Renderer renderer, JSONObject config, ViewGroup element, UIElementOptions options) throws JSONException { return height; } }