aboutsummaryrefslogtreecommitdiffstats
path: root/uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java')
-rw-r--r--uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java176
1 files changed, 0 insertions, 176 deletions
diff --git a/uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java b/uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java
deleted file mode 100644
index 700b041..0000000
--- a/uiautomatorviewer/src/com/android/uiautomator/actions/ScreenshotAction.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.uiautomator.actions;
-
-import com.android.ddmlib.IDevice;
-import com.android.uiautomator.DebugBridge;
-import com.android.uiautomator.UiAutomatorHelper;
-import com.android.uiautomator.UiAutomatorHelper.UiAutomatorException;
-import com.android.uiautomator.UiAutomatorHelper.UiAutomatorResult;
-import com.android.uiautomator.UiAutomatorViewer;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-
-public class ScreenshotAction extends Action {
- UiAutomatorViewer mViewer;
-
- public ScreenshotAction(UiAutomatorViewer viewer) {
- super("&Device Screenshot");
- mViewer = viewer;
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return ImageHelper.loadImageDescriptorFromResource("images/screenshot.png");
- }
-
- @Override
- public void run() {
- if (!DebugBridge.isInitialized()) {
- MessageDialog.openError(mViewer.getShell(),
- "Error obtaining Device Screenshot",
- "Unable to connect to adb. Check if adb is installed correctly.");
- return;
- }
-
- final IDevice device = pickDevice();
- if (device == null) {
- return;
- }
-
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(mViewer.getShell());
- try {
- dialog.run(true, false, new IRunnableWithProgress() {
- @Override
- public void run(IProgressMonitor monitor) throws InvocationTargetException,
- InterruptedException {
- UiAutomatorResult result = null;
- try {
- result = UiAutomatorHelper.takeSnapshot(device, monitor);
- } catch (UiAutomatorException e) {
- monitor.done();
- showError(e.getMessage(), e);
- return;
- }
-
- mViewer.setModel(result.model, result.uiHierarchy, result.screenshot);
- monitor.done();
- }
- });
- } catch (Exception e) {
- showError("Unexpected error while obtaining UI hierarchy", e);
- }
- }
-
- private void showError(final String msg, final Throwable t) {
- mViewer.getShell().getDisplay().syncExec(new Runnable() {
- @Override
- public void run() {
- Status s = new Status(IStatus.ERROR, "Screenshot", msg, t);
- ErrorDialog.openError(
- mViewer.getShell(), "Error", "Error obtaining UI hierarchy", s);
- }
- });
- }
-
- private IDevice pickDevice() {
- List<IDevice> devices = DebugBridge.getDevices();
- if (devices.size() == 0) {
- MessageDialog.openError(mViewer.getShell(),
- "Error obtaining Device Screenshot",
- "No Android devices were detected by adb.");
- return null;
- } else if (devices.size() == 1) {
- return devices.get(0);
- } else {
- DevicePickerDialog dlg = new DevicePickerDialog(mViewer.getShell(), devices);
- if (dlg.open() != Window.OK) {
- return null;
- }
- return dlg.getSelectedDevice();
- }
- }
-
- private static class DevicePickerDialog extends Dialog {
- private final List<IDevice> mDevices;
- private final String[] mDeviceNames;
- private static int sSelectedDeviceIndex;
-
- public DevicePickerDialog(Shell parentShell, List<IDevice> devices) {
- super(parentShell);
-
- mDevices = devices;
- mDeviceNames = new String[mDevices.size()];
- for (int i = 0; i < devices.size(); i++) {
- mDeviceNames[i] = devices.get(i).getName();
- }
- }
-
- @Override
- protected Control createDialogArea(Composite parentShell) {
- Composite parent = (Composite) super.createDialogArea(parentShell);
- Composite c = new Composite(parent, SWT.NONE);
-
- c.setLayout(new GridLayout(2, false));
-
- Label l = new Label(c, SWT.NONE);
- l.setText("Select device: ");
-
- final Combo combo = new Combo(c, SWT.BORDER | SWT.READ_ONLY);
- combo.setItems(mDeviceNames);
- int defaultSelection =
- sSelectedDeviceIndex < mDevices.size() ? sSelectedDeviceIndex : 0;
- combo.select(defaultSelection);
- sSelectedDeviceIndex = defaultSelection;
-
- combo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- sSelectedDeviceIndex = combo.getSelectionIndex();
- }
- });
-
- return parent;
- }
-
- public IDevice getSelectedDevice() {
- return mDevices.get(sSelectedDeviceIndex);
- }
- }
-}