Search in sources :

Example 1 with Region

use of org.eclipse.che.ide.ext.java.shared.dto.Region in project che by eclipse.

the class SearchManager method performFindUsageSearch.

private FindUsagesResponse performFindUsageSearch(IJavaElement element) throws JavaModelException, BadLocationException {
    JavaSearchScopeFactory factory = JavaSearchScopeFactory.getInstance();
    boolean isInsideJRE = factory.isInsideJRE(element);
    JavaSearchQuery query = new JavaSearchQuery(new ElementQuerySpecification(element, IJavaSearchConstants.REFERENCES, factory.createWorkspaceScope(isInsideJRE), "workspace scope"));
    NewSearchUI.runQueryInForeground(null, query);
    ISearchResult result = query.getSearchResult();
    JavaSearchResult javaResult = ((JavaSearchResult) result);
    FindUsagesResponse response = DtoFactory.newDto(FindUsagesResponse.class);
    Map<String, List<org.eclipse.che.ide.ext.java.shared.dto.search.Match>> mapMaches = new HashMap<>();
    JavaElementToDtoConverter converter = new JavaElementToDtoConverter(javaResult);
    for (Object o : javaResult.getElements()) {
        IJavaElement javaElement = (IJavaElement) o;
        IDocument document = null;
        if (javaElement instanceof IMember) {
            IMember member = ((IMember) javaElement);
            if (member.isBinary()) {
                if (member.getClassFile().getSource() != null) {
                    document = new Document(member.getClassFile().getSource());
                }
            } else {
                document = getDocument(member.getCompilationUnit());
            }
        } else if (javaElement instanceof IPackageDeclaration) {
            ICompilationUnit ancestor = (ICompilationUnit) (javaElement).getAncestor(IJavaElement.COMPILATION_UNIT);
            document = getDocument(ancestor);
        }
        converter.addElementToProjectHierarchy(javaElement);
        Match[] matches = javaResult.getMatches(o);
        List<org.eclipse.che.ide.ext.java.shared.dto.search.Match> matchList = new ArrayList<>();
        for (Match match : matches) {
            org.eclipse.che.ide.ext.java.shared.dto.search.Match dtoMatch = DtoFactory.newDto(org.eclipse.che.ide.ext.java.shared.dto.search.Match.class);
            if (document != null) {
                IRegion lineInformation = document.getLineInformationOfOffset(match.getOffset());
                int offsetInLine = match.getOffset() - lineInformation.getOffset();
                Region matchInLine = DtoFactory.newDto(Region.class).withOffset(offsetInLine).withLength(match.getLength());
                dtoMatch.setMatchInLine(matchInLine);
                dtoMatch.setMatchLineNumber(document.getLineOfOffset(match.getOffset()));
                dtoMatch.setMatchedLine(document.get(lineInformation.getOffset(), lineInformation.getLength()));
            }
            dtoMatch.setFileMatchRegion(DtoFactory.newDto(Region.class).withOffset(match.getOffset()).withLength(match.getLength()));
            matchList.add(dtoMatch);
        }
        mapMaches.put(javaElement.getHandleIdentifier(), matchList);
    }
    List<JavaProject> projects = converter.getProjects();
    response.setProjects(projects);
    response.setMatches(mapMaches);
    response.setSearchElementLabel(JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT));
    return response;
}
Also used : ISearchResult(org.eclipse.search.ui.ISearchResult) FindUsagesResponse(org.eclipse.che.ide.ext.java.shared.dto.search.FindUsagesResponse) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Document(org.eclipse.jface.text.Document) IDocument(org.eclipse.jface.text.IDocument) IMember(org.eclipse.jdt.core.IMember) IRegion(org.eclipse.jface.text.IRegion) Match(org.eclipse.search.ui.text.Match) JavaSearchResult(org.eclipse.jdt.internal.ui.search.JavaSearchResult) ArrayList(java.util.ArrayList) List(java.util.List) JavaSearchScopeFactory(org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory) IJavaElement(org.eclipse.jdt.core.IJavaElement) ICompilationUnit(org.eclipse.jdt.core.ICompilationUnit) JavaProject(org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject) IJavaProject(org.eclipse.jdt.core.IJavaProject) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) JavaSearchQuery(org.eclipse.jdt.internal.ui.search.JavaSearchQuery) Region(org.eclipse.che.ide.ext.java.shared.dto.Region) IRegion(org.eclipse.jface.text.IRegion) IPackageDeclaration(org.eclipse.jdt.core.IPackageDeclaration) IDocument(org.eclipse.jface.text.IDocument)

Example 2 with Region

use of org.eclipse.che.ide.ext.java.shared.dto.Region in project che by eclipse.

the class JavaRefactoringRename method activateLinkedModeIntoEditor.

