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