diff options
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.java | 304 |
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 - } - } -} |