/*
* 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.ui.wizard;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.sequoyah.device.framework.ui.wizard.DefaultDeviceTypeMenuWizardPage;
import org.eclipse.sequoyah.device.framework.ui.wizard.DeviceWizardRunnable;
import com.motorola.studio.android.adt.SdkUtils;
import com.motorola.studio.android.common.log.StudioLogger;
import com.motorola.studio.android.common.utilities.EclipseUtils;
import com.motorola.studio.android.emulator.device.refresh.InstancesListRefresh;
/**
* This class performs the wizard finish operation for the WizardMainPage,
* according to the extension point
* org.eclipse.sequoyah.device.framework.ui.newDeviceWizardPages
*/
public class WizardMainPageOperation extends DeviceWizardRunnable
{
/**
* Action executed on the wizard finish
*/
public void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException
{
// Get wizard pages
WizardMainPage page = (WizardMainPage) this.getWizardPage();
DefaultDeviceTypeMenuWizardPage tmlPage =
(DefaultDeviceTypeMenuWizardPage) page.getPreviousPage();
// Create VM
try
{
//TML should provide some instance name changed listener
if (!tmlPage.getInstanceName().equals(page.getName()))
{
page.setInstanceName(tmlPage.getInstanceName());
}
SdkUtils.createVm(page.getVmPath(), tmlPage.getInstanceName(), page.getVmTarget(), page
.getAbiType(), page.getVmSkin(), page.getUseSnapshot(), (page.getSDCard().length() == 0
? null : page.getSDCard()));
}
catch (CoreException e)
{
EclipseUtils.showErrorDialog("Could not create instance ", e.getStatus().getMessage());
StudioLogger.error(WizardMainPageOperation.class,
"Could not create AVD: " + tmlPage.getInstanceName(), e);
}
Collection<String> vmInstances = SdkUtils.getAllValidVmNames();
InstancesListRefresh.refreshStatus(vmInstances, tmlPage.getInstanceName());
}
}