diff options
Diffstat (limited to 'bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java')
-rw-r--r-- | bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java index 42161be88..a4624bcb4 100644 --- a/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java +++ b/bundles/code/org.eclipse.fx.code.editor.fx/src/org/eclipse/fx/code/editor/fx/TextEditor.java @@ -17,10 +17,15 @@ import javax.inject.Inject; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.ui.di.Focus; import org.eclipse.e4.ui.di.Persist; +import org.eclipse.fx.code.editor.Constants; import org.eclipse.fx.code.editor.Input; +import org.eclipse.fx.code.editor.SourceSelection; +import org.eclipse.fx.code.editor.services.URIProvider; import org.eclipse.fx.core.di.ContextValue; +import org.eclipse.fx.core.event.EventBus; import org.eclipse.fx.text.ui.source.SourceViewer; import org.eclipse.fx.text.ui.source.SourceViewerConfiguration; +import org.eclipse.fx.ui.controls.styledtext.TextSelection; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentExtension3; import org.eclipse.jface.text.IDocumentPartitioner; @@ -46,6 +51,8 @@ public class TextEditor { private SourceViewer viewer; + + @Inject public void setDocument(IDocument document) { if( viewer != null ) { @@ -87,7 +94,7 @@ public class TextEditor { } @PostConstruct - public void initUI(BorderPane pane) { + public void initUI(BorderPane pane, EventBus eventBus) { viewer = createSourceViewer(); if( document instanceof IDocumentExtension3 ) { ((IDocumentExtension3)document).setDocumentPartitioner(configuration.getConfiguredDocumentPartitioning(viewer),partitioner); @@ -103,6 +110,15 @@ public class TextEditor { if( activeInput != null ) { activeInput.setValue(input); } + + eventBus.subscribe(Constants.TOPIC_SELECT_SOURCE, EventBus.data(this::onSourceSelect)); + } + + private void onSourceSelect(SourceSelection data) { + if (((URIProvider)input).getURI().equals(data.uri)) { + getSourceViewer().getTextWidget().setSelection(new TextSelection(data.selection.getOffset(), data.selection.getLength())); + getSourceViewer().getTextWidget().revealCaret(); + } } protected SourceViewer createSourceViewer() { |