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