Cómo implementar el contenido de ayudar emergente documentación en Eclipse RCP
-
23-08-2019 - |
Pregunta
He implementado mi propio editor y añadido una funcionalidad de finalización de código a la misma. Mi asistente contenido se ha registrado en la configuración de vista de fuentes de la siguiente manera:
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;
}
Cuando presione Ctrl + Espacio dentro de la partición deseada, aparece la ventana emergente de finalización y funciona como se esperaba.
Y aquí está mi pregunta .. ¿Cómo implemento / registrar un popup documentación que aparece junto a la finalización emergente? (Por ejemplo, en editor java)
Solución
Bueno,
Voy a answear la pregunta a mí mismo; -)
Hay que añadir esta línea
assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
a la configuración anterior. Luego, cuando la creación de CompletionProposals , el octavo (último) parámetro llamado additionalProposalInfo del constructor es el texto que se mostrará en la ventana emergente de la documentación.
new CompletionProposal(replacementString,
replacementOffset,
replacementLength,
cursorPosition,
image,
displayString,
contextInformation,
additionalProposalInfo);
Más información sobre se puede encontrar aquí .
Fácil, ¿no es así .. si usted sabe cómo hacerlo;)
Otros consejos
En el cuadro de información de estilo (al igual que en 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>!";
}
}