/** * Return if the project has the given nature. * * @param project * @param natureId * @return <code>true</code> if project has given nature * @since 1.0.0 */ public static boolean hasRuntime(IProject project, String natureId) { if (project == null || !project.isAccessible()) return false; try { return project.hasNature(natureId); } catch (CoreException e) { return false; } }
@Override protected IStatus run(IProgressMonitor monitor) { MultiStatus result = new MultiStatus( ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_SETTING_CHARSET, Messages.resources_updatingEncoding, null); monitor = Policy.monitorFor(monitor); try { monitor.beginTask(Messages.resources_charsetUpdating, Policy.totalWork); final ISchedulingRule rule = workspace.getRuleFactory().modifyRule(workspace.getRoot()); try { workspace.prepareOperation(rule, monitor); workspace.beginOperation(true); Map.Entry<IProject, Boolean> next; while ((next = getNextChange()) != null) { // just exit if the system is shutting down or has been shut down // it is too late to change the workspace at this point anyway if (systemBundle.getState() != Bundle.ACTIVE) return Status.OK_STATUS; IProject project = next.getKey(); try { if (project.isAccessible()) { boolean shouldDisableCharsetDeltaJob = next.getValue().booleanValue(); // flush preferences for non-derived resources flushPreferences( getPreferences(project, false, false, true), shouldDisableCharsetDeltaJob); // flush preferences for derived resources flushPreferences( getPreferences(project, false, true, true), shouldDisableCharsetDeltaJob); } } catch (BackingStoreException e) { // we got an error saving String detailMessage = Messages.resources_savingEncoding; result.add( new ResourceStatus( IResourceStatus.FAILED_SETTING_CHARSET, project.getFullPath(), detailMessage, e)); } } monitor.worked(Policy.opWork); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, true, Policy.subMonitorFor(monitor, Policy.endOpWork)); } } catch (CoreException ce) { return ce.getStatus(); } finally { monitor.done(); } return result; }
public void resourceChanged(IResourceChangeEvent event) { if (event.getBuildKind() == IncrementalProjectBuilder.CLEAN_BUILD) { Object source = event.getSource(); try { if (source instanceof IProject) { IProject project = (IProject) source; ProjectIndexerManager.removeProject(project.getFullPath()); ProjectIndexerManager.indexProject(project); } else if (source instanceof IWorkspace) { IWorkspace workspace = (IWorkspace) source; IProject[] projects = workspace.getRoot().getProjects(); // remove from index: for (IProject project : projects) { if (!project.isAccessible()) { continue; } IScriptProject scriptProject = DLTKCore.create(project); if (scriptProject.isOpen()) { IProjectFragment[] projectFragments = scriptProject.getProjectFragments(); for (IProjectFragment projectFragment : projectFragments) { ProjectIndexerManager.removeProjectFragment( scriptProject, projectFragment.getPath()); } ProjectIndexerManager.removeProject(project.getFullPath()); } } // add to index: for (IProject project : projects) { if (!project.isAccessible()) { continue; } ProjectIndexerManager.indexProject(project); } } } catch (CoreException e) { Logger.logException(e); } } }
/** * Return a list of nature ids based on the natures that have been configured for this project. * * @return list of configured nature ids. * @param project */ public static List getRegisteredRuntimeIDs(IProject project) { List result = null; String natureID = null; if (project != null && project.isAccessible()) { Iterator it = EMFNatureRegistry.singleton().REGISTERED_NATURE_IDS.iterator(); while (it.hasNext()) { natureID = (String) it.next(); try { if (project.hasNature(natureID)) { if (result == null) result = new ArrayList(2); result.add(natureID); } } catch (CoreException e) { } } } return result == null ? Collections.EMPTY_LIST : result; }
/** Goes over the given projects and converts them */ private void processProjects(final IProject[] projects) throws CoreException, ModelException { ProjectsIterate: for (IProject project : projects) { // skip unaccessible projects if (!project.isAccessible()) { continue ProjectsIterate; } // verify that the project is a PHP project if (PHPToolkitUtil.isPhpProject(project)) { IProjectDescription projectDescription = project.getDescription(); ICommand[] commands = projectDescription.getBuildSpec(); // check if the Script Builder is installed for (int i = 0; i < commands.length; ++i) { if (commands[i].getBuilderName().equals(DLTKCore.BUILDER_ID)) { // when the builder exists - continue to the next // project continue ProjectsIterate; } } // perform modifications only if the builder is not installed modifyProject(project); } } }