EditorDraw.java revision 99baf61387ab1ef15bb9db5fa3b2b55591e87059
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 17package com.android.gallery3d.filtershow.editors; 18 19import android.app.Dialog; 20import android.content.Context; 21import android.view.LayoutInflater; 22import android.view.MenuItem; 23import android.view.View; 24import android.view.View.OnClickListener; 25import android.view.WindowManager.LayoutParams; 26import android.widget.Button; 27import android.widget.FrameLayout; 28import android.widget.LinearLayout; 29import android.widget.PopupMenu; 30import android.widget.SeekBar; 31 32import com.android.gallery3d.R; 33import com.android.gallery3d.filtershow.FilterShowActivity; 34import com.android.gallery3d.filtershow.colorpicker.ColorGridDialog; 35import com.android.gallery3d.filtershow.colorpicker.RGBListener; 36import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation; 37import com.android.gallery3d.filtershow.filters.FilterRepresentation; 38import com.android.gallery3d.filtershow.filters.ImageFilterDraw; 39import com.android.gallery3d.filtershow.imageshow.ImageDraw; 40import com.android.gallery3d.filtershow.ui.FramedTextButton; 41 42public 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 FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation(); 125 drawRep.clear(); 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} 170