#eclipse #rcp
#затмение #ркп
Вопрос:
Я реализовал свой собственный редактор с помощью своего собственного TextSourceViewerConfiguration
. Поэтому я хочу добавить два помощника по обработке контента.
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { ContentAssistant assistant = new ContentAssistant(); IContentAssistProcessor pr = new MyFirstContentAssistProcessor(); IContentAssistProcessor dr = new MySecondContentAssistProcessor(); assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE); assistant.setContentAssistProcessor(pr, IDocument.DEFAULT_CONTENT_TYPE); assistant.setContentAssistProcessor(dr, IDocument.DEFAULT_CONTENT_TYPE); return assistant; }
Только MyFirstContentAssistProcessor
работает. Но мне нужно и то, и другое.
Когда я сделаю
assistant.addContentAssistProcessor(dr, IDocument.DEFAULT_CONTENT_TYPE) java.lang.UnsupportedOperationException at java.util.AbstractCollection.add(AbstractCollection.java:262) at org.eclipse.jface.text.contentassist.ContentAssistant.addContentAssistProcessor(ContentAssistant.java:1147) at testingpluginproject.editors.XMLConfiguration.getContentAssistant(XMLConfiguration.java:61) at org.eclipse.jface.text.source.SourceViewer.configure(SourceViewer.java:500) at org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(AbstractTextEditor.java:3385) at org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(StatusTextEditor.java:64) at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createPartControl(AbstractDecoratedTextEditor.java:452) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:154) at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:361)
Комментарии:
1. Второй звонок
addContentAssistProcessor
не должен бытьsetContentAssistProcessor
2. Но когда я изменю его на assistant.addContentAssistProcessor(dr, IDocument. DEFAULT_CONTENT_TYPE); Затем я получил исключение, потому что ключ уже прощен. Когда я делаю так ssistant.addContentAssistProcessor(dr, IDocument. DEFAULT_CONTENT_TYPE «Новый»); не работает
3. Покажите нам трассировку стека исключения, вам нужно получить add для работы с одним и тем же типом документа.
4. добавление трассировки стека выше
5. Я понял, помощник.addContentAssistProcessor(pr,Документ. DEFAULT_CONTENT_TYPE) помощник.addContentAssistProcessor(dr,IDocument. DEFAULT_CONTENT_TYP); До того,как у меня был помощник.setContentAssistProcessor(pr, IDocument. DEFAULT_CONTENT_TYPE); помощник.addContentAssistProcessor(dr,Документ. DEFAULT_CONTENT_TYPE); Thx