1201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy/* 2201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * Copyright (C) 2012 The Android Open Source Project 3201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * 4201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * Licensed under the Apache License, Version 2.0 (the "License"); 5201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * you may not use this file except in compliance with the License. 6201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * You may obtain a copy of the License at 7201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * 8201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * http://www.apache.org/licenses/LICENSE-2.0 9201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * 10201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * Unless required by applicable law or agreed to in writing, software 11201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * distributed under the License is distributed on an "AS IS" BASIS, 12201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * See the License for the specific language governing permissions and 14201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy * limitations under the License. 15201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy */ 16201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 17201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamypackage com.android.ide.eclipse.gltrace.views; 18201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 19201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport com.android.ide.eclipse.gltrace.widgets.ImageCanvas; 20201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 21201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport org.eclipse.jface.action.Action; 22201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport org.eclipse.swt.SWT; 23201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport org.eclipse.swt.widgets.FileDialog; 24201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport org.eclipse.ui.ISharedImages; 25201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport org.eclipse.ui.PlatformUI; 26201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 27201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamyimport java.io.File; 28201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 29201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamypublic class SaveImageAction extends Action { 30201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy private static String sLastUsedPath; 31201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 32201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy private ImageCanvas mImageCanvas; 33201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 34201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy public SaveImageAction(ImageCanvas canvas) { 35201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy super("Save Image", 36201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy PlatformUI.getWorkbench().getSharedImages().getImageDescriptor( 37201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy ISharedImages.IMG_ETOOL_SAVEAS_EDIT)); 38201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy setToolTipText("Save Image"); 39201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy mImageCanvas = canvas; 40201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy } 41201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 42201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy @Override 43201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy public void run() { 44201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy FileDialog fd = new FileDialog(mImageCanvas.getShell(), SWT.SAVE); 45201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy fd.setFilterExtensions(new String[] { "*.png" }); 46201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy if (sLastUsedPath != null) { 47201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy fd.setFilterPath(sLastUsedPath); 48201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy } 49201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 50201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy String path = fd.open(); 51201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy if (path == null) { 52201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy return; 53201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy } 54201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy 55201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy File f = new File(path); 56201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy sLastUsedPath = f.getParent(); 57201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy mImageCanvas.exportImageTo(f); 58201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy } 59201e9f24eb34621819ae59c9d0d8959e365bf464Siva Velusamy} 60