Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 16809 Details for
Bug 81797
NPE in SortElementBuilder
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
The compilation unit being sorted (has syntax errors)
BuildUtilities.java (text/plain), 6.09 KB, created by
John Arthorne
on 2004-12-22 11:51:58 EST
(
hide
)
Description:
The compilation unit being sorted (has syntax errors)
Filename:
MIME Type:
Creator:
John Arthorne
Created:
2004-12-22 11:51:58 EST
Size:
6.09 KB
patch
obsolete
>/********************************************************************** > * Copyright (c) 2004 IBM Corporation and others. All rights reserved. This > * program and the accompanying materials are made available under the terms of > * the Common Public License v1.0 which accompanies this distribution, and is > * available at http://www.eclipse.org/legal/cpl-v10.html > * > * Contributors: > * IBM - Initial API and implementation > **********************************************************************/ >package org.eclipse.ui.internal.ide.actions; > >import java.util.HashSet; >import org.eclipse.core.resources.ICommand; >import org.eclipse.core.resources.IProject; >import org.eclipse.core.resources.IProjectDescription; >import org.eclipse.core.resources.IResource; >import org.eclipse.core.resources.IncrementalProjectBuilder; >import org.eclipse.core.resources.ResourcesPlugin; >import org.eclipse.core.runtime.CoreException; >import org.eclipse.core.runtime.IAdaptable; >import org.eclipse.jface.viewers.ISelection; >import org.eclipse.jface.viewers.IStructuredSelection; >import org.eclipse.ui.IEditorInput; >import org.eclipse.ui.IEditorPart; >import org.eclipse.ui.IFileEditorInput; >import org.eclipse.ui.IWorkbenchPart; >import org.eclipse.ui.IWorkbenchWindow; > >/** > * This class contains convenience methods used by the various build commands > * to determine enablement. These utilities cannot be factored into a common > * class because some build actions are API and some are not. > * > * @since 3.1 > */ >public class BuildUtilities { > /** > * Extracts the selected projects from a selection. > * > * @param selection The selection to analyze > * @return The selected projects > */ > public static IProject[] extractProjects(Object[] selection) { > HashSet projects = new HashSet(); > for (int i = 0; i < selection.length; i++) { > if (selection[i] instanceof IResource) { > projects.add(((IResource) selection[i]).getProject()); > } else if (selection[i] instanceof IAdaptable) { > IAdaptable adaptable = (IAdaptable) selection[i]; > IResource resource = (IResource) adaptable.getAdapter(IResource.class); > if (resource != null) > projects.add(resource.getProject()); > } > } > return (IProject[]) projects.toArray(new IProject[projects.size()]); > } > > /** > * Finds and returns the selected projects in the given window > * > * @param window The window to find the selection in > * @return The selected projects, or an empty array if no selection could be found. > */ > public static IProject[] findSelectedProjects(IWorkbenchWindow window) { > if (window == null) > return new IProject[0]; > ISelection selection = window.getSelectionService().getSelection(); > IProject[] selected = null; > if (selection != null && !selection.isEmpty() && selection instanceof IStructuredSelection) { > selected = extractProjects(((IStructuredSelection) selection).toArray()); > } else { > //see if we can extract a selected project from the active editor > IWorkbenchPart part = window.getPartService().getActivePart(); > if (part instanceof IEditorPart) { > IEditorInput input = ((IEditorPart) part).getEditorInput(); > if (input instanceof IFileEditorInput) > selected = new IProject[] {((IFileEditorInput) input).getFile().getProject()}; > } > } > if (selected == null) > selected = new IProject[0]; > return selected; > } > > /** > * Returns whether the workspace has a builder installed that responds > * to the given trigger. > */ > static boolean hasBuilder(int trigger) { > IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); > boolean builderFound = false; > for (int i = 0; i < projects.length; i++) { > if (!projects[i].isAccessible()) > continue; > try { > IProjectDescription description = projects[i].getDescription(); > ICommand[] buildSpec = description.getBuildSpec(); > for (int j = 0; j < buildSpec.length; j++) { > builderFound = true; > if (!buildSpec[j].isBuilding(trigger)) > return true; > } > } catch (CoreException e) { > //ignore projects that are not available > } > } > //enable building if there are any accessible projects with builders > return builderFound; > > } > > /** > * Returns whether the selection of projects is being managed by autobuild. > * > * @param projects The projects to examine > * @return <code>true</code> if the projects are being managed by > * autobuild, and <code>false</code> otherwise. > */ > public static boolean isAutoBuilding(IProject[] projects) { > if (!ResourcesPlugin.getWorkspace().isAutoBuilding()) > return false; > > /** > * Returns whether one of the projects has a builder whose trigger setting > * for the given trigger matches the given value. > * > * @param projects The projects to check > * @param trigger The trigger to look for > * @param value The trigger value to look for > * @return <code>true</code> if one of the projects has a builder whose > * trigger activation matches the provided value, and <code>false</code> otherwise. > */ > private static boolean matchingTrigger(IProject[] projects, int trigger, boolean value) { > for (int i = 0; i < projects.length; i++) { > if (!projects[i].isAccessible()) > continue; > try { > IProjectDescription description = projects[i].getDescription(); > ICommand[] buildSpec = description.getBuildSpec(); > for (int j = 0; j < buildSpec.length; j++) { > if (buildSpec[j].isBuilding(trigger) == value) > return true; > } > } catch (CoreException e) { > //ignore projects that are not available > } > } > return false; > } > > /** > * Returns whether a build command with the given trigger should > * be enabled for the given selection. > * @param projects The projects to use to determine enablement > * @param trigger The build trigger (<code>IncrementalProjectBuilder.*_BUILD</code> constants). > * @return <code>true</code> if the action should be enabled, and > * <code>false</code> otherwise. > */ > public static boolean isEnabled(IProject[] projects, int trigger) { > return true; > } > > /** > * Doesn't need to be instantiated > */ > private BuildUtilities() { > } >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 81797
: 16809