aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java304
1 files changed, 0 insertions, 304 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java
deleted file mode 100644
index 9de8ad06e..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/ProjectChooserHelper.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2008 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.project;
-
-import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper.IProjectFilter;
-import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
-import com.android.ide.eclipse.adt.internal.sdk.Sdk;
-
-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.viewers.ILabelProvider;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.dialogs.ElementListSelectionDialog;
-
-/**
- * Helper class to deal with displaying a project choosing dialog that lists only the
- * projects with the Android nature.
- */
-public class ProjectChooserHelper {
-
- private final Shell mParentShell;
- private final IProjectChooserFilter mFilter;
-
- /**
- * List of current android projects. Since the dialog is modal, we'll just get
- * the list once on-demand.
- */
- private IJavaProject[] mAndroidProjects;
-
- /**
- * Interface to filter out some project displayed by {@link ProjectChooserHelper}.
- *
- * @see IProjectFilter
- */
- public interface IProjectChooserFilter extends IProjectFilter {
- /**
- * Whether the Project Chooser can compute the project list once and cache the result.
- * </p>If false the project list is recomputed every time the dialog is opened.
- */
- boolean useCache();
- }
-
- /**
- * An implementation of {@link IProjectChooserFilter} that only displays non-library projects.
- */
- public final static class NonLibraryProjectOnlyFilter implements IProjectChooserFilter {
- @Override
- public boolean accept(IProject project) {
- ProjectState state = Sdk.getProjectState(project);
- if (state != null) {
- return state.isLibrary() == false;
- }
-
- return false;
- }
-
- @Override
- public boolean useCache() {
- return true;
- }
- }
-
- /**
- * An implementation of {@link IProjectChooserFilter} that only displays library projects.
- */
- public final static class LibraryProjectOnlyFilter implements IProjectChooserFilter {
- @Override
- public boolean accept(IProject project) {
- ProjectState state = Sdk.getProjectState(project);
- if (state != null ) {
- return state.isLibrary();
- }
-
- return false;
- }
-
- @Override
- public boolean useCache() {
- return true;
- }
- }
-
- /**
- * Creates a new project chooser.
- * @param parentShell the parent {@link Shell} for the dialog.
- * @param filter a filter to only accept certain projects. Can be null.
- */
- public ProjectChooserHelper(Shell parentShell, IProjectChooserFilter filter) {
- mParentShell = parentShell;
- mFilter = filter;
- }
-
- /**
- * Displays a project chooser dialog which lists all available projects with the Android nature.
- * <p/>
- * The list of project is built from Android flagged projects currently opened in the workspace.
- *
- * @param projectName If non null and not empty, represents the name of an Android project
- * that will be selected by default.
- * @param message Message for the dialog box. Can be null in which case a default message
- * is displayed.
- * @return the project chosen by the user in the dialog, or null if the dialog was canceled.
- */
- public IJavaProject chooseJavaProject(String projectName, String message) {
- ILabelProvider labelProvider = new JavaElementLabelProvider(
- JavaElementLabelProvider.SHOW_DEFAULT);
- ElementListSelectionDialog dialog = new ElementListSelectionDialog(
- mParentShell, labelProvider);
- dialog.setTitle("Project Selection");
- if (message == null) {
- message = "Please select a project";
- }
- dialog.setMessage(message);
-
- IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
- IJavaModel javaModel = JavaCore.create(workspaceRoot);
-
- // set the elements in the dialog. These are opened android projects.
- dialog.setElements(getAndroidProjects(javaModel));
-
- // look for the project matching the given project name
- IJavaProject javaProject = null;
- if (projectName != null && projectName.length() > 0) {
- javaProject = javaModel.getJavaProject(projectName);
- }
-
- // if we found it, we set the initial selection in the dialog to this one.
- if (javaProject != null) {
- dialog.setInitialSelections(new Object[] { javaProject });
- }
-
- // open the dialog and return the object selected if OK was clicked, or null otherwise
- if (dialog.open() == Window.OK) {
- return (IJavaProject) dialog.getFirstResult();
- }
- return null;
- }
-
- /**
- * Returns the list of Android projects.
- * <p/>
- * Because this list can be time consuming, this class caches the list of project.
- * It is recommended to call this method instead of
- * {@link BaseProjectHelper#getAndroidProjects()}.
- *
- * @param javaModel the java model. Can be null.
- */
- public IJavaProject[] getAndroidProjects(IJavaModel javaModel) {
- // recompute only if we don't have the projects already or the filter is dynamic
- // and prevent usage of a cache.
- if (mAndroidProjects == null || (mFilter != null && mFilter.useCache() == false)) {
- if (javaModel == null) {
- mAndroidProjects = BaseProjectHelper.getAndroidProjects(mFilter);
- } else {
- mAndroidProjects = BaseProjectHelper.getAndroidProjects(javaModel, mFilter);
- }
- }
-
- return mAndroidProjects;
- }
-
- /**
- * Helper method to get the Android project with the given name
- *
- * @param projectName the name of the project to find
- * @return the {@link IProject} for the Android project. <code>null</code> if not found.
- */
- public IProject getAndroidProject(String projectName) {
- IProject iproject = null;
- IJavaProject[] javaProjects = getAndroidProjects(null);
- if (javaProjects != null) {
- for (IJavaProject javaProject : javaProjects) {
- if (javaProject.getElementName().equals(projectName)) {
- iproject = javaProject.getProject();
- break;
- }
- }
- }
- return iproject;
- }
-
- /**
- * A selector combo for showing the currently selected project and for
- * changing the selection
- */
- public static class ProjectCombo extends Combo implements SelectionListener {
- /** Currently chosen project, or null when no project has been initialized or selected */
- private IProject mProject;
- private IJavaProject[] mAvailableProjects;
-
- /**
- * Creates a new project selector combo
- *
- * @param helper associated {@link ProjectChooserHelper} for looking up
- * projects
- * @param parent parent composite to add the combo to
- * @param initialProject the initial project to select, or null (which
- * will show a "Please Choose Project..." label instead.)
- */
- public ProjectCombo(ProjectChooserHelper helper, Composite parent,
- IProject initialProject) {
- super(parent, SWT.BORDER | SWT.FLAT | SWT.READ_ONLY);
- mProject = initialProject;
-
- mAvailableProjects = helper.getAndroidProjects(null);
- String[] items = new String[mAvailableProjects.length + 1];
- items[0] = "--- Choose Project ---";
-
- ILabelProvider labelProvider = new JavaElementLabelProvider(
- JavaElementLabelProvider.SHOW_DEFAULT);
- int selectionIndex = 0;
- for (int i = 0, n = mAvailableProjects.length; i < n; i++) {
- IProject project = mAvailableProjects[i].getProject();
- items[i + 1] = labelProvider.getText(project);
- if (project == initialProject) {
- selectionIndex = i + 1;
- }
- }
- setItems(items);
- select(selectionIndex);
-
- addSelectionListener(this);
- }
-
- /**
- * Returns the project selected by this chooser (or the initial project
- * passed to the constructor if the user did not change it)
- *
- * @return the selected project
- */
- public IProject getSelectedProject() {
- return mProject;
- }
-
- /**
- * Sets the project selected by this chooser
- *
- * @param project the selected project
- */
- public void setSelectedProject(IProject project) {
- mProject = project;
-
- int selectionIndex = 0;
- for (int i = 0, n = mAvailableProjects.length; i < n; i++) {
- if (project == mAvailableProjects[i].getProject()) {
- selectionIndex = i + 1; // +1: Slot 0 is reserved for "Choose Project"
- select(selectionIndex);
- break;
- }
- }
- }
-
- /**
- * Click handler for the button: Open the {@link ProjectChooserHelper}
- * dialog for selecting a new project.
- */
- @Override
- public void widgetSelected(SelectionEvent e) {
- int selectionIndex = getSelectionIndex();
- if (selectionIndex > 0 && mAvailableProjects != null
- && selectionIndex <= mAvailableProjects.length) {
- // selection index 0 is "Choose Project", all other projects are offset
- // by 1 from the selection index
- mProject = mAvailableProjects[selectionIndex - 1].getProject();
- } else {
- mProject = null;
- }
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- }
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
- }
-}