1 package org.simantics.graphfile.ui.editor;
3 import java.util.function.Supplier;
5 import org.eclipse.swt.widgets.Composite;
6 import org.eclipse.ui.IEditorInput;
7 import org.eclipse.ui.IEditorSite;
8 import org.eclipse.ui.PartInitException;
9 import org.eclipse.ui.editors.text.TextEditor;
10 import org.simantics.Simantics;
11 import org.simantics.db.Session;
12 import org.simantics.db.common.request.ParametrizedRead;
13 import org.simantics.db.exception.DatabaseException;
14 import org.simantics.db.layer0.request.combinations.Combinators;
15 import org.simantics.ui.workbench.IResourceEditorInput;
16 import org.simantics.ui.workbench.ResourceEditorSupport;
17 import org.simantics.ui.workbench.TitleRequest;
18 import org.simantics.ui.workbench.TitleUpdater;
19 import org.simantics.ui.workbench.ToolTipRequest;
20 import org.simantics.ui.workbench.editor.input.InputValidationCombinators;
23 * @author Antti Villberg
25 public class PlainTextEditor extends TextEditor {
27 boolean isDisposed = false;
29 ParametrizedRead<IResourceEditorInput, Boolean> INPUT_VALIDATOR =
31 InputValidationCombinators.hasURI(),
32 InputValidationCombinators.extractInputResource()
35 ResourceEditorSupport support;
37 public PlainTextEditor() {
39 setDocumentProvider(new PlainTextEditorDocumentProvider());
40 //setSourceViewerConfiguration(new QueueTextEditorViewerConfiguration(new QueueTextEditorColorManager()));
44 public void init(IEditorSite site, IEditorInput input) throws PartInitException {
45 super.init(site, input);
47 support = new ResourceEditorSupport(this, INPUT_VALIDATOR);
48 support.activateValidation();
50 getResourceEditorInput().init(null);
51 } catch (DatabaseException e) {
52 throw new PartInitException("Failed to initialize " + input, e);
56 protected IResourceEditorInput getResourceEditorInput() {
57 return (IResourceEditorInput) getEditorInput();
61 public void createPartControl(Composite parent) {
62 super.createPartControl(parent);
66 private void updatePartName() {
67 setPartName(getEditorInput().getName());
69 Session session = Simantics.peekSession();
70 if (session != null) {
71 Supplier<Boolean> disposedCallback = () -> isDisposed;
73 new TitleRequest(null, getResourceEditorInput()),
74 new TitleUpdater(getSite().getShell().getDisplay(), this::setPartName, disposedCallback));
76 new ToolTipRequest(getSite().getId(), getResourceEditorInput()),
77 new TitleUpdater(getSite().getShell().getDisplay(), this::setTitleToolTip, disposedCallback));
83 public void dispose() {
85 if (support != null) {