From 4a5bb29da4e3ef123385bf5b012eb796f19d593a Mon Sep 17 00:00:00 2001 From: Peter Dell Date: Sun, 26 Feb 2023 23:18:01 +0100 Subject: [PATCH] Unify Assembler and Compiler menus --- com.wudsn.ide.lng/META-INF/MANIFEST.MF | 4 +- .../OSGI-INF/l10n/bundle.properties | 28 ++-- .../OSGI-INF/l10n/bundle_de.properties | 30 ++-- .../OSGI-INF/l10n/bundle_pl.properties | 28 ++-- .../help/ide-features.section.html | 8 +- .../help/ide-installation.section.html | 2 +- com.wudsn.ide.lng/launch/WUDSN-IDE.launch | 2 +- com.wudsn.ide.lng/plugin.xml | 137 ++++++------------ .../com/wudsn/ide/lng/LanguageUtility.java | 11 +- .../wudsn/ide/lng/editor/LanguageEditor.java | 4 +- .../editor/LanguageEditorPropertyTester.java | 55 +++++++ 11 files changed, 143 insertions(+), 166 deletions(-) create mode 100644 com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorPropertyTester.java diff --git a/com.wudsn.ide.lng/META-INF/MANIFEST.MF b/com.wudsn.ide.lng/META-INF/MANIFEST.MF index e60f8af5..d4d7a7dc 100644 --- a/com.wudsn.ide.lng/META-INF/MANIFEST.MF +++ b/com.wudsn.ide.lng/META-INF/MANIFEST.MF @@ -14,8 +14,8 @@ Require-Bundle: org.eclipse.core.runtime;visibility:=reexport, org.eclipse.ui.ide, org.eclipse.ui.workbench.texteditor, org.eclipse.ui.views, - org.eclipse.e4.ui.di;bundle-version="1.0.0", - org.eclipse.e4.ui.model.workbench;bundle-version="1.0.1", + org.eclipse.e4.ui.di, + org.eclipse.e4.ui.model.workbench, org.eclipse.help, com.wudsn.ide.base;visibility:=reexport, com.wudsn.ide.dsk, diff --git a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle.properties b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle.properties index 845638b6..b6beaa2b 100644 --- a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle.properties +++ b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle.properties @@ -8,34 +8,24 @@ com.wudsn.ide.lng.Target.MOS6502_DTV=6502 DTV com.wudsn.ide.lng.Target.MOS65816=65816 com.wudsn.ide.lng.Target.PASCAL=Pascal -com.wudsn.ide.lng.compiler.CompilerSourceFile.name=Source Code File +com.wudsn.ide.lng.compiler.LanguageSourceFile.name=Source Code File -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.label=Assembler -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.mnemonic=s -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Compiler -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=C +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Language +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=L -com.wudsn.ide.lng.editor.LanguageEditorAssemblerToolbar.label=Assembler -com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Compiler +com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Language com.wudsn.ide.lng.editor.LanguageEditorCommands.name=Source Code Editor Commands com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.name=Open Source Folder com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.mnemonic=S com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.name=Open Output Folder com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.mnemonic=O -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.name=Assemble -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.mnemonic=A -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.name=Assemble and Run -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.mnemonic=R -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunWithCommand.name=Assemble and Run with... -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.name=Assembler Help -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.mnemonic=H -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Compile -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=C -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Compile and Run +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Build +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=B +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Build and Run com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.mnemonic=R -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Compile and Run with... -com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Compiler Help +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Build and Run with... +com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Language Help com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.mnemonic=H com.wudsn.ide.lng.editor.LanguageEditorContentAssistProposal_label=Content Assist com.wudsn.ide.lng.editor.LanguageEditorToggleCommentCommand.name=Toggle Comment diff --git a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_de.properties b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_de.properties index 49c71709..13c53811 100644 --- a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_de.properties +++ b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_de.properties @@ -8,34 +8,24 @@ com.wudsn.ide.lng.Target.MOS6502_DTV=6502 DTV com.wudsn.ide.lng.Target.MOS65816=65816 com.wudsn.ide.lng.Target.PASCAL=Pascal -com.wudsn.ide.lng.compiler.CompilerSourceFile.name=Quelltext-Datei +com.wudsn.ide.lng.compiler.LanguageSourceFile.name=Quelltext-Datei -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.label=Assembler -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.mnemonic=s -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Kompiler -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=K +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Sprache +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=S -com.wudsn.ide.lng.editor.LanguageEditorAssemblerToolbar.label=Assembler -com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Kompiler +com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Sprache com.wudsn.ide.lng.editor.LanguageEditorCommands.name=Quelltext Editor Befehle com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.name=Quell-Ordner öffnen com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.mnemonic=Q com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.name=Ausgabe-Ordner öffnen com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.mnemonic=A -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.name=Assemblieren -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.mnemonic=A -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.name=Assemblieren und Ausführen -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.mnemonic=f -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunWithCommand.name=Assemblieren und Ausführen mit... -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.name=Assembler Hilfe -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.mnemonic=H -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Kompilieren -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=K -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Kompilieren und Ausführen -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Kompilieren und Ausführen mit ... -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.mnemonic=A -com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Kompiler Hilfe +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Bauen +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=Bauen +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Bauen und Ausführen +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.mnemonic=f +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Bauen und Ausführen mit ... +com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Hilfe zur Sprache com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.mnemonic=H com.wudsn.ide.lng.editor.LanguageEditorContentAssistProposal_label=Vorschlagsassistent com.wudsn.ide.lng.editor.LanguageEditorToggleCommentCommand.name=Kommentar umschalten diff --git a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_pl.properties b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_pl.properties index 33b48df3..ac910641 100644 --- a/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_pl.properties +++ b/com.wudsn.ide.lng/OSGI-INF/l10n/bundle_pl.properties @@ -8,34 +8,24 @@ com.wudsn.ide.lng.Target.MOS6502_DTV=6502 DTV com.wudsn.ide.lng.Target.MOS65816=65816 com.wudsn.ide.lng.Target.PASCAL=Pascal -com.wudsn.ide.lng.compiler.CompilerSourceFile.name=Plik z kodem \u017Aród\u0142owym +com.wudsn.ide.lng.compiler.LanguageSourceFile.name=Plik z kodem \u017Aród\u0142owym -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.label=Asembler -com.wudsn.ide.lng.editor.LanguageEditorAssemblerMenu.mnemonic=s -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Kompilator -com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=K +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.label=Jezyk +com.wudsn.ide.lng.editor.LanguageEditorCompilerMenu.mnemonic=J -com.wudsn.ide.lng.editor.LanguageEditorAssemblerToolbar.label=Asembler -com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Kompilator +com.wudsn.ide.lng.editor.LanguageEditorCompilerToolbar.label=Jezyk com.wudsn.ide.lng.editor.LanguageEditorCommands.name=Polecenia edytora kodu \u017Aród\u0142owego com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.name=Otwórz folder \u017Aród\u0142owy com.wudsn.ide.lng.editor.LanguageEditorOpenSourceFolderCommand.mnemonic=f com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.name=Otwórz folder wyj\u015Bciowy com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.mnemonic=o -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.name=Z\u0142ó\u017C -com.wudsn.ide.lng.editor.LanguageEditorAssembleCommand.mnemonic=Z -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.name=Z\u0142ó\u017C i uruchomi\u0107 -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunCommand.mnemonic=u -com.wudsn.ide.lng.editor.LanguageEditorAssembleAndRunWithCommand.name=Z\u0142ó\u017C i uruchomi\u0107 z... -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.name=Pomoc asemblera -com.wudsn.ide.lng.editor.LanguageEditorAssemblerHelpCommand.mnemonic=P -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Skompiluj -com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=S -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Skompiluj i uruchom +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.name=Zbudowac +com.wudsn.ide.lng.editor.LanguageEditorCompileCommand.mnemonic=Z +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.name=Zbudowac i uruchom com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunCommand.mnemonic=u -com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Skompiluj i uruchom z... -com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Pomoc kompilatora +com.wudsn.ide.lng.editor.LanguageEditorCompileAndRunWithCommand.name=Zbudowac i uruchom z... +com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.name=Pomoc jezyk com.wudsn.ide.lng.editor.LanguageEditorCompilerHelpCommand.mnemonic=P com.wudsn.ide.lng.editor.LanguageEditorContentAssistProposal_label=Content Assist com.wudsn.ide.lng.editor.LanguageEditorToggleCommentCommand.name=Prze\u0142\u0105cz komentarz diff --git a/com.wudsn.ide.lng/help/ide-features.section.html b/com.wudsn.ide.lng/help/ide-features.section.html index 41a13f81..fbcef13d 100644 --- a/com.wudsn.ide.lng/help/ide-features.section.html +++ b/com.wudsn.ide.lng/help/ide-features.section.html @@ -107,10 +107,10 @@ target="_blank" rel="noopener noreferrer">Atari++ emulator
  • Adding support for new compilers and application is possible via Eclipse extension points
    IDE compiler extensions
  • -
  • Compile or compile and run with a single keystroke or via the menu
  • -
  • Toolbar button for "Compile and Run" which adapts to the hardware of the currently opened editor, for example, +
  • Build or build and run with a single keystroke or via the menu
  • +
  • Toolbar button for "Build and Run" which adapts to the hardware of the currently opened editor, for example, it will show a C64 icon when using the "ACME (C64)" editor
  • -
  • The toolbar button for "Compile and Run" offers a pulldown menu that allows running the output file with any of +
  • The toolbar button for "Build and Run" offers a pulldown menu that allows running the output file with any of the applications configured in the preferences. This way you can run the output file easily with different emulators without changing the preferences. That can be very helpful if one emulator shows different behavior than another or in case you have specified a build script as a user-defined application in the preferences @@ -607,7 +607,7 @@
  • Inline repeats like ":64" in MADS are no longer detected as labels
  • Hex Editor now correctly detects erroneous COM files in case the segment length exceeds the file length (by one)
  • -
  • Disk images (for Apple II) are now updated also if only "Compile" instead of "Compile and Run" is used +
  • Disk images (for Apple II) are now updated also if only "Build" instead of "Build and Run" is used
  • Apple Commander integration is now part of the installation, as it should have been with 1.6.3
  • The HELLO program generated for the auto-start disk images of Apple II now displays a title and uses diff --git a/com.wudsn.ide.lng/help/ide-installation.section.html b/com.wudsn.ide.lng/help/ide-installation.section.html index 40781fc5..67b7a34a 100644 --- a/com.wudsn.ide.lng/help/ide-installation.section.html +++ b/com.wudsn.ide.lng/help/ide-installation.section.html @@ -214,7 +214,7 @@ In case something is not correct or not working, please contact me.

          sta $d40a
          sta $d01a ;Change background color
          jmp loop

          run start ;Define run address
  • -
  • Select the entry "Compile and run" from the menu "Assembler" or press "SHIFT-CTRL-0".
  • +
  • Select the entry "Build and run" from the menu "Language" or press "SHIFT-CTRL-9".
  • Enjoy your famous first rainbow effect.
  • In case of problems, open the view "Problems" and the output of the view "Console" for details and post a message with the screenshots in the - + diff --git a/com.wudsn.ide.lng/plugin.xml b/com.wudsn.ide.lng/plugin.xml index 3124b23b..651b2692 100644 --- a/com.wudsn.ide.lng/plugin.xml +++ b/com.wudsn.ide.lng/plugin.xml @@ -4,6 +4,16 @@ + + + + @@ -62,26 +72,6 @@ id="com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand" name="%com.wudsn.ide.lng.editor.LanguageEditorOpenOutputFolderCommand.name"> - - - - - - - - - - + + @@ -156,9 +147,10 @@ - - + + @@ -168,9 +160,10 @@ - - + + @@ -180,9 +173,10 @@ - - + + @@ -192,9 +186,10 @@ - - + + @@ -204,9 +199,10 @@ - - + + @@ -216,9 +212,10 @@ - - + + @@ -228,9 +225,10 @@ - - + + @@ -284,50 +282,6 @@ point="org.eclipse.ui.menus"> - - - - - - - - - - - - - - - - - - - - - - - - + + null. * @return The text in sentence case, not empty and not null. */ - public static String getCompilerText(Language language) { + public static String getCompilerText(Language language) { switch (language) { case ASM: return Texts.LANGUAGE_ASSEMBLER_TEXT; @@ -64,14 +63,14 @@ public final class LanguageUtility { throw new IllegalArgumentException("Unknown language '" + language + "'."); } - + public static String getCompilerPreferencesText(Language language) { switch (language) { case ASM: - return Texts.LANGUAGES_TITLE_CASE+"/"+Texts.LANGUAGE_ASSEMBLER_TEXT_TITLE_CASE; + return Texts.LANGUAGES_TITLE_CASE + "/" + Texts.LANGUAGE_ASSEMBLER_TEXT_TITLE_CASE; case PAS: - return Texts.LANGUAGES_TITLE_CASE+"/"+Texts.LANGUAGE_COMPILER_TEXT_TITLE_CASE; + return Texts.LANGUAGES_TITLE_CASE + "/" + Texts.LANGUAGE_COMPILER_TEXT_TITLE_CASE; } throw new IllegalArgumentException("Unknown language '" + language + "'."); diff --git a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditor.java b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditor.java index c404e73c..c4adde4f 100644 --- a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditor.java +++ b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditor.java @@ -55,9 +55,8 @@ import com.wudsn.ide.base.common.Profiler; import com.wudsn.ide.base.common.ResourceBundleUtility; import com.wudsn.ide.base.hardware.Hardware; import com.wudsn.ide.lng.Language; -import com.wudsn.ide.lng.LanguagePlugin; -import com.wudsn.ide.lng.LanguageAnnotationValues; import com.wudsn.ide.lng.LanguageAnnotationValues.InvalidLanguageAnnotationException; +import com.wudsn.ide.lng.LanguagePlugin; import com.wudsn.ide.lng.Target; import com.wudsn.ide.lng.compiler.Compiler; import com.wudsn.ide.lng.compiler.CompilerDefinition; @@ -257,7 +256,6 @@ public abstract class LanguageEditor extends TextEditor { } } } - } @Override diff --git a/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorPropertyTester.java b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorPropertyTester.java new file mode 100644 index 00000000..c5765d8a --- /dev/null +++ b/com.wudsn.ide.lng/src/com/wudsn/ide/lng/editor/LanguageEditorPropertyTester.java @@ -0,0 +1,55 @@ +/** + * 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 org.eclipse.core.expressions.PropertyTester; +import org.eclipse.core.resources.IFile; +import org.eclipse.ui.editors.text.TextEditor; + +import com.wudsn.ide.lng.Language; + +public class LanguageEditorPropertyTester extends PropertyTester { + + public LanguageEditorPropertyTester() { + } + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + + if (property.equals("IsLanguageEditor")) { + + if (receiver instanceof LanguageEditor) { + return true; + } + if (receiver instanceof TextEditor) { + + var editor = (TextEditor) receiver; + var input = editor.getEditorInput(); + var file = input.getAdapter(IFile.class); + if (file != null && file.getName().toLowerCase().endsWith(".pas")) { + return true; + } + + } + } + return false; + } + +}