1package com.android.gallery3d.filtershow;
2
3import android.view.View;
4import android.view.ViewParent;
5import android.widget.FrameLayout;
6
7import com.android.gallery3d.filtershow.cache.ImageLoader;
8import com.android.gallery3d.filtershow.editors.Editor;
9import com.android.gallery3d.filtershow.imageshow.ImageShow;
10
11import java.util.HashMap;
12import java.util.Vector;
13
14public class EditorPlaceHolder {
15    private static final String LOGTAG = "EditorPlaceHolder";
16
17    private FilterShowActivity mActivity = null;
18    private FrameLayout mContainer = null;
19    private HashMap<Integer, Editor> mEditors = new HashMap<Integer, Editor>();
20    private Vector<ImageShow> mOldViews = new Vector<ImageShow>();
21    private ImageLoader mImageLoader = null;
22
23    public EditorPlaceHolder(FilterShowActivity activity) {
24        mActivity = activity;
25    }
26
27    public void setContainer(FrameLayout container) {
28        mContainer = container;
29    }
30
31    public void addEditor(Editor c) {
32        mEditors.put(c.getID(), c);
33    }
34
35    public boolean contains(int type) {
36        if (mEditors.get(type) != null) {
37            return true;
38        }
39        return false;
40    }
41
42    public Editor showEditor(int type) {
43        Editor editor = mEditors.get(type);
44        if (editor == null) {
45            return null;
46        }
47
48        try {
49            editor.createEditor(mActivity, mContainer);
50            editor.setImageLoader(mImageLoader);
51            mContainer.setVisibility(View.VISIBLE);
52            mContainer.removeAllViews();
53            View eview = editor.getTopLevelView();
54            ViewParent parent = eview.getParent();
55
56            if (parent != null && parent instanceof FrameLayout) {
57                ((FrameLayout) parent).removeAllViews();
58            }
59
60            mContainer.addView(eview);
61            hideOldViews();
62            editor.setVisibility(View.VISIBLE);
63            return editor;
64        } catch (Exception e) {
65            e.printStackTrace();
66        }
67        return null;
68    }
69
70    public void setOldViews(Vector<ImageShow> views) {
71        mOldViews = views;
72    }
73
74    public void hide() {
75        mContainer.setVisibility(View.GONE);
76    }
77
78    public void hideOldViews() {
79        for (View view : mOldViews) {
80            view.setVisibility(View.GONE);
81        }
82    }
83
84    public void setImageLoader(ImageLoader imageLoader) {
85        mImageLoader = imageLoader;
86    }
87
88    public Editor getEditor(int editorId) {
89        return mEditors.get(editorId);
90    }
91
92}
93