Comment mettre en œuvre popup contenu de la documentation de faciliter Eclipse RCP
-
23-08-2019 - |
Question
J'ai mis mon propre éditeur et a ajouté une fonctionnalité de complétion de code à lui. Mon assistant contenu est enregistré dans la source configuration spectateur comme ceci:
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;
}
Quand j'appuyez sur Ctrl + ESPACE dans la partition souhaitée, la fenêtre d'achèvement apparaît et fonctionne comme prévu.
Et voici ma question .. Comment puis-je mettre / enregistrer une fenêtre de documentation qui apparaît à côté de l'achèvement pop-up? (Par exemple dans l'éditeur Java)
La solution
Eh bien,
J'answear la question moi-même; -)
Vous devez ajouter cette ligne
assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
à la configuration ci-dessus. Ensuite, lors de la création CompletionProposals , le paramètre huitième (dernière) appelé additionalProposalInfo du constructeur est le texte qui sera affiché dans le menu contextuel de la documentation.
new CompletionProposal(replacementString,
replacementOffset,
replacementLength,
cursorPosition,
image,
displayString,
contextInformation,
additionalProposalInfo);
Plus d'informations sur peuvent être trouvés ici .
Facile, non .. si vous savez comment le faire;)
Autres conseils
Pour la zone d'information de style (comme dans 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>!";
}
}