1f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard/*
2f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Copyright (C) 2013 The Android Open Source Project
3f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
4f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
5f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * you may not use this file except in compliance with the License.
6f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * You may obtain a copy of the License at
7f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
8f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
9f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard *
10f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * Unless required by applicable law or agreed to in writing, software
11f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
12f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * See the License for the specific language governing permissions and
14f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard * limitations under the License.
15f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard */
16f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
17f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardpackage com.android.gallery3d.filtershow.category;
18f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
19f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.os.Bundle;
20f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.support.v4.app.Fragment;
21f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.support.v4.app.FragmentTransaction;
22f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.view.LayoutInflater;
23f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.view.View;
24f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.view.ViewGroup;
25f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.widget.ImageButton;
26f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport android.widget.LinearLayout;
271a266f16edbef7cb0a770d37fcad958fc55a5862Michael Kolb
28f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport com.android.gallery3d.R;
29f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport com.android.gallery3d.filtershow.FilterShowActivity;
30c870104ac3768bd528798eb4646c3b075757c5ffnicolasroardimport com.android.gallery3d.filtershow.imageshow.MasterImage;
31f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardimport com.android.gallery3d.filtershow.state.StatePanel;
32f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
33f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroardpublic class MainPanel extends Fragment {
34f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
35f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private static final String LOGTAG = "MainPanel";
36f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
37f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private LinearLayout mMainView;
38f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private ImageButton looksButton;
39f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private ImageButton bordersButton;
40f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private ImageButton geometryButton;
41f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private ImageButton filtersButton;
42f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
43f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final String FRAGMENT_TAG = "MainPanel";
44f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int LOOKS = 0;
45f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int BORDERS = 1;
46f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int GEOMETRY = 2;
47f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public static final int FILTERS = 3;
48860af325f2030a03c526e8551a85230d17df7b15nicolasroard    public static final int VERSIONS = 4;
49f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
50f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private int mCurrentSelected = -1;
51860af325f2030a03c526e8551a85230d17df7b15nicolasroard    private int mPreviousToggleVersions = -1;
52f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
53f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private void selection(int position, boolean value) {
54f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (value) {
55f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            FilterShowActivity activity = (FilterShowActivity) getActivity();
56f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            activity.setCurrentPanel(position);
57f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
58f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        switch (position) {
59f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case LOOKS: {
60f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                looksButton.setSelected(value);
61f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
62f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
63f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case BORDERS: {
64f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                bordersButton.setSelected(value);
65f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
66f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
67f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case GEOMETRY: {
68f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                geometryButton.setSelected(value);
69f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
70f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
71f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case FILTERS: {
72f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                filtersButton.setSelected(value);
73f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
74f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
75f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
76f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
77f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
78f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    @Override
79f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void onDestroyView() {
80f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        super.onDestroyView();
81f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mMainView != null) {
82f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            if (mMainView.getParent() != null) {
83f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                ViewGroup parent = (ViewGroup) mMainView.getParent();
84f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                parent.removeView(mMainView);
85f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
86f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
87f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
88f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
89f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    @Override
90f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public View onCreateView(LayoutInflater inflater, ViewGroup container,
91f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                             Bundle savedInstanceState) {
92f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
93f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mMainView = (LinearLayout) inflater.inflate(
94f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                R.layout.filtershow_main_panel, null, false);
95f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
96f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        looksButton = (ImageButton) mMainView.findViewById(R.id.fxButton);
97f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        bordersButton = (ImageButton) mMainView.findViewById(R.id.borderButton);
98f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        geometryButton = (ImageButton) mMainView.findViewById(R.id.geometryButton);
99f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        filtersButton = (ImageButton) mMainView.findViewById(R.id.colorsButton);
100f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
101f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        looksButton.setOnClickListener(new View.OnClickListener() {
102f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            @Override
103f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            public void onClick(View v) {
104f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                showPanel(LOOKS);
105f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
106f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        });
107f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        bordersButton.setOnClickListener(new View.OnClickListener() {
108f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            @Override
109f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            public void onClick(View v) {
110f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                showPanel(BORDERS);
111f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
112f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        });
113f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        geometryButton.setOnClickListener(new View.OnClickListener() {
114f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            @Override
115f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            public void onClick(View v) {
116f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                showPanel(GEOMETRY);
117f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
118f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        });
119f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        filtersButton.setOnClickListener(new View.OnClickListener() {
120f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            @Override
121f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            public void onClick(View v) {
122f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                showPanel(FILTERS);
123f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
124f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        });
125f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
126f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        FilterShowActivity activity = (FilterShowActivity) getActivity();
127f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        showImageStatePanel(activity.isShowingImageStatePanel());
128f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        showPanel(activity.getCurrentPanel());
129f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return mMainView;
130f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
131f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
132f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private boolean isRightAnimation(int newPos) {
133f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (newPos < mCurrentSelected) {
134f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return false;
135f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
136f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        return true;
137f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
138f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
139f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    private void setCategoryFragment(CategoryPanel category, boolean fromRight) {
140f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
141f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (fromRight) {
142f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right);
143f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        } else {
144f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left);
145f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
146f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        transaction.replace(R.id.category_panel_container, category, CategoryPanel.FRAGMENT_TAG);
147d1a098ea5116fbc47e815631bd9bc5d442bbbd0dnicolasroard        transaction.commitAllowingStateLoss();
148f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
149f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
1505af55f4f37c3d8fd471144f1175a45e2933ca015nicolasroard    public void loadCategoryLookPanel(boolean force) {
1515af55f4f37c3d8fd471144f1175a45e2933ca015nicolasroard        if (!force && mCurrentSelected == LOOKS) {
152f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
153f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
154f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        boolean fromRight = isRightAnimation(LOOKS);
155f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, false);
156f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        CategoryPanel categoryPanel = new CategoryPanel();
157f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        categoryPanel.setAdapter(LOOKS);
158f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setCategoryFragment(categoryPanel, fromRight);
159f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mCurrentSelected = LOOKS;
160f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, true);
161f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
162f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
163f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void loadCategoryBorderPanel() {
164f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mCurrentSelected == BORDERS) {
165f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
166f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
167f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        boolean fromRight = isRightAnimation(BORDERS);
168f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, false);
169f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        CategoryPanel categoryPanel = new CategoryPanel();
170f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        categoryPanel.setAdapter(BORDERS);
171f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setCategoryFragment(categoryPanel, fromRight);
172f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mCurrentSelected = BORDERS;
173f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, true);
174f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
175f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
176f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void loadCategoryGeometryPanel() {
177f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mCurrentSelected == GEOMETRY) {
178f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
179f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
180c870104ac3768bd528798eb4646c3b075757c5ffnicolasroard        if (MasterImage.getImage().hasTinyPlanet()) {
181c870104ac3768bd528798eb4646c3b075757c5ffnicolasroard            return;
182c870104ac3768bd528798eb4646c3b075757c5ffnicolasroard        }
183f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        boolean fromRight = isRightAnimation(GEOMETRY);
184f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, false);
185f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        CategoryPanel categoryPanel = new CategoryPanel();
186f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        categoryPanel.setAdapter(GEOMETRY);
187f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setCategoryFragment(categoryPanel, fromRight);
188f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mCurrentSelected = GEOMETRY;
189f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, true);
190f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
191f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
192f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void loadCategoryFiltersPanel() {
193f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (mCurrentSelected == FILTERS) {
194f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
195f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
196f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        boolean fromRight = isRightAnimation(FILTERS);
197f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, false);
198f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        CategoryPanel categoryPanel = new CategoryPanel();
199f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        categoryPanel.setAdapter(FILTERS);
200f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        setCategoryFragment(categoryPanel, fromRight);
201f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        mCurrentSelected = FILTERS;
202f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        selection(mCurrentSelected, true);
203f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
204f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
205860af325f2030a03c526e8551a85230d17df7b15nicolasroard    public void loadCategoryVersionsPanel() {
206860af325f2030a03c526e8551a85230d17df7b15nicolasroard        if (mCurrentSelected == VERSIONS) {
207860af325f2030a03c526e8551a85230d17df7b15nicolasroard            return;
208860af325f2030a03c526e8551a85230d17df7b15nicolasroard        }
209860af325f2030a03c526e8551a85230d17df7b15nicolasroard        FilterShowActivity activity = (FilterShowActivity) getActivity();
210860af325f2030a03c526e8551a85230d17df7b15nicolasroard        activity.updateVersions();
211860af325f2030a03c526e8551a85230d17df7b15nicolasroard        boolean fromRight = isRightAnimation(VERSIONS);
212860af325f2030a03c526e8551a85230d17df7b15nicolasroard        selection(mCurrentSelected, false);
213860af325f2030a03c526e8551a85230d17df7b15nicolasroard        CategoryPanel categoryPanel = new CategoryPanel();
214860af325f2030a03c526e8551a85230d17df7b15nicolasroard        categoryPanel.setAdapter(VERSIONS);
215860af325f2030a03c526e8551a85230d17df7b15nicolasroard        setCategoryFragment(categoryPanel, fromRight);
216860af325f2030a03c526e8551a85230d17df7b15nicolasroard        mCurrentSelected = VERSIONS;
217860af325f2030a03c526e8551a85230d17df7b15nicolasroard        selection(mCurrentSelected, true);
218860af325f2030a03c526e8551a85230d17df7b15nicolasroard    }
219860af325f2030a03c526e8551a85230d17df7b15nicolasroard
220f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void showPanel(int currentPanel) {
221f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        switch (currentPanel) {
222f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case LOOKS: {
2235af55f4f37c3d8fd471144f1175a45e2933ca015nicolasroard                loadCategoryLookPanel(false);
224f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
225f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
226f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case BORDERS: {
227f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                loadCategoryBorderPanel();
228f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
229f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
230f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case GEOMETRY: {
231f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                loadCategoryGeometryPanel();
232f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
233f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
234f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            case FILTERS: {
235f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                loadCategoryFiltersPanel();
236f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                break;
237f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
238860af325f2030a03c526e8551a85230d17df7b15nicolasroard            case VERSIONS: {
239860af325f2030a03c526e8551a85230d17df7b15nicolasroard                loadCategoryVersionsPanel();
240860af325f2030a03c526e8551a85230d17df7b15nicolasroard                break;
241860af325f2030a03c526e8551a85230d17df7b15nicolasroard            }
242f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
243f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
244f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard
245860af325f2030a03c526e8551a85230d17df7b15nicolasroard    public void setToggleVersionsPanelButton(ImageButton button) {
246860af325f2030a03c526e8551a85230d17df7b15nicolasroard        if (button == null) {
247860af325f2030a03c526e8551a85230d17df7b15nicolasroard            return;
248860af325f2030a03c526e8551a85230d17df7b15nicolasroard        }
249860af325f2030a03c526e8551a85230d17df7b15nicolasroard        button.setOnClickListener(new View.OnClickListener() {
250860af325f2030a03c526e8551a85230d17df7b15nicolasroard            @Override
251860af325f2030a03c526e8551a85230d17df7b15nicolasroard            public void onClick(View v) {
252860af325f2030a03c526e8551a85230d17df7b15nicolasroard                if (mCurrentSelected == VERSIONS) {
253860af325f2030a03c526e8551a85230d17df7b15nicolasroard                    showPanel(mPreviousToggleVersions);
254860af325f2030a03c526e8551a85230d17df7b15nicolasroard                } else {
255860af325f2030a03c526e8551a85230d17df7b15nicolasroard                    mPreviousToggleVersions = mCurrentSelected;
256860af325f2030a03c526e8551a85230d17df7b15nicolasroard                    showPanel(VERSIONS);
257860af325f2030a03c526e8551a85230d17df7b15nicolasroard                }
258860af325f2030a03c526e8551a85230d17df7b15nicolasroard            }
259860af325f2030a03c526e8551a85230d17df7b15nicolasroard        });
260860af325f2030a03c526e8551a85230d17df7b15nicolasroard    }
261860af325f2030a03c526e8551a85230d17df7b15nicolasroard
262f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    public void showImageStatePanel(boolean show) {
263e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        View container = mMainView.findViewById(R.id.state_panel_container);
264e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        FragmentTransaction transaction = null;
265e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        if (container == null) {
266e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard            FilterShowActivity activity = (FilterShowActivity) getActivity();
267e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard            container = activity.getMainStatePanelContainer(R.id.state_panel_container);
268e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        } else {
269e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard            transaction = getChildFragmentManager().beginTransaction();
270e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        }
271e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        if (container == null) {
272f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            return;
273e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard        } else {
274e799626df47f99e4ba70bcfe787fdbdac64a8cc7nicolasroard            transaction = getFragmentManager().beginTransaction();
275f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
276860af325f2030a03c526e8551a85230d17df7b15nicolasroard        int currentPanel = mCurrentSelected;
277f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        if (show) {
278f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            container.setVisibility(View.VISIBLE);
279f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            StatePanel statePanel = new StatePanel();
280860af325f2030a03c526e8551a85230d17df7b15nicolasroard            statePanel.setMainPanel(this);
281860af325f2030a03c526e8551a85230d17df7b15nicolasroard            FilterShowActivity activity = (FilterShowActivity) getActivity();
282860af325f2030a03c526e8551a85230d17df7b15nicolasroard            activity.updateVersions();
283f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            transaction.replace(R.id.state_panel_container, statePanel, StatePanel.FRAGMENT_TAG);
284f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        } else {
285f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            container.setVisibility(View.GONE);
286f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            Fragment statePanel = getChildFragmentManager().findFragmentByTag(StatePanel.FRAGMENT_TAG);
287f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            if (statePanel != null) {
288f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard                transaction.remove(statePanel);
289f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard            }
290860af325f2030a03c526e8551a85230d17df7b15nicolasroard            if (currentPanel == VERSIONS) {
291860af325f2030a03c526e8551a85230d17df7b15nicolasroard                currentPanel = LOOKS;
292860af325f2030a03c526e8551a85230d17df7b15nicolasroard            }
293f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        }
294860af325f2030a03c526e8551a85230d17df7b15nicolasroard        mCurrentSelected = -1;
295860af325f2030a03c526e8551a85230d17df7b15nicolasroard        showPanel(currentPanel);
296f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard        transaction.commit();
297f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard    }
298f5eedf1635eba7edfa7d41fd4e991cced978c4b2nicolasroard}
299