blob: ec7f5cb02d5e277ad75817712af73587c8cb7ed6 [file] [log] [blame]
/*
* 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.motorola.studio.android.emulator.core.utils;
import java.util.Collection;
import java.util.HashSet;
import org.eclipse.sequoyah.vnc.protocol.lib.ProtocolHandle;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import com.motorola.studio.android.emulator.core.devfrm.DeviceFrameworkManager;
import com.motorola.studio.android.emulator.core.exception.InstanceNotFoundException;
import com.motorola.studio.android.emulator.core.model.IAndroidEmulatorInstance;
import com.motorola.studio.android.emulator.core.model.IEmulatorView;
/**
* DESCRIPTION:
* Utilities for Android Emulator restricted use
*
* RESPONSIBILITY:
* Provide common utility methods that can be used by any
* Android Emulator plugin.
*
* COLABORATORS:
* None
*
* USAGE:
* This class should not be instantiated and its methods should be called statically.
*/
public class EmulatorCoreUtils
{
/**
* Retrieves all views that implement IEmulatorView interface
*
* @return All views that implement IEmulatorView interface
*/
public static Collection<IEmulatorView> getAllAndroidViews()
{
final Collection<IEmulatorView> allViews = new HashSet<IEmulatorView>();
PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable()
{
public void run()
{
IWorkbenchWindow activeWindow =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (activeWindow != null)
{
IWorkbenchPage[] activePages = activeWindow.getPages();
if (activePages != null)
{
for (IWorkbenchPage activePage : activePages)
{
if (activePage != null)
{
IViewReference[] allReferences = activePage.getViewReferences();
for (IViewReference ref : allReferences)
{
IViewPart aView = ref.getView(false);
if ((aView != null) && (aView instanceof IEmulatorView))
{
allViews.add((IEmulatorView) aView);
}
}
}
}
}
}
}
});
return allViews;
}
/**
* Refresh all Emulator views
*/
public static void refreshEmulatorViews()
{
Collection<IEmulatorView> allViews = EmulatorCoreUtils.getAllAndroidViews();
for (IEmulatorView view : allViews)
{
view.refreshView();
}
}
/**
* Retrieves a Android Emulator instance mapped by the provided IP address
*
* @param identifier The IP address associated with the desired instance
*
* @return The Android Emulator instance that is working on the given address
*
* @throws InstanceNotFoundException If the instance is not found at
* device framework
*/
public static IAndroidEmulatorInstance getAndroidInstanceByIdentifier(String identifier)
throws InstanceNotFoundException
{
IAndroidEmulatorInstance desiredDevice = null;
Collection<IAndroidEmulatorInstance> instanceList =
DeviceFrameworkManager.getInstance().getAllInstances();
for (IAndroidEmulatorInstance instance : instanceList)
{
String instanceIdentifier = instance.getInstanceIdentifier();
if ((instanceIdentifier != null) && instanceIdentifier.equals(identifier))
{
desiredDevice = instance;
break;
}
}
if (desiredDevice == null)
{
throw new InstanceNotFoundException();
}
return desiredDevice;
}
/**
* Retrieves a Android Emulator instance mapped by the provided
* protocol handle object
*
* @param handle The protocol handle object associated with the
* desired instance
*
* @return The Android Emulator instance that is working with
* the given protocol handle object
*
* @throws InstanceNotFoundException If the instance is not found at
* device framework
*/
public static IAndroidEmulatorInstance getAndroidInstanceByHandle(ProtocolHandle handle)
throws InstanceNotFoundException
{
IAndroidEmulatorInstance desiredDevice = null;
Collection<IAndroidEmulatorInstance> instanceList =
DeviceFrameworkManager.getInstance().getAllInstances();
for (IAndroidEmulatorInstance instance : instanceList)
{
ProtocolHandle instanceHandle = instance.getProtocolHandle();
if ((instanceHandle != null) && instanceHandle.equals(handle))
{
desiredDevice = instance;
break;
}
}
if (desiredDevice == null)
{
throw new InstanceNotFoundException();
}
return desiredDevice;
}
}