1 package org.simantics.scl.ui.editor2;
\r
3 import java.io.IOException;
\r
5 import org.eclipse.core.runtime.CoreException;
\r
6 import org.eclipse.core.runtime.IProgressMonitor;
\r
7 import org.eclipse.core.runtime.Status;
\r
8 import org.eclipse.jface.operation.IRunnableContext;
\r
9 import org.eclipse.jface.text.Document;
\r
10 import org.eclipse.jface.text.IDocument;
\r
11 import org.eclipse.jface.text.source.AnnotationModel;
\r
12 import org.eclipse.jface.text.source.IAnnotationModel;
\r
13 import org.eclipse.ui.texteditor.AbstractDocumentProvider;
\r
14 import org.simantics.scl.compiler.source.ModuleSource;
\r
15 import org.simantics.scl.compiler.source.TextualModuleSource;
\r
16 import org.simantics.scl.osgi.SCLOsgi;
\r
17 import org.simantics.scl.ui.editor.SCLSourceViewerConfigurationNew;
\r
19 public class SCLModuleEditor2DocumentProvider extends AbstractDocumentProvider {
\r
21 private SCLSourceViewerConfigurationNew sourceViewer;
\r
22 protected AnnotationModel annotationModel = new AnnotationModel();
\r
24 public SCLModuleEditor2DocumentProvider(
\r
25 SCLSourceViewerConfigurationNew sourceViewer) {
\r
26 this.sourceViewer = sourceViewer;
\r
29 private static TextualModuleSource toTextualModuleSource(Object input) {
\r
30 if(!(input instanceof SCLModuleEditorInput))
\r
32 ModuleSource source = ((SCLModuleEditorInput)input).getAdapter(ModuleSource.class);
\r
35 if(!(source instanceof TextualModuleSource))
\r
37 return (TextualModuleSource)source;
\r
41 protected IDocument createDocument(Object element) throws CoreException {
\r
42 TextualModuleSource source = toTextualModuleSource(element);
\r
44 throw new CoreException(
\r
45 new Status(Status.ERROR, "org.simantics.scl.ui", "Source for the SCL module could not be found.")
\r
49 document = new Document(source.getSourceText(null));
\r
50 } catch (IOException e) {
\r
51 throw new CoreException(
\r
52 new Status(Status.ERROR, "org.simantics.scl.ui", "Reading SCL module failed.", e)
\r
55 sourceViewer.updateCompletionAssistModuleName(source.getModuleName());
\r
60 public boolean isModifiable(Object element) {
\r
61 TextualModuleSource source = toTextualModuleSource(element);
\r
64 return source.isUpdateable();
\r
68 public boolean isReadOnly(Object element) {
\r
69 return !isModifiable(element);
\r
73 protected IAnnotationModel createAnnotationModel(Object element)
\r
74 throws CoreException {
\r
75 SCLModuleEditorInput input = (SCLModuleEditorInput)element;
\r
76 return new SCLAnnotationModel(input, SCLOsgi.MODULE_REPOSITORY);
\r
80 protected void doSaveDocument(IProgressMonitor monitor, Object element,
\r
81 IDocument document, boolean overwrite) throws CoreException {
\r
82 TextualModuleSource source = toTextualModuleSource(element);
\r
85 source.update(document.get());
\r
89 protected IRunnableContext getOperationRunner(IProgressMonitor monitor) {
\r
90 // TODO Auto-generated method stub
\r