1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.eclipse.org/org/documents/epl-v10.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.ide.eclipse.adt.internal.launch; 18 19 import org.eclipse.core.runtime.CoreException; 20 import org.eclipse.debug.core.ILaunchConfiguration; 21 22 /** 23 * Launch configuration data. This stores the result of querying the 24 * {@link ILaunchConfiguration} so that it's only done once. 25 */ 26 public class AndroidLaunchConfiguration { 27 28 /** 29 * Launch action. See {@link LaunchConfigDelegate#ACTION_DEFAULT}, 30 * {@link LaunchConfigDelegate#ACTION_ACTIVITY}, 31 * {@link LaunchConfigDelegate#ACTION_DO_NOTHING} 32 */ 33 public int mLaunchAction = LaunchConfigDelegate.DEFAULT_LAUNCH_ACTION; 34 35 /** 36 * Target selection mode for the configuration: either {@link #AUTO} or {@link #MANUAL}. 37 */ 38 public enum TargetMode { 39 /** Automatic target selection mode. */ 40 AUTO(true), 41 /** Manual target selection mode. */ 42 MANUAL(false); 43 44 private boolean mValue; 45 46 TargetMode(boolean value) { 47 mValue = value; 48 } 49 50 public boolean getValue() { 51 return mValue; 52 } 53 54 public static TargetMode getMode(boolean value) { 55 for (TargetMode mode : values()) { 56 if (mode.mValue == value) { 57 return mode; 58 } 59 } 60 61 return null; 62 } 63 } 64 65 /** 66 * Target selection mode. 67 * @see TargetMode 68 */ 69 public TargetMode mTargetMode = LaunchConfigDelegate.DEFAULT_TARGET_MODE; 70 71 /** 72 * Indicates whether the emulator should be called with -wipe-data 73 */ 74 public boolean mWipeData = LaunchConfigDelegate.DEFAULT_WIPE_DATA; 75 76 /** 77 * Indicates whether the emulator should be called with -no-boot-anim 78 */ 79 public boolean mNoBootAnim = LaunchConfigDelegate.DEFAULT_NO_BOOT_ANIM; 80 81 /** 82 * AVD Name. 83 */ 84 public String mAvdName = null; 85 86 public String mNetworkSpeed = EmulatorConfigTab.getSpeed( 87 LaunchConfigDelegate.DEFAULT_SPEED); 88 public String mNetworkDelay = EmulatorConfigTab.getDelay( 89 LaunchConfigDelegate.DEFAULT_DELAY); 90 91 /** 92 * Optional custom command line parameter to launch the emulator 93 */ 94 public String mEmulatorCommandLine; 95 96 /** 97 * Initialized the structure from an ILaunchConfiguration object. 98 * @param config 99 */ 100 public void set(ILaunchConfiguration config) { 101 try { 102 mLaunchAction = config.getAttribute(LaunchConfigDelegate.ATTR_LAUNCH_ACTION, 103 mLaunchAction); 104 } catch (CoreException e1) { 105 // nothing to be done here, we'll use the default value 106 } 107 108 try { 109 boolean value = config.getAttribute(LaunchConfigDelegate.ATTR_TARGET_MODE, 110 mTargetMode.getValue()); 111 mTargetMode = TargetMode.getMode(value); 112 } catch (CoreException e) { 113 // nothing to be done here, we'll use the default value 114 } 115 116 try { 117 mAvdName = config.getAttribute(LaunchConfigDelegate.ATTR_AVD_NAME, mAvdName); 118 } catch (CoreException e) { 119 // ignore 120 } 121 122 int index = LaunchConfigDelegate.DEFAULT_SPEED; 123 try { 124 index = config.getAttribute(LaunchConfigDelegate.ATTR_SPEED, index); 125 } catch (CoreException e) { 126 // nothing to be done here, we'll use the default value 127 } 128 mNetworkSpeed = EmulatorConfigTab.getSpeed(index); 129 130 index = LaunchConfigDelegate.DEFAULT_DELAY; 131 try { 132 index = config.getAttribute(LaunchConfigDelegate.ATTR_DELAY, index); 133 } catch (CoreException e) { 134 // nothing to be done here, we'll use the default value 135 } 136 mNetworkDelay = EmulatorConfigTab.getDelay(index); 137 138 try { 139 mEmulatorCommandLine = config.getAttribute( 140 LaunchConfigDelegate.ATTR_COMMANDLINE, ""); //$NON-NLS-1$ 141 } catch (CoreException e) { 142 // lets not do anything here, we'll use the default value 143 } 144 145 try { 146 mWipeData = config.getAttribute(LaunchConfigDelegate.ATTR_WIPE_DATA, mWipeData); 147 } catch (CoreException e) { 148 // nothing to be done here, we'll use the default value 149 } 150 151 try { 152 mNoBootAnim = config.getAttribute(LaunchConfigDelegate.ATTR_NO_BOOT_ANIM, 153 mNoBootAnim); 154 } catch (CoreException e) { 155 // nothing to be done here, we'll use the default value 156 } 157 } 158 } 159 160