/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
*
* 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.ide.eclipse.adt.launch;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
/**
* Launch configuration data. This stores the result of querying the
* {@link ILaunchConfiguration} so that it's only done once.
*/
public class AndroidLaunchConfiguration {
/**
* Launch action. See {@link LaunchConfigDelegate#ACTION_DEFAULT},
* {@link LaunchConfigDelegate#ACTION_ACTIVITY},
* {@link LaunchConfigDelegate#ACTION_DO_NOTHING}
*/
public int mLaunchAction = LaunchConfigDelegate.DEFAULT_LAUNCH_ACTION;
/**
* Target selection mode for the configuration: either {@link #AUTO} or {@link #MANUAL}.
*/
public enum TargetMode {
/** Automatic target selection mode. */
AUTO(true),
/** Manual target selection mode. */
MANUAL(false);
private boolean mValue;
TargetMode(boolean value) {
mValue = value;
}
public boolean getValue() {
return mValue;
}
public static TargetMode getMode(boolean value) {
for (TargetMode mode : values()) {
if (mode.mValue == value) {
return mode;
}
}
return null;
}
}
/**
* Target selection mode.
* @see TargetMode
*/
public TargetMode mTargetMode = LaunchConfigDelegate.DEFAULT_TARGET_MODE;
/**
* Indicates whether the emulator should be called with -wipe-data
*/
public boolean mWipeData = LaunchConfigDelegate.DEFAULT_WIPE_DATA;
/**
* Indicates whether the emulator should be called with -no-boot-anim
*/
public boolean mNoBootAnim = LaunchConfigDelegate.DEFAULT_NO_BOOT_ANIM;
/**
* AVD Name.
*/
public String mAvdName = null;
public String mNetworkSpeed = EmulatorConfigTab.getSpeed(
LaunchConfigDelegate.DEFAULT_SPEED);
public String mNetworkDelay = EmulatorConfigTab.getDelay(
LaunchConfigDelegate.DEFAULT_DELAY);
/**
* Optional custom command line parameter to launch the emulator
*/
public String mEmulatorCommandLine;
/**
* Initialized the structure from an ILaunchConfiguration object.
* @param config
*/
public void set(ILaunchConfiguration config) {
try {
mLaunchAction = config.getAttribute(LaunchConfigDelegate.ATTR_LAUNCH_ACTION,
mLaunchAction);
} catch (CoreException e1) {
// nothing to be done here, we'll use the default value
}
try {
boolean value = config.getAttribute(LaunchConfigDelegate.ATTR_TARGET_MODE,
mTargetMode.getValue());
mTargetMode = TargetMode.getMode(value);
} catch (CoreException e) {
// nothing to be done here, we'll use the default value
}
try {
mAvdName = config.getAttribute(LaunchConfigDelegate.ATTR_AVD_NAME, mAvdName);
} catch (CoreException e) {
// ignore
}
int index = LaunchConfigDelegate.DEFAULT_SPEED;
try {
index = config.getAttribute(LaunchConfigDelegate.ATTR_SPEED, index);
} catch (CoreException e) {
// nothing to be done here, we'll use the default value
}
mNetworkSpeed = EmulatorConfigTab.getSpeed(index);
index = LaunchConfigDelegate.DEFAULT_DELAY;
try {
index = config.getAttribute(LaunchConfigDelegate.ATTR_DELAY, index);
} catch (CoreException e) {
// nothing to be done here, we'll use the default value
}
mNetworkDelay = EmulatorConfigTab.getDelay(index);
try {
mEmulatorCommandLine = config.getAttribute(
LaunchConfigDelegate.ATTR_COMMANDLINE, ""); //$NON-NLS-1$
} catch (CoreException e) {
// lets not do anything here, we'll use the default value
}
try {
mWipeData = config.getAttribute(LaunchConfigDelegate.ATTR_WIPE_DATA, mWipeData);
} catch (CoreException e) {
// nothing to be done here, we'll use the default value
}
try {
mNoBootAnim = config.getAttribute(LaunchConfigDelegate.ATTR_NO_BOOT_ANIM,
mNoBootAnim);
} catch (CoreException e) {
// nothing to be done here, we'll use the default value
}
}
}