ShadowView.java revision bbf6ae3d37d2303d8463094096ef0bb9906fd658
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 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; 124a7b7902404d0c3743f96c043e3cc6b9069cf438Christian Williamsimport com.xtremelabs.robolectric.util.RealObject; 136eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 1486e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williamsimport java.io.PrintStream; 1551fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap; 1651fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map; 17c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 1886e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williamsimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 1986e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 20198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"}) 210b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(View.class) 22afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowView { 23a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz @Deprecated 24f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol public static final int UNINITIALIZED_ATTRIBUTE = -1000; 25f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol 264a7b7902404d0c3743f96c043e3cc6b9069cf438Christian Williams @RealObject protected View realView; 276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private int id; 29afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams ShadowView parent; 306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private Context context; 314d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private boolean selected; 32810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore private View.OnClickListener onClickListener; 33c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz private Object tag; 34775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard private boolean enabled = true; 354d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int visibility = View.VISIBLE; 364d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin int left; 374d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin int top; 384d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin int right; 394d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin int bottom; 404d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int paddingLeft; 414d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int paddingTop; 424d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int paddingRight; 434d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int paddingBottom; 444d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(0, 0); 4544ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams private Map<Integer, Object> tags = new HashMap<Integer, Object>(); 464d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private boolean clickable; 47254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin protected boolean focusable; 489729911f8638b6bb4d55b3d67e6d68a6b3f19dc7Phil Goodwin boolean focusableInTouchMode; 494d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private int backgroundResourceId = -1; 505411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams protected View.OnKeyListener onKeyListener; 514d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private boolean isFocused; 525411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams private View.OnFocusChangeListener onFocusChangeListener; 534d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin private boolean wasInvalidated; 54924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard private View.OnTouchListener onTouchListener; 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; 77adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams if (!focusable) { 78415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard setFocusableInTouchMode(false); 79415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard } 80415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard } 81415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard 82415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard @Implementation 83415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard public final boolean isFocusableInTouchMode() { 84415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard return focusableInTouchMode; 85415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard } 86415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard 87415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard @Implementation 88415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard public void setFocusableInTouchMode(boolean focusableInTouchMode) { 89415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard this.focusableInTouchMode = focusableInTouchMode; 90adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams if (focusableInTouchMode) { 91415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard setFocusable(true); 92415f3fdab8162ece7185268f71b577f7faa0ba38Phil Goodwin & Ryan Richard } 93cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz } 94cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz 95de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 96254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin public boolean isFocusable() { 97254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin return focusable; 98254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin } 99254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin 100254044cea0df7e6aef3ce33c98a5003a6eba0512Christian Williams & Phil Goodwin @Implementation 1016eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 1026eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 1036eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1046eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 105de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 106a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz public static View inflate(Context context, int resource, ViewGroup root) { 107afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams View view = ShadowLayoutInflater.from(context).inflate(resource, root); 108a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz if (root != null) { 109a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz root.addView(view); 110a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 111a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz return view; 112a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz } 113a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz 114de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1156eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 116e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 117e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 118e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 1196eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 1206eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 1216eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1226eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 123de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1240c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 125afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams ShadowView root = this; 126adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams while (root.parent != null) { 1270c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 1280c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1290c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 1300c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 1310c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 132de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 133d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz public ViewGroup.LayoutParams getLayoutParams() { 134d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz return layoutParams; 135d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz } 136d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz 137de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 138b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard public void setLayoutParams(ViewGroup.LayoutParams params) { 139b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard layoutParams = params; 140b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard } 141b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard 142de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1435411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public final ViewParent getParent() { 144a89236397e869467b3fc6f7208f551da61235795Christian Williams & Tyler Schultz return parent == null ? null : (ViewParent) parent.realView; 1455411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 1465411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 147de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 1496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 1506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 152de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 1546eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 1556eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1566eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 157de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1584d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin public void setBackgroundResource(int backgroundResourceId) { 1594d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin this.backgroundResourceId = backgroundResourceId; 1604d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin } 1614d4b979c716f731be80852e7c04fdbe9862be3f0Ian Fisher & Phil Goodwin 162de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1636eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 1646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 1656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 1666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 167de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 1686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 1696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 1706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 171eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 172de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 173eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 174eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 175eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 176810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 177de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 178acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz public boolean isSelected() { 179acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz return this.selected; 180acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz } 181acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz 182de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 183775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public boolean isEnabled() { 184775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard return this.enabled; 185775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 186adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams 187de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 188775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard public void setEnabled(boolean enabled) { 189775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard this.enabled = enabled; 190775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard } 191775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard 192de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 193810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public void setOnClickListener(View.OnClickListener onClickListener) { 194810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore this.onClickListener = onClickListener; 195810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 196810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 197de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 198810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public boolean performClick() { 199810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore if (onClickListener != null) { 200810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore onClickListener.onClick(realView); 201810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return true; 202810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } else { 203810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return false; 204810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 205810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 206c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 207de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 2085411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnKeyListener(View.OnKeyListener onKeyListener) { 2095411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams this.onKeyListener = onKeyListener; 2105411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 2115411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 212de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 213c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public Object getTag() { 214c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz return this.tag; 215c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 216c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 217de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 218c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public void setTag(Object tag) { 219c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz this.tag = tag; 220c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 22118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 222de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 22318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getHeight() { 224a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return bottom - top; 22518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 22618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 227de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 22818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public final int getWidth() { 229a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return right - left; 23018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 23118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 232de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 233924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public final int getMeasuredWidth() { 234a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard return getWidth(); 235a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard } 236a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 237de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 238a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard public final void layout(int l, int t, int r, int b) { 239a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard left = l; 240a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard top = t; 241a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard right = r; 242a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard bottom = b; 243a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard 244a1ef7deaed03310ed6ec51621125f69bb16ac8fcChristian Williams & Ryan Richard// todo: realView.onLayout(); 245924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 246adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams 247de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 24818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public void setPadding(int left, int top, int right, int bottom) { 24918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingLeft = left; 25018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingTop = top; 25118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingRight = right; 25218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard paddingBottom = bottom; 25318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 25418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 255de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 25618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingTop() { 25718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingTop; 25818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 25918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 260de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 26118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingLeft() { 26218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingLeft; 26318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 26418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 265de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 26618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingRight() { 26718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingRight; 26818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 26918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard 270de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 27118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard public int getPaddingBottom() { 27218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard return paddingBottom; 27318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard } 27451fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz 275de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 27644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public Object getTag(int key) { 27744ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams return tags.get(key); 27844ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 27944ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams 280de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 28144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams public void setTag(int key, Object value) { 28244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams tags.put(key, value); 28344ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams } 2845411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 28565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 28665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus() { 28765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return requestFocus(View.FOCUS_DOWN); 28865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 28965e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 29065e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 29165e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public final boolean requestFocus(int direction) { 29265e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(true); 29365e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams return true; 29465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 29565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 2965411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setViewFocus(boolean hasFocus) { 2979729911f8638b6bb4d55b3d67e6d68a6b3f19dc7Phil Goodwin this.isFocused = hasFocus; 2985411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams if (onFocusChangeListener != null) { 2995411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener.onFocusChange(realView, hasFocus); 3005411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3015411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3025411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 303de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 30465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public boolean isFocused() { 3059729911f8638b6bb4d55b3d67e6d68a6b3f19dc7Phil Goodwin return isFocused; 30665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 30765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 30865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 3095411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public boolean hasFocus() { 3109729911f8638b6bb4d55b3d67e6d68a6b3f19dc7Phil Goodwin return isFocused; 3115411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3125411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams 313de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 31465e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams public void clearFocus() { 31565e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams setViewFocus(false); 31665e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams } 31765e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams 31865e90b1b9829e83cac5cdcf8836b9706aa67c072Christian Williams @Implementation 3195411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams public void setOnFocusChangeListener(View.OnFocusChangeListener listener) { 3205411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams onFocusChangeListener = listener; 3215411bf7cde998b5c2e70b69fe3d7227b6783ab7cChristian Williams } 3221c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard 323de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 3241c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard public void invalidate() { 3251c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard wasInvalidated = true; 3261c46c94a5affe7beeb8c6bfcb5ec0ed509e5fdbdRyan Richard } 327924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 328de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 329924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public void setOnTouchListener(View.OnTouchListener onTouchListener) { 330924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard this.onTouchListener = onTouchListener; 331924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 332924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard 333de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 334924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard public boolean dispatchTouchEvent(MotionEvent event) { 335924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard if (onTouchListener != null) { 336924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return onTouchListener.onTouch(realView, event); 337924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 338924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard return false; 339924f851cb0ec279b6974744ce623f25bdc657551Ryan Richard } 3402ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin 3412ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin public String innerText() { 3422ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin return ""; 3432ff94a9e4df5b0d3eb21bda70793b27d9f1f353cChristian Williams & Phil Goodwin } 34486e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 34586e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams public void dump() { 34686e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams dump(System.out, 0); 34786e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams } 34886e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 34986e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams public void dump(PrintStream out, int indent) { 35086e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams dumpFirstPart(out, indent); 35186e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams out.println("/>"); 35286e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams } 35386e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 35486e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams protected void dumpFirstPart(PrintStream out, int indent) { 35586e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams dumpIndent(out, indent); 35686e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 35786e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams out.print("<" + realView.getClass().getSimpleName()); 35886e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams if (id > 0) { 35986e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams out.print(" id=\"" + shadowOf(context).getResourceLoader().getNameForId(id) + "\""); 36086e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams } 36186e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams } 36286e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams 36386e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams protected void dumpIndent(PrintStream out, int indent) { 36486e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams for (int i = 0; i < indent; i++) out.print(" "); 36586e98619f5f1b5f6b1fd5742ba911d7ebc83c2ddChristian Williams } 3664d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 367bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams @Implementation 3684d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public int getLeft() { 3694d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return left; 3704d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3714d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 372bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams @Implementation 3734d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public int getTop() { 3744d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return top; 3754d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3764d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 377bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams @Implementation 3784d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public int getRight() { 3794d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return right; 3804d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3814d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 382bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams @Implementation 3834d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public int getBottom() { 3844d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return bottom; 3854d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3864d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 387bbf6ae3d37d2303d8463094096ef0bb9906fd658Christian Williams @Implementation 3884d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public boolean isClickable() { 3894d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return clickable; 3904d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3914d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 3924d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public int getBackgroundResourceId() { 3934d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return backgroundResourceId; 3944d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3954d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 3964d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public boolean wasInvalidated() { 3974d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin return wasInvalidated; 3984d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 3994d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4004d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void clearWasInvalidated() { 4014d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin wasInvalidated = false; 4024d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4034d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4044d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setLeft(int left) { 4054d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.left = left; 4064d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4074d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4084d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setTop(int top) { 4094d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.top = top; 4104d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4114d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4124d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setRight(int right) { 4134d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.right = right; 4144d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4154d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4164d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setBottom(int bottom) { 4174d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.bottom = bottom; 4184d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4194d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4204d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setPaddingLeft(int paddingLeft) { 4214d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.paddingLeft = paddingLeft; 4224d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4234d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4244d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setPaddingTop(int paddingTop) { 4254d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.paddingTop = paddingTop; 4264d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4274d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4284d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setPaddingRight(int paddingRight) { 4294d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.paddingRight = paddingRight; 4304d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4314d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4324d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setPaddingBottom(int paddingBottom) { 4334d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin this.paddingBottom = paddingBottom; 4344d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4354d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin 4364d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin public void setFocused(boolean focused) { 4374d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin isFocused = focused; 4384d709f74a8a630e677915cff8fba5e8b4888800fChristian Williams & Phil Goodwin } 4396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 440