/* * 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.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import com.motorola.studio.android.adt.DDMSUtils; import com.motorola.studio.android.i18n.AndroidNLS; import com.motorola.studio.android.wizards.elements.TableWithLoadingInfo; /** * Table with loading info for monkey. */ public class MonkeyConfigurationTabTable extends TableWithLoadingInfo<MonkeyConfigurationTab, Map<String, String>, String> { /** * @see TableWithLoadingInfo#TableWithLoadingInfo(Composite, int, String, Object) */ public MonkeyConfigurationTabTable(Composite parent, int style, String animatedTextLabel, MonkeyConfigurationTab callingPage) { super(parent, style, animatedTextLabel, callingPage); } /** * Populates the table with available packages. * * @see com.motorola.studio.android.wizards.elements.TableWithLoadingInfo#addTableData(Object) */ @Override protected void addTableData(Map<String, String> elementList) { // retrieve the available packages Map<String, String> availablePackages = elementList; // retrieve the monkey wizard page MonkeyConfigurationTab monkeyWizardPage = getCallingPage(); // get the list of selected packages preference List<?> selectedPackagesPreference = monkeyWizardPage.getSelectedPackagesPreference(); // get the table to be populated Table table = getTable(); // iterate through the available packages String packageName = null; String packagePath = null; Iterator<String> it = availablePackages.keySet().iterator(); while (it.hasNext()) { // the the package name and path packageName = it.next(); packagePath = availablePackages.get(packageName); if (!monkeyWizardPage.isFilterSystem() || !packagePath.toLowerCase().contains("system")) { // add data TableItem item = new TableItem(table, SWT.NONE); item.setText(0, packageName); item.setText(1, packagePath.contains("system") ? AndroidNLS.UninstallAppWizardPage_SystemLabel : AndroidNLS.UninstallAppWizardPage_UserLabel); if (selectedPackagesPreference != null) { if (selectedPackagesPreference.contains(packageName)) { item.setChecked(true); getTable().select(table.getItemCount() - 1); } } } } } /** * Get the List of installed packages from the device based on its serial number. * * @see com.motorola.studio.android.wizards.elements.TableWithLoadingInfo#callServiceForRetrievingDataToPopulateTable(java.lang.Object) */ @Override protected Map<String, String> callServiceForRetrievingDataToPopulateTable(String serialNumber) { // installed packages to be returned Map<String, String> installedPackages = null; // based on the serial number, the the installed packages if (serialNumber != null) { try { installedPackages = DDMSUtils.listInstalledPackages(serialNumber); } catch (IOException e) { installedPackages = new HashMap<String, String>(0); } } return installedPackages; } /** * Update the Launching configuration dialog. * * @see com.motorola.studio.android.wizards.elements.TableWithLoadingInfo#executeOperationsAfterTableIsPopulated() */ @Override protected void executeOperationsAfterTableIsPopulated() { // update the launching configuration dialog MonkeyConfigurationTab monkeyWizardPage = getCallingPage(); monkeyWizardPage.callUpdateLaunchConfigurationDialog(); } }