package org.jetbrains.android.run; import com.android.ddmlib.IDevice; import com.android.sdklib.IAndroidTarget; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Disposer; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.util.AndroidBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; /** * @author Eugene.Kudelevsky */ public class DeviceChooserDialog extends DialogWrapper { private final DeviceChooser myDeviceChooser; public DeviceChooserDialog(@NotNull AndroidFacet facet, @NotNull IAndroidTarget projectTarget, boolean multipleSelection, @Nullable String[] selectedSerials, @Nullable Condition<IDevice> filter) { super(facet.getModule().getProject(), true); setTitle(AndroidBundle.message("choose.device.dialog.title")); getOKAction().setEnabled(false); myDeviceChooser = new DeviceChooser(multipleSelection, getOKAction(), facet, projectTarget, filter); Disposer.register(myDisposable, myDeviceChooser); myDeviceChooser.addListener(new DeviceChooserListener() { @Override public void selectedDevicesChanged() { updateOkButton(); } }); init(); myDeviceChooser.init(selectedSerials); } private void updateOkButton() { IDevice[] devices = getSelectedDevices(); boolean enabled = devices.length > 0; for (IDevice device : devices) { if (!device.isOnline()) { enabled = false; } } getOKAction().setEnabled(enabled); } @Override public JComponent getPreferredFocusedComponent() { return myDeviceChooser.getPreferredFocusComponent(); } @Override protected void doOKAction() { myDeviceChooser.finish(); super.doOKAction(); } @Override protected String getDimensionServiceKey() { return "AndroidDeviceChooserDialog"; } @Override protected JComponent createCenterPanel() { return myDeviceChooser.getPanel(); } public IDevice[] getSelectedDevices() { return myDeviceChooser.getSelectedDevices(); } }