ShadowView.java revision 810ca4e6f0dc6d69504b3e03ef61155f10083fbe
16eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpackage com.xtremelabs.droidsugar.view; 26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 30c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport java.util.ArrayList; 40c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport java.util.List; 50c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 66eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.Context; 76eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.content.res.Resources; 86eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.view.View; 90c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport com.xtremelabs.droidsugar.ProxyDelegatingHandler; 106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 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; 226eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public FakeView(View view) { 246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.realView = view; 256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void __constructor__(Context context) { 286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.context = context; 296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setId(int id) { 326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.id = id; 336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 356eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 386eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 40e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 41e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 42e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 436eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 44e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz for (View child : children) { 456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz View found = child.findViewById(id); 466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz if (found != null) { 476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return found; 486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 530c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 540c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView root = this; 550c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol while(root.parent != null) { 560c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 570c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 580c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 590c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 600c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 616eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void addView(View child) { 626eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz children.add(child); 63ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore childProxy(child).parent = this; 64ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 65ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore 66ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore private FakeView childProxy(View child) { 67ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore return (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child); 686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getChildCount() { 716eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.size(); 726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 736eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 746eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View getChildAt(int index) { 756eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.get(index); 766eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 776eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 78ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore public void removeAllViews() { 79ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore for (View child : children) { 80ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore childProxy(child).parent = null; 81ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 82ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore children.clear(); 83ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore } 84ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore 856eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 866eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 886eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 896eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 906eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 916eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 926eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 936eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 956eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 966eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 976eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 986eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 996eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 100eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 101eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 102eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 103eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 104810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 105810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public void setOnClickListener(View.OnClickListener onClickListener) { 106810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore this.onClickListener = onClickListener; 107810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 108810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore 109810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore public boolean performClick() { 110810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore if (onClickListener != null) { 111810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore onClickListener.onClick(realView); 112810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return true; 113810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } else { 114810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore return false; 115810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 116810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore } 1176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 118