Come implementare il contenuto di assistere a comparsa documentazione in Eclipse RCP
-
23-08-2019 - |
Domanda
Ho implementato il mio editore e ha aggiunto una funzionalità di completamento del codice ad esso. Il mio assistente contenuto è registrato in configurazione visualizzatore sorgente in questo modo:
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
if (assistant == null) {
assistant = new ContentAssistant();
assistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
assistant.setContentAssistProcessor(getMyAssistProcessor(),
MyPartitionScanner.DESIRED_PARTITION_FOR_MY_ASSISTANCE);
assistant.enableAutoActivation(true);
assistant.setAutoActivationDelay(500);
assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
}
return assistant;
}
Quando si preme Ctrl + SPAZIO all'interno della partizione desiderata, appare il popup di completamento e funziona come previsto.
Ed ecco la mia domanda .. Come faccio a implementare / registrare un pop-up di documentazione che appare accanto al completamento popup? (Per esempio in Java editor)
Soluzione
Bene,
Io answear la domanda che mi; -)
È necessario aggiungere questa riga
assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
per la configurazione di cui sopra. Poi, quando la creazione di CompletionProposals , (l'ultimo) parametro ottavo chiamato additionalProposalInfo del costruttore è il testo, che sarà mostrato nel popup documentazione.
new CompletionProposal(replacementString,
replacementOffset,
replacementLength,
cursorPosition,
image,
displayString,
contextInformation,
additionalProposalInfo);
Maggiori informazioni su si possono trovare qui .
facile, non è vero .. se sai come farlo;)
Altri suggerimenti
Per la casella informazioni in stile (proprio come in JDT).
HTMLTextPresenter
.
import org.eclipse.jface.internal.text.html.HTMLTextPresenter;
public class MyConfiguration extends SourceViewerConfiguration {
[...]
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
if (assistant == null) {
[...]
assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
}
return assistant;
}
@Override
public IInformationControlCreator getInformationControlCreator(ISourceViewer sourceViewer) {
return new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent) {
return new DefaultInformationControl(parent,new HTMLTextPresenter(false));
}
};
}
}
public class MyProposal implements ICompletionProposal {
[...]
@Override
public String getAdditionalProposalInfo() {
return "<b>Hello</b> <i>World</i>!";
}
}