ShadowView.java revision 5411bf7cde998b5c2e70b69fe3d7227b6783ab7c
16eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpackage com.xtremelabs.droidsugar.view;
26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
36eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.Context;
46eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.res.Resources;
5684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport android.util.AttributeSet;
66eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.view.View;
7d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultzimport android.view.ViewGroup;
85411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williamsimport android.view.ViewParent;
90c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport com.xtremelabs.droidsugar.ProxyDelegatingHandler;
106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
11c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.ArrayList;
1251fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap;
13c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.List;
1451fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map;
15c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
16198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"})
176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView {
18f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol    public static final int UNINITIALIZED_ATTRIBUTE = -1000;
19f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol
205411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    protected View realView;
216eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
226eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private int id;
236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private List<View> children = new ArrayList<View>();
240c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    private FakeView parent;
256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private Context context;
26eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public boolean selected;
27810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    private View.OnClickListener onClickListener;
28c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    private Object tag;
29775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    private boolean enabled = true;
30f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol    public int visibility = UNINITIALIZED_ATTRIBUTE;
3118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int height;
3218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int width;
3318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingLeft;
3418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingTop;
3518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingRight;
3618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingBottom;
37686237bc49c2d8ff1891cb5fadaa7aaaf1cf9bddChristian Williams & Tyler Schultz    public ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(0, 0);
3844ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    private Map<Integer, Object> tags = new HashMap<Integer, Object>();
39cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean clickable;
40cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean focusable;
415411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    protected View.OnKeyListener onKeyListener;
425411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public boolean hasFocus;
435411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    private View.OnFocusChangeListener onFocusChangeListener;
446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public FakeView(View view) {
466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.realView = view;
476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void __constructor__(Context context) {
506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.context = context;
516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
53684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    public void __constructor__(Context context, AttributeSet attrs) {
54684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        __constructor__(context);
55684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    }
56684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
576eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setId(int id) {
586eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.id = id;
596eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
606eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
61cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setClickable(boolean clickable) {
62cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.clickable = clickable;
63cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
64cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
65cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setFocusable(boolean focusable) {
66cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.focusable = focusable;
67cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
68cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getId() {
706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return id;
716eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
73a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    public static View inflate(Context context, int resource, ViewGroup root) {
74a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        View view = FakeContextWrapper.viewLoader.inflateView(context, resource);
75a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        if (root != null) {
76a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz            root.addView(view);
77a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        }
78a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        return view;
79a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    }
80a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz
816eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View findViewById(int id) {
82e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        if (id == this.id) {
83e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz            return realView;
84e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        }
856eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
86e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        for (View child : children) {
876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            View found = child.findViewById(id);
886eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            if (found != null) {
896eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz                return found;
906eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            }
916eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        }
926eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return null;
936eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
950c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    public View getRootView() {
960c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        FakeView root = this;
970c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        while(root.parent != null) {
980c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol            root = root.parent;
990c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        }
1000c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        return root.realView;
1010c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    }
1020c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol
1036eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void addView(View child) {
1046eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        children.add(child);
105ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        childProxy(child).parent = this;
106ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
107ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
108ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    private FakeView childProxy(View child) {
109ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        return (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child);
1106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1116eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1126eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getChildCount() {
1136eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.size();
1146eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1156eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
116d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    public ViewGroup.LayoutParams getLayoutParams() {
117d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz        return layoutParams;
118d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    }
119d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz
120b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    public void setLayoutParams(ViewGroup.LayoutParams params) {
121b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard        layoutParams = params;
122b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    }
123b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard
1246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View getChildAt(int index) {
1256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.get(index);
1266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1285411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public final ViewParent getParent() {
1295411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        return (ViewParent) parent.realView;
1305411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
1315411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
132ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    public void removeAllViews() {
133ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        for (View child : children) {
134ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore            childProxy(child).parent = null;
135ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        }
136ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        children.clear();
137ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
138ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
1396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public final Context getContext() {
1406eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context;
1416eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1426eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1436eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public Resources getResources() {
1446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context.getResources();
1456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getVisibility() {
1486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return visibility;
1496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setVisibility(int visibility) {
1526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.visibility = visibility;
1536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
154eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz
155eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public void setSelected(boolean selected) {
156eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz        this.selected = selected;
157eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    }
158810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
159acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    public boolean isSelected() {
160acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz        return this.selected;
161acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    }
162acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz
163775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public boolean isEnabled() {
164775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        return this.enabled;
165775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
166775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
167775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public void setEnabled(boolean enabled) {
168775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        this.enabled = enabled;
169775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
170775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
171810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public void setOnClickListener(View.OnClickListener onClickListener) {
172810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        this.onClickListener = onClickListener;
173810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
174810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
175810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public boolean performClick() {
176810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        if (onClickListener != null) {
177810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            onClickListener.onClick(realView);
178810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return true;
179810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        } else {
180810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return false;
181810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        }
182810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
183c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
1845411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setOnKeyListener(View.OnKeyListener onKeyListener) {
1855411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        this.onKeyListener = onKeyListener;
1865411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
1875411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
188c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public Object getTag() {
189c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        return this.tag;
190c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
191c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
192c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public void setTag(Object tag) {
193c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        this.tag = tag;
194c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
19518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
19618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getHeight() {
19718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return height;
19818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
19918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
20018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getWidth() {
20118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return width;
20218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
20318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
20418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public void setPadding(int left, int top, int right, int bottom) {
20518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingLeft = left;
20618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingTop = top;
20718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingRight = right;
20818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingBottom = bottom;
20918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
21018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
21118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingTop() {
21218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingTop;
21318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
21418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
21518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingLeft() {
21618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingLeft;
21718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
21818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
21918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingRight() {
22018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingRight;
22118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
22218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
22318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingBottom() {
22418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingBottom;
22518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
22651fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz
22744ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public Object getTag(int key) {
22844ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        return tags.get(key);
22944ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
23044ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams
23144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public void setTag(int key, Object value) {
23244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        tags.put(key, value);
23344ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
2345411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2355411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setViewFocus(boolean hasFocus) {
2365411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        this.hasFocus = hasFocus;
2375411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        if (onFocusChangeListener != null) {
2385411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams            onFocusChangeListener.onFocusChange(realView, hasFocus);
2395411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        }
2405411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2415411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2425411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public boolean hasFocus() {
2435411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        return hasFocus;
2445411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2455411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2465411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setOnFocusChangeListener(View.OnFocusChangeListener listener) {
2475411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        onFocusChangeListener = listener;
2485411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz}
250