private boolean performNewSearch() throws CoreException { final SearchPatternData data = getPatternData(); final int includeMask = getIncludeMask(); // Setup search scope ErlSearchScope scope = EMPTY_SCOPE; String scopeDescription = null; final boolean searchSources = (includeMask & SearchUtil.SEARCH_IN_SOURCES) != 0; final boolean searchExternals = (includeMask & SearchUtil.SEARCH_IN_EXTERNALS) != 0; final boolean searchOtp = (includeMask & SearchUtil.SEARCH_IN_OTP_LIBRARIES) != 0; final int selectedScope = getContainer().getSelectedScope(); switch (selectedScope) { case ISearchPageContainer.WORKSPACE_SCOPE: if (searchSources) { scope = SearchCoreUtil.getWorkspaceScope(searchExternals, searchOtp); } scopeDescription = SearchUtil.getWorkspaceScopeDescription(); break; case ISearchPageContainer.SELECTED_PROJECTS_SCOPE: final String[] projectNames = getContainer().getSelectedProjectNames(); if (searchSources) { scope = SearchCoreUtil.getProjectsScope( SearchCoreUtil.getProjects(projectNames), searchExternals, searchOtp); } scopeDescription = SearchUtil.getProjectScopeDescription(SearchCoreUtil.getProjects(projectNames)); break; case ISearchPageContainer.SELECTION_SCOPE: if (searchSources) { scope = SearchUtil.getSelectionScope( getContainer().getSelection(), searchExternals, searchOtp); } scopeDescription = SearchUtil.getSelectionScopeDescription(getContainer().getSelection()); break; case ISearchPageContainer.WORKING_SET_SCOPE: { final IWorkingSet[] workingSets = getContainer().getSelectedWorkingSets(); // should not happen - just to be sure if (workingSets == null || workingSets.length < 1) { return false; } scopeDescription = SearchUtil.getWorkingSetsScopeDescription(workingSets); if (searchSources) { scope = SearchUtil.getWorkingSetsScope(workingSets, searchExternals, searchOtp); } SearchUtil.updateLRUWorkingSets(workingSets); } } final ErlangSearchPattern searchPattern = SearchUtil.getSearchPattern( null, data.getSearchFor(), data.getPattern(), data.getLimitTo()); SearchUtil.runQuery(searchPattern, scope, scopeDescription, getShell()); return true; }