/* * Copyright (C) 2009 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.sdkuilib.internal.widgets; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.internal.avd.AvdInfo; import com.android.sdklib.internal.avd.AvdManager; import com.android.sdklib.internal.avd.AvdInfo.AvdStatus; import com.android.sdkuilib.ui.GridDataBuilder; import com.android.sdkuilib.ui.GridLayoutBuilder; import com.android.sdkuilib.ui.SwtBaseDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import java.util.HashMap; import java.util.Map; /** * Dialog displaying the details of an AVD. */ final class AvdDetailsDialog extends SwtBaseDialog { private final AvdInfo mAvdInfo; public AvdDetailsDialog(Shell shell, AvdInfo avdInfo) { super(shell, SWT.APPLICATION_MODAL, "AVD details"); mAvdInfo = avdInfo; } /** * Create contents of the dialog. */ @Override protected void createContents() { Shell shell = getShell(); GridLayoutBuilder.create(shell).columns(2); GridDataBuilder.create(shell).fill(); GridLayout gl; Composite c = new Composite(shell, SWT.NONE); c.setLayout(gl = new GridLayout(2, false)); gl.marginHeight = gl.marginWidth = 0; c.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); if (mAvdInfo != null) { displayValue(c, "Name:", mAvdInfo.getName()); displayValue(c, "CPU/ABI:", AvdInfo.getPrettyAbiType(mAvdInfo.getAbiType())); displayValue(c, "Path:", mAvdInfo.getDataFolderPath()); if (mAvdInfo.getStatus() != AvdStatus.OK) { displayValue(c, "Error:", mAvdInfo.getErrorMessage()); } else { IAndroidTarget target = mAvdInfo.getTarget(); AndroidVersion version = target.getVersion(); displayValue(c, "Target:", String.format("%s (API level %s)", target.getName(), version.getApiString())); // display some extra values. Map<String, String> properties = mAvdInfo.getProperties(); if (properties != null) { String skin = properties.get(AvdManager.AVD_INI_SKIN_NAME); if (skin != null) { displayValue(c, "Skin:", skin); } String sdcard = properties.get(AvdManager.AVD_INI_SDCARD_SIZE); if (sdcard == null) { sdcard = properties.get(AvdManager.AVD_INI_SDCARD_PATH); } if (sdcard != null) { displayValue(c, "SD Card:", sdcard); } String snapshot = properties.get(AvdManager.AVD_INI_SNAPSHOT_PRESENT); if (snapshot != null) { displayValue(c, "Snapshot:", snapshot); } // display other hardware HashMap<String, String> copy = new HashMap<String, String>(properties); // remove stuff we already displayed (or that we don't want to display) copy.remove(AvdManager.AVD_INI_ABI_TYPE); copy.remove(AvdManager.AVD_INI_CPU_ARCH); copy.remove(AvdManager.AVD_INI_SKIN_NAME); copy.remove(AvdManager.AVD_INI_SKIN_PATH); copy.remove(AvdManager.AVD_INI_SDCARD_SIZE); copy.remove(AvdManager.AVD_INI_SDCARD_PATH); copy.remove(AvdManager.AVD_INI_IMAGES_1); copy.remove(AvdManager.AVD_INI_IMAGES_2); if (copy.size() > 0) { Label l = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL); l.setLayoutData(new GridData( GridData.FILL, GridData.CENTER, false, false, 2, 1)); c = new Composite(shell, SWT.NONE); c.setLayout(gl = new GridLayout(2, false)); gl.marginHeight = gl.marginWidth = 0; c.setLayoutData(new GridData(GridData.FILL_BOTH)); for (Map.Entry<String, String> entry : copy.entrySet()) { displayValue(c, entry.getKey() + ":", entry.getValue()); } } } } } } // -- Start of internal part ---------- // Hide everything down-below from SWT designer //$hide>>$ @Override protected void postCreate() { // pass } /** * Displays a value with a label. * * @param parent the parent Composite in which to display the value. This Composite must use a * {@link GridLayout} with 2 columns. * @param label the label of the value to display. * @param value the string value to display. */ private void displayValue(Composite parent, String label, String value) { Label l = new Label(parent, SWT.NONE); l.setText(label); l.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false)); l = new Label(parent, SWT.NONE); l.setText(value); l.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); } // End of hiding from SWT Designer //$hide<<$ }