ShadowView.java revision c6f46aeb970c9111e2e79b806451f63b4853950b
16eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpackage com.xtremelabs.droidsugar.view; 26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 36eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.Context; 46eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.res.Resources; 56eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.view.View; 60c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport com.xtremelabs.droidsugar.ProxyDelegatingHandler; 76eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 8c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.ArrayList; 9c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.List; 10c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 116eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz@SuppressWarnings({"ALL"}) 126eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView { 136eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private View realView; 146eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 156eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private int id; 166eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private List<View> children = new ArrayList<View>(); 170c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol private FakeView parent; 186eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private Context context; 196eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz private int visibility; 20eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public boolean selected; 21810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore private View.OnClickListener onClickListener; 22c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz private Object tag; 236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public FakeView(View view) { 256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.realView = view; 266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void __constructor__(Context context) { 296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.context = context; 306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setId(int id) { 336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.id = id; 346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 356eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 386eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 406eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 41e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 42e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 43e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 45e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz for (View child : children) { 466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz View found = child.findViewById(id); 476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz if (found != null) { 486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return found; 496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 540c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 550c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView root = this; 560c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol while(root.parent != null) { 570c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 580c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 590c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 600c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 610c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 626eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void addView(View child) { 636eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz children.add(child); 64ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore childProxy(child).parent = this; 65ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 66ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore 67ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore private FakeView childProxy(View child) { 68ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore return (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child); 696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 716eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getChildCount() { 726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.size(); 736eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 746eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 756eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View getChildAt(int index) { 766eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.get(index); 776eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 786eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 79ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore public void removeAllViews() { 80ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore for (View child : children) { 81ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore childProxy(child).parent = null; 82ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 83ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore children.clear(); 84ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 85ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore 866eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 886eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 896eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 906eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 916eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 926eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 936eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 956eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 966eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 976eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 986eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 996eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 1006eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 101eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 102eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 103eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 104eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 105810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 106810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public void setOnClickListener(View.OnClickListener onClickListener) { 107810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore this.onClickListener = onClickListener; 108810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 109810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 110810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public boolean performClick() { 111810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore if (onClickListener != null) { 112810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore onClickListener.onClick(realView); 113810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return true; 114810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } else { 115810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return false; 116810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 117810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 118c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 119c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public Object getTag() { 120c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz return this.tag; 121c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 122c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz 123c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz public void setTag(Object tag) { 124c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz this.tag = tag; 125c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz } 1266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 127