/* * 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.device; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.ui.IStartup; import com.motorola.studio.android.AndroidPlugin; import com.motorola.studio.android.adt.SdkUtils; import com.motorola.studio.android.common.preferences.DialogWithToggleUtils; import com.motorola.studio.android.emulator.device.handlers.OpenNewDeviceWizardHandler; import com.motorola.studio.android.emulator.i18n.EmulatorNLS; public class CreateAVDOnStartupListener implements IStartup { private static final String SDK_CREATE_NEW_AVD_KEY = "create.avd.on.startup"; private static final Lock lock = new ReentrantReadWriteLock().writeLock(); private static boolean executed = false; public void earlyStartup() { AndroidPlugin.getDefault().addSDKLoaderListener(new Runnable() { public void run() { lock.lock(); if (!executed && ((SdkUtils.getAllTargets() != null) && (SdkUtils.getAllTargets().length > 0)) && ((SdkUtils.getAllValidVms() != null) && (SdkUtils.getAllValidVms().length == 0))) { if (DialogWithToggleUtils.showQuestion(SDK_CREATE_NEW_AVD_KEY, EmulatorNLS.UI_SdkSetup_CreateAVD_Title, EmulatorNLS.UI_SdkSetup_CreateAVD_Message)) { OpenNewDeviceWizardHandler handler = new OpenNewDeviceWizardHandler(); try { handler.execute(new ExecutionEvent()); } catch (ExecutionException e) { //do nothing lock.unlock(); } } executed = true; } lock.unlock(); } }); } }