OSDN Git Service

Enable operations on accounts table.
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / editors / EditorDraw.java
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.gallery3d.filtershow.editors;
18
19 import android.app.Dialog;
20 import android.content.Context;
21 import android.view.LayoutInflater;
22 import android.view.MenuItem;
23 import android.view.View;
24 import android.view.View.OnClickListener;
25 import android.view.WindowManager.LayoutParams;
26 import android.widget.Button;
27 import android.widget.FrameLayout;
28 import android.widget.LinearLayout;
29 import android.widget.PopupMenu;
30 import android.widget.SeekBar;
31
32 import com.android.gallery3d.R;
33 import com.android.gallery3d.filtershow.FilterShowActivity;
34 import com.android.gallery3d.filtershow.colorpicker.ColorGridDialog;
35 import com.android.gallery3d.filtershow.colorpicker.RGBListener;
36 import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation;
37 import com.android.gallery3d.filtershow.filters.FilterRepresentation;
38 import com.android.gallery3d.filtershow.filters.ImageFilterDraw;
39 import com.android.gallery3d.filtershow.imageshow.ImageDraw;
40 import com.android.gallery3d.filtershow.ui.FramedTextButton;
41
42 public class EditorDraw extends Editor {
43     private static final String LOGTAG = "EditorDraw";
44     public static final int ID = R.id.editorDraw;
45     public ImageDraw mImageDraw;
46
47     public EditorDraw() {
48         super(ID);
49     }
50
51     @Override
52     public void createEditor(Context context, FrameLayout frameLayout) {
53         super.createEditor(context, frameLayout);
54         mView = mImageShow = mImageDraw = new ImageDraw(context);
55         mImageDraw.setEditor(this);
56
57     }
58
59     @Override
60     public boolean useUtilityPanel() {
61         return true;
62     }
63
64     @Override
65     public void reflectCurrentFilter() {
66         super.reflectCurrentFilter();
67         FilterRepresentation rep = getLocalRepresentation();
68
69         if (rep != null && getLocalRepresentation() instanceof FilterDrawRepresentation) {
70             FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
71             mImageDraw.setFilterDrawRepresentation(drawRep);
72         }
73     }
74
75     @Override
76     public void openUtilityPanel(final LinearLayout accessoryViewList) {
77         View view = accessoryViewList.findViewById(R.id.drawUtilityButton);
78         if (view == null) {
79             LayoutInflater inflater = (LayoutInflater) mImageShow.getActivity().getSystemService
80                     (Context.LAYOUT_INFLATER_SERVICE);
81             view = inflater.inflate(R.layout.filtershow_draw_button, accessoryViewList, false);
82             accessoryViewList.addView(view, view.getLayoutParams());
83             view.setOnClickListener(new OnClickListener() {
84
85                 @Override
86                 public void onClick(View arg0) {
87                     showPopupMenu(accessoryViewList);
88                 }
89             });
90         }
91
92         if (view != null) {
93             view.setVisibility(View.VISIBLE);
94         }
95     }
96
97     private void showPopupMenu(LinearLayout accessoryViewList) {
98         final FramedTextButton button = (FramedTextButton) accessoryViewList.findViewById(
99                 R.id.drawUtilityButton);
100         if (button == null) {
101             return;
102         }
103         final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), button);
104         popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_draw, popupMenu.getMenu());
105         popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
106
107             @Override
108             public boolean onMenuItemClick(MenuItem item) {
109                 ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
110                 if (item.getItemId() == R.id.draw_menu_color) {
111                     showColorGrid(item);
112                 } else if (item.getItemId() == R.id.draw_menu_size) {
113                     showSizeDialog(item);
114                 } else if (item.getItemId() == R.id.draw_menu_style_brush_marker) {
115                     ImageDraw idraw = (ImageDraw) mImageShow;
116                     idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_MARKER);
117                 } else if (item.getItemId() == R.id.draw_menu_style_brush_spatter) {
118                     ImageDraw idraw = (ImageDraw) mImageShow;
119                     idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_SPATTER);
120                 } else if (item.getItemId() == R.id.draw_menu_style_line) {
121                     ImageDraw idraw = (ImageDraw) mImageShow;
122                     idraw.setStyle(ImageFilterDraw.SIMPLE_STYLE);
123                 } else if (item.getItemId() == R.id.draw_menu_clear) {
124                     ImageDraw idraw = (ImageDraw) mImageShow;
125                     idraw.resetParameter();
126                     commitLocalRepresentation();
127                 }
128                 mView.invalidate();
129                 return true;
130             }
131         });
132         popupMenu.show();
133     }
134
135     public void showSizeDialog(final MenuItem item) {
136         FilterShowActivity ctx = mImageShow.getActivity();
137         final Dialog dialog = new Dialog(ctx);
138         dialog.setTitle(R.string.draw_size_title);
139         dialog.setContentView(R.layout.filtershow_draw_size);
140         final SeekBar bar = (SeekBar) dialog.findViewById(R.id.sizeSeekBar);
141         ImageDraw idraw = (ImageDraw) mImageShow;
142         bar.setProgress(idraw.getSize());
143         Button button = (Button) dialog.findViewById(R.id.sizeAcceptButton);
144         button.setOnClickListener(new OnClickListener() {
145
146             @Override
147             public void onClick(View arg0) {
148                 int p = bar.getProgress();
149                 ImageDraw idraw = (ImageDraw) mImageShow;
150                 idraw.setSize(p + 1);
151                 dialog.dismiss();
152             }
153         });
154         dialog.show();
155     }
156
157     public void showColorGrid(final MenuItem item) {
158         RGBListener cl = new RGBListener() {
159             @Override
160             public void setColor(int rgb) {
161                 ImageDraw idraw = (ImageDraw) mImageShow;
162                 idraw.setColor(rgb);
163             }
164         };
165         ColorGridDialog cpd = new ColorGridDialog(mImageShow.getActivity(), cl);
166         cpd.show();
167         LayoutParams params = cpd.getWindow().getAttributes();
168     }
169 }