ShadowView.java revision 254044cea0df7e6aef3ce33c98a5003a6eba0512
1a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzpackage com.xtremelabs.robolectric.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; 10a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.Implementation; 11a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.Implements; 126eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 1351fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap; 1451fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map; 15c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 16198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"}) 170b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(View.class) 186eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView { 19a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz @Deprecated 20f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol public static final int UNINITIALIZED_ATTRIBUTE = -1000; 21f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol 225411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams protected View realView; 236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private int id; 2563bd7c4e869525014879db3428e17eb4d2728cf9Christian Williams FakeView parent; 266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private Context context; 27eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public boolean selected; 28810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore private View.OnClickListener onClickListener; 29c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz private Object tag; 30775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard private boolean enabled = true; 31a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz public int visibility = View.VISIBLE; 32a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int left; 33a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int top; 34a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int right; 35a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public int bottom; 3618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int paddingLeft; 3718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int paddingTop; 3818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int paddingRight; 3918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int paddingBottom; 40686237bc49c2d8ff1891cb5fadaa7aaaf1cf9bddChristian Williams & Tyler Schultz public ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(0, 0); 4144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams private Map<Integer, Object> tags = new HashMap<Integer, Object>(); 42cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz public boolean clickable; 43254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin protected boolean focusable; 444d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin public int backgroundResourceId = -1; 455411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams protected View.OnKeyListener onKeyListener; 465411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public boolean hasFocus; 475411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams private View.OnFocusChangeListener onFocusChangeListener; 481c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard public boolean wasInvalidated; 49924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard private View.OnTouchListener onTouchListener; 506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public FakeView(View view) { 526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.realView = view; 536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 546eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 556eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void __constructor__(Context context) { 566eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.context = context; 576eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 586eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 59684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams public void __constructor__(Context context, AttributeSet attrs) { 60684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams __constructor__(context); 61684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams } 62684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams 63de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setId(int id) { 656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.id = id; 666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 676eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 68de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 69cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz public void setClickable(boolean clickable) { 70cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz this.clickable = clickable; 71cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz } 72cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz 73de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 74cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz public void setFocusable(boolean focusable) { 75cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz this.focusable = focusable; 76cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz } 77cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz 78de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 79254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin public boolean isFocusable() { 80254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin return focusable; 81254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin } 82254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin 83254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin @Implementation 846eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 856eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 866eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 88de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 89a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz public static View inflate(Context context, int resource, ViewGroup root) { 90a7e263ae4add03982ef3fe294d72ae43102ce52eChristian Williams View view = FakeLayoutInflater.from(context).inflate(resource, root); 91a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz if (root != null) { 92a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz root.addView(view); 93a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 94a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz return view; 95a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 96a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz 97de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 986eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 99e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 100e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 101e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 1026eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 1036eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 1046eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1056eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 106de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1070c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 1080c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView root = this; 1090c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol while(root.parent != null) { 1100c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 1110c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1120c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 1130c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1140c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 115de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 116d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz public ViewGroup.LayoutParams getLayoutParams() { 117d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz return layoutParams; 118d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz } 119d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz 120de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 121b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard public void setLayoutParams(ViewGroup.LayoutParams params) { 122b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard layoutParams = params; 123b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard } 124b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard 125de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1265411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public final ViewParent getParent() { 127a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz return parent == null ? null : (ViewParent) parent.realView; 1285411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 1295411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 130de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 1326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 1336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 135de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 1376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 1386eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 140de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1414d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin public void setBackgroundResource(int backgroundResourceId) { 1424d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin this.backgroundResourceId = backgroundResourceId; 1434d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin } 1444d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin 145de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 1476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 1486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 150de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 1526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 1536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 154eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 155de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 156eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 157eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 158eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 159810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 160de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 161acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz public boolean isSelected() { 162acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz return this.selected; 163acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz } 164acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz 165de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 166775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public boolean isEnabled() { 167775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard return this.enabled; 168775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 169775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard 170de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 171775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public void setEnabled(boolean enabled) { 172775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard this.enabled = enabled; 173775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 174775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard 175de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 176810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public void setOnClickListener(View.OnClickListener onClickListener) { 177810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore this.onClickListener = onClickListener; 178810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 179810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 180de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 181810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public boolean performClick() { 182810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore if (onClickListener != null) { 183810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore onClickListener.onClick(realView); 184810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return true; 185810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } else { 186810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return false; 187810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 188810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 189c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 190de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1915411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnKeyListener(View.OnKeyListener onKeyListener) { 1925411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams this.onKeyListener = onKeyListener; 1935411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 1945411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 195de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 196c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public Object getTag() { 197c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz return this.tag; 198c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 199c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 200de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 201c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public void setTag(Object tag) { 202c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz this.tag = tag; 203c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 20418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 205de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 20618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getHeight() { 207a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return bottom - top; 20818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 20918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 210de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 21118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getWidth() { 212a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return right - left; 21318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 21418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 215de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 216924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public final int getMeasuredWidth() { 217a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return getWidth(); 218a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard } 219a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 220de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 221a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public final void layout(int l, int t, int r, int b) { 222a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard left = l; 223a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard top = t; 224a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard right = r; 225a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard bottom = b; 226a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 227a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard// todo: realView.onLayout(); 228924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 229924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 230de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 23118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public void setPadding(int left, int top, int right, int bottom) { 23218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingLeft = left; 23318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingTop = top; 23418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingRight = right; 23518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingBottom = bottom; 23618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 23718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 238de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 23918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingTop() { 24018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingTop; 24118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 24218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 243de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 24418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingLeft() { 24518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingLeft; 24618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 24718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 248de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 24918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingRight() { 25018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingRight; 25118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 25218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 253de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 25418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingBottom() { 25518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingBottom; 25618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 25751fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz 258de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 25944ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public Object getTag(int key) { 26044ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams return tags.get(key); 26144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 26244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams 263de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 26444ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public void setTag(int key, Object value) { 26544ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams tags.put(key, value); 26644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 2675411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 26865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 26965e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus() { 27065e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return requestFocus(View.FOCUS_DOWN); 27165e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 27265e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 27365e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 27465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus(int direction) { 27565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(true); 27665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return true; 27765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 27865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 2795411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setViewFocus(boolean hasFocus) { 2805411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams this.hasFocus = hasFocus; 2815411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams if (onFocusChangeListener != null) { 2825411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener.onFocusChange(realView, hasFocus); 2835411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2845411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2855411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 286de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 28765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public boolean isFocused() { 28865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return hasFocus; 28965e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 29065e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 29165e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 2925411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public boolean hasFocus() { 2935411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams return hasFocus; 2945411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2955411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 296de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 29765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public void clearFocus() { 29865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(false); 29965e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 30065e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 30165e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 3025411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnFocusChangeListener(View.OnFocusChangeListener listener) { 3035411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener = listener; 3045411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3051c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard 306de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 3071c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard public void invalidate() { 3081c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard wasInvalidated = true; 3091c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard } 310924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 311de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 312924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public void setOnTouchListener(View.OnTouchListener onTouchListener) { 313924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard this.onTouchListener = onTouchListener; 314924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 315924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 316de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 317924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public boolean dispatchTouchEvent(MotionEvent event) { 318924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard if (onTouchListener != null) { 319924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return onTouchListener.onTouch(realView, event); 320924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 321924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return false; 322924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 3232ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin 3242ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin public String innerText() { 3252ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin return ""; 3262ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin } 3276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 328