ShadowView.java revision cc4bd26d94f6eba2a0dc3dae0065c8df2296a95e
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;
6d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultzimport android.view.ViewGroup;
70c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugolimport com.xtremelabs.droidsugar.ProxyDelegatingHandler;
86eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
9c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.ArrayList;
1051fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.HashMap;
11c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultzimport java.util.List;
1251fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultzimport java.util.Map;
13c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
14198b49fe81283e340891361045a8bdeb01f35e04Tyler Schultz@SuppressWarnings({"UnusedDeclaration"})
156eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzpublic class FakeView {
16f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol    public static final int UNINITIALIZED_ATTRIBUTE = -1000;
17f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol
186eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private View realView;
196eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
206eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private int id;
216eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private List<View> children = new ArrayList<View>();
220c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    private FakeView parent;
236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private Context context;
24eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public boolean selected;
25810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    private View.OnClickListener onClickListener;
26c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    private Object tag;
27775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    private boolean enabled = true;
28f33e228a6f3eed1c97488df2ca30da315324aa1eHarry Ugol    public int visibility = UNINITIALIZED_ATTRIBUTE;
2918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int height;
3018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int width;
3118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingLeft;
3218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingTop;
3318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingRight;
3418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int paddingBottom;
35686237bc49c2d8ff1891cb5fadaa7aaaf1cf9bddChristian Williams & Tyler Schultz    public ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(0, 0);
3644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    private Map<Integer, Object> tags = new HashMap<Integer, Object>();
37cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean clickable;
38cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public boolean focusable;
396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
406eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public FakeView(View view) {
416eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.realView = view;
426eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
436eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
446eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void __constructor__(Context context) {
456eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.context = context;
466eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
476eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
486eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setId(int id) {
496eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.id = id;
506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
52cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setClickable(boolean clickable) {
53cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.clickable = clickable;
54cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
55cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
56cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    public void setFocusable(boolean focusable) {
57cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz        this.focusable = focusable;
58cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz    }
59cc4bd26d94f6eba2a0dc3dae0065c8df2296a95eIan Fisher & Tyler Schultz
606eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getId() {
616eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return id;
626eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
636eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
64a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    public static View inflate(Context context, int resource, ViewGroup root) {
65a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        View view = FakeContextWrapper.viewLoader.inflateView(context, resource);
66a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        if (root != null) {
67a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz            root.addView(view);
68a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        }
69a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz        return view;
70a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz    }
71a66c979cb64d406c1646a0909bd9a0b6b6ccd802Ian Fisher & Tyler Schultz
726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View findViewById(int id) {
73e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        if (id == this.id) {
74e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz            return realView;
75e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        }
766eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
77e617325bfe357b73644421064cae37e0a033eed7Christian Williams & Tyler Schulz        for (View child : children) {
786eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            View found = child.findViewById(id);
796eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            if (found != null) {
806eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz                return found;
816eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            }
826eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        }
836eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return null;
846eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
856eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
860c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    public View getRootView() {
870c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        FakeView root = this;
880c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        while(root.parent != null) {
890c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol            root = root.parent;
900c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        }
910c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol        return root.realView;
920c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol    }
930c40acb66824054e469b3afbc3609ba39bbdac1cChristian Williams & Harry Ugol
946eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void addView(View child) {
956eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        children.add(child);
96ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        childProxy(child).parent = this;
97ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
98ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
99ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    private FakeView childProxy(View child) {
100ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        return (FakeView) ProxyDelegatingHandler.getInstance().proxyFor(child);
1016eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1026eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1036eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getChildCount() {
1046eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.size();
1056eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1066eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
107d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    public ViewGroup.LayoutParams getLayoutParams() {
108d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz        return layoutParams;
109d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz    }
110d4f5daf12f1d112cf06b8b8914437ed6c0b3a677Ryan Richard & Tyler Schultz
111b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    public void setLayoutParams(ViewGroup.LayoutParams params) {
112b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard        layoutParams = params;
113b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard    }
114b0336c5991d124b6b157b9dc976ade56d00cba3eChristian Williams & Ryan Richard
1156eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public View getChildAt(int index) {
1166eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return children.get(index);
1176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1186eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
119ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    public void removeAllViews() {
120ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        for (View child : children) {
121ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore            childProxy(child).parent = null;
122ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        }
123ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore        children.clear();
124ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore    }
125ea0871e869748032b7ba534d2b213f83b399c4a9Christian Williams & Joe Moore
1266eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public final Context getContext() {
1276eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context;
1286eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1296eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1306eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public Resources getResources() {
1316eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return context.getResources();
1326eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1336eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1346eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public int getVisibility() {
1356eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        return visibility;
1366eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
1376eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
1386eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void setVisibility(int visibility) {
1396eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        this.visibility = visibility;
1406eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
141eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz
142eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    public void setSelected(boolean selected) {
143eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz        this.selected = selected;
144eaadc83b187e31670dec8837d0851c0646522987Joe Moore & Tyler Schultz    }
145810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
146acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    public boolean isSelected() {
147acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz        return this.selected;
148acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz    }
149acb084f15b3b6e2496136ee8449b5d64ccb54939Ryan Richard & Tyler Schultz
150775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public boolean isEnabled() {
151775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        return this.enabled;
152775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
153775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
154775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    public void setEnabled(boolean enabled) {
155775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard        this.enabled = enabled;
156775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard    }
157775ccf7ae53d9b4c77d3adf2514f26747cebd89cIan Fisher & Ryan Richard
158810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public void setOnClickListener(View.OnClickListener onClickListener) {
159810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        this.onClickListener = onClickListener;
160810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
161810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore
162810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    public boolean performClick() {
163810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        if (onClickListener != null) {
164810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            onClickListener.onClick(realView);
165810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return true;
166810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        } else {
167810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore            return false;
168810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore        }
169810ca4e6f0dc6d69504b3e03ef61155f10083fbeChristian Williams & Joe Moore    }
170c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
171c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public Object getTag() {
172c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        return this.tag;
173c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
174c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz
175c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    public void setTag(Object tag) {
176c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz        this.tag = tag;
177c6f46aeb970c9111e2e79b806451f63b4853950bIan Fisher & Tyler Schultz    }
17818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
17918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getHeight() {
18018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return height;
18118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
18218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
18318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public final int getWidth() {
18418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return width;
18518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
18618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
18718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public void setPadding(int left, int top, int right, int bottom) {
18818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingLeft = left;
18918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingTop = top;
19018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingRight = right;
19118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        paddingBottom = bottom;
19218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
19318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
19418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingTop() {
19518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingTop;
19618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
19718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
19818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingLeft() {
19918141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingLeft;
20018141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
20118141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
20218141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingRight() {
20318141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingRight;
20418141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
20518141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard
20618141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    public int getPaddingBottom() {
20718141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard        return paddingBottom;
20818141e608f2e60c866a9b7729909e9ce3b9eb588Ian Fisher & Ryan Richard    }
20951fe0b279e9f5568683d9ef67921f922a51c05d5Christian Williams & Tyler Schultz
21044ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public Object getTag(int key) {
21144ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        return tags.get(key);
21244ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
21344ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams
21444ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    public void setTag(int key, Object value) {
21544ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams        tags.put(key, value);
21644ade170c5bc611222ed25d5b1f8e7745104057dChristian Williams    }
2176eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz}
218