private void activateLinkedModeIntoEditor(final RenameRefactoringSession session, final Document document) {
    mode = linkedEditor.getLinkedMode();
    LinkedModel model = linkedEditor.createLinkedModel();
    LinkedModeModel linkedModeModel = session.getLinkedModeModel();
    List<LinkedModelGroup> groups = new ArrayList<>();
    for (LinkedPositionGroup positionGroup : linkedModeModel.getGroups()) {
        LinkedModelGroup group = linkedEditor.createLinkedGroup();
        LinkedData data = positionGroup.getData();
        if (data != null) {
            LinkedModelData modelData = linkedEditor.createLinkedModelData();
            modelData.setType("link");
            modelData.setValues(data.getValues());
            group.setData(modelData);
        }
        List<Position> positions = new ArrayList<>();
        for (Region region : positionGroup.getPositions()) {
            positions.add(new Position(region.getOffset(), region.getLength()));
        }
        group.setPositions(positions);
        groups.add(group);
    }
    model.setGroups(groups);
    disableAutoSave();
    mode.enterLinkedMode(model);
    mode.addListener(new LinkedMode.LinkedModeListener() {

        @Override
        public void onLinkedModeExited(boolean successful, int start, int end) {
            boolean isSuccessful = false;
            try {
                if (successful) {
                    isSuccessful = true;
                    newName = document.getContentRange(start, end - start);
                    performRename(session);
                }
            } finally {
                mode.removeListener(this);
                isActiveLinkedEditor = false;
                if (!isSuccessful && linkedEditor instanceof EditorWithAutoSave) {
                    ((EditorWithAutoSave) linkedEditor).enableAutoSave();
                }
            }
        }
    });
}
Also used : LinkedModel(org.eclipse.che.ide.api.editor.link.LinkedModel) Position(org.eclipse.che.ide.api.editor.text.Position) HasLinkedMode(org.eclipse.che.ide.api.editor.link.HasLinkedMode) LinkedMode(org.eclipse.che.ide.api.editor.link.LinkedMode) ArrayList(java.util.ArrayList) LinkedModeModel(org.eclipse.che.ide.ext.java.shared.dto.LinkedModeModel) LinkedModelGroup(org.eclipse.che.ide.api.editor.link.LinkedModelGroup) LinkedPositionGroup(org.eclipse.che.ide.ext.java.shared.dto.LinkedPositionGroup) EditorWithAutoSave(org.eclipse.che.ide.api.editor.EditorWithAutoSave) LinkedData(org.eclipse.che.ide.ext.java.shared.dto.LinkedData) Region(org.eclipse.che.ide.ext.java.shared.dto.Region) LinkedModelData(org.eclipse.che.ide.api.editor.link.LinkedModelData)

Example 3 with Region

use of org.eclipse.che.ide.ext.java.shared.dto.Region in project che by eclipse.

the class MatchNode method updatePresentation.

@Override
public void updatePresentation(@NotNull NodePresentation presentation) {
    SpanElement spanElement = Elements.createSpanElement(styles.styles().presentableTextContainer());
    SpanElement lineNumberElement = Elements.createSpanElement();
    lineNumberElement.setInnerHTML(String.valueOf(match.getMatchLineNumber() + 1) + ":&nbsp;&nbsp;&nbsp;");
    spanElement.appendChild(lineNumberElement);
    SpanElement textElement = Elements.createSpanElement();
    Region matchInLine = match.getMatchInLine();
    String matchedLine = match.getMatchedLine();
    if (matchedLine != null && matchInLine != null) {
        String startLine = matchedLine.substring(0, matchInLine.getOffset());
        textElement.appendChild(Elements.createTextNode(startLine));
        SpanElement highlightElement = Elements.createSpanElement(resources.css().searchMatch());
        highlightElement.setInnerText(matchedLine.substring(matchInLine.getOffset(), matchInLine.getOffset() + matchInLine.getLength()));
        textElement.appendChild(highlightElement);
        textElement.appendChild(Elements.createTextNode(matchedLine.substring(matchInLine.getOffset() + matchInLine.getLength())));
    } else {
        textElement.appendChild(Elements.createTextNode("Can't find sources"));
    }
    spanElement.appendChild(textElement);
    presentation.setPresentableIcon(resources.searchMatch());
    presentation.setUserElement((Element) spanElement);
}
Also used : SpanElement(elemental.html.SpanElement) Region(org.eclipse.che.ide.ext.java.shared.dto.Region)

Aggregations

Region (org.eclipse.che.ide.ext.java.shared.dto.Region)3 ArrayList (java.util.ArrayList)2 SpanElement (elemental.html.SpanElement)1 HashMap (java.util.HashMap)1 List (java.util.List)1 EditorWithAutoSave (org.eclipse.che.ide.api.editor.EditorWithAutoSave)1 HasLinkedMode (org.eclipse.che.ide.api.editor.link.HasLinkedMode)1 LinkedMode (org.eclipse.che.ide.api.editor.link.LinkedMode)1 LinkedModel (org.eclipse.che.ide.api.editor.link.LinkedModel)1 LinkedModelData (org.eclipse.che.ide.api.editor.link.LinkedModelData)1 LinkedModelGroup (org.eclipse.che.ide.api.editor.link.LinkedModelGroup)1 Position (org.eclipse.che.ide.api.editor.text.Position)1 LinkedData (org.eclipse.che.ide.ext.java.shared.dto.LinkedData)1 LinkedModeModel (org.eclipse.che.ide.ext.java.shared.dto.LinkedModeModel)1 LinkedPositionGroup (org.eclipse.che.ide.ext.java.shared.dto.LinkedPositionGroup)1 JavaProject (org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject)1 FindUsagesResponse (org.eclipse.che.ide.ext.java.shared.dto.search.FindUsagesResponse)1 ICompilationUnit (org.eclipse.jdt.core.ICompilationUnit)1 IJavaElement (org.eclipse.jdt.core.IJavaElement)1 IJavaProject (org.eclipse.jdt.core.IJavaProject)1