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;
}
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();
}
}
}
});
}
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) + ": ");
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);
}
Aggregations