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; }
private SearchPatternData trySimpleTextSelection(final ITextSelection selection) { final String selectedText = selection.getText(); if (selectedText != null && selectedText.length() > 0) { int i = 0; while (i < selectedText.length() && !SearchCoreUtil.isLineDelimiterChar(selectedText.charAt(i))) { i++; } if (i > 0) { final String s = selectedText.substring(0, i); // FIXME find the module from the editor somehow return new SearchPatternData( s, getContainer().getSelectedScope(), getLimitTo(), getSearchFor(), getContainer().getSelectedWorkingSets(), getLastIncludeMask()); } } return null; }