aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java293
1 files changed, 0 insertions, 293 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java
deleted file mode 100644
index f1c188ae9..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/TestTargetPage.java
+++ /dev/null
@@ -1,293 +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.wizards.newproject;
-
-import com.android.ide.common.xml.ManifestData;
-import com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper;
-import com.android.ide.eclipse.adt.internal.project.ProjectChooserHelper;
-import com.android.ide.eclipse.adt.internal.sdk.Sdk;
-import com.android.sdklib.IAndroidTarget;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.jdt.core.IJavaModel;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.ui.JavaElementLabelProvider;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.dialogs.FilteredList;
-
-/**
- * Page shown when creating a test project which lets you choose between testing
- * yourself and testing a different project
- */
-class TestTargetPage extends WizardPage implements SelectionListener {
- private final NewProjectWizardState mValues;
- /** Flag used when setting button/text state manually to ignore listener updates */
- private boolean mIgnore;
- private String mLastExistingPackageName;
-
- private Button mCurrentRadioButton;
- private Button mExistingRadioButton;
- private FilteredList mProjectList;
- private boolean mPageShown;
-
- /**
- * Create the wizard.
- */
- TestTargetPage(NewProjectWizardState values) {
- super("testTargetPage"); //$NON-NLS-1$
- setTitle("Select Test Target");
- setDescription("Choose a project to test");
- mValues = values;
- }
-
- /**
- * Create contents of the wizard.
- */
- @Override
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
-
- setControl(container);
- container.setLayout(new GridLayout(2, false));
-
- mCurrentRadioButton = new Button(container, SWT.RADIO);
- mCurrentRadioButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
- mCurrentRadioButton.setText("This project");
- mCurrentRadioButton.addSelectionListener(this);
-
- mExistingRadioButton = new Button(container, SWT.RADIO);
- mExistingRadioButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
- mExistingRadioButton.setText("An existing Android project:");
- mExistingRadioButton.addSelectionListener(this);
-
- ILabelProvider labelProvider = new JavaElementLabelProvider(
- JavaElementLabelProvider.SHOW_DEFAULT);
- mProjectList = new FilteredList(container,
- SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE, labelProvider,
- true /*ignoreCase*/, false /*allowDuplicates*/, true /* matchEmptyString*/);
- mProjectList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
- mProjectList.addSelectionListener(this);
- }
-
- private void initializeList() {
- ProjectChooserHelper helper = new ProjectChooserHelper(getShell(), null /*filter*/);
- IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
- IJavaModel javaModel = JavaCore.create(workspaceRoot);
- IJavaProject[] androidProjects = helper.getAndroidProjects(javaModel);
- mProjectList.setElements(androidProjects);
- if (mValues.testedProject != null) {
- for (IJavaProject project : androidProjects) {
- if (project.getProject() == mValues.testedProject) {
- mProjectList.setSelection(new Object[] { project });
- break;
- }
- }
- } else {
- // No initial selection: force the user to choose
- mProjectList.setSelection(new int[0]);
- }
- }
-
- @Override
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- mPageShown = true;
-
- if (visible) {
- try {
- mIgnore = true;
- mCurrentRadioButton.setSelection(mValues.testingSelf);
- mExistingRadioButton.setSelection(!mValues.testingSelf);
- mProjectList.setEnabled(!mValues.testingSelf);
-
- if (mProjectList.isEmpty()) {
- initializeList();
- }
- if (!mValues.testingSelf) {
- mProjectList.setFocus();
- IProject project = getSelectedProject();
- if (project != null) {
- // The FilteredList seems to -insist- on selecting the first item
- // in the list, even when the selection is explicitly set to an empty
- // array. This means the user is looking at a selection, so we need
- // to also go ahead and select this item in the model such that the
- // two agree, even if we would have preferred to have no initial
- // selection.
- mValues.testedProject = project;
- }
- }
- } finally {
- mIgnore = false;
- }
- }
-
- validatePage();
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (mIgnore) {
- return;
- }
-
- Object source = e.getSource();
- if (source == mExistingRadioButton) {
- mProjectList.setEnabled(true);
- mValues.testingSelf = false;
- setExistingProject(getSelectedProject());
- mProjectList.setFocus();
- } else if (source == mCurrentRadioButton) {
- mProjectList.setEnabled(false);
- mValues.testingSelf = true;
- mValues.testedProject = null;
- } else {
- // The event must be from the project list, which unfortunately doesn't
- // pass itself as the selection event, it passes a reference to some internal
- // table widget that it uses, so we check for this case last
- IProject project = getSelectedProject();
- if (project != mValues.testedProject) {
- setExistingProject(project);
- }
- }
-
- validatePage();
- }
-
- private IProject getSelectedProject() {
- Object[] selection = mProjectList.getSelection();
- IProject project = selection != null && selection.length == 1
- ? ((IJavaProject) selection[0]).getProject() : null;
- return project;
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- }
-
- private void setExistingProject(IProject project) {
- mValues.testedProject = project;
-
- // Try to update the application, package, sdk target and minSdkVersion accordingly
- if (project != null &&
- (!mValues.applicationNameModifiedByUser ||
- !mValues.packageNameModifiedByUser ||
- !mValues.targetModifiedByUser ||
- !mValues.minSdkModifiedByUser)) {
- ManifestData manifestData = AndroidManifestHelper.parseForData(project);
- if (manifestData != null) {
- String appName = String.format("%1$sTest", project.getName());
- String packageName = manifestData.getPackage();
- String minSdkVersion = manifestData.getMinSdkVersionString();
- IAndroidTarget sdkTarget = null;
- if (Sdk.getCurrent() != null) {
- sdkTarget = Sdk.getCurrent().getTarget(project);
- }
-
- if (packageName == null) {
- packageName = ""; //$NON-NLS-1$
- }
- mLastExistingPackageName = packageName;
-
- if (!mValues.projectNameModifiedByUser) {
- mValues.projectName = appName;
- }
-
- if (!mValues.applicationNameModifiedByUser) {
- mValues.applicationName = appName;
- }
-
- if (!mValues.packageNameModifiedByUser) {
- packageName += ".test"; //$NON-NLS-1$
- mValues.packageName = packageName;
- }
-
- if (!mValues.targetModifiedByUser && sdkTarget != null) {
- mValues.target = sdkTarget;
- }
-
- if (!mValues.minSdkModifiedByUser) {
- if (minSdkVersion != null || sdkTarget != null) {
- mValues.minSdk = minSdkVersion;
- }
- if (sdkTarget == null) {
- mValues.updateSdkTargetToMatchMinSdkVersion();
- }
- }
- }
- }
-
- updateTestTargetPackageField(mLastExistingPackageName);
- }
-
- /**
- * Updates the test target package name
- *
- * When using the "self-test" option, the packageName argument is ignored and the
- * current value from the project package is used.
- *
- * Otherwise the packageName is used if it is not null.
- */
- private void updateTestTargetPackageField(String packageName) {
- if (mValues.testingSelf) {
- mValues.testTargetPackageName = mValues.packageName;
- } else if (packageName != null) {
- mValues.testTargetPackageName = packageName;
- }
- }
-
- @Override
- public boolean isPageComplete() {
- // Ensure that the user sees the page and makes a selection
- if (!mPageShown) {
- return false;
- }
-
- return super.isPageComplete();
- }
-
- private void validatePage() {
- String error = null;
-
- if (!mValues.testingSelf) {
- if (mValues.testedProject == null) {
- error = "Please select an existing Android project as a test target.";
- } else if (mValues.projectName.equals(mValues.testedProject.getName())) {
- error = "The main project name and the test project name must be different.";
- }
- }
-
- // -- update UI & enable finish if there's no error
- setPageComplete(error == null);
- if (error != null) {
- setMessage(error, IMessageProvider.ERROR);
- } else {
- setErrorMessage(null);
- setMessage(null);
- }
- }
-}