2 * Copyright (C) 2013 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.gallery3d.filtershow.editors;
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;
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;
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;
52 public void createEditor(Context context, FrameLayout frameLayout) {
53 super.createEditor(context, frameLayout);
54 mView = mImageShow = mImageDraw = new ImageDraw(context);
55 mImageDraw.setEditor(this);
60 public boolean useUtilityPanel() {
65 public void reflectCurrentFilter() {
66 super.reflectCurrentFilter();
67 FilterRepresentation rep = getLocalRepresentation();
69 if (rep != null && getLocalRepresentation() instanceof FilterDrawRepresentation) {
70 FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
71 mImageDraw.setFilterDrawRepresentation(drawRep);
76 public void openUtilityPanel(final LinearLayout accessoryViewList) {
77 View view = accessoryViewList.findViewById(R.id.drawUtilityButton);
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() {
86 public void onClick(View arg0) {
87 showPopupMenu(accessoryViewList);
93 view.setVisibility(View.VISIBLE);
97 private void showPopupMenu(LinearLayout accessoryViewList) {
98 final FramedTextButton button = (FramedTextButton) accessoryViewList.findViewById(
99 R.id.drawUtilityButton);
100 if (button == null) {
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() {
108 public boolean onMenuItemClick(MenuItem item) {
109 ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
110 if (item.getItemId() == R.id.draw_menu_color) {
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();
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() {
147 public void onClick(View arg0) {
148 int p = bar.getProgress();
149 ImageDraw idraw = (ImageDraw) mImageShow;
150 idraw.setSize(p + 1);
157 public void showColorGrid(final MenuItem item) {
158 RGBListener cl = new RGBListener() {
160 public void setColor(int rgb) {
161 ImageDraw idraw = (ImageDraw) mImageShow;
165 ColorGridDialog cpd = new ColorGridDialog(mImageShow.getActivity(), cl);
167 LayoutParams params = cpd.getWindow().getAttributes();