diff --git a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorFilesCommandHandler.java b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorFilesCommandHandler.java
index 0b4addad..01d24526 100644
--- a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorFilesCommandHandler.java
+++ b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorFilesCommandHandler.java
@@ -24,6 +24,7 @@ import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
import com.wudsn.ide.lng.LanguagePlugin;
import com.wudsn.ide.lng.compiler.CompilerFiles;
@@ -46,115 +47,14 @@ public abstract class LanguageEditorFilesCommandHandler extends AbstractHandler
public Object execute(ExecutionEvent event) throws ExecutionException {
var editor = HandlerUtil.getActiveEditorChecked(event);
if (!(editor instanceof ILanguageEditor)) {
- if (!LanguageEditorPropertyTester.isPascalEditor(editor)) {
- return null;
+ if (LanguageEditorPropertyTester.isPascalEditor(editor)) {
+ editor = new LanguageEditorWrapper((ITextEditor) editor,
+ "com.wudsn.ide.lng.pas.compiler.mp.MadPascalEditor");
+ } else {
+ return null;
}
-// editor=new ILanguageEditor() {
-//
-// /**
-// * Gets the compiler id for this editor.
-// *
-// * @return The compiler id for this editor, not empty and not null
.
-// */
-//
-// @Override
-// protected final void initializeEditor() {
-// super.initializeEditor();
-//
-// plugin = LanguagePlugin.getInstance();
-// compiler = plugin.getCompilerRegistry().getCompilerByEditorClassName(getEditorClassName());
-//
-// setSourceViewerConfiguration(new LanguageSourceViewerConfiguration(this, getPreferenceStore()));
-//
-// }
-//
-// // TODO
-// protected String getEditorClassName() {
-// return getClass().getName();
-// }
-//
-// /**
-// * Gets the plugin this compiler instance belongs to.
-// *
-// * @return The plugin this compiler instance belongs to, not null
.
-// */
-// public final LanguagePlugin getPlugin() {
-// if (plugin == null) {
-// throw new IllegalStateException("Field 'plugin' must not be null.");
-// }
-// return plugin;
-// }
-//
-// /**
-// * Gets the language.
-// *
-// * @return The language, not null
.
-// */
-// public final Language getLanguage() {
-// return getCompilerDefinition().getLanguage();
-// }
-//
-// /**
-// * Gets the language preferences.
-// *
-// * @return The language preferences, not null
.
-// */
-// public final LanguagePreferences getLanguagePreferences() {
-// return getPlugin().getLanguagePreferences(getLanguage());
-// }
-//
-// /**
-// * Gets the compiler for this editor.
-// *
-// * @return The compiler for this editor, not null
.
-// */
-// public final Compiler getCompiler() {
-// if (compiler == null) {
-// throw new IllegalStateException("Field 'compiler' must not be null.");
-// }
-// return compiler;
-// }
-//
-// /**
-// * Gets the compiler definition for this editor.
-// *
-// * @return The compiler definition for this editor, not null
.
-// *
-// * @sine 1.6.1
-// */
-// public final CompilerDefinition getCompilerDefinition() {
-// if (compiler == null) {
-// throw new IllegalStateException("Field 'compiler' must not be null.");
-// }
-// return compiler.getDefinition();
-// }
-//
-// /**
-// * Gets the default hardware for this editor.
-// *
-// * @return The hardware for this editor, not null
.
-// *
-// * @since 1.6.1
-// */
-// protected final Hardware getHardware() {
-// if (hardware != null) {
-// return hardware;
-// }
-// return getCompilerDefinition().getDefaultHardware();
-// }
-//
-//
-// /**
-// * Gets the compiler preferences.
-// *
-// * @return The compiler preferences, not null
.
-// */
-// public final LanguageHardwareCompilerDefinitionPreferences getLanguageHardwareCompilerPreferences() {
-// return getLanguagePreferences().getLanguageHardwareCompilerDefinitionPreferences(getHardware(),
-// getCompilerDefinition());
-// }
-//
+
}
var languageEditor = (ILanguageEditor) editor;
diff --git a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorWrapper.java b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorWrapper.java
new file mode 100644
index 00000000..544dcd3d
--- /dev/null
+++ b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorWrapper.java
@@ -0,0 +1,264 @@
+/**
+ * Copyright (C) 2009 - 2021 Peter Dell
+ *
+ * This file is part of WUDSN IDE.
+ *
+ * WUDSN IDE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * WUDSN IDE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WUDSN IDE. If not, see .
+ */
+
+package com.wudsn.ide.lng.editor;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+import com.wudsn.ide.base.hardware.Hardware;
+import com.wudsn.ide.lng.Language;
+import com.wudsn.ide.lng.LanguagePlugin;
+import com.wudsn.ide.lng.compiler.Compiler;
+import com.wudsn.ide.lng.compiler.CompilerDefinition;
+import com.wudsn.ide.lng.compiler.parser.CompilerSourceParser;
+import com.wudsn.ide.lng.preferences.LanguageHardwareCompilerDefinitionPreferences;
+import com.wudsn.ide.lng.preferences.LanguagePreferences;
+
+/**
+ * The language editor.
+ *
+ * @author Peter Dell
+ */
+public class LanguageEditorWrapper implements ILanguageEditor {
+
+ private ITextEditor delegate;
+
+ private LanguagePlugin plugin;
+ private Compiler compiler;
+
+ private Hardware hardware;
+
+ public LanguageEditorWrapper(ITextEditor delegate, String compilerClassName) {
+ if (delegate == null) {
+ throw new IllegalArgumentException("Parameter 'delegate' must not be null.");
+ }
+ if (compilerClassName == null) {
+ throw new IllegalArgumentException("Parameter 'compilerClassName' must not be null.");
+ }
+ this.delegate = delegate;
+ plugin = LanguagePlugin.getInstance();
+ compiler = plugin.getCompilerRegistry().getCompilerByEditorClassName(compilerClassName);
+
+ }
+
+ @Override
+ public final LanguagePlugin getPlugin() {
+ if (plugin == null) {
+ throw new IllegalStateException("Field 'plugin' must not be null.");
+ }
+ return plugin;
+ }
+
+ @Override
+ public final Language getLanguage() {
+ return getCompilerDefinition().getLanguage();
+ }
+
+ @Override
+ public final LanguagePreferences getLanguagePreferences() {
+ return getPlugin().getLanguagePreferences(getLanguage());
+ }
+
+ @Override
+ public final Compiler getCompiler() {
+ if (compiler == null) {
+ throw new IllegalStateException("Field 'compiler' must not be null.");
+ }
+ return compiler;
+ }
+
+ @Override
+ public final CompilerDefinition getCompilerDefinition() {
+ return getCompiler().getDefinition();
+ }
+
+ /**
+ * Gets the default hardware for this editor.
+ *
+ * @return The hardware for this editor, not null
.
+ *
+ * @since 1.6.1
+ */
+ protected final Hardware getHardware() {
+ if (hardware != null) {
+ return hardware;
+ }
+ return getCompilerDefinition().getDefaultHardware();
+ }
+
+ @Override
+ public final LanguageHardwareCompilerDefinitionPreferences getLanguageHardwareCompilerPreferences() {
+ return getLanguagePreferences().getLanguageHardwareCompilerDefinitionPreferences(getHardware(),
+ getCompilerDefinition());
+ }
+
+ @Override
+ public final CompilerSourceParser createCompilerSourceParser() {
+ return LanguageEditor.createCompilerSourceParser(this);
+ }
+
+ @Override
+ public IDocument getDocument() {
+ return delegate.getDocumentProvider().getDocument(getEditorInput());
+ }
+
+ @Override
+ public final IFile getCurrentIFile() {
+ IFile result;
+ var editorInput = getEditorInput();
+ if (editorInput instanceof FileEditorInput) {
+ var fileEditorInput = (FileEditorInput) editorInput;
+ result = fileEditorInput.getFile();
+
+ } else {
+ result = null;
+ }
+ return result;
+ }
+
+ @Override
+ public final File getCurrentFile() {
+ File result;
+ var editorInput = getEditorInput();
+ if (editorInput instanceof FileEditorInput) {
+ var fileEditorInput = (FileEditorInput) editorInput;
+ result = new File(fileEditorInput.getPath().toOSString());
+ } else {
+ result = null;
+ }
+ return result;
+ }
+
+ @Override
+ public final File getCurrentDirectory() {
+ var result = getCurrentFile();
+ if (result != null) {
+ result = result.getParentFile();
+ }
+ return result;
+ }
+
+ @Override
+ public IEditorInput getEditorInput() {
+ return delegate.getEditorInput();
+ }
+
+ @Override
+ public IEditorSite getEditorSite() {
+ return delegate.getEditorSite();
+ }
+
+ @Override
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ delegate.init(site, input);
+
+ }
+
+ @Override
+ public void addPropertyListener(IPropertyListener listener) {
+ delegate.addPropertyListener(listener);
+
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ delegate.createPartControl(parent);
+
+ }
+
+ @Override
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public IWorkbenchPartSite getSite() {
+ return delegate.getSite();
+ }
+
+ @Override
+ public String getTitle() {
+ return delegate.getTitle();
+ }
+
+ @Override
+ public Image getTitleImage() {
+ return delegate.getTitleImage();
+ }
+
+ @Override
+ public String getTitleToolTip() {
+ return delegate.getTitleToolTip();
+ }
+
+ @Override
+ public void removePropertyListener(IPropertyListener listener) {
+ delegate.removePropertyListener(listener);
+ }
+
+ @Override
+ public void setFocus() {
+ delegate.setFocus();
+ }
+
+ @Override
+ public T getAdapter(Class adapter) {
+ return delegate.getAdapter(adapter);
+ }
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ delegate.doSave(monitor);
+ }
+
+ @Override
+ public void doSaveAs() {
+ delegate.doSaveAs();
+
+ }
+
+ @Override
+ public boolean isDirty() {
+ return delegate.isDirty();
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return delegate.isSaveAsAllowed();
+ }
+
+ @Override
+ public boolean isSaveOnCloseNeeded() {
+ return delegate.isSaveOnCloseNeeded();
+ }
+}
\ No newline at end of file