ShadowView.java revision 65e90b1b9829e83cac5cdcf8836b9706aa67c072
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; 10c5354d99f7212f0d66d915206771972219376335Christian Williamsimport com.xtremelabs.droidsugar.util.FakeHelper; 11de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williamsimport com.xtremelabs.droidsugar.util.Implementation; 120b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport com.xtremelabs.droidsugar.util.Implements; 136eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 1451fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap; 1551fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map; 16c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 17198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"}) 180b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(View.class) 196eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView { 20a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz @Deprecated 21f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol public static final int UNINITIALIZED_ATTRIBUTE = -1000; 22f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol 235411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams protected View realView; 246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private int id; 2663bd7c4e869525014879db3428e17eb4d2728cf9Christian Williams FakeView parent; 276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private Context context; 28eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public boolean selected; 29810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore private View.OnClickListener onClickListener; 30c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz private Object tag; 31775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard private boolean enabled = true; 32a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz public int visibility = View.VISIBLE; 33a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int left; 34a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int top; 35a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int right; 36a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int bottom; 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 64de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setId(int id) { 666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.id = id; 676eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 69de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 70cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz public void setClickable(boolean clickable) { 71cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz this.clickable = clickable; 72cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz } 73cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz 74de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 75cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz public void setFocusable(boolean focusable) { 76cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz this.focusable = focusable; 77cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz } 78cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz 79de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 806eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 816eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 826eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 836eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 84de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 85a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz public static View inflate(Context context, int resource, ViewGroup root) { 86c5354d99f7212f0d66d915206771972219376335Christian Williams View view = FakeHelper.resourceLoader.viewLoader.inflateView(context, resource); 87a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz if (root != null) { 88a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz root.addView(view); 89a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 90a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz return view; 91a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 92a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz 93de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 95e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 96e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 97e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 986eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 996eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 1006eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1016eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 102de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1030c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 1040c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView root = this; 1050c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol while(root.parent != null) { 1060c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 1070c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1080c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 1090c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1100c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 111de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 112d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz public ViewGroup.LayoutParams getLayoutParams() { 113d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz return layoutParams; 114d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz } 115d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz 116de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 117b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard public void setLayoutParams(ViewGroup.LayoutParams params) { 118b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard layoutParams = params; 119b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard } 120b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard 121de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1225411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public final ViewParent getParent() { 123a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz return parent == null ? null : (ViewParent) parent.realView; 1245411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 1255411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 126de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 1286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 1296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 131de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 1336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 1346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1356eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 136de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1374d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin public void setBackgroundResource(int backgroundResourceId) { 1384d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin this.backgroundResourceId = backgroundResourceId; 1394d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin } 1404d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin 141de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1426eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 1436eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 1446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 146de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 1486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 1496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 150eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 151de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 152eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 153eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 154eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 155810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 156de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 157acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz public boolean isSelected() { 158acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz return this.selected; 159acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz } 160acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz 161de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 162775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public boolean isEnabled() { 163775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard return this.enabled; 164775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 165775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard 166de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 167775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public void setEnabled(boolean enabled) { 168775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard this.enabled = enabled; 169775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 170775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard 171de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 172810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public void setOnClickListener(View.OnClickListener onClickListener) { 173810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore this.onClickListener = onClickListener; 174810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 175810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 176de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 177810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public boolean performClick() { 178810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore if (onClickListener != null) { 179810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore onClickListener.onClick(realView); 180810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return true; 181810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } else { 182810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return false; 183810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 184810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 185c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 186de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1875411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnKeyListener(View.OnKeyListener onKeyListener) { 1885411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams this.onKeyListener = onKeyListener; 1895411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 1905411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 191de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 192c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public Object getTag() { 193c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz return this.tag; 194c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 195c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 196de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 197c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public void setTag(Object tag) { 198c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz this.tag = tag; 199c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 20018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 201de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 20218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getHeight() { 203a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return bottom - top; 20418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 20518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 206de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 20718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getWidth() { 208a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return right - left; 20918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 21018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 211de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 212924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public final int getMeasuredWidth() { 213a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return getWidth(); 214a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard } 215a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 216de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 217a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public final void layout(int l, int t, int r, int b) { 218a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard left = l; 219a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard top = t; 220a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard right = r; 221a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard bottom = b; 222a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 223a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard// todo: realView.onLayout(); 224924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 225924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 226de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 22718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public void setPadding(int left, int top, int right, int bottom) { 22818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingLeft = left; 22918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingTop = top; 23018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingRight = right; 23118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingBottom = bottom; 23218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 23318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 234de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 23518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingTop() { 23618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingTop; 23718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 23818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 239de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 24018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingLeft() { 24118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingLeft; 24218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 24318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 244de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 24518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingRight() { 24618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingRight; 24718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 24818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 249de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 25018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingBottom() { 25118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingBottom; 25218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 25351fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz 254de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 25544ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public Object getTag(int key) { 25644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams return tags.get(key); 25744ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 25844ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams 259de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 26044ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public void setTag(int key, Object value) { 26144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams tags.put(key, value); 26244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 2635411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 26465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 26565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus() { 26665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return requestFocus(View.FOCUS_DOWN); 26765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 26865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 26965e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 27065e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus(int direction) { 27165e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(true); 27265e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return true; 27365e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 27465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 2755411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setViewFocus(boolean hasFocus) { 2765411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams this.hasFocus = hasFocus; 2775411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams if (onFocusChangeListener != null) { 2785411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener.onFocusChange(realView, hasFocus); 2795411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2805411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2815411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 282de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 28365e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public boolean isFocused() { 28465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return hasFocus; 28565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 28665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 28765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 2885411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public boolean hasFocus() { 2895411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams return hasFocus; 2905411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2915411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 292de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 29365e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public void clearFocus() { 29465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(false); 29565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 29665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 29765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 2985411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnFocusChangeListener(View.OnFocusChangeListener listener) { 2995411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener = listener; 3005411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3011c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard 302de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 3031c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard public void invalidate() { 3041c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard wasInvalidated = true; 3051c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard } 306924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 307de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 308924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public void setOnTouchListener(View.OnTouchListener onTouchListener) { 309924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard this.onTouchListener = onTouchListener; 310924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 311924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 312de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 313924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public boolean dispatchTouchEvent(MotionEvent event) { 314924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard if (onTouchListener != null) { 315924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return onTouchListener.onTouch(realView, event); 316924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 317924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return false; 318924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 3192ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin 3202ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin public String innerText() { 3212ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin return ""; 3222ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin } 3236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 324