/*
* 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.remote.ui.wireless;
import java.lang.reflect.InvocationTargetException;
import java.util.Properties;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.wizard.Wizard;
import com.motorola.studio.android.AndroidPlugin;
import com.motorola.studio.android.adt.ISerialNumbered;
import com.motorola.studio.android.common.log.StudioLogger;
import com.motorola.studio.android.common.utilities.EclipseUtils;
import com.motorola.studio.android.remote.RemoteDevicePlugin;
import com.motorola.studio.android.remote.i18n.RemoteDeviceNLS;
import com.motorola.studio.android.remote.ui.wireless.runnables.SwitchFromUSBAndConnectToWirelessRunnable;
/**
* Switch to Wireless Connection Mode.
*/
public class WirelessWizard extends Wizard
{
// Wizard icon
private final String WIRELESS_WIZARD_IMAGE_PATH = "icons/wireless_wizard-icon-64x64.png"; //$NON-NLS-1$
WirelessDeviceWizardPage informationPage;
private ISerialNumbered instance;
private String host;
private IProgressMonitor monitor;
/**
* Default constructor.
*/
public WirelessWizard()
{
super.setDefaultPageImageDescriptor(RemoteDevicePlugin
.getImageDescriptor(WIRELESS_WIZARD_IMAGE_PATH));
this.setWindowTitle(RemoteDeviceNLS.UI_WirelessWizard_Name);
setNeedsProgressMonitor(true);
}
@Override
public void addPages()
{
informationPage = new WirelessDeviceWizardPage();
addPage(informationPage);
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.Wizard#performFinish()
*/
@Override
public boolean performFinish()
{
boolean isProcessOK = true;
try
{
// execute connection switch and show success message in case everything went fine
getContainer().run(true, true, new SwitchFromUSBAndConnectToWirelessRunnable(this));
EclipseUtils.showInformationDialog(
RemoteDeviceNLS.WirelessWizard_TitleWirelessConnectionModeWizard,
RemoteDeviceNLS.WirelessWizard_WirelessDeviceCreatedSuccessfully);
StudioLogger.collectUsageData(StudioLogger.WHAT_REMOTE_WIRELESS,
StudioLogger.KIND_REMOTE_DEVICE, StudioLogger.DESCRIPTION_DEFAULT,
RemoteDevicePlugin.PLUGIN_ID, RemoteDevicePlugin.getDefault().getBundle()
.getVersion().toString());
}
catch (InvocationTargetException ite)
{
// treat case where something went wrong - log, show an error message and set the wizard flag
StudioLogger.error(this.getClass(), "Problems switching device to TCP/IP.", ite); //$NON-NLS-1$
IStatus status =
new Status(IStatus.ERROR, AndroidPlugin.PLUGIN_ID,
ite.getTargetException() != null ? ite.getTargetException()
.getMessage() : ite.getMessage());
EclipseUtils.showErrorDialog(
RemoteDeviceNLS.WirelessWizard_TitleWirelessConnectionModeWizard,
RemoteDeviceNLS.WirelessWizard_MsgErrorProblemsSwitchingDeviceToTCPIP, status);
isProcessOK = false;
}
catch (InterruptedException ie)
{
// action was canceled by the user, therefore do not close the wizard
isProcessOK = false;
}
return isProcessOK;
}
public void setInstance(ISerialNumbered instance)
{
this.instance = instance;
}
public ISerialNumbered getInstance()
{
return instance;
}
/**
* @return the monitor
*/
public IProgressMonitor getProgressMonitor()
{
return monitor;
}
/**
* @param monitor the monitor to set
*/
public void setProgressMonitor(IProgressMonitor monitor)
{
this.monitor = monitor;
}
/**
* Get the {@link Properties} associated with this {@link Wizard}.
*
* @return Return the related {@link Properties}.
*/
public Properties getProperties()
{
return informationPage != null ? informationPage.getProperties() : null;
}
/**
* @param host
*/
public void setIp(String host)
{
this.host = host;
}
/**
* @param host
*/
public String getIp()
{
return host;
}
public String getDeviceName()
{
return informationPage.getDeviceName();
}
}