aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java207
1 files changed, 0 insertions, 207 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java
deleted file mode 100644
index 916924e99..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/welcome/WelcomeWizard.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2011 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.internal.welcome;
-
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs;
-import com.android.ide.eclipse.adt.internal.sdk.AdtConsoleSdkLog;
-import com.android.sdkstats.DdmsPreferenceStore;
-import com.android.sdkuilib.internal.repository.ui.AdtUpdateDialog;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Wizard shown on first start for new users: configure SDK location, accept or
- * reject usage data collection, etc
- */
-public class WelcomeWizard extends Wizard {
- private final DdmsPreferenceStore mStore;
-
- private WelcomeWizardPage mWelcomePage;
- private UsagePermissionPage mUsagePage;
-
- private final boolean mShowWelcomePage;
- private final boolean mShowUsagePage;
-
- /**
- * Creates a new {@link WelcomeWizard}
- *
- * @param store preferences for usage statistics collection etc
- * @param showInstallSdkPage show page to install SDK's
- * @param showUsageOptinPage show page to get user consent for usage data collection
- */
- public WelcomeWizard(DdmsPreferenceStore store, boolean showInstallSdkPage,
- boolean showUsageOptinPage) {
- mStore = store;
- mShowWelcomePage = showInstallSdkPage;
- mShowUsagePage = showUsageOptinPage;
-
- setWindowTitle("Welcome to Android Development");
- ImageDescriptor image = AdtPlugin.getImageDescriptor("icons/android-64.png"); //$NON-NLS-1$
- setDefaultPageImageDescriptor(image);
- }
-
- @Override
- public void addPages() {
- if (mShowWelcomePage) {
- mWelcomePage = new WelcomeWizardPage();
- addPage(mWelcomePage);
- }
-
- // It's possible that the user has already run the command line tools
- // such as ddms and has agreed to usage statistics collection, but has never
- // run ADT which is why the wizard was opened. No need to ask again.
- if (mShowUsagePage && !mStore.hasPingId()) {
- mUsagePage = new UsagePermissionPage();
- addPage(mUsagePage);
- }
- }
-
- @Override
- public boolean performFinish() {
- if (mUsagePage != null) {
- boolean isUsageCollectionApproved = mUsagePage.isUsageCollectionApproved();
- DdmsPreferenceStore store = new DdmsPreferenceStore();
-
- // Workaround: Store a new ping id if one doesn't exist, regardless of
- // whether usage statistics gathering is enabled, to ensure that ddms and
- // ADT agree upon whether usage data collection is enabled. The reason this
- // is necessary is that the Eclipse PreferenceStore optimizes out writing
- // property values that equal their default values, and in our case, the
- // default value for usage-collection is "false", so it just doesn't write
- // it into the config file is the user opts out - which means that nothing
- // is written in ddms.config. That works in the sense that the getter returns
- // "usage collection"=false, but it doesn't work in the sense that it looks
- // like the property has not yet been decided by the user. DDMS will look at
- // the existence of a ping id to see whether we've already considered the
- // question, so do the same here.
- if (!store.hasPingId()) {
- store.generateNewPingId();
- }
-
- store.setPingOptIn(isUsageCollectionApproved);
- }
-
- if (mWelcomePage != null) {
- // Read out wizard settings immediately; we will perform the actual work
- // after the wizard window has been taken down and it's too late to read the
- // settings then
- final File path = mWelcomePage.getPath();
- final boolean installCommon = mWelcomePage.isInstallCommon();
- final boolean installLatest = mWelcomePage.isInstallLatest();
- final boolean createNew = mWelcomePage.isCreateNew();
-
- // Perform installation asynchronously since it takes a while.
- getShell().getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (createNew) {
- try {
- Set<Integer> apiLevels = new HashSet<Integer>();
- if (installCommon) {
- apiLevels.add(8);
- }
- if (installLatest) {
- apiLevels.add(AdtUpdateDialog.USE_MAX_REMOTE_API_LEVEL);
- }
- installSdk(path, apiLevels);
- } catch (Exception e) {
- AdtPlugin.logAndPrintError(e, "ADT Welcome Wizard",
- "Installation failed");
- }
- }
-
- // Set SDK path after installation since this will trigger a SDK refresh.
- AdtPrefs.getPrefs().setSdkLocation(path);
- }
- });
- }
-
- // The wizard always succeeds, even if installation fails or is aborted
- return true;
- }
-
- /**
- * Trigger the install window. It will connect to the repository, display
- * a confirmation window showing which packages are selected for install
- * and display a progress dialog during installation.
- */
- private boolean installSdk(File path, Set<Integer> apiLevels) {
- if (!path.isDirectory()) {
- if (!path.mkdirs()) {
- AdtPlugin.logAndPrintError(null, "ADT Welcome Wizard",
- "Failed to create directory %1$s",
- path.getAbsolutePath());
- return false;
- }
- }
-
- // Get a shell to use for the SDK installation. There are cases where getActiveShell
- // returns null so attempt to obtain it through other means.
- Display display = AdtPlugin.getDisplay();
- Shell shell = display.getActiveShell();
- if (shell == null) {
- IWorkbench workbench = PlatformUI.getWorkbench();
- IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
- if (window != null) {
- shell = window.getShell();
- }
- }
- boolean disposeShell = false;
- if (shell == null) {
- shell = new Shell(display);
- AdtPlugin.log(IStatus.WARNING, "No parent shell for SDK installation dialog");
- disposeShell = true;
- }
-
- AdtUpdateDialog updater = new AdtUpdateDialog(
- shell,
- new AdtConsoleSdkLog(),
- path.getAbsolutePath());
- // Note: we don't have to specify tools & platform-tools since they
- // are required dependencies of any platform.
- boolean result = updater.installNewSdk(apiLevels);
-
- // TODO: Install extra package here as well since it is now core to most of
- // the templates
- // if (result) {
- // updater.installExtraPackage(vendor, path);
- // }
-
- if (disposeShell) {
- shell.dispose();
- }
-
- if (!result) {
- AdtPlugin.printErrorToConsole("Failed to install Android SDK.");
- return false;
- }
-
- return true;
- }
-}