ShadowView.java revision a89236397e869467b3fc6f7208f551da61235795
167142e6509cdc6c82290e955ae69400462cf52a9Christian Williams & Ian Fisherpackage com.xtremelabs.droidsugar.fakes;
26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
36eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.Context;
46eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.res.Resources;
5684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport android.util.AttributeSet;
6924f851cb0ec279b6974744ce623f25bdc657551Ryan Richardimport android.view.MotionEvent;
76eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.view.View;
8d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultzimport android.view.ViewGroup;
95411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williamsimport android.view.ViewParent;
100c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport com.xtremelabs.droidsugar.ProxyDelegatingHandler;
110b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport com.xtremelabs.droidsugar.util.Implements;
126eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
13c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.ArrayList;
1451fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap;
15c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.List;
1651fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map;
17c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
18198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"})
190b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(View.class)
206eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView {
21a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz    @Deprecated
22f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol    public static final int UNINITIALIZED_ATTRIBUTE = -1000;
23f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol
245411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    protected View realView;
256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private int id;
276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private List<View> children = new ArrayList<View>();
280c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    private FakeView parent;
296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private Context context;
30eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public boolean selected;
31810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    private View.OnClickListener onClickListener;
32c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    private Object tag;
33775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    private boolean enabled = true;
34a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz    public int visibility = View.VISIBLE;
3518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int height;
3618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int width;
3718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingLeft;
3818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingTop;
3918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingRight;
4018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingBottom;
41686237bc49c2d8ff1891cb5fadaa7aaaf1cf9bddChristian Williams & Tyler Schultz    public ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(0, 0);
4244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    private Map<Integer, Object> tags = new HashMap<Integer, Object>();
43cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean clickable;
44cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean focusable;
454d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin    public int backgroundResourceId = -1;
465411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    protected View.OnKeyListener onKeyListener;
475411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public boolean hasFocus;
485411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    private View.OnFocusChangeListener onFocusChangeListener;
491c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard    public boolean wasInvalidated;
50924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    private View.OnTouchListener onTouchListener;
516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public FakeView(View view) {
536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.realView = view;
546eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
556eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
566eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void __constructor__(Context context) {
576eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.context = context;
586eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
596eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
60684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    public void __constructor__(Context context, AttributeSet attrs) {
61684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        __constructor__(context);
62684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    }
63684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setId(int id) {
656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.id = id;
666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
676eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
68cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setClickable(boolean clickable) {
69cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.clickable = clickable;
70cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
71cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
72cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setFocusable(boolean focusable) {
73cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.focusable = focusable;
74cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
75cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
766eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getId() {
776eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return id;
786eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
796eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
80a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    public static View inflate(Context context, int resource, ViewGroup root) {
8147bd528af49de6d8459c8aeda60b88cc7a3c961fChristian Williams        View view = FakeContextWrapper.resourceLoader.viewLoader.inflateView(context, resource);
82a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        if (root != null) {
83a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz            root.addView(view);
84a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        }
85a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        return view;
86a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    }
87a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz
886eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View findViewById(int id) {
89e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        if (id == this.id) {
90e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz            return realView;
91e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        }
926eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
93e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        for (View child : children) {
946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            View found = child.findViewById(id);
956eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            if (found != null) {
966eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz                return found;
976eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            }
986eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        }
996eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return null;
1006eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1016eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1020c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    public View getRootView() {
1030c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        FakeView root = this;
1040c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        while(root.parent != null) {
1050c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol            root = root.parent;
1060c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        }
1070c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        return root.realView;
1080c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    }
1090c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol
1106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void addView(View child) {
1116eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        children.add(child);
112ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        childProxy(child).parent = this;
113ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
114ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
115ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    private FakeView childProxy(View child) {
116ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        return (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child);
1176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1186eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1196eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getChildCount() {
1206eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.size();
1216eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1226eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
123d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    public ViewGroup.LayoutParams getLayoutParams() {
124d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz        return layoutParams;
125d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    }
126d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz
127b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    public void setLayoutParams(ViewGroup.LayoutParams params) {
128b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard        layoutParams = params;
129b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    }
130b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard
1316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View getChildAt(int index) {
1326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.get(index);
1336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1355411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public final ViewParent getParent() {
136a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz        return parent == null ? null : (ViewParent) parent.realView;
1375411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
1385411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
139ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    public void removeAllViews() {
140ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        for (View child : children) {
141ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore            childProxy(child).parent = null;
142ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        }
143ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        children.clear();
144ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
145ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
146a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz    public void removeViewAt(int position) {
147a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz        childProxy(children.remove(position)).parent = null;
148a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz    }
149a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz
1506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public final Context getContext() {
1516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context;
1526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1546eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public Resources getResources() {
1556eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context.getResources();
1566eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1576eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1584d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin    public void setBackgroundResource(int backgroundResourceId) {
1594d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin        this.backgroundResourceId = backgroundResourceId;
1604d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin    }
1614d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin
1626eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getVisibility() {
1636eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return visibility;
1646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setVisibility(int visibility) {
1676eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.visibility = visibility;
1686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
169eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz
170eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public void setSelected(boolean selected) {
171eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz        this.selected = selected;
172eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    }
173810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
174acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    public boolean isSelected() {
175acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz        return this.selected;
176acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    }
177acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz
178775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public boolean isEnabled() {
179775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        return this.enabled;
180775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
181775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
182775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public void setEnabled(boolean enabled) {
183775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        this.enabled = enabled;
184775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
185775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
186810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public void setOnClickListener(View.OnClickListener onClickListener) {
187810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        this.onClickListener = onClickListener;
188810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
189810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
190810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public boolean performClick() {
191810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        if (onClickListener != null) {
192810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            onClickListener.onClick(realView);
193810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return true;
194810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        } else {
195810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return false;
196810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        }
197810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
198c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
1995411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setOnKeyListener(View.OnKeyListener onKeyListener) {
2005411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        this.onKeyListener = onKeyListener;
2015411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2025411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
203c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public Object getTag() {
204c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        return this.tag;
205c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
206c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
207c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public void setTag(Object tag) {
208c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        this.tag = tag;
209c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
21018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
21118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getHeight() {
21218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return height;
21318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
21418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
21518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getWidth() {
21618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return width;
21718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
21818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
219924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    public final int getMeasuredWidth() {
220924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard        return width;
221924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    }
222924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard
22318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public void setPadding(int left, int top, int right, int bottom) {
22418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingLeft = left;
22518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingTop = top;
22618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingRight = right;
22718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingBottom = bottom;
22818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
22918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
23018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingTop() {
23118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingTop;
23218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
23318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
23418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingLeft() {
23518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingLeft;
23618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
23718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
23818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingRight() {
23918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingRight;
24018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
24118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
24218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingBottom() {
24318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingBottom;
24418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
24551fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz
24644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public Object getTag(int key) {
24744ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        return tags.get(key);
24844ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
24944ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams
25044ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public void setTag(int key, Object value) {
25144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        tags.put(key, value);
25244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
2535411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2545411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setViewFocus(boolean hasFocus) {
2555411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        this.hasFocus = hasFocus;
2565411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        if (onFocusChangeListener != null) {
2575411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams            onFocusChangeListener.onFocusChange(realView, hasFocus);
2585411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        }
2595411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2605411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2615411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public boolean hasFocus() {
2625411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        return hasFocus;
2635411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2645411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams
2655411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    public void setOnFocusChangeListener(View.OnFocusChangeListener listener) {
2665411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams        onFocusChangeListener = listener;
2675411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams    }
2681c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard
2691c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard    public void invalidate() {
2701c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard        wasInvalidated = true;
2711c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard    }
272924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard
273924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    public void setOnTouchListener(View.OnTouchListener onTouchListener) {
274924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard        this.onTouchListener = onTouchListener;
275924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    }
276924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard
277924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    public boolean dispatchTouchEvent(MotionEvent event) {
278924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard        if (onTouchListener != null) {
279924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard            return onTouchListener.onTouch(realView, event);
280924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard        }
281924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard        return false;
282924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard    }
2832ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin
2842ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin    public String innerText() {
2852ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin        return "";
2862ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin    }
2876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz}
288