use of org.eclipse.che.ide.api.editor.codeassist.CompletionProposal in project che by eclipse.
the class JavaCodeAssistProcessor method showProposals.
private void showProposals(final CodeAssistCallback callback, final Proposals respons) {
List<ProposalPresentation> presentations = respons.getProposals();
final List<CompletionProposal> proposals = new ArrayList<>(presentations.size());
HasLinkedMode linkedEditor = editor instanceof HasLinkedMode ? (HasLinkedMode) editor : null;
for (final ProposalPresentation proposal : presentations) {
final CompletionProposal completionProposal = new JavaCompletionProposal(proposal.getIndex(), insertStyle(resources, proposal.getDisplayString()), getIcon(proposal.getImage()), client, respons.getSessionId(), linkedEditor, refactoringUpdater, editorAgent);
proposals.add(completionProposal);
}
callback.proposalComputed(proposals);
}
use of org.eclipse.che.ide.api.editor.codeassist.CompletionProposal in project che by eclipse.
the class JavaQuickAssistProcessor method showProposals.
private void showProposals(final CodeAssistCallback callback, final Proposals responds, TextEditor editor) {
List<ProposalPresentation> presentations = responds.getProposals();
final List<CompletionProposal> proposals = new ArrayList<>(presentations.size());
HasLinkedMode linkedEditor = editor instanceof HasLinkedMode ? (HasLinkedMode) editor : null;
for (ProposalPresentation proposal : presentations) {
CompletionProposal completionProposal;
String actionId = proposal.getActionId();
if (actionId != null) {
ProposalAction action = proposalActions.get(actionId);
completionProposal = new ActionCompletionProposal(insertStyle(javaResources, proposal.getDisplayString()), actionId, action, JavaCodeAssistProcessor.getIcon(proposal.getImage()));
} else {
completionProposal = new JavaCompletionProposal(proposal.getIndex(), insertStyle(javaResources, proposal.getDisplayString()), JavaCodeAssistProcessor.getIcon(proposal.getImage()), client, responds.getSessionId(), linkedEditor, refactoringUpdater, editorAgent);
}
proposals.add(completionProposal);
}
callback.proposalComputed(proposals);
}
use of org.eclipse.che.ide.api.editor.codeassist.CompletionProposal in project che by eclipse.
the class QuickAssistWidget method createItem.
public Element createItem(final CompletionProposal proposal) {
final Element element = Elements.createLiElement(popupResources.popupStyle().item());
final Element icon = Elements.createDivElement(popupResources.popupStyle().icon());
if (proposal.getIcon() != null && proposal.getIcon().getSVGImage() != null) {
icon.appendChild((Node) proposal.getIcon().getSVGImage().getElement());
} else if (proposal.getIcon() != null && proposal.getIcon().getImage() != null) {
icon.appendChild((Node) proposal.getIcon().getImage().getElement());
}
element.appendChild(icon);
final SpanElement label = Elements.createSpanElement(popupResources.popupStyle().label());
label.setInnerHTML(proposal.getDisplayString());
element.appendChild(label);
final EventListener validateListener = new EventListener() {
@Override
public void handleEvent(final Event evt) {
proposal.getCompletion(new CompletionProposal.CompletionCallback() {
@Override
public void onCompletion(final Completion completion) {
HandlesUndoRedo undoRedo = null;
if (textEditor instanceof UndoableEditor) {
UndoableEditor undoableEditor = (UndoableEditor) QuickAssistWidget.this.textEditor;
undoRedo = undoableEditor.getUndoRedo();
}
try {
if (undoRedo != null) {
undoRedo.beginCompoundChange();
}
completion.apply(textEditor.getDocument());
final LinearRange selection = completion.getSelection(textEditor.getDocument());
if (selection != null) {
textEditor.getDocument().setSelectedRange(selection, true);
}
} catch (final Exception e) {
Log.error(getClass(), e);
} finally {
if (undoRedo != null) {
undoRedo.endCompoundChange();
}
}
}
});
hide();
}
};
element.addEventListener(Event.DBLCLICK, validateListener, false);
element.addEventListener(CUSTOM_EVT_TYPE_VALIDATE, validateListener, false);
return element;
}
use of org.eclipse.che.ide.api.editor.codeassist.CompletionProposal in project che by eclipse.
the class LanguageServerCodeAssistProcessor method computeProposals.
private void computeProposals(String currentWord, int offset, CodeAssistCallback callback) {
List<CompletionProposal> proposals = newArrayList();
for (CompletionItemDTO item : latestCompletionResult.getCompletionList().getItems()) {
List<Match> highlights = filter(currentWord, item);
if (highlights != null) {
proposals.add(new CompletionItemBasedCompletionProposal(item, documentServiceClient, latestCompletionResult.getDocumentId(), resources, imageProvider.getIcon(item.getKind()), serverCapabilities, highlights, offset));
}
}
callback.proposalComputed(proposals);
}
use of org.eclipse.che.ide.api.editor.codeassist.CompletionProposal in project che by eclipse.
the class ContentAssistWidget method createProposalPopupItem.
/**
* Creates a new proposal item.
*
* @param index
* of proposal
*/
private Element createProposalPopupItem(int index) {
final CompletionProposal proposal = proposals.get(index);
final Element element = Elements.createLiElement(popupResources.popupStyle().item());
element.setId(Integer.toString(index));
final Element icon = Elements.createDivElement(popupResources.popupStyle().icon());
if (proposal.getIcon() != null && proposal.getIcon().getSVGImage() != null) {
icon.appendChild((Node) proposal.getIcon().getSVGImage().getElement());
} else if (proposal.getIcon() != null && proposal.getIcon().getImage() != null) {
icon.appendChild((Node) proposal.getIcon().getImage().getElement());
}
element.appendChild(icon);
final SpanElement label = Elements.createSpanElement(popupResources.popupStyle().label());
label.setInnerHTML(proposal.getDisplayString());
element.appendChild(label);
element.setTabIndex(1);
final EventListener validateListener = evt -> applyProposal(proposal);
element.addEventListener(Event.DBLCLICK, validateListener, false);
element.addEventListener(CUSTOM_EVT_TYPE_VALIDATE, validateListener, false);
element.addEventListener(Event.CLICK, event -> select(element), false);
element.addEventListener(Event.FOCUS, this, false);
element.addEventListener(DOCUMENTATION, new EventListener() {
@Override
public void handleEvent(Event event) {
proposal.getAdditionalProposalInfo(new AsyncCallback<Widget>() {
@Override
public void onSuccess(Widget info) {
if (info != null) {
docPopup.clear();
docPopup.add(info);
docPopup.getElement().getStyle().setOpacity(1);
if (!docPopup.isAttached()) {
final int x = popupElement.getOffsetLeft() + popupElement.getOffsetWidth() + 3;
final int y = popupElement.getOffsetTop();
RootPanel.get().add(docPopup);
updateMenuPosition(docPopup, x, y);
}
} else {
docPopup.getElement().getStyle().setOpacity(0);
}
}
@Override
public void onFailure(Throwable e) {
Log.error(getClass(), e);
docPopup.getElement().getStyle().setOpacity(0);
}
});
}
}, false);
return element;
}
Aggregations