/*
* 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.wizards.monkey;
import java.util.Collection;
import java.util.LinkedList;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import com.motorola.studio.android.AndroidPlugin;
import com.motorola.studio.android.adt.DDMSFacade;
import com.motorola.studio.android.adt.ISerialNumbered;
import com.motorola.studio.android.devices.DevicesManager;
import com.motorola.studio.android.i18n.AndroidNLS;
/**
* DESCRIPTION:
* <br>
* This class implements the device selection dialog
*<br>
* RESPONSIBILITY:
* <br>
* Provides a dialog populated with the available device instances
*<br>
* COLABORATORS:
* <br>
* None.
*<br>
* USAGE:
* <br>
* This class is intended to be used by Eclipse only
*/
public class DeviceSelectionDialog extends ElementListSelectionDialog
{
private static final String DEV_SELECTION_CONTEXT_HELP_ID = AndroidPlugin.PLUGIN_ID
+ ".deviceSelectionDialog";
/**
* Default constructor
*
* @param parent Parent shell
* @param description Dialog description
*/
public DeviceSelectionDialog(Shell parent, String description)
{
super(parent, new LabelProvider()
{
@Override
public String getText(Object element)
{
String result = "";
if (element instanceof ISerialNumbered)
{
ISerialNumbered serialNumbered = (ISerialNumbered) element;
result = serialNumbered.getFullName();
}
return result;
}
});
this.setTitle(AndroidNLS.UI_MonkeyComposite_SelectDeviceScreenTitle);
this.setMessage(description);
Collection<ISerialNumbered> instances = DevicesManager.getInstance().getAllDevices();
if ((instances != null) && (instances.size() > 0))
{
Collection<ISerialNumbered> filteredInstances = new LinkedList<ISerialNumbered>();
for (ISerialNumbered instance : instances)
{
if (DDMSFacade.isDeviceOnline(instance.getSerialNumber()))
{
filteredInstances.add(instance);
}
}
Object[] filteredInstancesArray = filteredInstances.toArray();
this.setElements(filteredInstancesArray);
}
this.setHelpAvailable(true);
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, DEV_SELECTION_CONTEXT_HELP_ID);
}
}