ShadowView.java revision 0c40acb66824054e469b3afbc3609ba39bbdac1c
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; 216eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 226eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public FakeView(View view) { 236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.realView = view; 246eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 256eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void __constructor__(Context context) { 276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.context = context; 286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setId(int id) { 316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.id = id; 326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getId() { 356eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return id; 366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 386eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View findViewById(int id) { 39e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz if (id == this.id) { 40e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz return realView; 41e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz } 426eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 43e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz for (View child : children) { 446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz View found = child.findViewById(id); 456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz if (found != null) { 466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return found; 476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return null; 506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 520c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol public View getRootView() { 530c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView root = this; 540c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol while(root.parent != null) { 550c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol root = root.parent; 560c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 570c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol return root.realView; 580c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol } 590c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol 606eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void addView(View child) { 616eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz children.add(child); 620c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol FakeView childProxy = (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child); 630c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol childProxy.parent = this; 646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 656eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 666eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getChildCount() { 676eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.size(); 686eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public View getChildAt(int index) { 716eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return children.get(index); 726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 736eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 746eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public final Context getContext() { 756eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context; 766eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 776eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 786eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public Resources getResources() { 796eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return context.getResources(); 806eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 816eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 826eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public int getVisibility() { 836eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz return visibility; 846eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 856eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz 866eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz public void setVisibility(int visibility) { 876eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz this.visibility = visibility; 886eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz } 89eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz 90eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz public void setSelected(boolean selected) { 91eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz this.selected = selected; 92eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz } 936eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz} 94