efee8a3130d6c04812933ead2a930c7f9c8a2298
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / asm / editor / AsmReconciler.java
1 package net.mograsim.plugin.asm.editor;
2
3 import java.lang.ref.WeakReference;
4
5 import org.eclipse.jface.text.IDocument;
6 import org.eclipse.jface.text.ITextViewer;
7 import org.eclipse.jface.text.reconciler.Reconciler;
8 import org.eclipse.jface.text.source.projection.ProjectionViewer;
9
10 import net.mograsim.plugin.AsmOps;
11
12 public class AsmReconciler extends Reconciler
13 {
14
15         private AsmReconcilerStrategy fStrategy;
16
17         public AsmReconciler()
18         {
19                 fStrategy = new AsmReconcilerStrategy();
20                 this.setReconcilingStrategy(fStrategy, IDocument.DEFAULT_CONTENT_TYPE);
21         }
22
23         @Override
24         public void install(ITextViewer textViewer)
25         {
26                 super.install(textViewer);
27                 ProjectionViewer pViewer = (ProjectionViewer) textViewer;
28                 fStrategy.setProjectionViewer(pViewer);
29                 WeakReference<ITextViewer> tv = new WeakReference<>(textViewer);
30                 AsmOps.addListener(ops ->
31                 {
32                         System.out.println("refresh");
33                         if (tv.get() != null)
34                                 tv.get().invalidateTextPresentation();
35                 });
36         }
37 }