Lines 8-21
Link Here
|
8 |
import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; |
8 |
import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; |
9 |
import org.eclipse.linuxtools.rpm.ui.editor.outline.SpecfileContentOutlinePage; |
9 |
import org.eclipse.linuxtools.rpm.ui.editor.outline.SpecfileContentOutlinePage; |
10 |
import org.eclipse.linuxtools.rpm.ui.editor.parser.Specfile; |
10 |
import org.eclipse.linuxtools.rpm.ui.editor.parser.Specfile; |
11 |
import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileParser; |
11 |
import org.eclipse.swt.widgets.Shell; |
12 |
import org.eclipse.ui.texteditor.IDocumentProvider; |
12 |
import org.eclipse.ui.texteditor.IDocumentProvider; |
13 |
|
13 |
|
14 |
public class SpecfileReconcilingStrategy implements IReconcilingStrategy, IReconcilingStrategyExtension { |
14 |
public class SpecfileReconcilingStrategy implements IReconcilingStrategy, IReconcilingStrategyExtension { |
15 |
|
15 |
|
16 |
private IDocument sDocument; |
16 |
private IDocument sDocument; |
17 |
private IProgressMonitor sProgressMonitor; |
17 |
private IProgressMonitor sProgressMonitor; |
18 |
private SpecfileParser sParser; |
|
|
19 |
private SpecfileFoldingStructureProvider sFoldingStructureProvider; |
18 |
private SpecfileFoldingStructureProvider sFoldingStructureProvider; |
20 |
|
19 |
|
21 |
SpecfileContentOutlinePage outline; |
20 |
SpecfileContentOutlinePage outline; |
Lines 28-50
Link Here
|
28 |
lastRegionOffset = Integer.MAX_VALUE; |
27 |
lastRegionOffset = Integer.MAX_VALUE; |
29 |
this.editor = editor; |
28 |
this.editor = editor; |
30 |
documentProvider = editor.getDocumentProvider(); |
29 |
documentProvider = editor.getDocumentProvider(); |
31 |
sParser= new SpecfileParser(); |
|
|
32 |
sFoldingStructureProvider= new SpecfileFoldingStructureProvider(editor); |
30 |
sFoldingStructureProvider= new SpecfileFoldingStructureProvider(editor); |
33 |
} |
31 |
} |
34 |
|
32 |
|
35 |
public void reconcile(IRegion partition) { |
|
|
36 |
try { |
37 |
Specfile specfile = editor.getSpecfile(); |
38 |
SpecfileParser parser = editor.getParser(); |
39 |
if (specfile != null) { |
40 |
editor.setSpecfile(parser.parse(documentProvider |
41 |
.getDocument(editor.getEditorInput()))); |
42 |
outline.update(); |
43 |
} |
44 |
} catch (Exception e) { |
45 |
e.printStackTrace(); |
46 |
} |
47 |
} |
48 |
|
33 |
|
49 |
public void setDocument(IDocument document) { |
34 |
public void setDocument(IDocument document) { |
50 |
sDocument= document; |
35 |
sDocument= document; |
Lines 65-86
Link Here
|
65 |
} |
50 |
} |
66 |
|
51 |
|
67 |
private void reconcile() { |
52 |
private void reconcile() { |
68 |
Specfile specfile= parseSpecfile(); |
53 |
Specfile specfile = editor.getSpecfile(); |
69 |
if (specfile != null) { |
54 |
if (specfile != null) { |
70 |
updateEditor(specfile); |
55 |
editor.setSpecfile(editor.getParser().parse(documentProvider |
71 |
updateFolding(specfile); |
56 |
.getDocument(editor.getEditorInput()))); |
|
|
57 |
outline.update(); |
58 |
updateFolding(); |
59 |
updateEditor(); |
72 |
} |
60 |
} |
73 |
} |
61 |
} |
74 |
|
62 |
|
75 |
private Specfile parseSpecfile() { |
63 |
public void reconcile(IRegion partition) { |
76 |
return sParser.parse(sDocument); |
64 |
reconcile(); |
77 |
} |
65 |
} |
78 |
|
66 |
|
79 |
private void updateEditor(final Specfile specfile) { |
67 |
private void updateEditor() { |
|
|
68 |
Shell shell= editor.getSite().getShell(); |
69 |
if (!(shell == null || shell.isDisposed())) { |
70 |
shell.getDisplay().asyncExec(new Runnable() { |
71 |
public void run() { |
72 |
editor.setSpecfile(editor.getParser().parse(documentProvider |
73 |
.getDocument(editor.getEditorInput()))); |
74 |
} |
75 |
}); |
76 |
} |
80 |
return; |
77 |
return; |
81 |
} |
78 |
} |
82 |
|
79 |
|
83 |
private void updateFolding(Specfile specfile) { |
80 |
private void updateFolding() { |
84 |
sFoldingStructureProvider.updateFoldingRegions(specfile); |
81 |
sFoldingStructureProvider.updateFoldingRegions(); |
85 |
} |
82 |
} |
86 |
} |
83 |
} |