From 05b5a62f534d2ef768b8704acb5b24ea06f56ff9 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Fri, 30 Jan 2026 20:05:09 +0100 Subject: [PATCH 01/11] [#342] Rewrite GUI with FlatLaf - Added _JAVA_AWT_WM_NONREPARENTING --- application/build.gradle | 17 +- .../cmdline/AutomationCommand.java | 10 +- .../emustudio/application/cmdline/Runner.java | 8 +- .../emustudio/application/cmdline/Utils.java | 2 +- .../application/gui/ConstantSizeButton.java | 42 -- .../emustudio/application/gui/GuiUtils.java | 108 ----- .../application/gui/ToolbarToggleButton.java | 34 -- .../application/gui/dialogs/AboutDialog.java | 136 ++----- .../application/gui/dialogs/AutoDialog.java | 51 +-- .../gui/dialogs/BreakpointDialog.java | 63 +-- .../application/gui/dialogs/EditorPanel.java | 26 +- .../gui/dialogs/EmulatorPanel.java | 67 +-- .../gui/dialogs/LoadingDialog.java | 44 +- .../gui/dialogs/OpenComputerDialog.java | 154 ++++--- .../gui/dialogs/SchemaEditorDialog.java | 95 ++--- .../application/gui/dialogs/StudioFrame.java | 10 +- .../gui/dialogs/ViewComputerDialog.java | 165 ++------ .../application/gui/framework/EDialog.java | 56 +++ .../gui/framework/EFadingBorder.java | 74 ++++ .../application/gui/framework/EPanel.java | 94 +++++ .../gui/framework/EmuStudioUI.java | 385 ++++++++++++++++++ .../gui/{ => framework}/ExtendedDialogs.java | 2 +- .../gui/{ => framework}/GuiDialogsImpl.java | 2 +- .../gui/{ => framework}/NoGuiDialogsImpl.java | 2 +- .../application/gui/{ => framework}/P.java | 2 +- .../application/gui/schema/DrawingModel.java | 2 +- .../application/gui/schema/DrawingPanel.java | 2 +- .../application/gui/schema/Schema.java | 2 +- .../gui/schema/SchemaPreviewPanel.java | 2 +- .../gui/schema/elements/CompilerElement.java | 2 +- .../gui/schema/elements/ConnectionLine.java | 2 +- .../gui/schema/elements/CpuElement.java | 2 +- .../gui/schema/elements/DeviceElement.java | 2 +- .../gui/schema/elements/Element.java | 2 +- .../gui/schema/elements/MemoryElement.java | 2 +- .../gui/schema/mode/ModelingMode.java | 2 +- .../gui/schema/mode/MovingMode.java | 2 +- .../application/settings/AppSettings.java | 12 +- .../application/settings/PluginConfig.java | 2 +- .../settings/ComputerConfigTest.java | 2 +- .../settings/PluginConfigTest.java | 2 +- build.gradle | 5 +- 42 files changed, 921 insertions(+), 775 deletions(-) delete mode 100644 application/src/main/java/net/emustudio/application/gui/ConstantSizeButton.java delete mode 100644 application/src/main/java/net/emustudio/application/gui/GuiUtils.java delete mode 100644 application/src/main/java/net/emustudio/application/gui/ToolbarToggleButton.java create mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EDialog.java create mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java create mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EPanel.java create mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java rename application/src/main/java/net/emustudio/application/gui/{ => framework}/ExtendedDialogs.java (85%) rename application/src/main/java/net/emustudio/application/gui/{ => framework}/GuiDialogsImpl.java (99%) rename application/src/main/java/net/emustudio/application/gui/{ => framework}/NoGuiDialogsImpl.java (98%) rename application/src/main/java/net/emustudio/application/gui/{ => framework}/P.java (96%) diff --git a/application/build.gradle b/application/build.gradle index 996a29406..2ca4d413e 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -31,6 +31,10 @@ dependencies { extraLibs libs.logback extraLibs libs.slf4JApi extraLibs libs.migLayout + extraLibs libs.flatLaf + extraLibs(libs.flatLafExtras) { + exclude group: 'com.formdev', module: 'flatlaf' + } providedRuntime project(":plugins:compiler:as-8080") providedRuntime project(":plugins:compiler:as-ssem") @@ -68,7 +72,6 @@ dependencies { testImplementation libs.slf4JSimple } - application { applicationName = 'emuStudio' mainClassName = 'net.emustudio.application.cmdline.Runner' @@ -154,6 +157,18 @@ startScripts { def unixScriptFile = file getUnixScript() windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\logback.xml', '.') unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/logback.xml', '.') + + // --- NEW: Wayland/Sway fix for AWT (XWayland) --- + def unixText = unixScriptFile.text + if (!unixText.contains('_JAVA_AWT_WM_NONREPARENTING')) { + unixText = unixText.replaceFirst( + /(?m)^#!.*$/, + '#!/usr/bin/env sh\n\n' + + '# Workaround for Swing/AWT resizing under Sway/Wayland (XWayland)\n' + + 'export _JAVA_AWT_WM_NONREPARENTING=1\n' + ) + unixScriptFile.text = unixText + } } } diff --git a/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java b/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java index 96e2c69f1..e7b634522 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java +++ b/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java @@ -3,9 +3,10 @@ package net.emustudio.application.cmdline; import net.emustudio.application.emulation.Automation; -import net.emustudio.application.gui.ExtendedDialogs; -import net.emustudio.application.gui.GuiDialogsImpl; -import net.emustudio.application.gui.NoGuiDialogsImpl; +import net.emustudio.application.gui.framework.EmuStudioUI; +import net.emustudio.application.gui.framework.ExtendedDialogs; +import net.emustudio.application.gui.framework.GuiDialogsImpl; +import net.emustudio.application.gui.framework.NoGuiDialogsImpl; import net.emustudio.application.gui.debugtable.DebugTableModelImpl; import net.emustudio.application.gui.dialogs.LoadingDialog; import net.emustudio.application.settings.AppSettings; @@ -21,7 +22,6 @@ import java.util.Optional; import static net.emustudio.application.cmdline.Utils.*; -import static net.emustudio.application.gui.GuiUtils.setupLookAndFeel; @SuppressWarnings("unused") @CommandLine.Command(name = "automation", aliases = {"auto"}, description = "run emulation automation") @@ -48,7 +48,7 @@ public void run() { try { AppSettings appConfig = loadAppSettings(gui, true); if (gui) { - setupLookAndFeel(appConfig); + EmuStudioUI.initialize(appConfig); dialogs = new GuiDialogsImpl(); } diff --git a/application/src/main/java/net/emustudio/application/cmdline/Runner.java b/application/src/main/java/net/emustudio/application/cmdline/Runner.java index f9861854c..c2eb357c0 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/Runner.java +++ b/application/src/main/java/net/emustudio/application/cmdline/Runner.java @@ -3,8 +3,9 @@ package net.emustudio.application.cmdline; import net.emustudio.application.Resources; -import net.emustudio.application.gui.ExtendedDialogs; -import net.emustudio.application.gui.GuiDialogsImpl; +import net.emustudio.application.gui.framework.EmuStudioUI; +import net.emustudio.application.gui.framework.ExtendedDialogs; +import net.emustudio.application.gui.framework.GuiDialogsImpl; import net.emustudio.application.gui.debugtable.DebugTableModelImpl; import net.emustudio.application.gui.dialogs.LoadingDialog; import net.emustudio.application.settings.AppSettings; @@ -22,7 +23,6 @@ import java.util.concurrent.atomic.AtomicInteger; import static net.emustudio.application.cmdline.Utils.*; -import static net.emustudio.application.gui.GuiUtils.setupLookAndFeel; import static net.emustudio.application.settings.ConfigFiles.listConfigurationNames; @SuppressWarnings("unused") @@ -81,7 +81,7 @@ public void run() { if (!runsSomeCommand) { try { AppSettings appConfig = loadAppSettings(true, false); - setupLookAndFeel(appConfig); + EmuStudioUI.initialize(appConfig); ExtendedDialogs dialogs = new GuiDialogsImpl(); Optional computerConfigOpt = (exclusive != null) ? exclusive.loadConfiguration() : diff --git a/application/src/main/java/net/emustudio/application/cmdline/Utils.java b/application/src/main/java/net/emustudio/application/cmdline/Utils.java index 6406a4f7a..eb3888a0f 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/Utils.java +++ b/application/src/main/java/net/emustudio/application/cmdline/Utils.java @@ -3,7 +3,7 @@ package net.emustudio.application.cmdline; import net.emustudio.application.ApplicationApiImpl; -import net.emustudio.application.gui.ExtendedDialogs; +import net.emustudio.application.gui.framework.ExtendedDialogs; import net.emustudio.application.gui.debugtable.DebugTableModel; import net.emustudio.application.gui.debugtable.DebugTableModelImpl; import net.emustudio.application.gui.dialogs.LoadingDialog; diff --git a/application/src/main/java/net/emustudio/application/gui/ConstantSizeButton.java b/application/src/main/java/net/emustudio/application/gui/ConstantSizeButton.java deleted file mode 100644 index dcea67ee8..000000000 --- a/application/src/main/java/net/emustudio/application/gui/ConstantSizeButton.java +++ /dev/null @@ -1,42 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.util.function.Consumer; - -/** - * A button with the constant size. - */ -public class ConstantSizeButton extends JButton { - private final static int NB_WIDTH = 95; - private static int NB_HEIGHT = 30; - - public ConstantSizeButton(Action action) { - super(action); - - setHeight(); - Dimension d = getPreferredSize(); - d.setSize(NB_WIDTH, NB_HEIGHT); - this.setPreferredSize(d); - this.setSize(NB_WIDTH, NB_HEIGHT); - this.setMinimumSize(d); - this.setMaximumSize(d); - } - - public ConstantSizeButton(Consumer actionConsumer) { - this(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent actionEvent) { - actionConsumer.accept(actionEvent); - } - }); - } - - private void setHeight() { - FontMetrics metrics = this.getFontMetrics(getFont()); - NB_HEIGHT = metrics.getHeight() + 9; - } -} diff --git a/application/src/main/java/net/emustudio/application/gui/GuiUtils.java b/application/src/main/java/net/emustudio/application/gui/GuiUtils.java deleted file mode 100644 index 999d02494..000000000 --- a/application/src/main/java/net/emustudio/application/gui/GuiUtils.java +++ /dev/null @@ -1,108 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; - -import net.emustudio.application.settings.AppSettings; -import net.emustudio.plugins.device.mits88dcdd.gui.Constants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.swing.*; - -import java.net.URL; - -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; - -public class GuiUtils { - private static final Logger LOGGER = LoggerFactory.getLogger(GuiUtils.class); - - public static void setupLookAndFeel(AppSettings config) { - String lookAndFeel = config.getLookAndFeel().orElse("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); - - try { - UIManager.setLookAndFeel(lookAndFeel); - } catch (Exception ignored) { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (Exception e) { - LOGGER.warn("Unable to set system look and feel", e); - } - } - - UIManager.put("Button.background", UIManager.get("Panel.background")); - UIManager.put("Button.font", FONT_COMMON); - UIManager.put("Button.opaque", true); - - UIManager.put("CheckBox.font", FONT_COMMON); - UIManager.put("CheckBoxMenuItem.font", FONT_COMMON); - UIManager.put("CheckBoxMenuItem.acceleratorFont", FONT_COMMON); - - UIManager.put("ColorChooser.font", FONT_COMMON); - UIManager.put("ComboBox.font", FONT_COMMON); - - UIManager.put("TabbedPane.selected", UIManager.get("Panel.background")); - UIManager.put("TabbedPane.background", UIManager.get("Panel.background")); - UIManager.put("TabbedPane.contentAreaColor", UIManager.get("Panel.background")); - UIManager.put("TabbedPane.contentOpaque", true); - UIManager.put("TabbedPane.opaque", true); - UIManager.put("TabbedPane.tabsOpaque", true); - UIManager.put("TabbedPane.font", FONT_TITLE_BORDER); - UIManager.put("TabbedPane.smallFont", FONT_COMMON); - - UIManager.put("EditorPane.font", FONT_MONOSPACED); - UIManager.put("FormattedTextField.font", FONT_COMMON); - UIManager.put("IconButton.font", FONT_COMMON); - - UIManager.put("InternalFrame.optionDialogTitleFont", FONT_TITLE_BORDER); - UIManager.put("InternalFrame.paletteTitleFont", FONT_TITLE_BORDER); - UIManager.put("InternalFrame.titleFont", FONT_TITLE_BORDER); - UIManager.put("InternalFrame.opaque", true); - - UIManager.put("Label.font", FONT_COMMON); - UIManager.put("Label.opaque", true); - - UIManager.put("List.font", FONT_MONOSPACED); - UIManager.put("List.rendererUseUIBorder", true); - UIManager.put("List.focusCellHighlightBorder", null); - - UIManager.put("Menu.acceleratorFont", FONT_COMMON); - UIManager.put("Menu.font", FONT_COMMON); - - UIManager.put("MenuBar.font", FONT_COMMON); - - UIManager.put("MenuItem.acceleratorFont", FONT_COMMON); - UIManager.put("MenuItem.font", FONT_COMMON); - - UIManager.put("OptionPane.buttonFont", FONT_COMMON); - UIManager.put("OptionPane.font", FONT_COMMON); - UIManager.put("OptionPane.messageFont", FONT_COMMON); - - UIManager.put("Panel.font", FONT_COMMON); - UIManager.put("Panel.opaque", true); - - UIManager.put("PasswordField.font", FONT_COMMON); - UIManager.put("PopupMenu.font", FONT_COMMON); - UIManager.put("ProgressBar.font", FONT_COMMON); - UIManager.put("RadioButton.font", FONT_COMMON); - UIManager.put("RadioButtonMenuItem.acceleratorFont", FONT_COMMON); - UIManager.put("RadioButtonMenuItem.font", FONT_COMMON); - UIManager.put("ScrollPane.font", FONT_COMMON); - UIManager.put("Slider.font", FONT_COMMON); - UIManager.put("Spinner.font", FONT_COMMON); - - UIManager.put("Table.font", FONT_COMMON); - UIManager.put("Table.focusCellHighlightBorder", null); - - UIManager.put("TableHeader.font", FONT_TITLE_BORDER); - - UIManager.put("TextArea.font", FONT_MONOSPACED); - UIManager.put("TextField.font", FONT_MONOSPACED); - UIManager.put("TextPane.font", FONT_MONOSPACED); - UIManager.put("TitledBorder.font", FONT_TITLE_BORDER); - UIManager.put("ToggleButton.font", FONT_COMMON); - UIManager.put("ToolBar.font", FONT_COMMON); - UIManager.put("ToolTip.font", FONT_COMMON); - UIManager.put("Tree.font", FONT_COMMON); - UIManager.put("Viewport.font", FONT_COMMON); - } -} diff --git a/application/src/main/java/net/emustudio/application/gui/ToolbarToggleButton.java b/application/src/main/java/net/emustudio/application/gui/ToolbarToggleButton.java deleted file mode 100644 index 4a668261d..000000000 --- a/application/src/main/java/net/emustudio/application/gui/ToolbarToggleButton.java +++ /dev/null @@ -1,34 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; - -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.awt.event.ItemEvent; -import java.util.function.Consumer; - -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; - -public class ToolbarToggleButton extends JToggleButton { - - public ToolbarToggleButton(Consumer action, Consumer itemAction, String iconResource, - String tooltipText) { - - super(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent actionEvent) { - action.accept(actionEvent); - } - }); - setIcon(loadIcon(iconResource)); - setToolTipText(tooltipText); - - setFocusable(false); - addItemListener(itemAction::accept); - } - - public ToolbarToggleButton(Consumer action, String iconResource, String tooltipText) { - this(action, (ItemEvent itemAction) -> { - }, iconResource, tooltipText); - } -} diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java index 7a2fb088c..f328909aa 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java @@ -2,128 +2,58 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; + import javax.swing.*; import java.awt.*; -import java.awt.event.KeyEvent; import static net.emustudio.application.Resources.getCopyright; import static net.emustudio.application.Resources.getVersion; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; -public class AboutDialog extends JDialog { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/logo.png"; +public class AboutDialog extends EDialog { + public final static String LOGO_FILE = "/net/emustudio/application/gui/dialogs/logo.png"; public AboutDialog(JFrame parent) { - super(parent, true); - initComponents(); - setLocationRelativeTo(parent); + super(parent, "About emuStudio", true); + buildContent(); } - private void initComponents() { - JPanel panelLogo = new JPanel(); - JLabel lblLogo = new JLabel(loadIcon(ICON_FILE)); - JPanel panelInfo = new JPanel(); - JLabel lblName = new JLabel(); - JLabel lblCopyright = new JLabel(); - JLabel lblVersion = new JLabel(); - JLabel jLabel4 = new JLabel(); - JLabel jLabel1 = new JLabel(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("About emuStudio"); + @Override + protected JComponent initializeComponents() { + // Main panel with horizontal layout + EPanel mainPanel = new EPanel("insets 10", "[][grow]", "[]"); + // Logo panel + JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); lblLogo.setBackground(Color.WHITE); - lblLogo.setHorizontalAlignment(SwingConstants.CENTER); - lblLogo.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - lblLogo.setDoubleBuffered(true); - lblLogo.setFocusable(false); + lblLogo.setBorder(BorderFactory.createLineBorder(Color.BLACK)); lblLogo.setOpaque(true); - lblLogo.setHorizontalTextPosition(SwingConstants.CENTER); - lblLogo.setIconTextGap(0); - - GroupLayout panelLogoLayout = new GroupLayout(panelLogo); - panelLogo.setLayout(panelLogoLayout); - panelLogoLayout.setHorizontalGroup( - panelLogoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelLogoLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblLogo, GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)) - ); - panelLogoLayout.setVerticalGroup( - panelLogoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelLogoLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblLogo, GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE) - .addContainerGap()) - ); - lblName.setFont(lblName.getFont().deriveFont(lblName.getFont().getStyle() | java.awt.Font.BOLD)); - lblName.setText("emuStudio"); + // Info panel + EPanel infoPanel = new EPanel("insets 10", "[grow]", "[]"); + infoPanel.add(titleLabel("emuStudio"), "wrap, gapbottom 10"); + infoPanel.add(label(getCopyright()), "wrap, gapbottom 10"); - lblCopyright.setText(getCopyright()); + infoPanel.add(label("Version: "), "split 2"); + infoPanel.add(boldLabel(getVersion()), "wrap, gapbottom 10"); - lblVersion.setFont(lblVersion.getFont().deriveFont(lblVersion.getFont().getStyle() | java.awt.Font.BOLD)); - lblVersion.setText(getVersion()); - - jLabel4.setText("Version"); - jLabel1.setText( - "

This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it " + - "under certain conditions; for details see https://www.gnu.org/licenses/gpl-3.0.html.
" + - "For more information about emuStudio, see https://www.emustudio.net/.

"); - - GroupLayout panelInfoLayout = new GroupLayout(panelInfo); - panelInfo.setLayout(panelInfoLayout); - panelInfoLayout.setHorizontalGroup( - panelInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInfoLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblName) - .addGroup(panelInfoLayout.createSequentialGroup() - .addComponent(jLabel4) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblVersion)) - .addComponent(jLabel1, GroupLayout.PREFERRED_SIZE, 400, GroupLayout.PREFERRED_SIZE) - .addComponent(lblCopyright)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - panelInfoLayout.setVerticalGroup( - panelInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInfoLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblName) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(lblCopyright) - .addGap(18, 18, 18) - .addGroup(panelInfoLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblVersion) - .addComponent(jLabel4)) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel1, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - .addContainerGap()) + JLabel licenseInfo = new JLabel( + "

This program comes with ABSOLUTELY NO WARRANTY. " + + "This is free software, and you are welcome to redistribute it " + + "under certain conditions; for details see " + + "https://www.gnu.org/licenses/gpl-3.0.html.
" + + "For more information about emuStudio, see https://www.emustudio.net/.

" ); + licenseInfo.setPreferredSize(new Dimension(400, 80)); + infoPanel.add(licenseInfo, "wrap, grow"); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(panelLogo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(panelInfo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelInfo, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - .addComponent(panelLogo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); + // Combine panels + mainPanel.add(lblLogo, ""); + mainPanel.add(infoPanel, "grow"); - pack(); + return mainPanel; } } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java index 25e427042..6e00731ff 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java @@ -2,11 +2,12 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.cpu.CPU; import javax.swing.*; -import java.awt.event.ActionEvent; import java.util.Objects; import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; @@ -15,7 +16,7 @@ * This is the dialog form that displays when the emuStudio automatization * is running. */ -public class AutoDialog extends JDialog { +public class AutoDialog extends EDialog { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/motherboard-icon.gif"; private final VirtualComputer computer; @@ -23,47 +24,31 @@ public class AutoDialog extends JDialog { private final JButton btnStop = new JButton("Stop"); public AutoDialog(VirtualComputer computer) { + super((JFrame) null, "Automatic Emulation", false); this.computer = Objects.requireNonNull(computer); - - initComponents(); - setLocationRelativeTo(null); + setResizable(false); + setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); + buildContent(); } - private void initComponents() { - JLabel lblPerforming = new JLabel(loadIcon(ICON_FILE)); - setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); - setResizable(false); + @Override + protected JComponent initializeComponents() { + EPanel panel = EPanel.vertical(); + JLabel lblPerforming = new JLabel(loadIcon(ICON_FILE)); lblPerforming.setFont(lblPerforming.getFont().deriveFont(lblPerforming.getFont().getStyle() | java.awt.Font.BOLD)); lblPerforming.setText("Running automatic emulation, please wait..."); lblAction.setText("Initializing..."); - btnStop.addActionListener(this::btnStopActionPerformed); + btnStop.addActionListener(e -> computer.getCPU().ifPresent(CPU::stop)); btnStop.setEnabled(false); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblAction, GroupLayout.PREFERRED_SIZE, 338, GroupLayout.PREFERRED_SIZE) - .addComponent(lblPerforming) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(btnStop)) - ).addContainerGap()); - layout.setVerticalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblPerforming) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(lblAction) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnStop) - .addContainerGap()); + panel.add(lblPerforming, "wrap, gapbottom 10"); + panel.add(lblAction, "growx, wrap, gapbottom 10"); + panel.add(btnStop, "align right"); - pack(); + return panel; } /** @@ -78,8 +63,4 @@ public void setAction(String action, boolean enableStopButton) { lblAction.repaint(); btnStop.setEnabled(enableStopButton); } - - private void btnStopActionPerformed(ActionEvent e) { - computer.getCPU().ifPresent(CPU::stop); - } } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java index c1a9e3ec9..3a97b9d1f 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java @@ -2,19 +2,21 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.ConstantSizeButton; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.interaction.Dialogs; import javax.swing.*; -import java.awt.event.KeyEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; + /** * The breakpoint dialog - it asks user for the address where should be * set or unset the breakpoint. */ -public class BreakpointDialog extends JDialog { +public class BreakpointDialog extends EDialog { private final Dialogs dialogs; private int address = -1; // if adr == -1 then it means cancel @@ -22,13 +24,11 @@ public class BreakpointDialog extends JDialog { private JTextField txtAddress; public BreakpointDialog(JFrame parent, Dialogs dialogs) { - super(parent, true); + super(parent, "Set/unset breakpoint", true); this.dialogs = Objects.requireNonNull(dialogs); - - initComponents(); - setLocationRelativeTo(parent); - txtAddress.grabFocus(); + setResizable(false); + buildContent(); } public int getAddress() { @@ -39,43 +39,24 @@ public boolean isSet() { return set; } - private void initComponents() { - JLabel lblSetUnset = new JLabel(); - txtAddress = new JTextField(); - ConstantSizeButton btnSet = new ConstantSizeButton(this::btnSetActionPerformed); - ConstantSizeButton btnUnset = new ConstantSizeButton(this::btnUnsetActionPerformed); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("Set/unset breakpoint"); - setResizable(false); + @Override + protected JComponent initializeComponents() { + EPanel panel = EPanel.vertical(); - lblSetUnset.setText("Set/unset breakpoint to address:"); - txtAddress.setText("0"); + panel.add(label("Set/unset breakpoint to address:"), "wrap, gapbottom 5"); - btnSet.setText("Set"); - btnUnset.setText("Unset"); + txtAddress = textField("0"); + panel.add(txtAddress, "growx, wrap, gapbottom 10"); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); + EPanel buttonPanel = EPanel.buttonBar(); + buttonPanel.add(button("Unset", this::btnUnsetActionPerformed), ""); + buttonPanel.add(button("Set", this::btnSetActionPerformed), ""); - layout.setHorizontalGroup(layout.createSequentialGroup().addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblSetUnset).addComponent(txtAddress) - .addGroup(GroupLayout.Alignment.CENTER, layout.createSequentialGroup() - .addComponent(btnUnset).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnSet))).addContainerGap()); - layout.setVerticalGroup(layout.createSequentialGroup().addContainerGap().addComponent(lblSetUnset) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtAddress, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, - GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnUnset).addComponent(btnSet)).addContainerGap()); + panel.add(buttonPanel, "growx, span"); + SwingUtilities.invokeLater(() -> txtAddress.grabFocus()); - pack(); + return panel; } private boolean parseAddress() { @@ -89,14 +70,14 @@ private boolean parseAddress() { return true; } - private void btnSetActionPerformed(java.awt.event.ActionEvent evt) { + private void btnSetActionPerformed() { if (parseAddress()) { set = true; dispose(); } } - private void btnUnsetActionPerformed(java.awt.event.ActionEvent evt) { + private void btnUnsetActionPerformed() { if (parseAddress()) { set = false; dispose(); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java index d0a641bb4..621a80dfc 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java @@ -2,6 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.CompileAction; import net.emustudio.application.gui.actions.editor.*; import net.emustudio.application.gui.editor.Editor; @@ -70,32 +71,17 @@ public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualCompute splitSource.setBorder(null); splitSource.setOrientation(JSplitPane.VERTICAL_SPLIT); splitSource.setOneTouchExpandable(true); + splitSource.setResizeWeight(1.0); + EmuStudioUI.styleSplitPane(splitSource); splitSource.setLeftComponent(editor.getView()); splitSource.setRightComponent(compilerPane); JToolBar mainToolBar = setupMainToolbar(); mainToolBar.setRollover(true); - GroupLayout panelSourceLayout = new GroupLayout(this); - setLayout(panelSourceLayout); - panelSourceLayout.setHorizontalGroup( - panelSourceLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(mainToolBar) - .addGroup( - panelSourceLayout - .createSequentialGroup() - .addContainerGap() - .addComponent(splitSource) - .addContainerGap() - ) - ); - panelSourceLayout.setVerticalGroup( - panelSourceLayout - .createSequentialGroup() - .addComponent(mainToolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(splitSource, 10, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - .addContainerGap() - ); + setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[grow]", "[][grow]")); + add(mainToolBar, "growx, wrap"); + add(splitSource, "grow, gaptop 0"); } public void resizeComponents(int height) { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java index 8cb8f9ee6..a1e790f43 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java @@ -3,6 +3,8 @@ package net.emustudio.application.gui.dialogs; import net.emustudio.application.emulation.EmulationController; +import net.emustudio.application.gui.framework.EPanel; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.emulator.*; import net.emustudio.application.gui.debugtable.DebugTableImpl; import net.emustudio.application.gui.debugtable.DebugTableModel; @@ -65,6 +67,8 @@ public EmulatorPanel(JFrame parent, VirtualComputer computer, DebugTableModel de paneDebug.setViewportView(debugTable); paneDebug.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); debugTable.setFillsViewportHeight(true); + EmuStudioUI.styleScrollPane(paneDebug); + EmuStudioUI.styleTable(debugTable); paneDebug.addComponentListener(new ComponentAdapter() { @Override @@ -99,24 +103,11 @@ public void componentResized(ComponentEvent e) { panelPages = PagesPanel.create(debugTableModel, dialogs); - JPanel debuggerPanel = new JPanel(); + EPanel debuggerPanel = new EPanel("insets dialog", "[grow]", "[][grow][]"); debuggerPanel.setBorder(BorderFactory.createTitledBorder("Debugger")); - GroupLayout debuggerPanelLayout = new GroupLayout(debuggerPanel); - - debuggerPanelLayout.setAutoCreateGaps(true); - debuggerPanelLayout.setAutoCreateContainerGaps(true); - - debuggerPanel.setLayout(debuggerPanelLayout); - debuggerPanelLayout.setHorizontalGroup( - debuggerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(toolDebug) - .addComponent(paneDebug) - .addComponent(panelPages)); - debuggerPanelLayout.setVerticalGroup( - debuggerPanelLayout.createSequentialGroup() - .addComponent(toolDebug, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(paneDebug, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelPages, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); + debuggerPanel.add(toolDebug, "growx, wrap"); + debuggerPanel.add(paneDebug, "grow, wrap"); + debuggerPanel.add(panelPages, "growx"); this.showDeviceSettingsAction = new ShowDeviceSettingsAction(parent, computer, dialogs, lstDevices::getSelectedIndex); this.showDeviceGuiAction = new ShowDeviceGuiAction(parent, computer, dialogs, lstDevices::getSelectedIndex); @@ -150,60 +141,42 @@ public void mouseClicked(MouseEvent e) { } }); - JPanel peripheralPanel = new JPanel(); + EPanel peripheralPanel = new EPanel("insets dialog", "[grow]", "[grow][]"); peripheralPanel.setBorder(BorderFactory.createTitledBorder("Peripheral devices")); JScrollPane paneDevices = new JScrollPane(); paneDevices.setViewportView(lstDevices); + EmuStudioUI.styleList(lstDevices); + EmuStudioUI.styleScrollPane(paneDevices); JButton btnShowSettings = new JButton(showDeviceSettingsAction); JButton btnShowGUI = new JButton(showDeviceGuiAction); - GroupLayout peripheralPanelLayout = new GroupLayout(peripheralPanel); - peripheralPanel.setLayout(peripheralPanelLayout); - peripheralPanelLayout.setHorizontalGroup( - peripheralPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(paneDevices) - .addGroup(GroupLayout.Alignment.TRAILING, - peripheralPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(btnShowSettings) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnShowGUI) - .addContainerGap())); - peripheralPanelLayout.setVerticalGroup( - peripheralPanelLayout.createSequentialGroup() - .addComponent(paneDevices) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(peripheralPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnShowSettings) - .addComponent(btnShowGUI))); + peripheralPanel.add(paneDevices, "grow, wrap"); + peripheralPanel.add(btnShowSettings, "split 2, sizegroup btns, tag ok"); + peripheralPanel.add(btnShowGUI, "sizegroup btns, tag cancel"); splitPerDebug.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); splitPerDebug.setDividerLocation(500); splitPerDebug.setOrientation(JSplitPane.VERTICAL_SPLIT); splitPerDebug.setAutoscrolls(true); splitPerDebug.setContinuousLayout(true); + splitPerDebug.setResizeWeight(1.0); splitPerDebug.setTopComponent(debuggerPanel); splitPerDebug.setRightComponent(peripheralPanel); + EmuStudioUI.styleSplitPane(splitPerDebug); JSplitPane splitLeftRight = new JSplitPane(); splitLeftRight.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); splitLeftRight.setContinuousLayout(true); splitLeftRight.setFocusable(false); splitLeftRight.setDividerLocation(1.0); + splitLeftRight.setResizeWeight(1.0); splitLeftRight.setRightComponent(statusWindow); splitLeftRight.setLeftComponent(splitPerDebug); + EmuStudioUI.styleSplitPane(splitLeftRight); - GroupLayout panelEmulatorLayout = new GroupLayout(this); - setLayout(panelEmulatorLayout); - panelEmulatorLayout.setHorizontalGroup( - panelEmulatorLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(splitLeftRight)); - panelEmulatorLayout.setVerticalGroup( - panelEmulatorLayout.createSequentialGroup() - .addContainerGap() - .addComponent(splitLeftRight, 0, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - .addContainerGap()); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog, fill", "[grow]", "[grow]")); + add(splitLeftRight, "grow"); this.memoryListener = new MemoryContext.MemoryListener() { @Override diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java index 322594003..572650ede 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java @@ -2,48 +2,34 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; + import javax.swing.*; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; -public class LoadingDialog extends JDialog { +public class LoadingDialog extends EDialog { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/loading.gif"; public LoadingDialog() { - super(); - initComponents(); - setLocationRelativeTo(null); + super((JFrame) null, "emuStudio", false); + setResizable(false); + buildContent(); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { + EPanel panel = EPanel.vertical(); JLabel lblLoading = new JLabel(loadIcon(ICON_FILE)); - JLabel lblWarning = new JLabel(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setResizable(false); - setTitle("emuStudio"); - lblLoading.setFont(lblLoading.getFont().deriveFont(lblLoading.getFont().getStyle() | java.awt.Font.BOLD)); lblLoading.setText("Loading computer, please wait..."); - lblWarning.setText("If you see some errors, please see the log file."); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createSequentialGroup().addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblWarning, GroupLayout.PREFERRED_SIZE, 338, - GroupLayout.PREFERRED_SIZE).addComponent(lblLoading)) - .addContainerGap()); - layout.setVerticalGroup( - layout.createSequentialGroup().addContainerGap() - .addComponent(lblLoading).addPreferredGap(LayoutStyle - .ComponentPlacement.UNRELATED).addComponent(lblWarning) - .addContainerGap(lblWarning.getPreferredSize().height, - lblWarning.getPreferredSize().height).addContainerGap()); - - pack(); + panel.add(lblLoading, "wrap, gapbottom 10"); + panel.add(label("If you see some errors, please see the log file."), "wrap"); + + return panel; } } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java index 175afe24e..ce94181f7 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java @@ -2,6 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EFadingBorder; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.opencomputer.*; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.gui.schema.SchemaPreviewPanel; @@ -14,6 +17,7 @@ import javax.swing.*; import javax.swing.event.ListSelectionEvent; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -25,9 +29,12 @@ import java.util.Optional; import java.util.function.Consumer; +import static net.emustudio.application.Resources.getVersion; +import static net.emustudio.application.gui.dialogs.AboutDialog.LOGO_FILE; import static net.emustudio.application.settings.ConfigFiles.loadConfigurations; +import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; -public class OpenComputerDialog extends JDialog { +public class OpenComputerDialog extends EDialog { private final static Logger LOGGER = LoggerFactory.getLogger(OpenComputerDialog.class); private final ConfigurationsListModel configurationsModel; @@ -46,6 +53,7 @@ public class OpenComputerDialog extends JDialog { public OpenComputerDialog(AppSettings appSettings, Dialogs dialogs, Consumer selectComputer) { + super((java.awt.Frame) null, "emuStudio - Open virtual computer", true); this.configurationsModel = new ConfigurationsListModel(); this.appSettings = Objects.requireNonNull(appSettings); this.dialogs = Objects.requireNonNull(dialogs); @@ -58,11 +66,11 @@ public OpenComputerDialog(AppSettings appSettings, Dialogs dialogs, renameComputerAction = new RenameComputerAction(dialogs, this::update, lstConfig); saveSchemaAction = new SaveSchemaAction(preview); - setModal(true); - initComponents(); - setLocationRelativeTo(null); - lstConfig.setModel(configurationsModel); + + buildContent(); + setMinimumSize(new Dimension(700, 500)); + setSize(900, 650); } void update() { @@ -71,7 +79,8 @@ void update() { lstConfigValueChanged(null); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { JSplitPane splitConfig = new JSplitPane(); JPanel panelConfig = new JPanel(); JScrollPane configScrollPane = new JScrollPane(); @@ -81,22 +90,12 @@ private void initComponents() { ToolbarButton btnEdit = new ToolbarButton(editComputerAction); ToolbarButton btnRename = new ToolbarButton(renameComputerAction); ToolbarButton btnSaveSchemaImage = new ToolbarButton(saveSchemaAction); - JPanel panelPreview = new JPanel(); JScrollPane scrollPreview = new JScrollPane(); - JLabel jLabel1 = new JLabel(); JButton btnOpen = new JButton(); JButton btnClose = new JButton(); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("emuStudio - Open virtual computer"); - - splitConfig.setDividerLocation(300); - splitConfig.setMinimumSize(new java.awt.Dimension(50, 102)); - splitConfig.setPreferredSize(new java.awt.Dimension(400, 300)); - - panelConfig.setPreferredSize(new java.awt.Dimension(200, 300)); + splitConfig.setResizeWeight(0.3); + EmuStudioUI.styleSplitPane(splitConfig); lstConfig.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -107,9 +106,13 @@ public void mouseClicked(MouseEvent evt) { lstConfig.registerKeyboardAction(openComputerAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); configScrollPane.setViewportView(lstConfig); + configScrollPane.setBorder(BorderFactory.createLineBorder(UIManager.getColor("Component.borderColor"))); + EmuStudioUI.styleList(lstConfig); toolConfig.setFloatable(false); toolConfig.setRollover(true); + toolConfig.setOrientation(JToolBar.VERTICAL); + EmuStudioUI.styleToolbar(toolConfig); toolConfig.add(btnAdd); toolConfig.add(btnDelete); @@ -117,81 +120,72 @@ public void mouseClicked(MouseEvent evt) { toolConfig.add(btnRename); toolConfig.add(btnSaveSchemaImage); - GroupLayout panelConfigLayout = new GroupLayout(panelConfig); - panelConfig.setLayout(panelConfigLayout); - panelConfigLayout.setHorizontalGroup( - panelConfigLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(toolConfig, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE) - .addComponent(configScrollPane, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE) - ); - panelConfigLayout.setVerticalGroup( - panelConfigLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelConfigLayout.createSequentialGroup() - .addComponent(toolConfig, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(configScrollPane, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)) - ); - + panelConfig.setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[][grow]", "[grow]")); + panelConfig.add(toolConfig, "growy"); + panelConfig.add(configScrollPane, "grow"); splitConfig.setLeftComponent(panelConfig); scrollPreview.setViewportView(preview); + EmuStudioUI.styleScrollPane(scrollPreview); + splitConfig.setRightComponent(scrollPreview); + + // Create logo panel + JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); + lblLogo.setBackground(Color.WHITE); + lblLogo.setBorder(new EFadingBorder(10, Color.WHITE)); + lblLogo.setOpaque(false); + + JLabel lblIntroduction = new JLabel("

Welcome to emuStudio!

Version:" + getVersion() + ""); + lblIntroduction.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); - GroupLayout panelPreviewLayout = new GroupLayout(panelPreview); - panelPreview.setLayout(panelPreviewLayout); - panelPreviewLayout.setHorizontalGroup( - panelPreviewLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(scrollPreview, GroupLayout.DEFAULT_SIZE, 586, Short.MAX_VALUE) - ); - panelPreviewLayout.setVerticalGroup( - panelPreviewLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelPreviewLayout.createSequentialGroup() - .addComponent(scrollPreview, GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE)) - ); + JLabel lblPlease = new JLabel("Please select computer you wish to emulate:"); + lblPlease.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); - splitConfig.setRightComponent(panelPreview); + // Create a vertical panel for introduction and selection prompt + JPanel textPanel = new JPanel(new java.awt.BorderLayout()); + textPanel.add(lblIntroduction, java.awt.BorderLayout.NORTH); + textPanel.add(lblPlease, java.awt.BorderLayout.CENTER); - jLabel1.setText("Please select a virtual configuration that will be emulated:"); + // Create header panel with logo and introduction + JPanel headerPanel = new JPanel(new java.awt.BorderLayout(10, 0)); + headerPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15)); // Top, Left, Bottom, Right + headerPanel.add(lblLogo, java.awt.BorderLayout.WEST); + headerPanel.add(textPanel, java.awt.BorderLayout.CENTER); - btnOpen.setFont(btnOpen.getFont().deriveFont(btnOpen.getFont().getStyle() | java.awt.Font.BOLD)); btnOpen.setText("Open computer"); btnOpen.addActionListener(openComputerAction); + EmuStudioUI.makePrimaryButton(btnOpen); btnClose.setText("Exit"); btnClose.addActionListener(this::btnCloseActionPerformed); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(splitConfig, GroupLayout.DEFAULT_SIZE, 797, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(jLabel1) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnClose) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnOpen))) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel1) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(splitConfig, GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnOpen) - .addComponent(btnClose)) - .addContainerGap()) - ); - - pack(); + SwingUtilities.invokeLater(() -> splitConfig.setDividerLocation(270)); + + // --- Layout Construction --- + // We configure the clean structure directly on the content pane in the constructor, + // so here we return null or a dummy. + // But to respect the pattern, let's allow buildContent to assemble the pieces. + + // Center Panel: Header + SplitPane + JPanel centerPanel = new JPanel(new java.awt.BorderLayout()); + centerPanel.add(headerPanel, java.awt.BorderLayout.NORTH); + centerPanel.add(splitConfig, java.awt.BorderLayout.CENTER); + + // Buttons Panel: Bottom Right + JPanel buttonsPanel = new JPanel(new net.miginfocom.swing.MigLayout("insets 5 10 10 10, fillx", "[grow][][]", "[]")); + buttonsPanel.add(btnOpen, "align right, skip 1, split 2, tag ok, wmin 100"); + buttonsPanel.add(btnClose, "tag cancel, wmin 80"); + + // Root Container to hold both centers + JPanel root = new JPanel(new net.miginfocom.swing.MigLayout( + "fill, insets 0", + "[grow]", + "[grow]0[]" + )); + + root.add(centerPanel, "grow, push, wrap"); + root.add(buttonsPanel, "growx"); + return root; } private void lstConfigMouseClicked(MouseEvent evt) { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java index be4a5bfc1..b2105f91f 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java @@ -2,7 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.ToolbarToggleButton; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.schema.DrawingPanel; import net.emustudio.application.gui.schema.DrawingPanel.Tool; import net.emustudio.application.gui.schema.Schema; @@ -28,7 +30,7 @@ import static net.emustudio.application.settings.ConfigFiles.listPluginFiles; -public class SchemaEditorDialog extends JDialog implements KeyListener { +public class SchemaEditorDialog extends EDialog implements KeyListener { private final static Logger LOGGER = LoggerFactory.getLogger(SchemaEditorDialog.class); private final static PluginComboModel EMPTY_MODEL = new PluginComboModel(Collections.emptyList()); @@ -37,36 +39,28 @@ public class SchemaEditorDialog extends JDialog implements KeyListener { private DrawingPanel panel; private boolean buttonSelected = false; - private ToolbarToggleButton btnBidirection; - private ToolbarToggleButton btnCPU; - private ToolbarToggleButton btnCompiler; - private ToolbarToggleButton btnDelete; - private ToolbarToggleButton btnDevice; - private ToolbarToggleButton btnLine; - private ToolbarToggleButton btnRAM; - private ToolbarToggleButton btnUseGrid; + private JToggleButton btnBidirection; + private JToggleButton btnCPU; + private JToggleButton btnCompiler; + private JToggleButton btnDelete; + private JToggleButton btnDevice; + private JToggleButton btnLine; + private JToggleButton btnRAM; + private JToggleButton btnUseGrid; private JComboBox cmbPlugin; private ButtonGroup groupDraw; private JScrollPane scrollScheme; private JSlider sliderGridGap; public SchemaEditorDialog(JDialog parent, Schema schema, Dialogs dialogs) { - super(parent, true); + super(parent, "Computer editor [" + schema.getComputerConfig().getName() + "]", true); this.schema = Objects.requireNonNull(schema); this.dialogs = Objects.requireNonNull(dialogs); - initialize(); - setTitle("Computer editor [" + schema.getComputerConfig().getName() + "]"); - setLocationRelativeTo(parent); - } + buildContent(); - public Schema getSchema() { - return schema; - } - - private void initialize() { - initComponents(); + // Additional initialization after buildContent is called btnUseGrid.setSelected(schema.useSchemaGrid()); panel = new DrawingPanel(this.schema); scrollScheme.setViewportView(panel); @@ -106,7 +100,12 @@ public void keyPressed(KeyEvent e) { public void keyReleased(KeyEvent e) { } - private void initComponents() { + public Schema getSchema() { + return schema; + } + + @Override + protected JComponent initializeComponents() { groupDraw = new ButtonGroup(); JToolBar toolDraw = new JToolBar(); @@ -116,44 +115,44 @@ private void initComponents() { "Save & Close" ); JToolBar.Separator separator1 = new JToolBar.Separator(); - btnCompiler = new ToolbarToggleButton( + btnCompiler = EmuStudioUI.toolbarToggleButton( this::btnCompilerActionPerformed, this::btnCompilerItemStateChanged, "/net/emustudio/application/gui/dialogs/compile.png", "Set compiler" ); - btnCPU = new ToolbarToggleButton( + btnCPU = EmuStudioUI.toolbarToggleButton( this::btnCPUActionPerformed, this::btnCPUItemStateChanged, "/net/emustudio/application/gui/dialogs/cpu.gif", "Set CPU" ); - btnRAM = new ToolbarToggleButton( + btnRAM = EmuStudioUI.toolbarToggleButton( this::btnRAMActionPerformed, this::btnRAMItemStateChanged, "/net/emustudio/application/gui/dialogs/ram.gif", "Set operating memory" ); - btnDevice = new ToolbarToggleButton( + btnDevice = EmuStudioUI.toolbarToggleButton( this::btnDeviceActionPerformed, this::btnDeviceItemStateChanged, "/net/emustudio/application/gui/dialogs/device.png", "Add device" ); JToolBar.Separator separator2 = new JToolBar.Separator(); - btnLine = new ToolbarToggleButton( + btnLine = EmuStudioUI.toolbarToggleButton( this::btnLineActionPerformed, this::btnLineItemStateChanged, "/net/emustudio/application/gui/dialogs/connection.png", "Add connection" ); - btnBidirection = new ToolbarToggleButton( + btnBidirection = EmuStudioUI.toolbarToggleButton( this::btnBidirectionActionPerformed, "/net/emustudio/application/gui/dialogs/bidirection.gif", "Bidirectional connection" ); JToolBar.Separator separator3 = new JToolBar.Separator(); - btnDelete = new ToolbarToggleButton( + btnDelete = EmuStudioUI.toolbarToggleButton( this::btnDeleteActionPerformed, this::btnDeleteItemStateChanged, "/net/emustudio/application/gui/dialogs/edit-delete.png", @@ -162,7 +161,7 @@ private void initComponents() { JToolBar.Separator separator4 = new JToolBar.Separator(); cmbPlugin = new JComboBox<>(); JToolBar.Separator separator5 = new JToolBar.Separator(); - btnUseGrid = new ToolbarToggleButton( + btnUseGrid = EmuStudioUI.toolbarToggleButton( this::btnUseGridActionPerformed, "/net/emustudio/application/gui/dialogs/grid_memory.gif", "Set/unset using grid" @@ -170,10 +169,6 @@ private void initComponents() { scrollScheme = new JScrollPane(); sliderGridGap = new JSlider(); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setTitle("Virtual computer editor"); - setIconImages(null); - toolDraw.setFloatable(false); toolDraw.setRollover(true); @@ -215,34 +210,12 @@ private void initComponents() { sliderGridGap.setValue(30); sliderGridGap.addChangeListener(this::sliderGridGapStateChanged); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(toolDraw, GroupLayout.DEFAULT_SIZE, 641, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addComponent(scrollScheme, GroupLayout.DEFAULT_SIZE, 616, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(sliderGridGap, GroupLayout.PREFERRED_SIZE, 31, GroupLayout.PREFERRED_SIZE)))) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(toolDraw, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(sliderGridGap, GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE) - .addComponent(scrollScheme, GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE)) - .addContainerGap()) - ); + EPanel mainPanel = new EPanel("insets dialog", "[grow]", "[][grow]"); + mainPanel.add(toolDraw, "growx, wrap"); + mainPanel.add(scrollScheme, "grow"); + mainPanel.add(sliderGridGap, "w 31!"); - pack(); + return mainPanel; } private void sliderGridGapStateChanged(ChangeEvent evt) { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java index 047944b21..a64b398c4 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java @@ -131,14 +131,8 @@ public void windowClosing(WindowEvent evt) { JMenuBar mainMenu = setupMainMenu(); setJMenuBar(mainMenu); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, - GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, - GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)); + getContentPane().setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[grow]", "[grow]")); + getContentPane().add(tabbedPane, "grow"); } private JMenuBar setupMainMenu() { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java index 2576a68c1..35344067a 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java @@ -2,6 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EDialog; +import net.emustudio.application.gui.framework.EPanel; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.gui.schema.SchemaPreviewPanel; import net.emustudio.application.settings.AppSettings; @@ -14,13 +16,12 @@ import org.slf4j.LoggerFactory; import javax.swing.*; -import java.awt.event.KeyEvent; import java.util.List; import java.util.Objects; import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; -public class ViewComputerDialog extends JDialog { +public class ViewComputerDialog extends EDialog { private final static Logger LOGGER = LoggerFactory.getLogger(ViewComputerDialog.class); private final static String ICON_COMPILER = "/net/emustudio/application/gui/dialogs/compile.png"; private final static String ICON_CPU = "/net/emustudio/application/gui/dialogs/cpu.gif"; @@ -42,12 +43,12 @@ public class ViewComputerDialog extends JDialog { private JLabel lblVersion; private JScrollPane scrollPane; private JTextArea txtDescription; + public ViewComputerDialog(JFrame parent, VirtualComputer computer, AppSettings appSettings, Dialogs dialogs) { - super(parent, true); + super(parent, "Computer information preview", true); this.computer = Objects.requireNonNull(computer); - initComponents(); - setLocationRelativeTo(parent); + buildContent(); lblComputerName.setText(computer.getComputerConfig().getName()); @@ -112,17 +113,16 @@ private void setVisibleInfo(boolean visible) { txtDescription.setVisible(visible); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { ButtonGroup buttonGroup1 = new ButtonGroup(); lblComputerName = new JLabel(); JTabbedPane jTabbedPane1 = new JTabbedPane(); - JPanel panelTabInfo = new JPanel(); JToolBar jToolBar1 = new JToolBar(); btnCompiler = new JToggleButton(loadIcon(ICON_COMPILER)); JToggleButton btnCPU = new JToggleButton(loadIcon(ICON_CPU)); btnMemory = new JToggleButton(loadIcon(ICON_MEMORY)); btnDevice = new JToggleButton(loadIcon(ICON_DEVICE)); - JPanel jPanel2 = new JPanel(); lblSelectDevice = new JLabel(); cmbDevice = new JComboBox<>(); lblName = new JLabel(); @@ -132,16 +132,10 @@ private void initComponents() { JPanel panelDescription = new JPanel(); JScrollPane jScrollPane1 = new JScrollPane(); txtDescription = new JTextArea(); - JPanel jPanel1 = new JPanel(); JToolBar jToolBar2 = new JToolBar(); JButton btnSaveSchema = new JButton(loadIcon(ICON_SAVE)); scrollPane = new JScrollPane(); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("Computer information preview"); - lblComputerName.setFont(lblComputerName.getFont().deriveFont(lblComputerName.getFont().getStyle() | java.awt.Font.BOLD, lblComputerName.getFont().getSize() + 3)); lblComputerName.setHorizontalAlignment(SwingConstants.CENTER); lblComputerName.setText("computer_name"); @@ -194,85 +188,24 @@ private void initComponents() { txtDescription.setWrapStyleWord(true); jScrollPane1.setViewportView(txtDescription); - GroupLayout panelDescriptionLayout = new GroupLayout(panelDescription); - panelDescription.setLayout(panelDescriptionLayout); - panelDescriptionLayout.setHorizontalGroup( - panelDescriptionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDescriptionLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1) - .addContainerGap()) - ); - panelDescriptionLayout.setVerticalGroup( - panelDescriptionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDescriptionLayout.createSequentialGroup() - .addComponent(jScrollPane1) - .addContainerGap()) - ); + EPanel descriptionPanel = new EPanel("insets dialog", "[grow]", "[grow]"); + descriptionPanel.setBorder(BorderFactory.createTitledBorder("Short description")); + descriptionPanel.add(jScrollPane1, "grow"); - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelDescription, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(lblSelectDevice) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmbDevice, 0, 377, Short.MAX_VALUE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblName) - .addComponent(lblVersion) - .addComponent(lblCopyright) - .addComponent(lblFileName)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblSelectDevice) - .addComponent(cmbDevice, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addComponent(lblName) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblFileName) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(lblVersion) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblCopyright) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelDescription, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - ); + EPanel infoPanel = new EPanel("insets dialog", "[grow]", "[][][][][][][][grow]"); + infoPanel.add(lblSelectDevice, "split 2"); + infoPanel.add(cmbDevice, "grow, wrap"); + infoPanel.add(lblName, "wrap"); + infoPanel.add(lblFileName, "wrap"); + infoPanel.add(lblVersion, "wrap"); + infoPanel.add(lblCopyright, "wrap"); + infoPanel.add(descriptionPanel, "grow"); - GroupLayout panelTabInfoLayout = new GroupLayout(panelTabInfo); - panelTabInfo.setLayout(panelTabInfoLayout); - panelTabInfoLayout.setHorizontalGroup( - panelTabInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelTabInfoLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jToolBar1, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - ); - panelTabInfoLayout.setVerticalGroup( - panelTabInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelTabInfoLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelTabInfoLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jToolBar1, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); + EPanel tabInfoPanel = new EPanel("insets dialog", "[][grow]", "[grow]"); + tabInfoPanel.add(jToolBar1, "grow"); + tabInfoPanel.add(infoPanel, "grow"); - jTabbedPane1.addTab("Computer info", panelTabInfo); + jTabbedPane1.addTab("Computer info", tabInfoPanel); jToolBar2.setFloatable(false); jToolBar2.setOrientation(SwingConstants.VERTICAL); @@ -285,51 +218,17 @@ private void initComponents() { btnSaveSchema.addActionListener(this::btnSaveSchemaActionPerformed); jToolBar2.add(btnSaveSchema); - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jToolBar2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 505, Short.MAX_VALUE) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(scrollPane) - .addComponent(jToolBar2, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)) - .addContainerGap()) - ); + EPanel schemaPanel = new EPanel("insets dialog", "[][grow]", "[grow]"); + schemaPanel.add(jToolBar2, "grow"); + schemaPanel.add(scrollPane, "grow"); - jTabbedPane1.addTab("Abstract schema", jPanel1); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1) - .addComponent(lblComputerName, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(6, 6, 6) - .addComponent(lblComputerName) - .addGap(18, 18, 18) - .addComponent(jTabbedPane1) - .addContainerGap()) - ); + jTabbedPane1.addTab("Abstract schema", schemaPanel); + + EPanel mainPanel = new EPanel("insets dialog", "[grow]", "[][grow]"); + mainPanel.add(lblComputerName, "growx, wrap"); + mainPanel.add(jTabbedPane1, "grow"); - pack(); + return mainPanel; } private void btnCompilerActionPerformed(java.awt.event.ActionEvent evt) { diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java b/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java new file mode 100644 index 000000000..9c0391d1a --- /dev/null +++ b/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java @@ -0,0 +1,56 @@ +/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo + SPDX-License-Identifier: GPL-3.0-or-later */ +package net.emustudio.application.gui.framework; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyEvent; + +/** + * Simple base class for emuStudio dialogs with modern UI. + * Provides common functionality and styling. + * Subclasses must implement buildContent() and call showContent() at the end of their constructor. + */ +public abstract class EDialog extends JDialog { + + protected EDialog(Frame parent, String title, boolean modal) { + super(parent, title, modal); + initDialog(); + } + + protected EDialog(Dialog parent, String title, boolean modal) { + super(parent, title, modal); + initDialog(); + } + + private void initDialog() { + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + + // ESC key closes dialog + getRootPane().registerKeyboardAction( + e -> dispose(), + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW + ); + } + + /** + * Call this method at the end of your constructor to build and display the content. + * This calls buildContent(), adds it to the dialog, packs it, and centers it. + */ + protected void buildContent() { + JComponent content = initializeComponents(); + if (content != null) { + getContentPane().setLayout(new BorderLayout()); + getContentPane().add(content, BorderLayout.CENTER); + pack(); + } + setLocationRelativeTo(getParent()); + } + + /** + * Build the dialog content. Called by showContent(). + * This replaces the traditional initComponents() method. + */ + protected abstract JComponent initializeComponents(); +} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java b/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java new file mode 100644 index 000000000..4bf781faa --- /dev/null +++ b/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java @@ -0,0 +1,74 @@ +package net.emustudio.application.gui.framework; + +import javax.swing.border.Border; +import java.awt.*; +import java.awt.image.BufferedImage; + +/** + * Custom border that fades from inner white to outer transparent. + * Uses cached images for performance. + */ +public class EFadingBorder implements Border { + private final int thickness; + private final Color color; + private BufferedImage cachedBorder; + private int cachedWidth; + private int cachedHeight; + + public EFadingBorder(int thickness, Color color) { + this.thickness = thickness; + this.color = color; + } + + private void rebuildCache(int width, int height) { + if (cachedBorder != null && cachedWidth == width && cachedHeight == height) { + return; + } + cachedWidth = width; + cachedHeight = height; + cachedBorder = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + + int r = color.getRed(); + int g = color.getGreen(); + int b = color.getBlue(); + int rgb = (r << 16) | (g << 8) | b; + + // Draw all border pixels with distance-based alpha + for (int px = 0; px < width; px++) { + for (int py = 0; py < height; py++) { + int distFromRight = width - 1 - px; + int distFromBottom = height - 1 - py; + + // Calculate minimum distance to any edge + int minDist = Math.min( + Math.min(px, distFromRight), + Math.min(py, distFromBottom) + ); + + // Only draw pixels in the border thickness + if (minDist < thickness) { + // Alpha increases from 0 (outer edge) to 1 (inner edge) + float alpha = (float) minDist / thickness; + int argb = ((int) (alpha * 255) << 24) | rgb; + cachedBorder.setRGB(px, py, argb); + } + } + } + } + + @Override + public void paintBorder(java.awt.Component c, Graphics g, int x, int y, int width, int height) { + rebuildCache(width, height); + g.drawImage(cachedBorder, x, y, null); + } + + @Override + public Insets getBorderInsets(java.awt.Component c) { + return new Insets(thickness, thickness, thickness, thickness); + } + + @Override + public boolean isBorderOpaque() { + return false; + } +} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java b/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java new file mode 100644 index 000000000..a1c30f772 --- /dev/null +++ b/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java @@ -0,0 +1,94 @@ +/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo + SPDX-License-Identifier: GPL-3.0-or-later */ +package net.emustudio.application.gui.framework; + +import net.miginfocom.swing.MigLayout; + +import javax.swing.*; +import java.awt.*; + +/** + * Simplified panel builder for emuStudio with fluent API. + * Hides MigLayout complexity behind simple methods. + */ +public class EPanel extends JPanel { + + public EPanel() { + super(new MigLayout("insets dialog", "[grow]", "[]")); + } + + public EPanel(String layoutConstraints) { + super(new MigLayout(layoutConstraints)); + } + + public EPanel(String layoutConstraints, String colConstraints, String rowConstraints) { + super(new MigLayout(layoutConstraints, colConstraints, rowConstraints)); + } + + public EPanel add(Component comp, String constraints) { + super.add(comp, constraints); + return this; + } + + public EPanel addRow(Component... components) { + for (Component comp : components) { + super.add(comp); + } + super.add(new JLabel(), "wrap"); // Force new row + return this; + } + + public EPanel addGrowRow(Component comp) { + super.add(comp, "growx, wrap"); + return this; + } + + public EPanel addSpan(Component comp) { + super.add(comp, "span, wrap"); + return this; + } + + public EPanel addSeparator() { + super.add(new JSeparator(), "growx, span, wrap"); + return this; + } + + public EPanel addSeparator(String title) { + JLabel label = new JLabel(title); + label.setFont(label.getFont().deriveFont(Font.BOLD)); + + EPanel panel = new EPanel("insets 0", "[grow]", "[]"); + panel.add(label, "split 2, span"); + panel.add(new JSeparator(), "growx, gapleft rel"); + + super.add(panel, "growx, span, wrap"); + return this; + } + + public EPanel addGap() { + super.add(new JLabel(), "wrap, height 10!"); + return this; + } + + // Static factory methods + + public static EPanel vertical() { + return new EPanel("insets dialog, fillx", "[grow]", "[]"); + } + + public static EPanel horizontal() { + return new EPanel("insets dialog, filly", "[]", "[grow]"); + } + + public static EPanel grid(int cols) { + StringBuilder colSpec = new StringBuilder(); + for (int i = 0; i < cols; i++) { + colSpec.append("[grow]"); + } + return new EPanel("insets dialog", colSpec.toString(), "[]"); + } + + public static EPanel buttonBar() { + return new EPanel("insets dialog", "[grow, right]", "[]"); + } +} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java new file mode 100644 index 000000000..5cb831179 --- /dev/null +++ b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java @@ -0,0 +1,385 @@ +/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo + SPDX-License-Identifier: GPL-3.0-or-later */ +package net.emustudio.application.gui.framework; + +import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatIntelliJLaf; +import com.formdev.flatlaf.FlatLightLaf; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ItemEvent; +import java.util.function.Consumer; + +import net.emustudio.application.settings.AppSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; + +/** + * Central UI configuration for emuStudio. + * Provides theme management and common UI utilities. + */ +public class EmuStudioUI { + private static final Logger LOGGER = LoggerFactory.getLogger(EmuStudioUI.class); + + private static AppSettings.Theme currentTheme = AppSettings.Theme.INTELLIJ; + + public static void initialize(AppSettings config) { + AppSettings.Theme theme = config.getTheme().orElse(AppSettings.Theme.INTELLIJ); + try { + switch (theme) { + case LIGHT: + FlatLightLaf.setup(); + break; + case DARK: + FlatDarkLaf.setup(); + break; + case INTELLIJ: + default: + FlatIntelliJLaf.setup(); + break; + } + currentTheme = theme; + customize(); + } catch (Exception e) { + LOGGER.error("Failed to initialize FlatLaf: " + e.getMessage(), e); + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception ex) { + LOGGER.error("Failed to set look and feel after FlatLaf failure: " + e.getMessage(), e); + } + } + } + + private static void customize() { + // Additional UI tweaks + UIManager.put("Button.arc", 8); + UIManager.put("Component.arc", 8); + UIManager.put("TextComponent.arc", 8); + + // Keep font settings for compatibility + UIManager.put("Button.font", FONT_COMMON); +// UIManager.put("Button.opaque", true); + + UIManager.put("CheckBox.font", FONT_COMMON); + UIManager.put("CheckBoxMenuItem.font", FONT_COMMON); + UIManager.put("CheckBoxMenuItem.acceleratorFont", FONT_COMMON); + + UIManager.put("ColorChooser.font", FONT_COMMON); + UIManager.put("ComboBox.font", FONT_COMMON); + +// UIManager.put("TabbedPane.selected", UIManager.get("Panel.background")); +// UIManager.put("TabbedPane.background", UIManager.get("Panel.background")); +// UIManager.put("TabbedPane.contentAreaColor", UIManager.get("Panel.background")); +// UIManager.put("TabbedPane.contentOpaque", true); +// UIManager.put("TabbedPane.opaque", true); +// UIManager.put("TabbedPane.tabsOpaque", true); +// UIManager.put("TabbedPane.font", FONT_TITLE_BORDER); +// UIManager.put("TabbedPane.smallFont", FONT_COMMON); + + UIManager.put("EditorPane.font", FONT_MONOSPACED); + UIManager.put("FormattedTextField.font", FONT_COMMON); + UIManager.put("IconButton.font", FONT_COMMON); + + UIManager.put("InternalFrame.optionDialogTitleFont", FONT_TITLE_BORDER); + UIManager.put("InternalFrame.paletteTitleFont", FONT_TITLE_BORDER); + UIManager.put("InternalFrame.titleFont", FONT_TITLE_BORDER); + // UIManager.put("InternalFrame.opaque", true); + + UIManager.put("Label.font", FONT_COMMON); + // UIManager.put("Label.opaque", true); + + UIManager.put("List.font", FONT_MONOSPACED); +// UIManager.put("List.rendererUseUIBorder", true); + // UIManager.put("List.focusCellHighlightBorder", null); + + UIManager.put("Menu.acceleratorFont", FONT_COMMON); + UIManager.put("Menu.font", FONT_COMMON); + + UIManager.put("MenuBar.font", FONT_COMMON); + + UIManager.put("MenuItem.acceleratorFont", FONT_COMMON); + UIManager.put("MenuItem.font", FONT_COMMON); + + UIManager.put("OptionPane.buttonFont", FONT_COMMON); + UIManager.put("OptionPane.font", FONT_COMMON); + UIManager.put("OptionPane.messageFont", FONT_COMMON); + + UIManager.put("Panel.font", FONT_COMMON); + //UIManager.put("Panel.opaque", true); + + UIManager.put("PasswordField.font", FONT_COMMON); + UIManager.put("PopupMenu.font", FONT_COMMON); + UIManager.put("ProgressBar.font", FONT_COMMON); + UIManager.put("RadioButton.font", FONT_COMMON); + UIManager.put("RadioButtonMenuItem.acceleratorFont", FONT_COMMON); + UIManager.put("RadioButtonMenuItem.font", FONT_COMMON); + UIManager.put("ScrollPane.font", FONT_COMMON); + UIManager.put("Slider.font", FONT_COMMON); + UIManager.put("Spinner.font", FONT_COMMON); + + UIManager.put("Table.font", FONT_COMMON); +// UIManager.put("Table.focusCellHighlightBorder", null); + + UIManager.put("TableHeader.font", FONT_TITLE_BORDER); + + UIManager.put("TextArea.font", FONT_MONOSPACED); + UIManager.put("TextField.font", FONT_MONOSPACED); + UIManager.put("TextPane.font", FONT_MONOSPACED); + UIManager.put("TitledBorder.font", FONT_TITLE_BORDER); + UIManager.put("ToggleButton.font", FONT_COMMON); + UIManager.put("ToolBar.font", FONT_COMMON); + UIManager.put("ToolTip.font", FONT_COMMON); + UIManager.put("Tree.font", FONT_COMMON); + UIManager.put("Viewport.font", FONT_COMMON); + } + + + public static void setTheme(AppSettings config) { + initialize(config); + + // Update all windows + for (Window window : Window.getWindows()) { + SwingUtilities.updateComponentTreeUI(window); + } + } + + public static AppSettings.Theme getCurrentTheme() { + return currentTheme; + } + + // Common UI factory methods + + public static JButton button(String text) { + return new JButton(text); + } + + public static JButton button(String text, Runnable action) { + JButton btn = new JButton(text); + btn.addActionListener(e -> action.run()); + return btn; + } + + /** + * Toolbar toggle button - a JToggleButton ready to add to a toolbar. + * Properties: + * - button text is hidden + * - tooltip is set from Action.getValue(SHORT_DESCRIPTION) by default + * - is not focusable + * - icon is set from icon resource path + * - button action is external + * + * @param action button action + * @param itemAction item state change action + * @param iconResource icon resource path + * @param tooltipText tooltip text + * @return the toolbar toggle button + */ + public static JToggleButton toolbarToggleButton(Consumer action, Consumer itemAction, + String iconResource, String tooltipText) { + JToggleButton button = new JToggleButton(new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + action.accept(e); + } + }); + button.setIcon(loadIcon(iconResource)); + button.setToolTipText(tooltipText); + button.setFocusable(false); + button.addItemListener(itemAction::accept); + return button; + } + + public static JToggleButton toolbarToggleButton(Consumer action, String iconResource, + String tooltipText) { + return toolbarToggleButton(action, e -> { + }, iconResource, tooltipText); + } + + public static JLabel label(String text) { + return new JLabel(text); + } + + public static JLabel boldLabel(String text) { + JLabel label = new JLabel(text); + label.setFont(label.getFont().deriveFont(Font.BOLD)); + return label; + } + + public static JLabel titleLabel(String text) { + JLabel label = new JLabel(text); + Font font = label.getFont(); + label.setFont(font.deriveFont(Font.BOLD, font.getSize() + 2)); + return label; + } + + public static JTextField textField() { + return new JTextField(20); + } + + public static JTextField textField(String text) { + return new JTextField(text, 20); + } + + public static JTextArea textArea(int rows, int cols) { + JTextArea area = new JTextArea(rows, cols); + area.setLineWrap(true); + area.setWrapStyleWord(true); + return area; + } + + public static JScrollPane scrollPane(Component view) { + return new JScrollPane(view); + } + + /** + * Apply modern FlatLaf styling to a toolbar. + */ + public static void styleToolbar(JToolBar toolbar) { + toolbar.setFloatable(false); + toolbar.setRollover(true); + toolbar.setBorderPainted(false); + } + + /** + * Apply modern styling to a button to make it a primary action button. + */ + public static void makePrimaryButton(JButton button) { + button.putClientProperty("JButton.buttonType", "borderless"); + button.setFont(button.getFont().deriveFont(Font.BOLD)); + } + + /** + * Apply modern styling to a split pane. + */ + public static void styleSplitPane(JSplitPane splitPane) { + splitPane.setBorder(null); + splitPane.setOneTouchExpandable(true); + splitPane.setContinuousLayout(true); + } + + /** + * Apply modern styling to a scroll pane. + */ + public static void styleScrollPane(JScrollPane scrollPane) { + scrollPane.setBorder(BorderFactory.createEmptyBorder()); + } + + /** + * Apply modern styled border to a panel. + */ + public static void stylePanel(JPanel panel, String title) { + if (title != null && !title.isEmpty()) { + panel.setBorder(BorderFactory.createTitledBorder(title)); + } + } + + /** + * Make a button flat/borderless for toolbar use. + */ + public static void makeFlatButton(AbstractButton button) { + button.putClientProperty("JButton.buttonType", "toolBarButton"); + button.setFocusable(false); + } + + /** + * Apply rounded corners to a component. + */ + public static void applyRoundedCorners(JComponent component) { + component.putClientProperty("JComponent.roundRect", true); + } + + /** + * Make a table modern looking. + */ + public static void styleTable(JTable table) { + table.setShowGrid(false); + table.setIntercellSpacing(new Dimension(0, 0)); + table.setRowHeight(table.getRowHeight() + 4); + } + + /** + * Style a list for modern appearance. + */ + public static void styleList(JList list) { + list.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + } + + public static Frame findOwnerFrame() { + for (Frame f : Frame.getFrames()) { + if (f != null && f.isDisplayable()) return f; + } + return null; // fallback + } + + + public static void enableWaylandXwaylandLayoutSync(JComponent root, JDialog dialog) { + // Bežíme len na Waylande + if (!"wayland".equalsIgnoreCase(System.getenv("XDG_SESSION_TYPE"))) { + return; + } + LOGGER.info("Enabling Wayland-Xwayland layout sync for dialog titled '{}'", dialog.getTitle()); + + final String title = dialog.getTitle(); + final Dimension[] lastClient = { null }; + + new Timer(200, e -> { + if (!dialog.isDisplayable() || !dialog.isShowing() || root == null) { + return; + } + + Dimension client = readXwininfoClientSizeByTitle(title); + if (client == null || client.equals(lastClient[0])) { + return; + } + lastClient[0] = client; + + System.out.println("Setting dialog internal size to: " + client.width + "x" + client.height); + + dialog.setBounds(0,0, client.width, client.height); + System.out.println(" Dialog bounds set to: " + dialog.getBounds() + " , content pane: " + dialog.getContentPane().getBounds()); + // dialog.getContentPane().setBounds(0,0,client.width, client.height); + // dialog.getContentPane().revalidate(); + // dialog.getContentPane().doLayout(); + // dialog.repaint(); + + // Important: We do not change window size, only internal root component, + // so Swing layout can count with real space. + // root.setBounds(0, 0, client.width, client.height); + + // re-layout + // root.doLayout(); + // root.revalidate(); + // root.repaint(); + }).start(); + } + + private static Dimension readXwininfoClientSizeByTitle(String title) { + try { + Process p = new ProcessBuilder("xwininfo", "-name", title).start(); + String out = new String(p.getInputStream().readAllBytes()); + p.waitFor(); + + int w = -1, h = -1; + for (String line : out.split("\n")) { + line = line.trim(); + if (line.startsWith("Width:")) { + w = Integer.parseInt(line.substring("Width:".length()).trim()); + } else if (line.startsWith("Height:")) { + h = Integer.parseInt(line.substring("Height:".length()).trim()); + } + } + + if (w > 0 && h > 0) { + return new Dimension(w, h); + } + } catch (Exception ignore) { + // xwininfo can fail for a while until window doesn't exist / is not mapped + } + return null; + } +} diff --git a/application/src/main/java/net/emustudio/application/gui/ExtendedDialogs.java b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java similarity index 85% rename from application/src/main/java/net/emustudio/application/gui/ExtendedDialogs.java rename to application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java index 795db6678..c395cb7b5 100644 --- a/application/src/main/java/net/emustudio/application/gui/ExtendedDialogs.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java @@ -1,6 +1,6 @@ /* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; +package net.emustudio.application.gui.framework; import net.emustudio.emulib.runtime.interaction.Dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/GuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java similarity index 99% rename from application/src/main/java/net/emustudio/application/gui/GuiDialogsImpl.java rename to application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java index e88a06e39..945af8c21 100644 --- a/application/src/main/java/net/emustudio/application/gui/GuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java @@ -1,6 +1,6 @@ /* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; +package net.emustudio.application.gui.framework; import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; diff --git a/application/src/main/java/net/emustudio/application/gui/NoGuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java similarity index 98% rename from application/src/main/java/net/emustudio/application/gui/NoGuiDialogsImpl.java rename to application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java index 9acefdbee..d6c066f06 100644 --- a/application/src/main/java/net/emustudio/application/gui/NoGuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java @@ -1,6 +1,6 @@ /* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; +package net.emustudio.application.gui.framework; import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; import org.slf4j.Logger; diff --git a/application/src/main/java/net/emustudio/application/gui/P.java b/application/src/main/java/net/emustudio/application/gui/framework/P.java similarity index 96% rename from application/src/main/java/net/emustudio/application/gui/P.java rename to application/src/main/java/net/emustudio/application/gui/framework/P.java index c77a02d00..8fc180ea6 100644 --- a/application/src/main/java/net/emustudio/application/gui/P.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/P.java @@ -1,6 +1,6 @@ /* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui; +package net.emustudio.application.gui.framework; import net.emustudio.application.settings.SchemaPoint; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java b/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java index 7e774438f..8b56e7799 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.elements.ConnectionLine; import net.emustudio.application.gui.schema.elements.Element; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java index 8e77c37e6..278460f81 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java @@ -19,7 +19,7 @@ */ package net.emustudio.application.gui.schema; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.elements.ConnectionLine; import net.emustudio.application.gui.schema.elements.Element; import net.emustudio.application.gui.schema.mode.ModeSelector; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/Schema.java b/application/src/main/java/net/emustudio/application/gui/schema/Schema.java index 84dad5a6b..96de09844 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/Schema.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/Schema.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.elements.*; import net.emustudio.application.settings.AppSettings; import net.emustudio.application.settings.ComputerConfig; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java index f78062248..f07fdd443 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.elements.ConnectionLine; import net.emustudio.application.gui.schema.elements.Element; import net.emustudio.emulib.runtime.interaction.Dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java index 4cee10b50..9414a85fc 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.schema.elements; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.settings.PluginConfig; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java index b21985d65..d4cbef33a 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.settings.PluginConnection; import net.emustudio.application.settings.SchemaPoint; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java index 19f3091f0..ca8c68212 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.schema.elements; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.settings.PluginConfig; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java index 036a7390a..f4965c54e 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.schema.elements; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.settings.PluginConfig; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java index 316bca5fd..83b1d50dc 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.schema.elements; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.settings.PluginConfig; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java index cdec82f7a..b63001601 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.schema.elements; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.settings.PluginConfig; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java index 059e79029..36d763a3d 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.DrawingModel; import net.emustudio.application.gui.schema.DrawingPanel; import net.emustudio.application.gui.schema.elements.ConnectionLine; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java index d27072068..9aa1754ae 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.DrawingModel; import net.emustudio.application.gui.schema.DrawingPanel; import net.emustudio.application.gui.schema.elements.ConnectionLine; diff --git a/application/src/main/java/net/emustudio/application/settings/AppSettings.java b/application/src/main/java/net/emustudio/application/settings/AppSettings.java index 6c31533a3..73a6be8df 100644 --- a/application/src/main/java/net/emustudio/application/settings/AppSettings.java +++ b/application/src/main/java/net/emustudio/application/settings/AppSettings.java @@ -17,13 +17,19 @@ public class AppSettings extends BasicSettingsImpl { public final static String KEY_AUTO = EMUSTUDIO_AUTO.substring(EMUSTUDIO_PREFIX.length()); public final static String KEY_USE_SCHEMA_GRID = "useSchemaGrid"; public final static String KEY_SCHEMA_GRID_GAP = "schemaGridGap"; - public final static String KEY_LOOK_AND_FEEL = "lookAndFeel"; + public final static String KEY_THEME = "theme"; private final static int DEFAULT_GRID_GAP = 20; public transient final boolean emuStudioAuto; public transient final boolean noGUI; + public enum Theme { + LIGHT, + DARK, + INTELLIJ + } + public AppSettings(Config config, boolean nogui, boolean auto) { super(config, System.out::println); this.emuStudioAuto = auto; @@ -57,8 +63,8 @@ public void setSchemaGridGap(int value) { setInt(KEY_SCHEMA_GRID_GAP, value); } - public Optional getLookAndFeel() { - return getString(KEY_LOOK_AND_FEEL); + public Optional getTheme() { + return getString(KEY_THEME).map(Theme::valueOf); } @Override diff --git a/application/src/main/java/net/emustudio/application/settings/PluginConfig.java b/application/src/main/java/net/emustudio/application/settings/PluginConfig.java index c919a0018..2e8aca766 100644 --- a/application/src/main/java/net/emustudio/application/settings/PluginConfig.java +++ b/application/src/main/java/net/emustudio/application/settings/PluginConfig.java @@ -3,7 +3,7 @@ package net.emustudio.application.settings; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; import java.nio.file.Path; diff --git a/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java b/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java index 6f9b3774d..595c6cdf7 100644 --- a/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java +++ b/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java @@ -3,7 +3,7 @@ package net.emustudio.application.settings; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; import org.junit.After; import org.junit.Before; diff --git a/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java b/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java index eaad67c1b..9f08afb6d 100644 --- a/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java +++ b/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java @@ -3,7 +3,7 @@ package net.emustudio.application.settings; import com.electronwill.nightconfig.core.Config; -import net.emustudio.application.gui.P; +import net.emustudio.application.gui.framework.P; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; import org.junit.Test; diff --git a/build.gradle b/build.gradle index c987db4a9..27aef1c1b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,8 @@ import java.text.SimpleDateFormat apply from: 'test_report.gradle' ext.versions = [ - slf4j: '2.0.17' + slf4j: '2.0.17', + flatlaf: '3.5.2' ] ext.libs = [ @@ -13,6 +14,8 @@ ext.libs = [ cpuTestSuite : "net.emustudio:cpu-testsuite_12.1:1.2.0-SNAPSHOT", migLayout : "com.miglayout:miglayout-swing:11.1", + flatLaf : "com.formdev:flatlaf:${versions.flatlaf}:no-natives", + flatLafExtras : "com.formdev:flatlaf-extras:${versions.flatlaf}", jcipAnnotations : "net.jcip:jcip-annotations:1.0", antlr : "org.antlr:antlr4:4.13.2", From f37c9dce17f6b63f072f3f01cdb69f8f15d4fd4c Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 1 Feb 2026 08:21:36 +0100 Subject: [PATCH 02/11] [#342] Fix reporting preferred size of SchemaPreviewPanel Enables using scrollbars --- .../application/gui/schema/SchemaPreviewPanel.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java index f07fdd443..fa3de8033 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java @@ -58,6 +58,14 @@ public void setSchema(Schema schema) { panelResized = false; } + @Override + public Dimension getPreferredSize() { + if (panelResized && schemaWidth > 0 && schemaHeight > 0) { + return new Dimension(schemaWidth, schemaHeight); + } + return super.getPreferredSize(); + } + @Override public void paintComponent(Graphics g) { super.paintComponent(g); From eb560f48748d5da3731710132740298b7fa52ad8 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 1 Feb 2026 22:05:00 +0100 Subject: [PATCH 03/11] [#342] Rewrite some UI components with recent emuLib changes --- .../application/ApplicationApiImpl.java | 4 +- .../net/emustudio/application/Constants.java | 2 +- .../application/emulation/Automation.java | 2 +- .../application/gui/actions/AboutAction.java | 2 +- .../gui/actions/CompileAction.java | 5 +- .../gui/actions/ViewComputerAction.java | 2 +- .../gui/actions/editor/FindAction.java | 2 +- .../gui/actions/editor/FindNextAction.java | 2 +- .../actions/editor/FindPreviousAction.java | 2 +- .../gui/actions/editor/NewFileAction.java | 2 +- .../gui/actions/editor/OpenFileAction.java | 2 +- .../gui/actions/editor/ReplaceAction.java | 2 +- .../gui/actions/editor/SaveFileAction.java | 2 +- .../actions/emulator/BreakpointAction.java | 5 +- .../gui/actions/emulator/JumpAction.java | 8 +- .../emulator/JumpToBeginningAction.java | 2 +- .../gui/actions/emulator/PauseAction.java | 2 +- .../gui/actions/emulator/ResetAction.java | 2 +- .../gui/actions/emulator/RunAction.java | 2 +- .../gui/actions/emulator/RunTimedAction.java | 13 +- .../actions/emulator/ShowDeviceGuiAction.java | 2 +- .../emulator/ShowDeviceSettingsAction.java | 2 +- .../actions/emulator/ShowMemoryAction.java | 4 +- .../gui/actions/emulator/StepAction.java | 2 +- .../gui/actions/emulator/StepBackAction.java | 2 +- .../gui/actions/emulator/StopAction.java | 2 +- .../opencomputer/AddNewComputerAction.java | 4 +- .../opencomputer/DeleteComputerAction.java | 4 +- .../opencomputer/EditComputerAction.java | 4 +- .../opencomputer/OpenComputerAction.java | 4 +- .../opencomputer/RenameComputerAction.java | 4 +- .../opencomputer/SaveSchemaAction.java | 2 +- .../gui/debugtable/BooleanCellEditor.java | 4 +- .../gui/debugtable/BooleanCellRenderer.java | 4 +- .../gui/debugtable/BooleanComponent.java | 2 +- .../gui/debugtable/DebugTableImpl.java | 5 +- .../gui/debugtable/DebugTableModel.java | 4 +- .../gui/debugtable/DebugTableModelImpl.java | 2 +- .../gui/debugtable/PagesPanel.java | 17 +- .../gui/debugtable/TextCellRenderer.java | 2 +- .../application/gui/dialogs/AboutDialog.java | 33 +-- .../application/gui/dialogs/AutoDialog.java | 10 +- .../gui/dialogs/BreakpointDialog.java | 22 +- .../application/gui/dialogs/EditorPanel.java | 33 ++- .../gui/dialogs/EmulatorPanel.java | 67 ++--- .../gui/dialogs/LoadingDialog.java | 12 +- .../gui/dialogs/OpenComputerDialog.java | 56 ++-- .../gui/dialogs/SchemaEditorDialog.java | 35 ++- .../application/gui/dialogs/StudioFrame.java | 5 +- .../gui/dialogs/ViewComputerDialog.java | 36 +-- .../application/gui/editor/REditor.java | 8 +- .../application/gui/framework/EDialog.java | 56 ---- .../gui/framework/EFadingBorder.java | 74 ------ .../application/gui/framework/EPanel.java | 94 ------- .../gui/framework/EmuStudioUI.java | 243 ++---------------- .../gui/framework/ExtendedDialogs.java | 2 +- .../gui/framework/GuiDialogsImpl.java | 2 +- .../gui/framework/NoGuiDialogsImpl.java | 2 +- .../gui/schema/SchemaPreviewPanel.java | 4 +- plugins/cpu/8080-cpu/build.gradle | 2 +- .../cpu/intel8080/gui/StatusPanel.java | 2 +- plugins/cpu/brainduck-cpu/build.gradle | 2 +- .../cpu/brainduck/gui/ColumnsRepainter.java | 2 +- .../cpu/brainduck/gui/StatusPanel.java | 2 +- .../emustudio/plugins/cpu/ram/CpuImpl.java | 6 +- .../plugins/cpu/ram/gui/LabelDebugColumn.java | 2 +- .../plugins/cpu/ram/gui/RamStatusPanel.java | 4 +- .../emustudio/plugins/cpu/rasp/CpuImpl.java | 2 +- .../cpu/rasp/gui/LabelDebugColumn.java | 2 +- .../plugins/cpu/rasp/gui/RaspStatusPanel.java | 2 +- plugins/cpu/ssem-cpu/build.gradle | 2 +- .../emustudio/plugins/cpu/ssem/CpuImpl.java | 13 +- .../plugins/cpu/ssem/EmulatorEngine.java | 2 +- .../plugins/cpu/ssem/LineColumn.java | 7 +- .../plugins/cpu/ssem/gui/CpuPanel.java | 2 +- plugins/cpu/z80-cpu/build.gradle | 2 +- .../plugins/cpu/zilogZ80/gui/StatusPanel.java | 2 +- .../plugins/device/mits88dcdd/DeviceImpl.java | 2 +- .../mits88dcdd/drive/DriveCollection.java | 2 +- .../device/mits88dcdd/gui/Constants.java | 4 +- .../device/mits88dcdd/gui/DiskGui.java | 2 +- .../device/mits88dcdd/gui/DriveButton.java | 2 +- .../device/mits88dcdd/gui/SettingsDialog.java | 4 +- .../device/mits88dcdd/DeviceImplTest.java | 2 +- .../device/mits88sio/gui/SettingsDialog.java | 4 +- .../abstracttape/gui/SettingsDialog.java | 2 +- .../device/abstracttape/gui/TapeGui.java | 7 +- .../plugins/device/adm3a/DeviceImpl.java | 4 +- .../device/adm3a/TerminalSettings.java | 2 +- .../device/adm3a/gui/GuiUtilsAdm3A.java | 6 +- .../device/adm3a/gui/SettingsDialog.java | 2 +- .../device/adm3a/gui/TerminalWindow.java | 2 +- .../device/adm3a/interaction/KeyboardGui.java | 6 +- .../plugins/device/adm3a/DeviceImplTest.java | 2 +- .../audiotape_player/gui/TapePlayerGui.java | 10 +- .../audiotape_player/gui/TapesListModel.java | 2 +- .../gui/TapesListRenderer.java | 2 +- .../plugins/device/vt100/DeviceImpl.java | 4 +- .../device/vt100/TerminalSettings.java | 4 +- .../device/vt100/gui/SettingsDialog.java | 2 +- .../device/vt100/gui/TerminalWindow.java | 4 +- .../device/vt100/interaction/KeyboardGui.java | 6 +- .../plugins/device/vt100/DeviceImplTest.java | 2 +- .../plugins/memory/bytemem/gui/Constants.java | 2 +- .../bytemem/gui/FindSequenceDialog.java | 2 +- .../plugins/memory/bytemem/gui/MemoryGui.java | 18 +- .../bytemem/gui/SelectBankAddressDialog.java | 2 +- .../memory/bytemem/gui/SettingsDialog.java | 2 +- .../bytemem/gui/actions/AsciiModeAction.java | 2 +- .../bytemem/gui/actions/DumpMemoryAction.java | 6 +- .../gui/actions/EraseMemoryAction.java | 2 +- .../gui/actions/FindSequenceAction.java | 4 +- .../gui/actions/GotoAddressAction.java | 4 +- .../bytemem/gui/actions/LoadImageAction.java | 4 +- .../bytemem/gui/actions/SettingsAction.java | 4 +- .../PerformFindSequenceAction.java | 2 +- .../bytemem/gui/model/FileImagesModel.java | 7 +- .../bytemem/gui/table/MemoryCellRenderer.java | 5 +- .../gui/table/MemoryRowHeaderRenderer.java | 5 +- .../memory/bytemem/gui/table/MemoryTable.java | 8 +- .../memory/bytemem/MemoryImplTest.java | 2 +- .../plugins/memory/ram/gui/MemoryGui.java | 26 +- .../ram/gui/actions/DumpMemoryAction.java | 6 +- .../ram/gui/actions/EraseMemoryAction.java | 2 +- .../ram/gui/actions/LoadImageAction.java | 6 +- .../plugins/memory/rasp/gui/MemoryGui.java | 10 +- .../rasp/gui/actions/DumpMemoryAction.java | 6 +- .../rasp/gui/actions/EraseMemoryAction.java | 2 +- .../rasp/gui/actions/LoadImageAction.java | 7 +- .../plugins/memory/ssem/gui/MemoryGui.java | 8 +- .../ssem/gui/actions/DumpMemoryAction.java | 6 +- .../ssem/gui/actions/EraseMemoryAction.java | 2 +- .../ssem/gui/actions/LoadImageAction.java | 6 +- .../ssem/gui/table/MemoryCellRenderer.java | 4 +- .../gui/table/MemoryRowHeaderRenderer.java | 2 +- .../memory/ssem/gui/table/MemoryTable.java | 2 +- .../gui/actions/DumpMemoryActionTest.java | 4 +- settings.gradle | 1 + 138 files changed, 391 insertions(+), 874 deletions(-) delete mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EDialog.java delete mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java delete mode 100644 application/src/main/java/net/emustudio/application/gui/framework/EPanel.java diff --git a/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java b/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java index 16f5641ec..e3f6fb277 100644 --- a/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java +++ b/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextPool; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerTable; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerTable; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; diff --git a/application/src/main/java/net/emustudio/application/Constants.java b/application/src/main/java/net/emustudio/application/Constants.java index d55cee7b8..fed501744 100644 --- a/application/src/main/java/net/emustudio/application/Constants.java +++ b/application/src/main/java/net/emustudio/application/Constants.java @@ -5,7 +5,7 @@ import java.awt.*; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadFontResource; +import static net.emustudio.emulib.runtime.ui.GUI.loadFontResource; public class Constants { diff --git a/application/src/main/java/net/emustudio/application/emulation/Automation.java b/application/src/main/java/net/emustudio/application/emulation/Automation.java index da8bcc1b8..16caaecea 100644 --- a/application/src/main/java/net/emustudio/application/emulation/Automation.java +++ b/application/src/main/java/net/emustudio/application/emulation/Automation.java @@ -11,7 +11,7 @@ import net.emustudio.emulib.plugins.cpu.CPU; import net.emustudio.emulib.plugins.device.Device; import net.emustudio.emulib.runtime.helpers.Unchecked; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java index 5e25b1c31..3503b215c 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java @@ -9,7 +9,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AboutAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/favicon16.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java index f9d849161..05f853870 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java @@ -9,7 +9,7 @@ import net.emustudio.emulib.plugins.compiler.CompilerMessage; import net.emustudio.emulib.plugins.cpu.CPU; import net.emustudio.emulib.plugins.memory.Memory; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; @@ -18,7 +18,8 @@ import java.util.Optional; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class CompileAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/compile.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java index a067a3fad..1c668614e 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java @@ -5,7 +5,7 @@ import net.emustudio.application.gui.dialogs.ViewComputerDialog; import net.emustudio.application.settings.AppSettings; import net.emustudio.application.virtualcomputer.VirtualComputer; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java index 09d6b31a3..da1ca8ef9 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java @@ -10,7 +10,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class FindAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/edit-find.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java index 67d2f874b..87dbd0374 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.editor; import net.emustudio.application.gui.editor.Editor; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java index 442a96c94..89f4e807a 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.editor; import net.emustudio.application.gui.editor.Editor; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java index 76bfcb03c..6648374cf 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java @@ -10,7 +10,7 @@ import java.util.Objects; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class NewFileAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-new.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java index dd02d8432..8f2c0c7ea 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java @@ -11,7 +11,7 @@ import java.util.Objects; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class OpenFileAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-open.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java index f61f9c990..002e856f4 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java @@ -10,7 +10,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ReplaceAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/edit-find-replace.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java index 271da8fb9..3ca8f8d64 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java @@ -9,7 +9,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class SaveFileAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-save.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java index 78ecd432d..332d2f382 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java @@ -4,13 +4,14 @@ import net.emustudio.application.gui.dialogs.BreakpointDialog; import net.emustudio.application.virtualcomputer.VirtualComputer; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class BreakpointAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/breakpoints.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java index 941cfb7a1..81ac13cbf 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java @@ -3,13 +3,14 @@ package net.emustudio.application.gui.actions.emulator; import net.emustudio.application.virtualcomputer.VirtualComputer; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class JumpAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-jump.png"; @@ -30,8 +31,7 @@ public JumpAction(VirtualComputer computer, Dialogs dialogs, Runnable refreshDeb public void actionPerformed(ActionEvent actionEvent) { computer.getCPU().ifPresentOrElse(cpu -> { try { - dialogs - .readInteger("Memory address:", "Jump to address", 0) + dialogs.readInteger("Memory address:", "Jump to address", 0) .ifPresent(address -> { if (!cpu.setInstructionLocation(address)) { dialogs.showError("Invalid memory address (please check memory size)"); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java index 693a654f3..4e8bb65fd 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class JumpToBeginningAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-first.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java index 3af01a395..dee043a64 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java @@ -9,7 +9,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class PauseAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-pause.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java index 941f9e084..b091f7a8c 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ResetAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/reset.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java index d56d143ba..24cbccb4e 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java @@ -9,7 +9,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class RunAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-play.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java index 6b60cba01..1ff4b7c14 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.emulator; import net.emustudio.application.emulation.EmulationController; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; @@ -11,7 +11,8 @@ import java.util.Optional; import java.util.concurrent.TimeUnit; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class RunTimedAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-play-time.png"; @@ -30,9 +31,11 @@ public RunTimedAction(EmulationController emulationController, Dialogs dialogs) public void actionPerformed(ActionEvent actionEvent) { Optional.ofNullable(emulationController).ifPresent(c -> { try { - dialogs - .readInteger("Enter time slice in milliseconds:", "Timed emulation", 500) - .ifPresent(sliceMillis -> c.step(sliceMillis, TimeUnit.MILLISECONDS)); + dialogs.readInteger( + "Enter time slice in milliseconds:", + "Timed emulation", + 500 + ).ifPresent(sliceMillis -> c.step(sliceMillis, TimeUnit.MILLISECONDS)); } catch (NumberFormatException e) { dialogs.showError("Invalid number format", "Timed emulation"); } diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java index 9cdf55c8d..6a7313fb1 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.emulator; import net.emustudio.application.virtualcomputer.VirtualComputer; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java index 8c9a94a3f..9004fc503 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.emulator; import net.emustudio.application.virtualcomputer.VirtualComputer; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java index b8efda7a2..7095ab128 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java @@ -4,13 +4,13 @@ import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.memory.Memory; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ShowMemoryAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/grid_memory.gif"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java index ba59f355e..d9e3c1468 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StepAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-next.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java index f97bc0b6f..637d0d6c8 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java @@ -9,7 +9,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StepBackAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-previous.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java index 6a4a97d3e..907e7553a 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StopAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-stop.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java index 67344d8f4..b813e56db 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java @@ -7,7 +7,7 @@ import net.emustudio.application.settings.AppSettings; import net.emustudio.application.settings.ComputerConfig; import net.emustudio.emulib.runtime.helpers.Unchecked; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +19,7 @@ import static net.emustudio.application.settings.ConfigFiles.createConfiguration; import static net.emustudio.application.settings.ConfigFiles.loadConfiguration; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AddNewComputerAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(AddNewComputerAction.class); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java index 1279fc9ee..f6e2d6288 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.opencomputer; import net.emustudio.application.settings.ComputerConfig; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +14,7 @@ import java.util.Optional; import static net.emustudio.application.settings.ConfigFiles.removeConfiguration; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DeleteComputerAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DeleteComputerAction.class); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java index 38ad08a5b..7826c4b67 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java @@ -6,14 +6,14 @@ import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.settings.AppSettings; import net.emustudio.application.settings.ComputerConfig; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EditComputerAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/computer.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java index 930072218..7117f3be9 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.actions.opencomputer; import net.emustudio.application.settings.ComputerConfig; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; @@ -11,7 +11,7 @@ import java.util.Optional; import java.util.function.Consumer; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class OpenComputerAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/list-add.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java index d1b7f6fbc..974f7c783 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java @@ -3,8 +3,8 @@ package net.emustudio.application.gui.actions.opencomputer; import net.emustudio.application.settings.ComputerConfig; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,7 +15,7 @@ import java.util.Optional; import static net.emustudio.application.settings.ConfigFiles.renameConfiguration; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class RenameComputerAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/rename-computer.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java index c78eead10..cddab26ae 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class SaveSchemaAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-save.png"; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java index 09a717499..35fb10309 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java @@ -11,8 +11,8 @@ import java.awt.event.MouseListener; import java.util.EventObject; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.TABLE_COLOR_ROW_EVEN; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.TABLE_COLOR_ROW_ODD; +import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_EVEN; +import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_ODD; public class BooleanCellEditor extends AbstractCellEditor implements TableCellEditor, MouseListener { private final BooleanComponent component; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java index 3f4f83cac..e579f9ed9 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java @@ -8,8 +8,8 @@ import java.awt.*; import static net.emustudio.application.gui.debugtable.BooleanComponent.BOOLEAN_ICON; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.TABLE_COLOR_ROW_EVEN; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.TABLE_COLOR_ROW_ODD; +import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_EVEN; +import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_ODD; class BooleanCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer { diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java index 0f5cc0a64..d8c261b58 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java @@ -4,7 +4,7 @@ import javax.swing.*; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class BooleanComponent extends JLabel { public static final Icon BOOLEAN_ICON = loadIcon("/net/emustudio/application/gui/dialogs/breakpoint.png"); diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java index 97456d436..53cae4e1d 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java @@ -2,8 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; -import net.emustudio.application.Constants; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerColumn; import javax.swing.*; import javax.swing.table.TableColumn; @@ -12,7 +11,7 @@ import java.awt.event.ComponentEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.TABLE_COLOR_TABLE_GRID; +import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_TABLE_GRID; public class DebugTableImpl extends JTable { private final DebugTableModel tableModel; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java index 712fd626a..385eab30e 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerColumn; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerTable; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerTable; import javax.swing.table.AbstractTableModel; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java index b83313306..a4bbb798d 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java @@ -4,7 +4,7 @@ import net.emustudio.emulib.plugins.cpu.CPU; import net.emustudio.emulib.plugins.cpu.Disassembler; -import net.emustudio.emulib.runtime.interaction.debugger.*; +import net.emustudio.emulib.runtime.ui.debugger.*; import javax.swing.event.TableModelEvent; import java.util.Arrays; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java index 6c014eb6b..cac7a4683 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java @@ -2,8 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.ToolbarButton; import javax.swing.*; import java.util.Objects; @@ -34,12 +35,12 @@ public static PagesPanel create(DebugTableModel debugTableModel, Dialogs dialogs } private void initComponents() { - ToolbarButton btnFirst = new ToolbarButton(evt -> gotoFirstPage(), PAGE_FIRST_PNG, "Go to the first page"); - ToolbarButton btnBackward = new ToolbarButton(evt -> gotoPreviousPage(), PAGE_BACK_PNG, "Go to the previous page"); - ToolbarButton btnCurrentPage = new ToolbarButton(evt -> gotoCurrentPage(), PAGE_CURRENT_PNG, "Go to the current page"); - ToolbarButton btnForward = new ToolbarButton(evt -> gotoNextPage(), PAGE_FORWARD_PNG, "Go to the next page"); - ToolbarButton btnSeekBackward = new ToolbarButton(evt -> seekBackward(), PAGE_SEEK_BACKWARD_PNG, "Go to the current page"); - ToolbarButton btnSeekForward = new ToolbarButton(evt -> seekForward(), PAGE_SEEK_FORWARD_PNG, "Go to the current page"); + ToolbarButton btnFirst = GUI.toolbarButton(evt -> gotoFirstPage(), PAGE_FIRST_PNG, "Go to the first page"); + ToolbarButton btnBackward = GUI.toolbarButton(evt -> gotoPreviousPage(), PAGE_BACK_PNG, "Go to the previous page"); + ToolbarButton btnCurrentPage = GUI.toolbarButton(evt -> gotoCurrentPage(), PAGE_CURRENT_PNG, "Go to the current page"); + ToolbarButton btnForward = GUI.toolbarButton(evt -> gotoNextPage(), PAGE_FORWARD_PNG, "Go to the next page"); + ToolbarButton btnSeekBackward = GUI.toolbarButton(evt -> seekBackward(), PAGE_SEEK_BACKWARD_PNG, "Go to the current page"); + ToolbarButton btnSeekForward = GUI.toolbarButton(evt -> seekForward(), PAGE_SEEK_FORWARD_PNG, "Go to the current page"); GroupLayout pagesLayout = new GroupLayout(this); setLayout(pagesLayout); diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java index 8536dc706..1658297aa 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java @@ -9,7 +9,7 @@ import java.awt.*; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; class TextCellRenderer extends JLabel implements TableCellRenderer { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java index f328909aa..f1fdd48fd 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java @@ -2,18 +2,19 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; + +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; +import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.*; import static net.emustudio.application.Resources.getCopyright; import static net.emustudio.application.Resources.getVersion; -import static net.emustudio.application.gui.framework.EmuStudioUI.*; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; -public class AboutDialog extends EDialog { +public class AboutDialog extends DialogBase { public final static String LOGO_FILE = "/net/emustudio/application/gui/dialogs/logo.png"; public AboutDialog(JFrame parent) { @@ -24,7 +25,7 @@ public AboutDialog(JFrame parent) { @Override protected JComponent initializeComponents() { // Main panel with horizontal layout - EPanel mainPanel = new EPanel("insets 10", "[][grow]", "[]"); + JPanel mainPanel = new JPanel(new MigLayout("insets 10", "[][grow]", "[]")); // Logo panel JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); @@ -33,19 +34,19 @@ protected JComponent initializeComponents() { lblLogo.setOpaque(true); // Info panel - EPanel infoPanel = new EPanel("insets 10", "[grow]", "[]"); - infoPanel.add(titleLabel("emuStudio"), "wrap, gapbottom 10"); - infoPanel.add(label(getCopyright()), "wrap, gapbottom 10"); + JPanel infoPanel = new JPanel(new MigLayout("insets 10", "[grow]", "[]")); + infoPanel.add(GUI.titleLabel("emuStudio"), "wrap, gapbottom 10"); + infoPanel.add(GUI.label(getCopyright()), "wrap, gapbottom 10"); - infoPanel.add(label("Version: "), "split 2"); - infoPanel.add(boldLabel(getVersion()), "wrap, gapbottom 10"); + infoPanel.add(GUI.label("Version: "), "split 2"); + infoPanel.add(GUI.boldLabel(getVersion()), "wrap, gapbottom 10"); JLabel licenseInfo = new JLabel( - "

This program comes with ABSOLUTELY NO WARRANTY. " + - "This is free software, and you are welcome to redistribute it " + - "under certain conditions; for details see " + - "https://www.gnu.org/licenses/gpl-3.0.html.
" + - "For more information about emuStudio, see https://www.emustudio.net/.

" + "

This program comes with ABSOLUTELY NO WARRANTY. " + + "This is free software, and you are welcome to redistribute it " + + "under certain conditions; for details see " + + "https://www.gnu.org/licenses/gpl-3.0.html.
" + + "For more information about emuStudio, see https://www.emustudio.net/.

" ); licenseInfo.setPreferredSize(new Dimension(400, 80)); infoPanel.add(licenseInfo, "wrap, grow"); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java index 6e00731ff..4a74023b4 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java @@ -2,21 +2,21 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.cpu.CPU; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import javax.swing.*; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; /** * This is the dialog form that displays when the emuStudio automatization * is running. */ -public class AutoDialog extends EDialog { +public class AutoDialog extends DialogBase { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/motherboard-icon.gif"; private final VirtualComputer computer; @@ -33,7 +33,7 @@ public AutoDialog(VirtualComputer computer) { @Override protected JComponent initializeComponents() { - EPanel panel = EPanel.vertical(); + JPanel panel = GUI.panelVertical(); JLabel lblPerforming = new JLabel(loadIcon(ICON_FILE)); lblPerforming.setFont(lblPerforming.getFont().deriveFont(lblPerforming.getFont().getStyle() | java.awt.Font.BOLD)); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java index 3a97b9d1f..896e0eab9 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java @@ -2,21 +2,19 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import javax.swing.*; import java.util.Objects; -import static net.emustudio.application.gui.framework.EmuStudioUI.*; - /** * The breakpoint dialog - it asks user for the address where should be * set or unset the breakpoint. */ -public class BreakpointDialog extends EDialog { +public class BreakpointDialog extends DialogBase { private final Dialogs dialogs; private int address = -1; // if adr == -1 then it means cancel @@ -41,16 +39,16 @@ public boolean isSet() { @Override protected JComponent initializeComponents() { - EPanel panel = EPanel.vertical(); + JPanel panel = GUI.panelVertical(); - panel.add(label("Set/unset breakpoint to address:"), "wrap, gapbottom 5"); + panel.add(GUI.label("Set/unset breakpoint to address:"), "wrap, gapbottom 5"); - txtAddress = textField("0"); + txtAddress = GUI.textField("0"); panel.add(txtAddress, "growx, wrap, gapbottom 10"); - EPanel buttonPanel = EPanel.buttonBar(); - buttonPanel.add(button("Unset", this::btnUnsetActionPerformed), ""); - buttonPanel.add(button("Set", this::btnSetActionPerformed), ""); + JPanel buttonPanel = GUI.panelButtons(); + buttonPanel.add(GUI.button("Unset", this::btnUnsetActionPerformed), ""); + buttonPanel.add(GUI.button("Set", this::btnSetActionPerformed), ""); panel.add(buttonPanel, "growx, span"); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java index 621a80dfc..6806248f1 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java @@ -2,14 +2,13 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.CompileAction; import net.emustudio.application.gui.actions.editor.*; import net.emustudio.application.gui.editor.Editor; import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.cpu.CPU; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import org.fife.rsta.ui.search.FindDialog; import org.fife.rsta.ui.search.ReplaceDialog; import org.fife.ui.rtextarea.RTextArea; @@ -18,7 +17,7 @@ import java.util.Objects; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; public class EditorPanel extends JPanel { private final static int MIN_COMPILER_OUTPUT_HEIGHT = 200; @@ -37,7 +36,7 @@ public class EditorPanel extends JPanel { private final ReplaceDialog replaceDialog; private final FindDialog findDialog; - private final JSplitPane splitSource = new JSplitPane(); + private final JSplitPane splitSource = GUI.splitPane(); public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualComputer computer, Runnable updateTitle, Supplier runState) { @@ -72,7 +71,6 @@ public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualCompute splitSource.setOrientation(JSplitPane.VERTICAL_SPLIT); splitSource.setOneTouchExpandable(true); splitSource.setResizeWeight(1.0); - EmuStudioUI.styleSplitPane(splitSource); splitSource.setLeftComponent(editor.getView()); splitSource.setRightComponent(compilerPane); @@ -140,40 +138,41 @@ private JToolBar setupMainToolbar() { mainToolBar.setBorderPainted(false); mainToolBar.setRollover(true); - mainToolBar.add(new ToolbarButton(newFileAction)); - mainToolBar.add(new ToolbarButton(openFileAction)); - mainToolBar.add(new ToolbarButton(saveFileAction)); + mainToolBar.add(GUI.toolbarButton(newFileAction)); + mainToolBar.add(GUI.toolbarButton(openFileAction)); + mainToolBar.add(GUI.toolbarButton(saveFileAction)); mainToolBar.addSeparator(); - mainToolBar.add(new ToolbarButton( + mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.UNDO_ACTION), "/net/emustudio/application/gui/dialogs/edit-undo.png", "Undo" )); - mainToolBar.add(new ToolbarButton(RTextArea.getAction(RTextArea.REDO_ACTION), + mainToolBar.add(GUI.toolbarButton( + RTextArea.getAction(RTextArea.REDO_ACTION), "/net/emustudio/application/gui/dialogs/edit-redo.png", "Redo" )); mainToolBar.addSeparator(); - mainToolBar.add(new ToolbarButton( + mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.CUT_ACTION), "/net/emustudio/application/gui/dialogs/edit-cut.png", "Cut selection" )); - mainToolBar.add(new ToolbarButton( + mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.COPY_ACTION), "/net/emustudio/application/gui/dialogs/edit-copy.png", "Copy selection" )); - mainToolBar.add(new ToolbarButton( + mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.PASTE_ACTION), "/net/emustudio/application/gui/dialogs/edit-paste.png", "Paste from clipboard" )); mainToolBar.addSeparator(); - mainToolBar.add(new ToolbarButton(findAction)); - mainToolBar.add(new ToolbarButton(replaceAction)); + mainToolBar.add(GUI.toolbarButton(findAction)); + mainToolBar.add(GUI.toolbarButton(replaceAction)); mainToolBar.addSeparator(); - mainToolBar.add(new ToolbarButton(compileAction)); + mainToolBar.add(GUI.toolbarButton(compileAction)); return mainToolBar; } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java index a1e790f43..7ef8447a7 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java @@ -3,8 +3,6 @@ package net.emustudio.application.gui.dialogs; import net.emustudio.application.emulation.EmulationController; -import net.emustudio.application.gui.framework.EPanel; -import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.emulator.*; import net.emustudio.application.gui.debugtable.DebugTableImpl; import net.emustudio.application.gui.debugtable.DebugTableModel; @@ -14,8 +12,9 @@ import net.emustudio.emulib.plugins.device.Device; import net.emustudio.emulib.plugins.memory.Memory; import net.emustudio.emulib.plugins.memory.MemoryContext; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.event.*; @@ -31,10 +30,10 @@ public class EmulatorPanel extends JPanel { private final JToolBar toolDebug = new JToolBar(); private final JPanel panelPages; - private final JScrollPane paneDebug = new JScrollPane(); + private final JScrollPane paneDebug; private final JList lstDevices = new JList<>(); - private final JSplitPane splitPerDebug = new JSplitPane(); + private final JSplitPane splitPerDebug = GUI.splitPane(); private final DebugTableModel debugTableModel; private final JTable debugTable; @@ -64,11 +63,11 @@ public EmulatorPanel(JFrame parent, VirtualComputer computer, DebugTableModel de this.debugTableModel = Objects.requireNonNull(debugTableModel); this.debugTable = new DebugTableImpl(debugTableModel); - paneDebug.setViewportView(debugTable); + paneDebug = GUI.scrollPane(debugTable); paneDebug.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); debugTable.setFillsViewportHeight(true); - EmuStudioUI.styleScrollPane(paneDebug); - EmuStudioUI.styleTable(debugTable); + + GUI.styleTable(debugTable); paneDebug.addComponentListener(new ComponentAdapter() { @Override @@ -80,9 +79,7 @@ public void componentResized(ComponentEvent e) { statusWindow.setBorder(BorderFactory.createTitledBorder("Status")); statusWindow.setLayout(statusWindowLayout); - computer.getCPU() - .flatMap(cpu -> Optional.ofNullable(cpu.getStatusPanel())) - .ifPresent(this::setStatusPanel); + computer.getCPU().flatMap(cpu -> Optional.ofNullable(cpu.getStatusPanel())).ifPresent(this::setStatusPanel); this.stepBackAction = new StepBackAction(computer, debugTableModel, this::refreshDebugTable); this.resetAction = new ResetAction(emulationController); @@ -103,7 +100,7 @@ public void componentResized(ComponentEvent e) { panelPages = PagesPanel.create(debugTableModel, dialogs); - EPanel debuggerPanel = new EPanel("insets dialog", "[grow]", "[][grow][]"); + JPanel debuggerPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow][]")); debuggerPanel.setBorder(BorderFactory.createTitledBorder("Debugger")); debuggerPanel.add(toolDebug, "growx, wrap"); debuggerPanel.add(paneDebug, "grow, wrap"); @@ -141,12 +138,10 @@ public void mouseClicked(MouseEvent e) { } }); - EPanel peripheralPanel = new EPanel("insets dialog", "[grow]", "[grow][]"); + JPanel peripheralPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[grow][]")); peripheralPanel.setBorder(BorderFactory.createTitledBorder("Peripheral devices")); - JScrollPane paneDevices = new JScrollPane(); - paneDevices.setViewportView(lstDevices); - EmuStudioUI.styleList(lstDevices); - EmuStudioUI.styleScrollPane(paneDevices); + JScrollPane paneDevices = GUI.scrollPane(lstDevices); + GUI.styleList(lstDevices); JButton btnShowSettings = new JButton(showDeviceSettingsAction); JButton btnShowGUI = new JButton(showDeviceGuiAction); @@ -163,9 +158,8 @@ public void mouseClicked(MouseEvent e) { splitPerDebug.setResizeWeight(1.0); splitPerDebug.setTopComponent(debuggerPanel); splitPerDebug.setRightComponent(peripheralPanel); - EmuStudioUI.styleSplitPane(splitPerDebug); - JSplitPane splitLeftRight = new JSplitPane(); + JSplitPane splitLeftRight = GUI.splitPane(); splitLeftRight.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); splitLeftRight.setContinuousLayout(true); splitLeftRight.setFocusable(false); @@ -173,9 +167,8 @@ public void mouseClicked(MouseEvent e) { splitLeftRight.setResizeWeight(1.0); splitLeftRight.setRightComponent(statusWindow); splitLeftRight.setLeftComponent(splitPerDebug); - EmuStudioUI.styleSplitPane(splitLeftRight); - setLayout(new net.miginfocom.swing.MigLayout("insets dialog, fill", "[grow]", "[grow]")); + setLayout(new MigLayout("insets dialog, fill", "[grow]", "[grow]")); add(splitLeftRight, "grow"); this.memoryListener = new MemoryContext.MemoryListener() { @@ -232,12 +225,8 @@ public CPU.RunState getRunState() { private void setStatusPanel(JPanel statusPanel) { - statusWindowLayout.setHorizontalGroup( - statusWindowLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(statusPanel)); - statusWindowLayout.setVerticalGroup( - statusWindowLayout.createSequentialGroup() - .addComponent(statusPanel)); + statusWindowLayout.setHorizontalGroup(statusWindowLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(statusPanel)); + statusWindowLayout.setVerticalGroup(statusWindowLayout.createSequentialGroup().addComponent(statusPanel)); } private void setupDebugToolbar() { @@ -245,21 +234,21 @@ private void setupDebugToolbar() { toolDebug.setRollover(true); toolDebug.setBorderPainted(false); - toolDebug.add(new ToolbarButton(resetAction)); + toolDebug.add(GUI.toolbarButton(resetAction)); toolDebug.addSeparator(); - toolDebug.add(new ToolbarButton(jumpToBeginningAction)); - toolDebug.add(new ToolbarButton(stepBackAction)); - toolDebug.add(new ToolbarButton(stopAction)); - toolDebug.add(new ToolbarButton(pauseAction)); - toolDebug.add(new ToolbarButton(runAction)); - toolDebug.add(new ToolbarButton(runTimedAction)); - toolDebug.add(new ToolbarButton(stepAction)); + toolDebug.add(GUI.toolbarButton(jumpToBeginningAction)); + toolDebug.add(GUI.toolbarButton(stepBackAction)); + toolDebug.add(GUI.toolbarButton(stopAction)); + toolDebug.add(GUI.toolbarButton(pauseAction)); + toolDebug.add(GUI.toolbarButton(runAction)); + toolDebug.add(GUI.toolbarButton(runTimedAction)); + toolDebug.add(GUI.toolbarButton(stepAction)); toolDebug.addSeparator(); - toolDebug.add(new ToolbarButton(jumpAction)); + toolDebug.add(GUI.toolbarButton(jumpAction)); toolDebug.addSeparator(); - toolDebug.add(new ToolbarButton(breakpointAction)); + toolDebug.add(GUI.toolbarButton(breakpointAction)); toolDebug.addSeparator(); - toolDebug.add(new ToolbarButton(showMemoryAction)); + toolDebug.add(GUI.toolbarButton(showMemoryAction)); } private void refreshDebugTable() { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java index 572650ede..292d98c95 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java @@ -2,15 +2,15 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import javax.swing.*; -import static net.emustudio.application.gui.framework.EmuStudioUI.*; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.label; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; -public class LoadingDialog extends EDialog { +public class LoadingDialog extends DialogBase { private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/loading.gif"; public LoadingDialog() { @@ -21,7 +21,7 @@ public LoadingDialog() { @Override protected JComponent initializeComponents() { - EPanel panel = EPanel.vertical(); + JPanel panel = GUI.panelVertical(); JLabel lblLoading = new JLabel(loadIcon(ICON_FILE)); lblLoading.setFont(lblLoading.getFont().deriveFont(lblLoading.getFont().getStyle() | java.awt.Font.BOLD)); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java index ce94181f7..fc7222460 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java @@ -2,16 +2,16 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EFadingBorder; -import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.actions.opencomputer.*; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.gui.schema.SchemaPreviewPanel; import net.emustudio.application.settings.AppSettings; import net.emustudio.application.settings.ComputerConfig; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; +import net.emustudio.emulib.runtime.ui.components.FadingBorder; +import net.emustudio.emulib.runtime.ui.components.ToolbarButton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,9 +32,9 @@ import static net.emustudio.application.Resources.getVersion; import static net.emustudio.application.gui.dialogs.AboutDialog.LOGO_FILE; import static net.emustudio.application.settings.ConfigFiles.loadConfigurations; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; -public class OpenComputerDialog extends EDialog { +public class OpenComputerDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(OpenComputerDialog.class); private final ConfigurationsListModel configurationsModel; @@ -51,8 +51,7 @@ public class OpenComputerDialog extends EDialog { private final JList lstConfig = new JList<>(); - public OpenComputerDialog(AppSettings appSettings, Dialogs dialogs, - Consumer selectComputer) { + public OpenComputerDialog(AppSettings appSettings, Dialogs dialogs, Consumer selectComputer) { super((java.awt.Frame) null, "emuStudio - Open virtual computer", true); this.configurationsModel = new ConfigurationsListModel(); this.appSettings = Objects.requireNonNull(appSettings); @@ -81,21 +80,19 @@ void update() { @Override protected JComponent initializeComponents() { - JSplitPane splitConfig = new JSplitPane(); + JSplitPane splitConfig = GUI.splitPane(); JPanel panelConfig = new JPanel(); JScrollPane configScrollPane = new JScrollPane(); - JToolBar toolConfig = new JToolBar(); - ToolbarButton btnAdd = new ToolbarButton(addNewComputerAction); + JToolBar toolConfig = GUI.toolBar(); + ToolbarButton btnAdd = GUI.toolbarButton(addNewComputerAction); ToolbarButton btnDelete = new ToolbarButton(deleteComputerAction); ToolbarButton btnEdit = new ToolbarButton(editComputerAction); ToolbarButton btnRename = new ToolbarButton(renameComputerAction); ToolbarButton btnSaveSchemaImage = new ToolbarButton(saveSchemaAction); - JScrollPane scrollPreview = new JScrollPane(); + JScrollPane scrollPreview = GUI.scrollPane(preview); JButton btnOpen = new JButton(); JButton btnClose = new JButton(); - splitConfig.setResizeWeight(0.3); - EmuStudioUI.styleSplitPane(splitConfig); lstConfig.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -107,13 +104,11 @@ public void mouseClicked(MouseEvent evt) { configScrollPane.setViewportView(lstConfig); configScrollPane.setBorder(BorderFactory.createLineBorder(UIManager.getColor("Component.borderColor"))); - EmuStudioUI.styleList(lstConfig); + GUI.styleList(lstConfig); toolConfig.setFloatable(false); toolConfig.setRollover(true); toolConfig.setOrientation(JToolBar.VERTICAL); - EmuStudioUI.styleToolbar(toolConfig); - toolConfig.add(btnAdd); toolConfig.add(btnDelete); toolConfig.add(btnEdit); @@ -123,16 +118,15 @@ public void mouseClicked(MouseEvent evt) { panelConfig.setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[][grow]", "[grow]")); panelConfig.add(toolConfig, "growy"); panelConfig.add(configScrollPane, "grow"); - splitConfig.setLeftComponent(panelConfig); - scrollPreview.setViewportView(preview); - EmuStudioUI.styleScrollPane(scrollPreview); + splitConfig.setResizeWeight(0.3); + splitConfig.setLeftComponent(panelConfig); splitConfig.setRightComponent(scrollPreview); // Create logo panel JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); lblLogo.setBackground(Color.WHITE); - lblLogo.setBorder(new EFadingBorder(10, Color.WHITE)); + lblLogo.setBorder(new FadingBorder(10, Color.WHITE)); lblLogo.setOpaque(false); JLabel lblIntroduction = new JLabel("

Welcome to emuStudio!

Version:" + getVersion() + ""); @@ -154,7 +148,7 @@ public void mouseClicked(MouseEvent evt) { btnOpen.setText("Open computer"); btnOpen.addActionListener(openComputerAction); - EmuStudioUI.makePrimaryButton(btnOpen); + GUI.buttonMakePrimary(btnOpen); btnClose.setText("Exit"); btnClose.addActionListener(this::btnCloseActionPerformed); @@ -177,11 +171,7 @@ public void mouseClicked(MouseEvent evt) { buttonsPanel.add(btnClose, "tag cancel, wmin 80"); // Root Container to hold both centers - JPanel root = new JPanel(new net.miginfocom.swing.MigLayout( - "fill, insets 0", - "[grow]", - "[grow]0[]" - )); + JPanel root = new JPanel(new net.miginfocom.swing.MigLayout("fill, insets 0", "[grow]", "[grow]0[]")); root.add(centerPanel, "grow, push, wrap"); root.add(buttonsPanel, "growx"); @@ -195,12 +185,10 @@ private void lstConfigMouseClicked(MouseEvent evt) { } private void lstConfigValueChanged(ListSelectionEvent evt) { - Optional - .ofNullable(lstConfig.getSelectedValue()) - .ifPresentOrElse(computer -> { - Schema schema = new Schema(computer, appSettings); - preview.setSchema(schema); - }, () -> preview.setSchema(null)); + Optional.ofNullable(lstConfig.getSelectedValue()).ifPresentOrElse(computer -> { + Schema schema = new Schema(computer, appSettings); + preview.setSchema(schema); + }, () -> preview.setSchema(null)); preview.repaint(); } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java index b2105f91f..1118e0f5f 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java @@ -2,17 +2,16 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; -import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.schema.DrawingPanel; import net.emustudio.application.gui.schema.DrawingPanel.Tool; import net.emustudio.application.gui.schema.Schema; import net.emustudio.emulib.plugins.annotations.PLUGIN_TYPE; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.GuiUtils; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; +import net.emustudio.emulib.runtime.ui.components.ToolbarButton; +import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,7 +29,7 @@ import static net.emustudio.application.settings.ConfigFiles.listPluginFiles; -public class SchemaEditorDialog extends EDialog implements KeyListener { +public class SchemaEditorDialog extends DialogBase implements KeyListener { private final static Logger LOGGER = LoggerFactory.getLogger(SchemaEditorDialog.class); private final static PluginComboModel EMPTY_MODEL = new PluginComboModel(Collections.emptyList()); @@ -69,7 +68,7 @@ public SchemaEditorDialog(JDialog parent, Schema schema, Dialogs dialogs) { sliderGridGap.setValue(schema.getSchemaGridGap()); panel.addMouseListener(panel); panel.addMouseMotionListener(panel); - GuiUtils.addKeyListener(this, this); + GUI.addKeyListenerRecursively(this, this); panel.addToolListener(() -> { panel.setTool(Tool.TOOL_NOTHING, null); @@ -109,50 +108,50 @@ protected JComponent initializeComponents() { groupDraw = new ButtonGroup(); JToolBar toolDraw = new JToolBar(); - ToolbarButton btnSave = new ToolbarButton( + ToolbarButton btnSave = GUI.toolbarButton( this::btnSaveActionPerformed, "/net/emustudio/application/gui/dialogs/document-save.png", "Save & Close" ); JToolBar.Separator separator1 = new JToolBar.Separator(); - btnCompiler = EmuStudioUI.toolbarToggleButton( + btnCompiler = GUI.toolbarToggleButton( this::btnCompilerActionPerformed, this::btnCompilerItemStateChanged, "/net/emustudio/application/gui/dialogs/compile.png", "Set compiler" ); - btnCPU = EmuStudioUI.toolbarToggleButton( + btnCPU = GUI.toolbarToggleButton( this::btnCPUActionPerformed, this::btnCPUItemStateChanged, "/net/emustudio/application/gui/dialogs/cpu.gif", "Set CPU" ); - btnRAM = EmuStudioUI.toolbarToggleButton( + btnRAM = GUI.toolbarToggleButton( this::btnRAMActionPerformed, this::btnRAMItemStateChanged, "/net/emustudio/application/gui/dialogs/ram.gif", "Set operating memory" ); - btnDevice = EmuStudioUI.toolbarToggleButton( + btnDevice = GUI.toolbarToggleButton( this::btnDeviceActionPerformed, this::btnDeviceItemStateChanged, "/net/emustudio/application/gui/dialogs/device.png", "Add device" ); JToolBar.Separator separator2 = new JToolBar.Separator(); - btnLine = EmuStudioUI.toolbarToggleButton( + btnLine = GUI.toolbarToggleButton( this::btnLineActionPerformed, this::btnLineItemStateChanged, "/net/emustudio/application/gui/dialogs/connection.png", "Add connection" ); - btnBidirection = EmuStudioUI.toolbarToggleButton( + btnBidirection = GUI.toolbarToggleButton( this::btnBidirectionActionPerformed, "/net/emustudio/application/gui/dialogs/bidirection.gif", "Bidirectional connection" ); JToolBar.Separator separator3 = new JToolBar.Separator(); - btnDelete = EmuStudioUI.toolbarToggleButton( + btnDelete = GUI.toolbarToggleButton( this::btnDeleteActionPerformed, this::btnDeleteItemStateChanged, "/net/emustudio/application/gui/dialogs/edit-delete.png", @@ -161,7 +160,7 @@ protected JComponent initializeComponents() { JToolBar.Separator separator4 = new JToolBar.Separator(); cmbPlugin = new JComboBox<>(); JToolBar.Separator separator5 = new JToolBar.Separator(); - btnUseGrid = EmuStudioUI.toolbarToggleButton( + btnUseGrid = GUI.toolbarToggleButton( this::btnUseGridActionPerformed, "/net/emustudio/application/gui/dialogs/grid_memory.gif", "Set/unset using grid" @@ -210,7 +209,7 @@ protected JComponent initializeComponents() { sliderGridGap.setValue(30); sliderGridGap.addChangeListener(this::sliderGridGapStateChanged); - EPanel mainPanel = new EPanel("insets dialog", "[grow]", "[][grow]"); + JPanel mainPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow]")); mainPanel.add(toolDraw, "growx, wrap"); mainPanel.add(scrollScheme, "grow"); mainPanel.add(sliderGridGap, "w 31!"); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java index a64b398c4..9a2a6b3a6 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java @@ -16,7 +16,7 @@ import net.emustudio.application.settings.AppSettings; import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.memory.MemoryContext; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.fife.ui.rtextarea.RTextArea; import javax.swing.*; @@ -25,7 +25,8 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class StudioFrame extends JFrame { private final static String SOURCE_CODE_EDITOR = "Source code editor"; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java index 35344067a..a37101291 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java @@ -2,8 +2,6 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; -import net.emustudio.application.gui.framework.EDialog; -import net.emustudio.application.gui.framework.EPanel; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.gui.schema.SchemaPreviewPanel; import net.emustudio.application.settings.AppSettings; @@ -11,7 +9,9 @@ import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.Plugin; import net.emustudio.emulib.plugins.device.Device; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.DialogBase; +import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,9 +19,9 @@ import java.util.List; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; -public class ViewComputerDialog extends EDialog { +public class ViewComputerDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(ViewComputerDialog.class); private final static String ICON_COMPILER = "/net/emustudio/application/gui/dialogs/compile.png"; private final static String ICON_CPU = "/net/emustudio/application/gui/dialogs/cpu.gif"; @@ -90,9 +90,7 @@ public ViewComputerDialog(JFrame parent, VirtualComputer computer, AppSettings a // Select default info lblSelectDevice.setVisible(false); cmbDevice.setVisible(false); - computer.getComputerConfig().getCPU().ifPresent( - conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf)) - ); + computer.getComputerConfig().getCPU().ifPresent(conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf))); } private void setInfo(Plugin plugin, PluginConfig config) { @@ -188,11 +186,11 @@ protected JComponent initializeComponents() { txtDescription.setWrapStyleWord(true); jScrollPane1.setViewportView(txtDescription); - EPanel descriptionPanel = new EPanel("insets dialog", "[grow]", "[grow]"); + JPanel descriptionPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[grow]")); descriptionPanel.setBorder(BorderFactory.createTitledBorder("Short description")); descriptionPanel.add(jScrollPane1, "grow"); - EPanel infoPanel = new EPanel("insets dialog", "[grow]", "[][][][][][][][grow]"); + JPanel infoPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][][][][][][][grow]")); infoPanel.add(lblSelectDevice, "split 2"); infoPanel.add(cmbDevice, "grow, wrap"); infoPanel.add(lblName, "wrap"); @@ -201,7 +199,7 @@ protected JComponent initializeComponents() { infoPanel.add(lblCopyright, "wrap"); infoPanel.add(descriptionPanel, "grow"); - EPanel tabInfoPanel = new EPanel("insets dialog", "[][grow]", "[grow]"); + JPanel tabInfoPanel = new JPanel(new MigLayout("insets dialog", "[][grow]", "[grow]")); tabInfoPanel.add(jToolBar1, "grow"); tabInfoPanel.add(infoPanel, "grow"); @@ -218,13 +216,13 @@ protected JComponent initializeComponents() { btnSaveSchema.addActionListener(this::btnSaveSchemaActionPerformed); jToolBar2.add(btnSaveSchema); - EPanel schemaPanel = new EPanel("insets dialog", "[][grow]", "[grow]"); + JPanel schemaPanel = new JPanel(new MigLayout("insets dialog", "[][grow]", "[grow]")); schemaPanel.add(jToolBar2, "grow"); schemaPanel.add(scrollPane, "grow"); jTabbedPane1.addTab("Abstract schema", schemaPanel); - EPanel mainPanel = new EPanel("insets dialog", "[grow]", "[][grow]"); + JPanel mainPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow]")); mainPanel.add(lblComputerName, "growx, wrap"); mainPanel.add(jTabbedPane1, "grow"); @@ -234,25 +232,19 @@ protected JComponent initializeComponents() { private void btnCompilerActionPerformed(java.awt.event.ActionEvent evt) { lblSelectDevice.setVisible(false); cmbDevice.setVisible(false); - computer.getComputerConfig().getCompiler().ifPresent( - conf -> computer.getCompiler().ifPresent(compiler -> setInfo(compiler, conf)) - ); + computer.getComputerConfig().getCompiler().ifPresent(conf -> computer.getCompiler().ifPresent(compiler -> setInfo(compiler, conf))); } private void btnCPUActionPerformed(java.awt.event.ActionEvent evt) { lblSelectDevice.setVisible(false); cmbDevice.setVisible(false); - computer.getComputerConfig().getCPU().ifPresent( - conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf)) - ); + computer.getComputerConfig().getCPU().ifPresent(conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf))); } private void btnMemoryActionPerformed(java.awt.event.ActionEvent evt) { lblSelectDevice.setVisible(false); cmbDevice.setVisible(false); - computer.getComputerConfig().getMemory().ifPresent( - conf -> computer.getMemory().ifPresent(memory -> setInfo(memory, conf)) - ); + computer.getComputerConfig().getMemory().ifPresent(conf -> computer.getMemory().ifPresent(memory -> setInfo(memory, conf))); } private void btnDeviceActionPerformed(java.awt.event.ActionEvent evt) { diff --git a/application/src/main/java/net/emustudio/application/gui/editor/REditor.java b/application/src/main/java/net/emustudio/application/gui/editor/REditor.java index acef02aa4..8405071e8 100644 --- a/application/src/main/java/net/emustudio/application/gui/editor/REditor.java +++ b/application/src/main/java/net/emustudio/application/gui/editor/REditor.java @@ -6,8 +6,8 @@ import net.emustudio.emulib.plugins.compiler.Compiler; import net.emustudio.emulib.plugins.compiler.FileExtension; import net.emustudio.emulib.plugins.compiler.SourceCodePosition; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import org.fife.io.UnicodeWriter; import org.fife.rsta.ui.search.SearchEvent; import org.fife.ui.rsyntaxtextarea.*; @@ -31,7 +31,7 @@ import static java.awt.event.InputEvent.CTRL_DOWN_MASK; import static net.emustudio.application.Constants.FONT_CODE; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_DEFAULT_SIZE; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_DEFAULT_SIZE; public class REditor implements Editor { private final static Logger LOGGER = LoggerFactory.getLogger(REditor.class); @@ -202,7 +202,7 @@ public boolean openFile() { .map(FileExtension::getExtension) .collect(Collectors.toList()); - if (sourceExtensions.size() > 0) { + if (!sourceExtensions.isEmpty()) { filters.add(new FileExtensionsFilter("All source files", sourceExtensions)); } diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java b/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java deleted file mode 100644 index 9c0391d1a..000000000 --- a/application/src/main/java/net/emustudio/application/gui/framework/EDialog.java +++ /dev/null @@ -1,56 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui.framework; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.KeyEvent; - -/** - * Simple base class for emuStudio dialogs with modern UI. - * Provides common functionality and styling. - * Subclasses must implement buildContent() and call showContent() at the end of their constructor. - */ -public abstract class EDialog extends JDialog { - - protected EDialog(Frame parent, String title, boolean modal) { - super(parent, title, modal); - initDialog(); - } - - protected EDialog(Dialog parent, String title, boolean modal) { - super(parent, title, modal); - initDialog(); - } - - private void initDialog() { - setDefaultCloseOperation(DISPOSE_ON_CLOSE); - - // ESC key closes dialog - getRootPane().registerKeyboardAction( - e -> dispose(), - KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), - JComponent.WHEN_IN_FOCUSED_WINDOW - ); - } - - /** - * Call this method at the end of your constructor to build and display the content. - * This calls buildContent(), adds it to the dialog, packs it, and centers it. - */ - protected void buildContent() { - JComponent content = initializeComponents(); - if (content != null) { - getContentPane().setLayout(new BorderLayout()); - getContentPane().add(content, BorderLayout.CENTER); - pack(); - } - setLocationRelativeTo(getParent()); - } - - /** - * Build the dialog content. Called by showContent(). - * This replaces the traditional initComponents() method. - */ - protected abstract JComponent initializeComponents(); -} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java b/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java deleted file mode 100644 index 4bf781faa..000000000 --- a/application/src/main/java/net/emustudio/application/gui/framework/EFadingBorder.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.emustudio.application.gui.framework; - -import javax.swing.border.Border; -import java.awt.*; -import java.awt.image.BufferedImage; - -/** - * Custom border that fades from inner white to outer transparent. - * Uses cached images for performance. - */ -public class EFadingBorder implements Border { - private final int thickness; - private final Color color; - private BufferedImage cachedBorder; - private int cachedWidth; - private int cachedHeight; - - public EFadingBorder(int thickness, Color color) { - this.thickness = thickness; - this.color = color; - } - - private void rebuildCache(int width, int height) { - if (cachedBorder != null && cachedWidth == width && cachedHeight == height) { - return; - } - cachedWidth = width; - cachedHeight = height; - cachedBorder = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - - int r = color.getRed(); - int g = color.getGreen(); - int b = color.getBlue(); - int rgb = (r << 16) | (g << 8) | b; - - // Draw all border pixels with distance-based alpha - for (int px = 0; px < width; px++) { - for (int py = 0; py < height; py++) { - int distFromRight = width - 1 - px; - int distFromBottom = height - 1 - py; - - // Calculate minimum distance to any edge - int minDist = Math.min( - Math.min(px, distFromRight), - Math.min(py, distFromBottom) - ); - - // Only draw pixels in the border thickness - if (minDist < thickness) { - // Alpha increases from 0 (outer edge) to 1 (inner edge) - float alpha = (float) minDist / thickness; - int argb = ((int) (alpha * 255) << 24) | rgb; - cachedBorder.setRGB(px, py, argb); - } - } - } - } - - @Override - public void paintBorder(java.awt.Component c, Graphics g, int x, int y, int width, int height) { - rebuildCache(width, height); - g.drawImage(cachedBorder, x, y, null); - } - - @Override - public Insets getBorderInsets(java.awt.Component c) { - return new Insets(thickness, thickness, thickness, thickness); - } - - @Override - public boolean isBorderOpaque() { - return false; - } -} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java b/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java deleted file mode 100644 index a1c30f772..000000000 --- a/application/src/main/java/net/emustudio/application/gui/framework/EPanel.java +++ /dev/null @@ -1,94 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.application.gui.framework; - -import net.miginfocom.swing.MigLayout; - -import javax.swing.*; -import java.awt.*; - -/** - * Simplified panel builder for emuStudio with fluent API. - * Hides MigLayout complexity behind simple methods. - */ -public class EPanel extends JPanel { - - public EPanel() { - super(new MigLayout("insets dialog", "[grow]", "[]")); - } - - public EPanel(String layoutConstraints) { - super(new MigLayout(layoutConstraints)); - } - - public EPanel(String layoutConstraints, String colConstraints, String rowConstraints) { - super(new MigLayout(layoutConstraints, colConstraints, rowConstraints)); - } - - public EPanel add(Component comp, String constraints) { - super.add(comp, constraints); - return this; - } - - public EPanel addRow(Component... components) { - for (Component comp : components) { - super.add(comp); - } - super.add(new JLabel(), "wrap"); // Force new row - return this; - } - - public EPanel addGrowRow(Component comp) { - super.add(comp, "growx, wrap"); - return this; - } - - public EPanel addSpan(Component comp) { - super.add(comp, "span, wrap"); - return this; - } - - public EPanel addSeparator() { - super.add(new JSeparator(), "growx, span, wrap"); - return this; - } - - public EPanel addSeparator(String title) { - JLabel label = new JLabel(title); - label.setFont(label.getFont().deriveFont(Font.BOLD)); - - EPanel panel = new EPanel("insets 0", "[grow]", "[]"); - panel.add(label, "split 2, span"); - panel.add(new JSeparator(), "growx, gapleft rel"); - - super.add(panel, "growx, span, wrap"); - return this; - } - - public EPanel addGap() { - super.add(new JLabel(), "wrap, height 10!"); - return this; - } - - // Static factory methods - - public static EPanel vertical() { - return new EPanel("insets dialog, fillx", "[grow]", "[]"); - } - - public static EPanel horizontal() { - return new EPanel("insets dialog, filly", "[]", "[grow]"); - } - - public static EPanel grid(int cols) { - StringBuilder colSpec = new StringBuilder(); - for (int i = 0; i < cols; i++) { - colSpec.append("[grow]"); - } - return new EPanel("insets dialog", colSpec.toString(), "[]"); - } - - public static EPanel buttonBar() { - return new EPanel("insets dialog", "[grow, right]", "[]"); - } -} diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java index 5cb831179..5173fcb9c 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java @@ -8,16 +8,12 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ItemEvent; -import java.util.function.Consumer; import net.emustudio.application.settings.AppSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.Constants.*; /** * Central UI configuration for emuStudio. @@ -63,7 +59,7 @@ private static void customize() { // Keep font settings for compatibility UIManager.put("Button.font", FONT_COMMON); -// UIManager.put("Button.opaque", true); + UIManager.put("Button.opaque", true); UIManager.put("CheckBox.font", FONT_COMMON); UIManager.put("CheckBoxMenuItem.font", FONT_COMMON); @@ -72,14 +68,14 @@ private static void customize() { UIManager.put("ColorChooser.font", FONT_COMMON); UIManager.put("ComboBox.font", FONT_COMMON); -// UIManager.put("TabbedPane.selected", UIManager.get("Panel.background")); -// UIManager.put("TabbedPane.background", UIManager.get("Panel.background")); -// UIManager.put("TabbedPane.contentAreaColor", UIManager.get("Panel.background")); -// UIManager.put("TabbedPane.contentOpaque", true); -// UIManager.put("TabbedPane.opaque", true); -// UIManager.put("TabbedPane.tabsOpaque", true); -// UIManager.put("TabbedPane.font", FONT_TITLE_BORDER); -// UIManager.put("TabbedPane.smallFont", FONT_COMMON); + UIManager.put("TabbedPane.selected", UIManager.get("Panel.background")); + UIManager.put("TabbedPane.background", UIManager.get("Panel.background")); + UIManager.put("TabbedPane.contentAreaColor", UIManager.get("Panel.background")); + UIManager.put("TabbedPane.contentOpaque", true); + UIManager.put("TabbedPane.opaque", true); + UIManager.put("TabbedPane.tabsOpaque", true); + UIManager.put("TabbedPane.font", FONT_TITLE_BORDER); + UIManager.put("TabbedPane.smallFont", FONT_COMMON); UIManager.put("EditorPane.font", FONT_MONOSPACED); UIManager.put("FormattedTextField.font", FONT_COMMON); @@ -88,14 +84,14 @@ private static void customize() { UIManager.put("InternalFrame.optionDialogTitleFont", FONT_TITLE_BORDER); UIManager.put("InternalFrame.paletteTitleFont", FONT_TITLE_BORDER); UIManager.put("InternalFrame.titleFont", FONT_TITLE_BORDER); - // UIManager.put("InternalFrame.opaque", true); + UIManager.put("InternalFrame.opaque", true); UIManager.put("Label.font", FONT_COMMON); - // UIManager.put("Label.opaque", true); + UIManager.put("Label.opaque", true); UIManager.put("List.font", FONT_MONOSPACED); -// UIManager.put("List.rendererUseUIBorder", true); - // UIManager.put("List.focusCellHighlightBorder", null); + UIManager.put("List.rendererUseUIBorder", true); + UIManager.put("List.focusCellHighlightBorder", null); UIManager.put("Menu.acceleratorFont", FONT_COMMON); UIManager.put("Menu.font", FONT_COMMON); @@ -110,7 +106,7 @@ private static void customize() { UIManager.put("OptionPane.messageFont", FONT_COMMON); UIManager.put("Panel.font", FONT_COMMON); - //UIManager.put("Panel.opaque", true); + UIManager.put("Panel.opaque", true); UIManager.put("PasswordField.font", FONT_COMMON); UIManager.put("PopupMenu.font", FONT_COMMON); @@ -123,7 +119,7 @@ private static void customize() { UIManager.put("Spinner.font", FONT_COMMON); UIManager.put("Table.font", FONT_COMMON); -// UIManager.put("Table.focusCellHighlightBorder", null); + UIManager.put("Table.focusCellHighlightBorder", null); UIManager.put("TableHeader.font", FONT_TITLE_BORDER); @@ -153,78 +149,6 @@ public static AppSettings.Theme getCurrentTheme() { } // Common UI factory methods - - public static JButton button(String text) { - return new JButton(text); - } - - public static JButton button(String text, Runnable action) { - JButton btn = new JButton(text); - btn.addActionListener(e -> action.run()); - return btn; - } - - /** - * Toolbar toggle button - a JToggleButton ready to add to a toolbar. - * Properties: - * - button text is hidden - * - tooltip is set from Action.getValue(SHORT_DESCRIPTION) by default - * - is not focusable - * - icon is set from icon resource path - * - button action is external - * - * @param action button action - * @param itemAction item state change action - * @param iconResource icon resource path - * @param tooltipText tooltip text - * @return the toolbar toggle button - */ - public static JToggleButton toolbarToggleButton(Consumer action, Consumer itemAction, - String iconResource, String tooltipText) { - JToggleButton button = new JToggleButton(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - action.accept(e); - } - }); - button.setIcon(loadIcon(iconResource)); - button.setToolTipText(tooltipText); - button.setFocusable(false); - button.addItemListener(itemAction::accept); - return button; - } - - public static JToggleButton toolbarToggleButton(Consumer action, String iconResource, - String tooltipText) { - return toolbarToggleButton(action, e -> { - }, iconResource, tooltipText); - } - - public static JLabel label(String text) { - return new JLabel(text); - } - - public static JLabel boldLabel(String text) { - JLabel label = new JLabel(text); - label.setFont(label.getFont().deriveFont(Font.BOLD)); - return label; - } - - public static JLabel titleLabel(String text) { - JLabel label = new JLabel(text); - Font font = label.getFont(); - label.setFont(font.deriveFont(Font.BOLD, font.getSize() + 2)); - return label; - } - - public static JTextField textField() { - return new JTextField(20); - } - - public static JTextField textField(String text) { - return new JTextField(text, 20); - } - public static JTextArea textArea(int rows, int cols) { JTextArea area = new JTextArea(rows, cols); area.setLineWrap(true); @@ -232,43 +156,6 @@ public static JTextArea textArea(int rows, int cols) { return area; } - public static JScrollPane scrollPane(Component view) { - return new JScrollPane(view); - } - - /** - * Apply modern FlatLaf styling to a toolbar. - */ - public static void styleToolbar(JToolBar toolbar) { - toolbar.setFloatable(false); - toolbar.setRollover(true); - toolbar.setBorderPainted(false); - } - - /** - * Apply modern styling to a button to make it a primary action button. - */ - public static void makePrimaryButton(JButton button) { - button.putClientProperty("JButton.buttonType", "borderless"); - button.setFont(button.getFont().deriveFont(Font.BOLD)); - } - - /** - * Apply modern styling to a split pane. - */ - public static void styleSplitPane(JSplitPane splitPane) { - splitPane.setBorder(null); - splitPane.setOneTouchExpandable(true); - splitPane.setContinuousLayout(true); - } - - /** - * Apply modern styling to a scroll pane. - */ - public static void styleScrollPane(JScrollPane scrollPane) { - scrollPane.setBorder(BorderFactory.createEmptyBorder()); - } - /** * Apply modern styled border to a panel. */ @@ -278,108 +165,10 @@ public static void stylePanel(JPanel panel, String title) { } } - /** - * Make a button flat/borderless for toolbar use. - */ - public static void makeFlatButton(AbstractButton button) { - button.putClientProperty("JButton.buttonType", "toolBarButton"); - button.setFocusable(false); - } - /** * Apply rounded corners to a component. */ public static void applyRoundedCorners(JComponent component) { component.putClientProperty("JComponent.roundRect", true); } - - /** - * Make a table modern looking. - */ - public static void styleTable(JTable table) { - table.setShowGrid(false); - table.setIntercellSpacing(new Dimension(0, 0)); - table.setRowHeight(table.getRowHeight() + 4); - } - - /** - * Style a list for modern appearance. - */ - public static void styleList(JList list) { - list.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - } - - public static Frame findOwnerFrame() { - for (Frame f : Frame.getFrames()) { - if (f != null && f.isDisplayable()) return f; - } - return null; // fallback - } - - - public static void enableWaylandXwaylandLayoutSync(JComponent root, JDialog dialog) { - // Bežíme len na Waylande - if (!"wayland".equalsIgnoreCase(System.getenv("XDG_SESSION_TYPE"))) { - return; - } - LOGGER.info("Enabling Wayland-Xwayland layout sync for dialog titled '{}'", dialog.getTitle()); - - final String title = dialog.getTitle(); - final Dimension[] lastClient = { null }; - - new Timer(200, e -> { - if (!dialog.isDisplayable() || !dialog.isShowing() || root == null) { - return; - } - - Dimension client = readXwininfoClientSizeByTitle(title); - if (client == null || client.equals(lastClient[0])) { - return; - } - lastClient[0] = client; - - System.out.println("Setting dialog internal size to: " + client.width + "x" + client.height); - - dialog.setBounds(0,0, client.width, client.height); - System.out.println(" Dialog bounds set to: " + dialog.getBounds() + " , content pane: " + dialog.getContentPane().getBounds()); - // dialog.getContentPane().setBounds(0,0,client.width, client.height); - // dialog.getContentPane().revalidate(); - // dialog.getContentPane().doLayout(); - // dialog.repaint(); - - // Important: We do not change window size, only internal root component, - // so Swing layout can count with real space. - // root.setBounds(0, 0, client.width, client.height); - - // re-layout - // root.doLayout(); - // root.revalidate(); - // root.repaint(); - }).start(); - } - - private static Dimension readXwininfoClientSizeByTitle(String title) { - try { - Process p = new ProcessBuilder("xwininfo", "-name", title).start(); - String out = new String(p.getInputStream().readAllBytes()); - p.waitFor(); - - int w = -1, h = -1; - for (String line : out.split("\n")) { - line = line.trim(); - if (line.startsWith("Width:")) { - w = Integer.parseInt(line.substring("Width:".length()).trim()); - } else if (line.startsWith("Height:")) { - h = Integer.parseInt(line.substring("Height:".length()).trim()); - } - } - - if (w > 0 && h > 0) { - return new Dimension(w, h); - } - } catch (Exception ignore) { - // xwininfo can fail for a while until window doesn't exist / is not mapped - } - return null; - } } diff --git a/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java index c395cb7b5..3e32f703d 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import java.awt.*; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java index 945af8c21..3a23a4ca1 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java @@ -3,7 +3,7 @@ package net.emustudio.application.gui.framework; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import javax.swing.*; import javax.swing.filechooser.FileFilter; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java index d6c066f06..793175d06 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java index fa3de8033..7810c697d 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java @@ -5,8 +5,8 @@ import net.emustudio.application.gui.framework.P; import net.emustudio.application.gui.schema.elements.ConnectionLine; import net.emustudio.application.gui.schema.elements.Element; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/cpu/8080-cpu/build.gradle b/plugins/cpu/8080-cpu/build.gradle index 101ef0b2f..0df84f5a1 100644 --- a/plugins/cpu/8080-cpu/build.gradle +++ b/plugins/cpu/8080-cpu/build.gradle @@ -11,7 +11,7 @@ buildscript { plugins { id 'java' - id 'net.emustudio.edigen-plugin' version '1.5.2' + id 'net.emustudio.edigen-plugin' version '1.5.3-SNAPSHOT' id 'com.adarshr.test-logger' version '4.0.0' } diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java index cca0ef092..52721194f 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java @@ -16,7 +16,7 @@ import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatByteHexString; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatWordHexString; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_TITLE_BORDER; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_TITLE_BORDER; public class StatusPanel extends JPanel { private final CpuImpl cpu; diff --git a/plugins/cpu/brainduck-cpu/build.gradle b/plugins/cpu/brainduck-cpu/build.gradle index 57cbfcd6b..d6ec96b0a 100644 --- a/plugins/cpu/brainduck-cpu/build.gradle +++ b/plugins/cpu/brainduck-cpu/build.gradle @@ -4,7 +4,7 @@ import org.apache.tools.ant.filters.ReplaceTokens plugins { id 'java' - id 'net.emustudio.edigen-plugin' version '1.5.2' + id 'net.emustudio.edigen-plugin' version '1.5.3-SNAPSHOT' id 'com.adarshr.test-logger' version '4.0.0' } diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java index 65c86b218..6223794a7 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java @@ -11,7 +11,7 @@ import java.awt.*; import java.util.Enumeration; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; public class ColumnsRepainter { diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java index d70ba5f05..c42d66875 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java @@ -10,7 +10,7 @@ import javax.swing.*; import javax.swing.table.DefaultTableModel; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class StatusPanel extends JPanel { private final ColumnsRepainter columnsRepainter = new ColumnsRepainter(); diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java index 487c2e4b9..90d54c36b 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java @@ -11,10 +11,10 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextAlreadyRegisteredException; import net.emustudio.emulib.runtime.InvalidContextException; -import net.emustudio.emulib.runtime.interaction.debugger.BreakpointColumn; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerTable; -import net.emustudio.emulib.runtime.interaction.debugger.MnemoColumn; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.debugger.BreakpointColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerTable; +import net.emustudio.emulib.runtime.ui.debugger.MnemoColumn; import net.emustudio.plugins.cpu.ram.gui.LabelDebugColumn; import net.emustudio.plugins.cpu.ram.gui.RamDisassembler; import net.emustudio.plugins.cpu.ram.gui.RamStatusPanel; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java index f91c9d5f5..dff517975 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram.gui; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerColumn; import net.emustudio.plugins.memory.ram.api.RamLabel; import net.emustudio.plugins.memory.ram.api.RamMemoryContext; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java index 85a159faf..a5f5ac557 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java @@ -9,7 +9,7 @@ import javax.swing.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class RamStatusPanel extends JPanel { private final JLabel lblStatus = new JLabel("breakpoint"); @@ -31,7 +31,7 @@ public void runStateChanged(CPU.RunState state) { @Override public void internalStateChanged() { String r0 = cpu.getR0().toString(); - if (r0.equals("")) { + if (r0.isEmpty()) { r0 = ""; } txtR0.setText(r0); diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java index bc0c3e25f..6557e57dd 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java @@ -12,8 +12,8 @@ import net.emustudio.emulib.runtime.ContextAlreadyRegisteredException; import net.emustudio.emulib.runtime.ContextPool; import net.emustudio.emulib.runtime.InvalidContextException; -import net.emustudio.emulib.runtime.interaction.debugger.*; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.debugger.*; import net.emustudio.plugins.cpu.rasp.gui.LabelDebugColumn; import net.emustudio.plugins.cpu.rasp.gui.RaspDisassembler; import net.emustudio.plugins.cpu.rasp.gui.RaspStatusPanel; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java index df6aff8cc..69c81a91b 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp.gui; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerColumn; import net.emustudio.plugins.memory.rasp.api.RaspLabel; import net.emustudio.plugins.memory.rasp.api.RaspMemoryContext; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java index 79e8adda6..6b5008e91 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java @@ -9,7 +9,7 @@ import javax.swing.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class RaspStatusPanel extends JPanel { private final JLabel lblStatus = new JLabel("breakpoint"); diff --git a/plugins/cpu/ssem-cpu/build.gradle b/plugins/cpu/ssem-cpu/build.gradle index de4215d54..edb00e575 100644 --- a/plugins/cpu/ssem-cpu/build.gradle +++ b/plugins/cpu/ssem-cpu/build.gradle @@ -11,7 +11,7 @@ buildscript { plugins { id 'java' - id 'net.emustudio.edigen-plugin' version '1.5.2' + id 'net.emustudio.edigen-plugin' version '1.5.3-SNAPSHOT' id 'com.adarshr.test-logger' version '4.0.0' } diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java index 28f8ea237..36fa54f07 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java @@ -10,11 +10,11 @@ import net.emustudio.emulib.plugins.cpu.Disassembler; import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.debugger.BreakpointColumn; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerTable; -import net.emustudio.emulib.runtime.interaction.debugger.MnemoColumn; -import net.emustudio.emulib.runtime.interaction.debugger.OpcodeColumn; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.debugger.BreakpointColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerTable; +import net.emustudio.emulib.runtime.ui.debugger.MnemoColumn; +import net.emustudio.emulib.runtime.ui.debugger.OpcodeColumn; import net.emustudio.plugins.cpu.ssem.gui.CpuPanel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,11 +127,6 @@ public String getDescription() { return "Emulator of SSEM machine"; } - @Override - public boolean isAutomationSupported() { - return true; - } - @Override public RunState call() { return engine.run(); diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java index ec1a62b11..b7aaf5f7a 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java @@ -65,7 +65,7 @@ void reset(int startingPos) { CPU.RunState step() { try { DecodedInstruction instruction = decoder.decode(CI.addAndGet(4)); - int lineAddress = Optional.ofNullable(instruction.getBits(LINE)).orElse(emptyBits).reverseBits().bits * 4; + int lineAddress = Optional.ofNullable(instruction.getBits(LINE)).orElse(emptyBits).reverseBits().number * 4; int opcode = instruction.getImage()[1] & 7; Method instr = DISPATCH_TABLE[opcode]; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java index 065b7523e..ef6210708 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; -import net.emustudio.emulib.runtime.interaction.debugger.DebuggerColumn; +import net.emustudio.emulib.runtime.ui.debugger.DebuggerColumn; public class LineColumn implements DebuggerColumn { private final static String LINE_FORMAT = "%04X"; @@ -31,9 +31,4 @@ public void setValue(int location, Object value) { public String getValue(int location) { return String.format(LINE_FORMAT, location / 4); } - - @Override - public int getDefaultWidth() { - return -1; - } } diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java index cee242ed1..26d1d55bc 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java @@ -11,7 +11,7 @@ import java.util.Objects; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatBinaryString; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class CpuPanel extends JPanel { private final EmulatorEngine engine; diff --git a/plugins/cpu/z80-cpu/build.gradle b/plugins/cpu/z80-cpu/build.gradle index fe2c8b9de..7182e3aa9 100644 --- a/plugins/cpu/z80-cpu/build.gradle +++ b/plugins/cpu/z80-cpu/build.gradle @@ -4,7 +4,7 @@ import org.apache.tools.ant.filters.ReplaceTokens plugins { id 'java' - id 'net.emustudio.edigen-plugin' version '1.5.2' + id 'net.emustudio.edigen-plugin' version '1.5.3-SNAPSHOT' id 'com.adarshr.test-logger' version '4.0.0' } diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java index b03b866c6..ef0fcf338 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java @@ -13,7 +13,7 @@ import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatByteHexString; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatWordHexString; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class StatusPanel extends JPanel { private final CpuImpl cpu; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java index a7aec1e89..893f7608f 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java @@ -7,8 +7,8 @@ import net.emustudio.emulib.plugins.annotations.PluginRoot; import net.emustudio.emulib.plugins.device.AbstractDevice; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.cpu.intel8080.api.Context8080; import net.emustudio.plugins.device.mits88dcdd.drive.DriveCollection; import net.emustudio.plugins.device.mits88dcdd.gui.DiskGui; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java index 25cc2502b..17af23b88 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.device.mits88dcdd.drive; import net.emustudio.emulib.plugins.PluginInitializationException; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.cpu.intel8080.api.Context8080; import net.emustudio.plugins.cpu.intel8080.api.Context8080.CpuPortDevice; import net.emustudio.plugins.device.mits88dcdd.DiskSettings; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java index 03021cc36..fc9e1bad6 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java @@ -5,8 +5,8 @@ import javax.swing.*; import java.awt.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class Constants { public final static String DIALOG_TITLE = "MITS 88-DCDD"; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java index 44f619427..7ba4d06de 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java @@ -13,7 +13,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.plugins.device.mits88dcdd.gui.Constants.DIALOG_TITLE; public class DiskGui extends JDialog { diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java index 411a0cf28..2c3e68dfc 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java @@ -4,7 +4,7 @@ import javax.swing.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.plugins.device.mits88dcdd.gui.Constants.ICON_SELECTED; import static net.emustudio.plugins.device.mits88dcdd.gui.Constants.ICON_UNSELECTED; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java index 129620551..d69e4ba12 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.plugins.PluginInitializationException; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.device.mits88dcdd.DiskSettings; import net.emustudio.plugins.device.mits88dcdd.drive.DriveCollection; import org.slf4j.Logger; diff --git a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java index f59f24421..29a9f5e98 100644 --- a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java +++ b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java @@ -5,8 +5,8 @@ import net.emustudio.emulib.plugins.PluginInitializationException; import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextPool; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.cpu.intel8080.api.Context8080; import org.junit.After; import org.junit.Before; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java index 65707b173..10e08e1ce 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.device.mits88sio.SioUnitSettings; import javax.swing.*; @@ -10,7 +10,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; public class SettingsDialog extends JDialog { private final Dialogs dialogs; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java index fd2437dc4..2a51b9b11 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java @@ -2,9 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java index eb297ca18..8c881261b 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.device.abstracttape.AbstractTapeContextImpl; import net.emustudio.plugins.device.abstracttape.api.TapeSymbol; @@ -10,8 +10,9 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class TapeGui extends JDialog { private static final String ICON_ADD_FIRST = "/net/emustudio/plugins/device/abstracttape/gui/go-up.png"; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java index 86fc05f3f..57d461df9 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java @@ -11,8 +11,8 @@ import net.emustudio.emulib.runtime.ContextAlreadyRegisteredException; import net.emustudio.emulib.runtime.ContextNotFoundException; import net.emustudio.emulib.runtime.InvalidContextException; -import net.emustudio.emulib.runtime.interaction.GuiUtils; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.device.adm3a.api.ContextAdm3A; import net.emustudio.plugins.device.adm3a.api.Display; import net.emustudio.plugins.device.adm3a.api.Keyboard; @@ -103,7 +103,7 @@ public void showGUI(JFrame parent) { } else if (terminalSettings.isGuiSupported()) { terminalGUI = new TerminalWindow(parent, display, fromTerminalFont(terminalSettings.getFont())); terminalGUI.setAlwaysOnTop(terminalSettings.isAlwaysOnTop()); - GuiUtils.addKeyListener(terminalGUI, (KeyboardGui) keyboard); + GUI.addKeyListenerRecursively(terminalGUI, (KeyboardGui) keyboard); terminalGUI.startPainting(); guiIOset = true; terminalGUI.setVisible(true); diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java index 922b8eba7..f7576caf9 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java @@ -2,9 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java index 15434bbf1..0bf8675fc 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java @@ -2,13 +2,13 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; -import net.emustudio.emulib.runtime.interaction.GuiUtils; - import java.awt.*; +import static net.emustudio.emulib.runtime.ui.GUI.loadFontResource; + public class GuiUtilsAdm3A { public static Font loadFont(DisplayFont displayFont) { - return GuiUtils.loadFontResource(displayFont.path, GuiUtilsAdm3A.class, displayFont.fontSize); + return loadFontResource(displayFont.path, GuiUtilsAdm3A.class, displayFont.fontSize); } } diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java index 6f9ad796f..24460b0db 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.device.adm3a.TerminalSettings; import javax.swing.*; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java index 75f593c49..7db6e6fb8 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java @@ -9,7 +9,7 @@ import java.util.Objects; import static java.awt.FlowLayout.LEFT; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class TerminalWindow extends JDialog { private static final String BACKGROUND_IMAGE = "/net/emustudio/plugins/device/adm3a/gui/display.png"; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java index 798fc63f3..84da3b0cb 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; -import net.emustudio.emulib.runtime.interaction.GuiUtils; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.device.adm3a.api.Keyboard; import java.awt.event.ContainerEvent; @@ -125,12 +125,12 @@ public void keyReleased(KeyEvent e) { @Override public void componentAdded(ContainerEvent e) { - GuiUtils.addKeyListener(e.getChild(), this); + GUI.addKeyListenerRecursively(e.getChild(), this); } @Override public void componentRemoved(ContainerEvent e) { - GuiUtils.removeKeyListener(e.getChild(), this); + GUI.removeKeyListenerRecursively(e.getChild(), this); } @Override diff --git a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java index e14a733c9..ed12344af 100644 --- a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java +++ b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextPool; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java index c4b87aba7..21e99443d 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java @@ -2,10 +2,10 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.gui; -import net.emustudio.emulib.runtime.interaction.BrowseButton; -import net.emustudio.emulib.runtime.interaction.CachedComboBoxModel; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ShortenedString; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.ShortenedString; +import net.emustudio.emulib.runtime.ui.components.CachedComboBoxModel; import net.emustudio.plugins.device.audiotape_player.TapePlaybackController; import net.miginfocom.swing.MigLayout; @@ -55,7 +55,7 @@ public TapePlayerGui(JFrame parent, Dialogs dialogs, TapePlaybackController cont Objects.requireNonNull(dialogs); this.controller = Objects.requireNonNull(controller); - btnBrowse = new BrowseButton(dialogs, "Select Directory", "Select", p -> { + btnBrowse = GUI.buttonBrowseDirectories(dialogs, "Select Directory", "Select", p -> { ShortenedString ps = new ShortenedString<>(p, Path::toString); ps.deriveMaxStringLength(cmbDirs, cmbDirs.getWidth() - 36); cmbDirsModel.add(ps); diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java index d57ac54c3..636e1a2f4 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.gui; -import net.emustudio.emulib.runtime.interaction.ShortenedString; +import net.emustudio.emulib.runtime.ui.ShortenedString; import net.emustudio.plugins.device.audiotape_player.loaders.Loader; import net.jcip.annotations.NotThreadSafe; import org.slf4j.Logger; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java index f9e35fa45..4f76aed37 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java @@ -6,7 +6,7 @@ import java.awt.*; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.*; +import static net.emustudio.emulib.runtime.ui.Constants.*; public class TapesListRenderer extends JLabel implements ListCellRenderer { diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java index bcafa806c..cc657334d 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java @@ -11,8 +11,8 @@ import net.emustudio.emulib.runtime.ContextAlreadyRegisteredException; import net.emustudio.emulib.runtime.ContextNotFoundException; import net.emustudio.emulib.runtime.InvalidContextException; -import net.emustudio.emulib.runtime.interaction.GuiUtils; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.brainduck.BrainCPUContext; import net.emustudio.plugins.device.vt100.api.ContextVt100; import net.emustudio.plugins.device.vt100.api.Keyboard; @@ -140,7 +140,7 @@ public void showGUI(JFrame parent) { terminalGUI.setVisible(true); } else if (terminalSettings.isGuiSupported()) { terminalGUI = new TerminalWindow(parent, display, applicationApi.getDialogs(), (KeyboardGui) keyboard); - GuiUtils.addKeyListener(terminalGUI, (KeyboardGui) keyboard); + GUI.addKeyListenerRecursively(terminalGUI, (KeyboardGui) keyboard); terminalGUI.startPainting(); guiIOset = true; terminalGUI.setVisible(true); diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java index 288cc7946..cc6cc375d 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java @@ -2,19 +2,17 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.jcip.annotations.NotThreadSafe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.concurrent.CopyOnWriteArrayList; @NotThreadSafe public class TerminalSettings { diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java index c04b59ec6..4f536bc31 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.device.vt100.gui; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.device.vt100.TerminalSettings; import java.awt.*; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java index 38ec59677..ae7d963d5 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.device.vt100.gui; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.device.vt100.interaction.DisplayImpl; import net.emustudio.plugins.device.vt100.interaction.KeyboardGui; @@ -12,7 +12,7 @@ import java.util.Objects; import java.util.StringTokenizer; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class TerminalWindow extends JDialog { private final Dialogs dialogs; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java index 7994140f5..4e422071e 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; -import net.emustudio.emulib.runtime.interaction.GuiUtils; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.device.vt100.api.Keyboard; import net.jcip.annotations.ThreadSafe; @@ -35,12 +35,12 @@ public void keyReleased(KeyEvent e) { @Override public void componentAdded(ContainerEvent e) { - GuiUtils.addKeyListener(e.getChild(), this); + GUI.addKeyListenerRecursively(e.getChild(), this); } @Override public void componentRemoved(ContainerEvent e) { - GuiUtils.removeKeyListener(e.getChild(), this); + GUI.removeKeyListenerRecursively(e.getChild(), this); } @Override diff --git a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java index d46aebf70..28bc4ef9b 100644 --- a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java +++ b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextPool; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java index 978749ed7..a725c6637 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import java.awt.*; import java.util.List; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java index 3898cd397..0c1c7495b 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.gui.actions.find_sequence.PerformFindSequenceAction; import net.emustudio.plugins.memory.bytemem.gui.table.MemoryTableModel; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java index b9056edf9..d4db5b452 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java @@ -2,9 +2,9 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.memory.bytemem.MemoryContextImpl; import net.emustudio.plugins.memory.bytemem.MemoryImpl; import net.emustudio.plugins.memory.bytemem.gui.actions.*; @@ -14,8 +14,6 @@ import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.util.Objects; import static javax.swing.Action.SHORT_DESCRIPTION; @@ -155,17 +153,17 @@ private void initComponents() { toolBar.setFloatable(false); toolBar.setRollover(true); - toolBar.add(new ToolbarButton(loadImageAction)); - toolBar.add(new ToolbarButton(dumpMemoryAction)); + toolBar.add(GUI.toolbarButton(loadImageAction)); + toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(gotoAddressAction)); - toolBar.add(new ToolbarButton(findSequenceAction)); + toolBar.add(GUI.toolbarButton(gotoAddressAction)); + toolBar.add(GUI.toolbarButton(findSequenceAction)); toolBar.addSeparator(); toolBar.add(btnAsciiMode); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(eraseMemoryAction)); + toolBar.add(GUI.toolbarButton(eraseMemoryAction)); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(settingsAction)); + toolBar.add(GUI.toolbarButton(settingsAction)); splitPane.setDividerLocation(390); splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java index e43082619..c99c1b48a 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.memory.bytemem.gui; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import javax.swing.*; import java.awt.event.ActionEvent; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java index bebe27d7e..35d750e5c 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java @@ -3,9 +3,9 @@ package net.emustudio.plugins.memory.bytemem.gui; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.MemoryContextImpl; import net.emustudio.plugins.memory.bytemem.MemoryImpl; import net.emustudio.plugins.memory.bytemem.RangeTree; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java index 209c068ab..e29bc7a3e 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AsciiModeAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/bytemem/gui/ascii-mode.png"; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java index 812c3a8c8..780f9836b 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.bytemem.api.ByteMemoryContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,7 +18,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DumpMemoryAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DumpMemoryAction.class); diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java index 4f3add2fe..ae9bef5d1 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java @@ -9,7 +9,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EraseMemoryAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/bytemem/gui/edit-clear.png"; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java index 01174b3cc..3210ec46c 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.gui.FindSequenceDialog; import net.emustudio.plugins.memory.bytemem.gui.table.MemoryTableModel; @@ -15,7 +15,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class FindSequenceAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/bytemem/gui/edit-find.png"; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java index 181f6bdd0..ee80242e5 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.api.ByteMemoryContext; import javax.swing.*; @@ -12,7 +12,7 @@ import java.util.Objects; import java.util.function.Consumer; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class GotoAddressAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/bytemem/gui/format-indent-more.png"; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java index 65651d046..7c301b3ac 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.api.ByteMemoryContext; import net.emustudio.plugins.memory.bytemem.gui.SelectBankAddressDialog; import net.emustudio.plugins.memory.bytemem.loaders.Loader; @@ -16,7 +16,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; import static net.emustudio.plugins.memory.bytemem.gui.Constants.IMAGE_EXTENSION_FILTER; public class LoadImageAction extends AbstractAction { diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java index 9913b8be0..a564becf7 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.MemoryContextImpl; import net.emustudio.plugins.memory.bytemem.MemoryImpl; import net.emustudio.plugins.memory.bytemem.gui.SettingsDialog; @@ -13,7 +13,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class SettingsAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/bytemem/gui/preferences-system.png"; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java index ccadee518..3ac9cec92 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.memory.bytemem.gui.actions.find_sequence; import net.emustudio.emulib.runtime.helpers.RadixUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; +import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.plugins.memory.bytemem.gui.table.MemoryTableModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java index 99e8b015e..a8fb15bb2 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.model; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,11 +83,6 @@ public Class getColumnClass(int col) { } } - @Override - public boolean isCellEditable(int row, int col) { - return false; - } - @Override public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java index 2b3a47459..9dda47439 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java @@ -10,8 +10,7 @@ import java.awt.*; import java.util.Objects; -import net.emustudio.emulib.runtime.interaction.GuiConstants; - +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.plugins.memory.bytemem.gui.Constants.BANK_COLOR; import static net.emustudio.plugins.memory.bytemem.gui.Constants.ROM_COLOR; @@ -30,7 +29,7 @@ class MemoryCellRenderer extends JLabel implements TableCellRenderer { setOpaque(true); setDoubleBuffered(true); setBorder(BorderFactory.createEmptyBorder()); - setFont(GuiConstants.FONT_MONOSPACED); + setFont(FONT_MONOSPACED); setHorizontalAlignment(CENTER); this.selectedBackground = UIManager.getColor("Table.selectionBackground"); diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java index 4d374c5ec..16d4657f2 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java @@ -2,12 +2,13 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; -import net.emustudio.emulib.runtime.interaction.GuiConstants; import javax.swing.*; import javax.swing.table.JTableHeader; import java.awt.*; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; + class MemoryRowHeaderRenderer extends JLabel implements ListCellRenderer { @@ -16,7 +17,7 @@ class MemoryRowHeaderRenderer extends JLabel implements ListCellRenderer setHorizontalAlignment(CENTER); setForeground(header.getForeground()); setBackground(header.getBackground()); - setFont(GuiConstants.FONT_MONOSPACED); + setFont(FONT_MONOSPACED); setOpaque(true); setDoubleBuffered(true); this.setPreferredSize(new Dimension(4 * 18, header.getPreferredSize().height + 3)); diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java index 141a751d9..4c08761d4 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java @@ -2,12 +2,12 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; -import net.emustudio.emulib.runtime.interaction.GuiConstants; - import javax.swing.*; import javax.swing.table.TableColumn; import java.util.Objects; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; + public class MemoryTable extends JTable { private final MemoryTableModel tableModel; @@ -16,11 +16,11 @@ public MemoryTable(MemoryTableModel tableModel, JScrollPane pm) { this.tableModel = Objects.requireNonNull(tableModel); setModel(this.tableModel); - setFont(GuiConstants.FONT_MONOSPACED); + setFont(FONT_MONOSPACED); setCellSelectionEnabled(true); setFocusCycleRoot(true); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - getTableHeader().setFont(GuiConstants.FONT_MONOSPACED); + getTableHeader().setFont(FONT_MONOSPACED); setDefaultRenderer(Object.class, new MemoryCellRenderer(getTableHeader(), tableModel, pm, getRowHeight())); setOpaque(true); diff --git a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java index 797a31ab9..52c1b47ca 100644 --- a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java +++ b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ContextPool; -import net.emustudio.emulib.runtime.interaction.Dialogs; import net.emustudio.emulib.runtime.settings.PluginSettings; +import net.emustudio.emulib.runtime.ui.Dialogs; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java index 6868d7acd..7906ab569 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.memory.ram.MemoryContextImpl; import net.emustudio.plugins.memory.ram.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.ram.gui.actions.EraseMemoryAction; @@ -11,10 +11,11 @@ import javax.swing.*; import javax.swing.border.TitledBorder; + import java.awt.event.KeyEvent; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_COMMON; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_COMMON; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; public class MemoryGui extends JDialog { private final JTable table; @@ -24,7 +25,7 @@ public class MemoryGui extends JDialog { private final EraseMemoryAction eraseMemoryAction; public MemoryGui(JFrame parent, MemoryContextImpl memory, Dialogs dialogs) { - super(parent, false); + super(parent, "Program memory", false); RamTableModel tableModel = new RamTableModel(memory); this.table = new JTable(tableModel); @@ -42,26 +43,21 @@ public MemoryGui(JFrame parent, MemoryContextImpl memory, Dialogs dialogs) { } private void initComponents() { - JToolBar toolBar = new JToolBar(); + JToolBar toolBar = GUI.toolBar(); JPanel jPanel1 = new JPanel(); - JScrollPane jScrollPane1 = new JScrollPane(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - setTitle("Program memory"); - - toolBar.setFloatable(false); - toolBar.setRollover(true); - toolBar.add(new ToolbarButton(loadImageAction)); - toolBar.add(new ToolbarButton(dumpMemoryAction)); + toolBar.add(GUI.toolbarButton(loadImageAction)); + toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(eraseMemoryAction)); + toolBar.add(GUI.toolbarButton(eraseMemoryAction)); jPanel1.setBorder(BorderFactory.createTitledBorder(null, "Tape content", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, FONT_COMMON)); table.setGridColor(java.awt.SystemColor.control); - jScrollPane1.setViewportView(table); + JScrollPane jScrollPane1 = GUI.scrollPane(table); GroupLayout jPanel1Layout = new GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java index 094617c3a..5d48939b2 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.ram.MemoryContextImpl; import net.emustudio.plugins.memory.ram.api.RamMemoryContext; import org.slf4j.Logger; @@ -21,7 +21,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DumpMemoryAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DumpMemoryAction.class); diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java index ecaea0d1d..32c19a824 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java @@ -9,7 +9,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EraseMemoryAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/ram/gui/clear.png"; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java index 4b49e4955..37a5e367e 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.ram.MemoryContextImpl; import javax.swing.*; @@ -15,7 +15,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class LoadImageAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/ram/gui/document-open.png"; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java index 178932ba2..15681053b 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java @@ -3,7 +3,7 @@ package net.emustudio.plugins.memory.rasp.gui; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.memory.rasp.MemoryContextImpl; import net.emustudio.plugins.memory.rasp.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.rasp.gui.actions.EraseMemoryAction; @@ -13,7 +13,7 @@ import java.awt.event.KeyEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; public class MemoryGui extends JDialog { private final JTable table; @@ -63,10 +63,10 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { toolBar.setFloatable(false); toolBar.setRollover(true); - toolBar.add(new ToolbarButton(loadImageAction)); - toolBar.add(new ToolbarButton(dumpMemoryAction)); + toolBar.add(GUI.toolbarButton(loadImageAction)); + toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(eraseMemoryAction)); + toolBar.add(GUI.toolbarButton(eraseMemoryAction)); GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java index f140b2836..5ad695d35 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.rasp.MemoryContextImpl; import net.emustudio.plugins.memory.rasp.api.RaspMemoryContext; import org.slf4j.Logger; @@ -22,7 +22,7 @@ import java.util.Optional; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DumpMemoryAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DumpMemoryAction.class); diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java index 867d385f2..9bf0bdd57 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java @@ -9,7 +9,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EraseMemoryAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/rasp/gui/clear.png"; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java index a9e1bcc7f..515184af5 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java @@ -2,8 +2,8 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui.actions; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.rasp.MemoryContextImpl; import javax.swing.*; @@ -16,7 +16,8 @@ import java.util.Optional; import java.util.function.Consumer; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; + public class LoadImageAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/rasp/gui/document-open.png"; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java index 383354192..c6b0b535b 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java @@ -4,7 +4,7 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.ToolbarButton; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.memory.ssem.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.ssem.gui.actions.EraseMemoryAction; import net.emustudio.plugins.memory.ssem.gui.actions.LoadImageAction; @@ -52,10 +52,10 @@ private void initComponents() { toolBar.setFloatable(false); toolBar.setRollover(true); - toolBar.add(new ToolbarButton(loadImageAction)); - toolBar.add(new ToolbarButton(dumpMemoryAction)); + toolBar.add(GUI.toolbarButton(loadImageAction)); + toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); - toolBar.add(new ToolbarButton(eraseMemoryAction)); + toolBar.add(GUI.toolbarButton(eraseMemoryAction)); GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java index f5d81222e..2944b9a67 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java @@ -4,8 +4,8 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +19,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DumpMemoryAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DumpMemoryAction.class); diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java index 061e99e7e..151347721 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java @@ -9,7 +9,7 @@ import java.awt.event.ActionEvent; import java.util.Objects; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EraseMemoryAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/ssem/gui/clear.png"; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java index 8844be0d8..fcd67421d 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java @@ -5,8 +5,8 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.helpers.NumberUtils; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import javax.swing.*; import java.awt.event.ActionEvent; @@ -19,7 +19,7 @@ import java.util.Objects; import java.util.Optional; -import static net.emustudio.emulib.runtime.interaction.GuiUtils.loadIcon; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class LoadImageAction extends AbstractAction { private final static String ICON_FILE = "/net/emustudio/plugins/memory/ssem/gui/document-open.png"; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java index da1060232..10d69d074 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java @@ -7,8 +7,8 @@ import javax.swing.table.TableCellRenderer; import java.awt.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED_BOLD; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED_BOLD; class MemoryCellRenderer extends JLabel implements TableCellRenderer { private final static Color COLOR_FORE = Color.BLACK; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java index 34f49eb23..5808ef4b3 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java @@ -8,7 +8,7 @@ import javax.swing.table.JTableHeader; import java.awt.*; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; class MemoryRowHeaderRenderer extends JLabel implements ListCellRenderer { diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java index 7e38b5b7e..ab52fd910 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java @@ -7,7 +7,7 @@ import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; -import static net.emustudio.emulib.runtime.interaction.GuiConstants.FONT_MONOSPACED; +import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.plugins.memory.ssem.gui.Constants.COLUMN_WIDTH; public class MemoryTable extends JTable { diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java index 630d993f9..1734ac1cb 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java @@ -5,8 +5,8 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.plugins.memory.annotations.Annotations; import net.emustudio.emulib.runtime.ApplicationApi; -import net.emustudio.emulib.runtime.interaction.Dialogs; -import net.emustudio.emulib.runtime.interaction.FileExtensionsFilter; +import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.memory.ssem.MemoryContextImpl; import org.junit.Rule; import org.junit.Test; diff --git a/settings.gradle b/settings.gradle index 94ede2c02..6e31a2615 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,6 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ pluginManagement { repositories { + mavenLocal() mavenCentral() gradlePluginPortal() } From 64f1e5f480f9a2038e6cf103dc0d90e26af3f49c Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 1 Feb 2026 22:18:35 +0100 Subject: [PATCH 04/11] Update license headers in files --- application/build.gradle | 2 +- .../java/net/emustudio/application/ApplicationApiImpl.java | 2 +- .../src/main/java/net/emustudio/application/Constants.java | 2 +- .../src/main/java/net/emustudio/application/Resources.java | 2 +- .../net/emustudio/application/cmdline/AutomationCommand.java | 2 +- .../main/java/net/emustudio/application/cmdline/Runner.java | 2 +- .../main/java/net/emustudio/application/cmdline/Utils.java | 2 +- .../java/net/emustudio/application/emulation/Automation.java | 2 +- .../emustudio/application/emulation/AutomationException.java | 2 +- .../emustudio/application/emulation/EmulationController.java | 2 +- .../net/emustudio/application/gui/actions/AboutAction.java | 2 +- .../net/emustudio/application/gui/actions/CompileAction.java | 2 +- .../application/gui/actions/CompilerSettingsAction.java | 2 +- .../net/emustudio/application/gui/actions/ExitAction.java | 2 +- .../emustudio/application/gui/actions/ViewComputerAction.java | 2 +- .../emustudio/application/gui/actions/editor/FindAction.java | 2 +- .../application/gui/actions/editor/FindNextAction.java | 2 +- .../application/gui/actions/editor/FindPreviousAction.java | 2 +- .../application/gui/actions/editor/NewFileAction.java | 2 +- .../application/gui/actions/editor/OpenFileAction.java | 2 +- .../application/gui/actions/editor/ReplaceAction.java | 2 +- .../application/gui/actions/editor/SaveFileAction.java | 2 +- .../application/gui/actions/editor/SaveFileAsAction.java | 2 +- .../application/gui/actions/emulator/BreakpointAction.java | 2 +- .../application/gui/actions/emulator/JumpAction.java | 2 +- .../gui/actions/emulator/JumpToBeginningAction.java | 2 +- .../application/gui/actions/emulator/PauseAction.java | 2 +- .../application/gui/actions/emulator/ResetAction.java | 2 +- .../emustudio/application/gui/actions/emulator/RunAction.java | 2 +- .../application/gui/actions/emulator/RunTimedAction.java | 2 +- .../application/gui/actions/emulator/ShowDeviceGuiAction.java | 2 +- .../gui/actions/emulator/ShowDeviceSettingsAction.java | 2 +- .../application/gui/actions/emulator/ShowMemoryAction.java | 2 +- .../application/gui/actions/emulator/StepAction.java | 2 +- .../application/gui/actions/emulator/StepBackAction.java | 2 +- .../application/gui/actions/emulator/StopAction.java | 2 +- .../gui/actions/opencomputer/AddNewComputerAction.java | 2 +- .../gui/actions/opencomputer/DeleteComputerAction.java | 2 +- .../gui/actions/opencomputer/EditComputerAction.java | 2 +- .../gui/actions/opencomputer/OpenComputerAction.java | 2 +- .../gui/actions/opencomputer/RenameComputerAction.java | 2 +- .../gui/actions/opencomputer/SaveSchemaAction.java | 2 +- .../application/gui/debugtable/BooleanCellEditor.java | 2 +- .../application/gui/debugtable/BooleanCellRenderer.java | 2 +- .../application/gui/debugtable/BooleanComponent.java | 2 +- .../net/emustudio/application/gui/debugtable/CallFlow.java | 2 +- .../emustudio/application/gui/debugtable/DebugTableImpl.java | 2 +- .../emustudio/application/gui/debugtable/DebugTableModel.java | 2 +- .../application/gui/debugtable/DebugTableModelImpl.java | 2 +- .../net/emustudio/application/gui/debugtable/PagesPanel.java | 2 +- .../application/gui/debugtable/PaginatingDisassembler.java | 2 +- .../application/gui/debugtable/TextCellRenderer.java | 2 +- .../net/emustudio/application/gui/dialogs/AboutDialog.java | 2 +- .../net/emustudio/application/gui/dialogs/AutoDialog.java | 2 +- .../emustudio/application/gui/dialogs/BreakpointDialog.java | 2 +- .../net/emustudio/application/gui/dialogs/EditorPanel.java | 2 +- .../net/emustudio/application/gui/dialogs/EmulatorPanel.java | 2 +- .../net/emustudio/application/gui/dialogs/LoadingDialog.java | 2 +- .../emustudio/application/gui/dialogs/OpenComputerDialog.java | 2 +- .../emustudio/application/gui/dialogs/PluginComboModel.java | 2 +- .../emustudio/application/gui/dialogs/SchemaEditorDialog.java | 2 +- .../net/emustudio/application/gui/dialogs/StudioFrame.java | 2 +- .../emustudio/application/gui/dialogs/ViewComputerDialog.java | 2 +- .../java/net/emustudio/application/gui/editor/Editor.java | 2 +- .../java/net/emustudio/application/gui/editor/REditor.java | 2 +- .../net/emustudio/application/gui/editor/RTokenMaker.java | 2 +- .../emustudio/application/gui/editor/RTokenMakerWrapper.java | 2 +- .../net/emustudio/application/gui/framework/EmuStudioUI.java | 2 +- .../emustudio/application/gui/framework/ExtendedDialogs.java | 2 +- .../emustudio/application/gui/framework/GuiDialogsImpl.java | 2 +- .../emustudio/application/gui/framework/NoGuiDialogsImpl.java | 2 +- .../main/java/net/emustudio/application/gui/framework/P.java | 2 +- .../net/emustudio/application/gui/schema/DrawingModel.java | 2 +- .../net/emustudio/application/gui/schema/DrawingPanel.java | 2 +- .../java/net/emustudio/application/gui/schema/Schema.java | 2 +- .../emustudio/application/gui/schema/SchemaPreviewPanel.java | 2 +- .../application/gui/schema/elements/CompilerElement.java | 2 +- .../application/gui/schema/elements/ConnectionLine.java | 2 +- .../emustudio/application/gui/schema/elements/CpuElement.java | 2 +- .../application/gui/schema/elements/DeviceElement.java | 2 +- .../emustudio/application/gui/schema/elements/Element.java | 2 +- .../application/gui/schema/elements/MemoryElement.java | 2 +- .../emustudio/application/gui/schema/mode/AbstractMode.java | 2 +- .../java/net/emustudio/application/gui/schema/mode/Mode.java | 2 +- .../emustudio/application/gui/schema/mode/ModeSelector.java | 2 +- .../emustudio/application/gui/schema/mode/ModelingMode.java | 2 +- .../net/emustudio/application/gui/schema/mode/MovingMode.java | 2 +- .../emustudio/application/gui/schema/mode/ResizingMode.java | 2 +- .../emustudio/application/gui/schema/mode/SelectingMode.java | 2 +- .../main/java/net/emustudio/application/internal/Hashing.java | 2 +- .../java/net/emustudio/application/internal/Reflection.java | 2 +- .../java/net/emustudio/application/settings/AppSettings.java | 2 +- .../net/emustudio/application/settings/BasicSettingsImpl.java | 2 +- .../net/emustudio/application/settings/ComputerConfig.java | 2 +- .../java/net/emustudio/application/settings/ConfigFiles.java | 2 +- .../java/net/emustudio/application/settings/PluginConfig.java | 2 +- .../net/emustudio/application/settings/PluginConnection.java | 2 +- .../emustudio/application/settings/PluginSettingsImpl.java | 2 +- .../java/net/emustudio/application/settings/SchemaPoint.java | 2 +- .../application/virtualcomputer/ContextPoolImpl.java | 2 +- .../application/virtualcomputer/InvalidPluginException.java | 2 +- .../application/virtualcomputer/PluginConnections.java | 2 +- .../emustudio/application/virtualcomputer/PluginLoader.java | 2 +- .../application/virtualcomputer/PluginLoadingException.java | 2 +- .../application/virtualcomputer/VirtualComputer.java | 4 ++-- .../application/emulation/EmulationControllerTest.java | 2 +- .../emustudio/application/gui/debugtable/CallFlowTest.java | 2 +- .../application/gui/debugtable/DisassemblerStub.java | 2 +- .../net/emustudio/application/gui/debugtable/MockHelper.java | 2 +- .../gui/debugtable/PaginatingDisassemblerTest.java | 2 +- .../application/gui/dialogs/PluginComboModelTest.java | 2 +- .../net/emustudio/application/settings/AppSettingsTest.java | 2 +- .../emustudio/application/settings/ComputerConfigTest.java | 2 +- .../net/emustudio/application/settings/ConfigFilesTest.java | 2 +- .../net/emustudio/application/settings/PluginConfigTest.java | 2 +- .../net/emustudio/application/settings/SchemaPointTest.java | 2 +- .../application/virtualcomputer/ContextPoolImplTest.java | 2 +- .../emustudio/application/virtualcomputer/ContextStubs.java | 2 +- .../net/emustudio/application/virtualcomputer/JarCreator.java | 2 +- .../application/virtualcomputer/PluginLoaderTest.java | 2 +- .../application/virtualcomputer/VirtualComputerTest.java | 2 +- .../application/virtualcomputer/stubs/AbstractCPUStub.java | 2 +- .../application/virtualcomputer/stubs/CPUContextStub.java | 2 +- .../application/virtualcomputer/stubs/CPUImplStub.java | 2 +- .../application/virtualcomputer/stubs/CPUListenerStub.java | 2 +- .../virtualcomputer/stubs/CompilerContextStub.java | 2 +- .../application/virtualcomputer/stubs/DeviceContextStub.java | 2 +- .../virtualcomputer/stubs/ShortMemoryContextStub.java | 2 +- .../application/virtualcomputer/stubs/UnannotatedCPUStub.java | 2 +- .../virtualcomputer/stubs/UnannotatedContextStub.java | 2 +- .../src/test/resources/dependencies/APluginDependsOnB.java | 2 +- .../src/test/resources/dependencies/hidden/BdependsOnC.java | 2 +- application/src/test/resources/dependencies/hidden/C.java | 2 +- build.gradle | 2 +- plugins/compiler/as-8080/build.gradle | 2 +- plugins/compiler/as-8080/src/main/antlr/As8080Lexer.g4 | 2 +- plugins/compiler/as-8080/src/main/antlr/As8080Parser.g4 | 2 +- .../net/emustudio/plugins/compiler/as8080/Assembler8080.java | 3 +-- .../net/emustudio/plugins/compiler/as8080/CompileError.java | 2 +- .../plugins/compiler/as8080/LexicalAnalyzerImpl.java | 2 +- .../plugins/compiler/as8080/ParserErrorListener.java | 2 +- .../net/emustudio/plugins/compiler/as8080/ParsingUtils.java | 2 +- .../java/net/emustudio/plugins/compiler/as8080/Runner.java | 2 +- .../net/emustudio/plugins/compiler/as8080/ast/Evaluated.java | 2 +- .../net/emustudio/plugins/compiler/as8080/ast/NameSpace.java | 2 +- .../java/net/emustudio/plugins/compiler/as8080/ast/Node.java | 2 +- .../net/emustudio/plugins/compiler/as8080/ast/Program.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/data/DataDB.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/data/DataDS.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/data/DataDW.java | 2 +- .../plugins/compiler/as8080/ast/expr/ExprCurrentAddress.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/expr/ExprId.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/expr/ExprInfix.java | 2 +- .../plugins/compiler/as8080/ast/expr/ExprNumber.java | 2 +- .../plugins/compiler/as8080/ast/expr/ExprString.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/expr/ExprUnary.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrExpr.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrNoArgs.java | 2 +- .../emustudio/plugins/compiler/as8080/ast/instr/InstrReg.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrRegExpr.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrRegPair.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrRegPairExpr.java | 2 +- .../plugins/compiler/as8080/ast/instr/InstrRegReg.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoEqu.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoIf.java | 2 +- .../compiler/as8080/ast/pseudo/PseudoIfExpression.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoInclude.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoLabel.java | 2 +- .../compiler/as8080/ast/pseudo/PseudoMacroArgument.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoMacroCall.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoMacroDef.java | 2 +- .../compiler/as8080/ast/pseudo/PseudoMacroParameter.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoOrg.java | 2 +- .../plugins/compiler/as8080/ast/pseudo/PseudoSet.java | 2 +- .../plugins/compiler/as8080/exceptions/CompileException.java | 2 +- .../plugins/compiler/as8080/exceptions/FatalError.java | 2 +- .../compiler/as8080/exceptions/SyntaxErrorException.java | 2 +- .../compiler/as8080/visitors/CheckDeclarationsVisitor.java | 2 +- .../compiler/as8080/visitors/CheckExprSizesVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreateDataVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreateExprVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreateInstrVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreateLineVisitor.java | 2 +- .../compiler/as8080/visitors/CreateProgramVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreatePseudoVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/CreateVisitors.java | 2 +- .../plugins/compiler/as8080/visitors/EvaluateExprVisitor.java | 2 +- .../compiler/as8080/visitors/ExpandIncludesVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/ExpandMacrosVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/GenerateCodeVisitor.java | 2 +- .../plugins/compiler/as8080/visitors/NodeVisitor.java | 2 +- .../compiler/as8080/visitors/SortMacroArgumentsVisitor.java | 2 +- .../plugins/compiler/as8080/LexicalAnalyzerImplTest.java | 2 +- .../net/emustudio/plugins/compiler/as8080/RunnerTest.java | 2 +- .../java/net/emustudio/plugins/compiler/as8080/Utils.java | 2 +- .../plugins/compiler/as8080/e2e/AbstractCompilerTest.java | 2 +- .../plugins/compiler/as8080/e2e/Assembler8080Test.java | 2 +- .../compiler/as8080/e2e/ConstantsAndVariablesTest.java | 2 +- .../net/emustudio/plugins/compiler/as8080/e2e/DataTest.java | 2 +- .../net/emustudio/plugins/compiler/as8080/e2e/IfNodeTest.java | 2 +- .../emustudio/plugins/compiler/as8080/e2e/IncludeTest.java | 2 +- .../emustudio/plugins/compiler/as8080/e2e/InstrExprTest.java | 2 +- .../emustudio/plugins/compiler/as8080/e2e/InstrRegTest.java | 2 +- .../net/emustudio/plugins/compiler/as8080/e2e/MacroTest.java | 2 +- .../emustudio/plugins/compiler/as8080/e2e/PseudoOrgTest.java | 2 +- .../compiler/as8080/parser/LexicalAnalyzerImplTest.java | 2 +- .../plugins/compiler/as8080/parser/ParseDataTest.java | 2 +- .../plugins/compiler/as8080/parser/ParseExprTest.java | 2 +- .../plugins/compiler/as8080/parser/ParseInstrTest.java | 2 +- .../plugins/compiler/as8080/parser/ParsePseudoTest.java | 2 +- .../plugins/compiler/as8080/parser/ParsingUtilsTest.java | 2 +- .../as8080/visitors/CheckDeclarationsVisitorTest.java | 2 +- .../compiler/as8080/visitors/CheckExprSizesVisitorTest.java | 2 +- .../compiler/as8080/visitors/EvaluateExprVisitorTest.java | 2 +- .../compiler/as8080/visitors/ExpandIncludesVisitorTest.java | 2 +- .../plugins/compiler/as8080/visitors/ExpandMacrosTest.java | 2 +- .../compiler/as8080/visitors/GenerateCodeVisitorTest.java | 2 +- .../as8080/visitors/SortMacroArgumentsVisitorTest.java | 2 +- plugins/compiler/as-ssem/build.gradle | 2 +- plugins/compiler/as-ssem/src/main/antlr/SSEMLexer.g4 | 2 +- plugins/compiler/as-ssem/src/main/antlr/SSEMParser.g4 | 2 +- .../net/emustudio/plugins/compiler/ssem/CodeGenerator.java | 2 +- .../net/emustudio/plugins/compiler/ssem/CompileException.java | 2 +- .../net/emustudio/plugins/compiler/ssem/CompilerChecks.java | 2 +- .../emustudio/plugins/compiler/ssem/LexicalAnalyzerImpl.java | 2 +- .../emustudio/plugins/compiler/ssem/ParserErrorListener.java | 2 +- .../java/net/emustudio/plugins/compiler/ssem/Position.java | 2 +- .../main/java/net/emustudio/plugins/compiler/ssem/Runner.java | 2 +- .../net/emustudio/plugins/compiler/ssem/SSEMCompiler.java | 2 +- .../net/emustudio/plugins/compiler/ssem/ast/Instruction.java | 2 +- .../java/net/emustudio/plugins/compiler/ssem/ast/Program.java | 2 +- .../emustudio/plugins/compiler/ssem/ast/ProgramParser.java | 2 +- .../java/net/emustudio/plugins/compiler/ssem/LexerTest.java | 2 +- .../plugins/compiler/ssem/LexicalAnalyzerImplTest.java | 2 +- .../java/net/emustudio/plugins/compiler/ssem/ParserTest.java | 2 +- .../java/net/emustudio/plugins/compiler/ssem/RunnerTest.java | 2 +- .../net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java | 2 +- .../test/java/net/emustudio/plugins/compiler/ssem/Utils.java | 2 +- plugins/compiler/as-z80/build.gradle | 2 +- plugins/compiler/as-z80/src/main/antlr/AsZ80Lexer.g4 | 2 +- plugins/compiler/as-z80/src/main/antlr/AsZ80Parser.g4 | 2 +- .../net/emustudio/plugins/compiler/asZ80/AssemblerZ80.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/CompileError.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/CompilerTables.java | 2 +- .../emustudio/plugins/compiler/asZ80/LexicalAnalyzerImpl.java | 2 +- .../main/java/net/emustudio/plugins/compiler/asZ80/Pair.java | 2 +- .../emustudio/plugins/compiler/asZ80/ParserErrorListener.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ParsingUtils.java | 2 +- .../java/net/emustudio/plugins/compiler/asZ80/Runner.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/Evaluated.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java | 2 +- .../java/net/emustudio/plugins/compiler/asZ80/ast/Node.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/Program.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/data/DataDB.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/data/DataDS.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/data/DataDW.java | 2 +- .../plugins/compiler/asZ80/ast/expr/ExprCurrentAddress.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/expr/ExprId.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/expr/ExprInfix.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/expr/ExprNumber.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/expr/ExprString.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/expr/ExprUnary.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/ast/instr/Instr.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/instr/InstrCB.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/instr/InstrED.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/instr/InstrXD.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/instr/InstrXDCB.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoEqu.java | 2 +- .../emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIf.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoIfExpression.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoInclude.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoLabel.java | 2 +- .../compiler/asZ80/ast/pseudo/PseudoMacroArgument.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoMacroCall.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoMacroDef.java | 2 +- .../compiler/asZ80/ast/pseudo/PseudoMacroParameter.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoOrg.java | 2 +- .../plugins/compiler/asZ80/ast/pseudo/PseudoVar.java | 2 +- .../plugins/compiler/asZ80/exceptions/CompileException.java | 2 +- .../plugins/compiler/asZ80/exceptions/FatalError.java | 2 +- .../compiler/asZ80/exceptions/SyntaxErrorException.java | 2 +- .../compiler/asZ80/visitors/CheckDeclarationsVisitor.java | 2 +- .../compiler/asZ80/visitors/CheckExprSizesVisitor.java | 2 +- .../compiler/asZ80/visitors/CollectExprsInOpcodeVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateDataVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateExprVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateInstrVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateLineVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateProgramVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreatePseudoVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/CreateVisitors.java | 2 +- .../plugins/compiler/asZ80/visitors/EvaluateExprVisitor.java | 2 +- .../compiler/asZ80/visitors/ExpandIncludesVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/ExpandMacrosVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/GenerateCodeVisitor.java | 2 +- .../plugins/compiler/asZ80/visitors/NodeVisitor.java | 2 +- .../compiler/asZ80/visitors/SortMacroArgumentsVisitor.java | 2 +- .../plugins/compiler/asZ80/LexicalAnalyzerImplTest.java | 2 +- .../java/net/emustudio/plugins/compiler/asZ80/RunnerTest.java | 2 +- .../test/java/net/emustudio/plugins/compiler/asZ80/Utils.java | 2 +- .../plugins/compiler/asZ80/e2e/AbstractCompilerTest.java | 2 +- .../plugins/compiler/asZ80/e2e/AssemblerZ80Test.java | 2 +- .../plugins/compiler/asZ80/e2e/ConstantsAndVariablesTest.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/e2e/DataTest.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/e2e/IfNodeTest.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/e2e/IncludeTest.java | 2 +- .../emustudio/plugins/compiler/asZ80/e2e/InstrExprTest.java | 2 +- .../emustudio/plugins/compiler/asZ80/e2e/InstrRegTest.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/e2e/JumpTest.java | 2 +- .../net/emustudio/plugins/compiler/asZ80/e2e/MacroTest.java | 2 +- .../emustudio/plugins/compiler/asZ80/e2e/PseudoOrgTest.java | 2 +- .../compiler/asZ80/parser/LexicalAnalyzerImplTest.java | 2 +- .../plugins/compiler/asZ80/parser/ParseDataTest.java | 2 +- .../plugins/compiler/asZ80/parser/ParseExprTest.java | 2 +- .../plugins/compiler/asZ80/parser/ParseInstrTest.java | 2 +- .../plugins/compiler/asZ80/parser/ParsePseudoTest.java | 2 +- .../plugins/compiler/asZ80/parser/ParsingUtilsTest.java | 2 +- .../compiler/asZ80/visitors/CheckDeclarationsVisitorTest.java | 2 +- .../compiler/asZ80/visitors/CheckExprSizesVisitorTest.java | 2 +- .../compiler/asZ80/visitors/EvaluateExprVisitorTest.java | 2 +- .../compiler/asZ80/visitors/ExpandIncludesVisitorTest.java | 2 +- .../plugins/compiler/asZ80/visitors/ExpandMacrosTest.java | 2 +- .../compiler/asZ80/visitors/GenerateCodeVisitorTest.java | 2 +- .../asZ80/visitors/SortMacroArgumentsVisitorTest.java | 2 +- plugins/compiler/brainc-brainduck/build.gradle | 2 +- .../compiler/brainc-brainduck/src/main/antlr/BraincLexer.g4 | 2 +- .../compiler/brainc-brainduck/src/main/antlr/BraincParser.g4 | 2 +- .../plugins/compiler/brainduck/CompileException.java | 2 +- .../plugins/compiler/brainduck/CompilerBrainduck.java | 2 +- .../plugins/compiler/brainduck/LexicalAnalyzerImpl.java | 2 +- .../plugins/compiler/brainduck/ParserErrorListener.java | 2 +- .../java/net/emustudio/plugins/compiler/brainduck/Runner.java | 2 +- .../emustudio/plugins/compiler/brainduck/ast/Instruction.java | 2 +- .../net/emustudio/plugins/compiler/brainduck/ast/Program.java | 2 +- .../plugins/compiler/brainduck/ast/ProgramParser.java | 2 +- .../plugins/compiler/brainduck/AbstractCompilerTest.java | 2 +- .../emustudio/plugins/compiler/brainduck/InstructionTest.java | 2 +- .../plugins/compiler/brainduck/LexicalAnalyzerImplTest.java | 2 +- .../net/emustudio/plugins/compiler/brainduck/RunnerTest.java | 2 +- plugins/compiler/ramc-ram/build.gradle | 2 +- plugins/compiler/ramc-ram/src/main/antlr/RAMLexer.g4 | 2 +- plugins/compiler/ramc-ram/src/main/antlr/RAMParser.g4 | 2 +- .../java/net/emustudio/plugins/compiler/ram/CompilerRAM.java | 2 +- .../emustudio/plugins/compiler/ram/LexicalAnalyzerImpl.java | 2 +- .../emustudio/plugins/compiler/ram/ParserErrorListener.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/ParsingUtils.java | 2 +- .../net/emustudio/plugins/compiler/ram/ProgramParser.java | 2 +- .../main/java/net/emustudio/plugins/compiler/ram/Runner.java | 2 +- .../emustudio/plugins/compiler/ram/SerializableOptional.java | 2 +- .../net/emustudio/plugins/compiler/ram/ast/Instruction.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/ast/Label.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/ast/Program.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/ast/Value.java | 2 +- .../plugins/compiler/ram/exceptions/CompileException.java | 2 +- .../plugins/compiler/ram/exceptions/SyntaxErrorException.java | 2 +- .../emustudio/plugins/compiler/ram/AbstractCompilerTest.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/CompilerTest.java | 2 +- .../plugins/compiler/ram/LexicalAnalyzerImplTest.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/MemoryStub.java | 2 +- .../java/net/emustudio/plugins/compiler/ram/RunnerTest.java | 2 +- plugins/compiler/raspc-rasp/build.gradle | 2 +- plugins/compiler/raspc-rasp/src/main/antlr/RASPLexer.g4 | 2 +- plugins/compiler/raspc-rasp/src/main/antlr/RASPParser.g4 | 2 +- .../net/emustudio/plugins/compiler/rasp/CompilerRASP.java | 2 +- .../emustudio/plugins/compiler/rasp/LexicalAnalyzerImpl.java | 2 +- .../emustudio/plugins/compiler/rasp/ParserErrorListener.java | 2 +- .../net/emustudio/plugins/compiler/rasp/ParsingUtils.java | 2 +- .../net/emustudio/plugins/compiler/rasp/ProgramParser.java | 2 +- .../main/java/net/emustudio/plugins/compiler/rasp/Runner.java | 2 +- .../net/emustudio/plugins/compiler/rasp/ast/Instruction.java | 2 +- .../java/net/emustudio/plugins/compiler/rasp/ast/Label.java | 2 +- .../java/net/emustudio/plugins/compiler/rasp/ast/Program.java | 2 +- .../plugins/compiler/rasp/exceptions/CompileException.java | 2 +- .../compiler/rasp/exceptions/SyntaxErrorException.java | 2 +- .../emustudio/plugins/compiler/rasp/AbstractCompilerTest.java | 2 +- .../net/emustudio/plugins/compiler/rasp/CompilerTest.java | 2 +- .../plugins/compiler/rasp/LexicalAnalyzerImplTest.java | 2 +- .../java/net/emustudio/plugins/compiler/rasp/MemoryStub.java | 2 +- plugins/cpu/8080-cpu/build.gradle | 2 +- plugins/cpu/8080-cpu/src/main/edigen/cpu.eds | 2 +- .../net/emustudio/plugins/cpu/intel8080/Context8080Impl.java | 2 +- .../java/net/emustudio/plugins/cpu/intel8080/CpuImpl.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/DispatchTables.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/EmulatorTables.java | 2 +- .../emustudio/plugins/cpu/intel8080/InitializerFor8080.java | 2 +- .../emustudio/plugins/cpu/intel8080/InstructionPrinter.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/api/Context8080.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java | 2 +- .../plugins/cpu/intel8080/api/DefaultInitializer.java | 2 +- .../emustudio/plugins/cpu/intel8080/api/DispatchListener.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/gui/FlagsModel.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/ArithmeticTest.java | 2 +- .../java/net/emustudio/plugins/cpu/intel8080/ControlTest.java | 2 +- .../java/net/emustudio/plugins/cpu/intel8080/CpuImplTest.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/InstructionsTest.java | 2 +- .../java/net/emustudio/plugins/cpu/intel8080/LogicTest.java | 2 +- .../java/net/emustudio/plugins/cpu/intel8080/StackTest.java | 2 +- .../net/emustudio/plugins/cpu/intel8080/TransferTest.java | 2 +- .../plugins/cpu/intel8080/suite/ByteTestBuilder.java | 2 +- .../emustudio/plugins/cpu/intel8080/suite/CpuRunnerImpl.java | 2 +- .../plugins/cpu/intel8080/suite/CpuVerifierImpl.java | 2 +- .../emustudio/plugins/cpu/intel8080/suite/FlagsCheckImpl.java | 2 +- .../plugins/cpu/intel8080/suite/IntegerTestBuilder.java | 2 +- .../plugins/cpu/intel8080/suite/injectors/Register.java | 2 +- .../plugins/cpu/intel8080/suite/injectors/RegisterPair.java | 2 +- .../cpu/intel8080/suite/injectors/RegisterPairPSW.java | 2 +- plugins/cpu/brainduck-cpu/build.gradle | 2 +- plugins/cpu/brainduck-cpu/src/main/edigen/cpu.eds | 2 +- .../net/emustudio/plugins/cpu/brainduck/BrainCPUContext.java | 2 +- .../emustudio/plugins/cpu/brainduck/BrainCPUContextImpl.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/Breakpoint.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/CpuImpl.java | 2 +- .../net/emustudio/plugins/cpu/brainduck/EmulatorEngine.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/Profiler.java | 2 +- .../emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java | 2 +- .../emustudio/plugins/cpu/brainduck/gui/MemoryTableModel.java | 2 +- .../net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/CpuImplTest.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/DeviceStub.java | 2 +- .../emustudio/plugins/cpu/brainduck/EmulatorEngineTest.java | 2 +- .../java/net/emustudio/plugins/cpu/brainduck/MemoryStub.java | 2 +- plugins/cpu/ram-cpu/build.gradle | 2 +- .../main/java/net/emustudio/plugins/cpu/ram/Breakpoint.java | 2 +- .../src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java | 2 +- .../java/net/emustudio/plugins/cpu/ram/EmulatorEngine.java | 2 +- .../java/net/emustudio/plugins/cpu/ram/RamCpuContextImpl.java | 2 +- .../java/net/emustudio/plugins/cpu/ram/api/RamCpuContext.java | 2 +- .../net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java | 2 +- .../net/emustudio/plugins/cpu/ram/gui/RamDisassembler.java | 2 +- .../net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java | 2 +- .../net/emustudio/plugins/cpu/ram/AbstractEngineTest.java | 2 +- .../test/java/net/emustudio/plugins/cpu/ram/CpuImplTest.java | 2 +- .../net/emustudio/plugins/cpu/ram/EmulatorEngineTest.java | 2 +- plugins/cpu/rasp-cpu/build.gradle | 2 +- .../main/java/net/emustudio/plugins/cpu/rasp/Breakpoint.java | 2 +- .../src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java | 2 +- .../java/net/emustudio/plugins/cpu/rasp/EmulatorEngine.java | 2 +- .../net/emustudio/plugins/cpu/rasp/RaspCpuContextImpl.java | 2 +- .../net/emustudio/plugins/cpu/rasp/api/RaspCpuContext.java | 2 +- .../net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java | 2 +- .../net/emustudio/plugins/cpu/rasp/gui/RaspDisassembler.java | 2 +- .../net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java | 2 +- .../test/java/net/emustudio/plugins/cpu/rasp/CpuImplTest.java | 2 +- .../net/emustudio/plugins/cpu/rasp/EmulatorEngineTest.java | 2 +- .../test/java/net/emustudio/plugins/cpu/rasp/MemoryStub.java | 2 +- plugins/cpu/ssem-cpu/build.gradle | 2 +- plugins/cpu/ssem-cpu/src/main/edigen/cpu.eds | 2 +- .../net/emustudio/plugins/cpu/ssem/AutomaticEmulation.java | 2 +- .../src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java | 2 +- .../java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java | 2 +- .../main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java | 2 +- .../java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java | 2 +- .../test/java/net/emustudio/plugins/cpu/ssem/CpuImplTest.java | 2 +- .../java/net/emustudio/plugins/cpu/ssem/DisassemblerTest.java | 2 +- .../net/emustudio/plugins/cpu/ssem/EmulatorEngineTest.java | 2 +- plugins/cpu/z80-cpu/build.gradle | 2 +- plugins/cpu/z80-cpu/src/main/edigen/cpu.eds | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/ContextZ80Impl.java | 2 +- .../main/java/net/emustudio/plugins/cpu/zilogZ80/CpuImpl.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/DispatchTables.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/EmulatorTables.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/InitializerZ80.java | 2 +- .../emustudio/plugins/cpu/zilogZ80/InstructionPrinter.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/api/ContextZ80.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/gui/FlagsModel.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java | 2 +- .../test/java/net/emustudio/plugins/cpu/zilogZ80/BitTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/ControlTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/CpuImplTest.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/DisassemblerTest.java | 2 +- .../plugins/cpu/zilogZ80/EmulatorTablesGeneration.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/FakeByteDevice.java | 2 +- .../test/java/net/emustudio/plugins/cpu/zilogZ80/IOTest.java | 2 +- .../net/emustudio/plugins/cpu/zilogZ80/InstructionsTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/StackTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/Z80Tests.java | 2 +- .../emustudio/plugins/cpu/zilogZ80/suite/ByteTestBuilder.java | 2 +- .../emustudio/plugins/cpu/zilogZ80/suite/CpuRunnerImpl.java | 2 +- .../emustudio/plugins/cpu/zilogZ80/suite/CpuVerifierImpl.java | 2 +- .../plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java | 2 +- .../java/net/emustudio/plugins/cpu/zilogZ80/suite/Utils.java | 2 +- .../plugins/cpu/zilogZ80/suite/injectors/Register.java | 2 +- .../plugins/cpu/zilogZ80/suite/injectors/RegisterPair.java | 2 +- .../plugins/cpu/zilogZ80/suite/injectors/RegisterPair2.java | 2 +- .../plugins/cpu/zilogZ80/suite/injectors/RegisterPairPSW.java | 2 +- plugins/device/88-dcdd/build.gradle | 2 +- .../net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java | 2 +- .../net/emustudio/plugins/device/mits88dcdd/DiskSettings.java | 2 +- .../net/emustudio/plugins/device/mits88dcdd/Resources.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cmdline/Cpmfs.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cmdline/Runner.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/CpmFileSystem.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cpmfs/CpmFormat.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cpmfs/DateFormat.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/DiskParameterBlock.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cpmfs/DriveIO.java | 2 +- .../emustudio/plugins/device/mits88dcdd/cpmfs/Position.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/entry/CpmEntry.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/entry/CpmFile.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/entry/CpmNativeDate.java | 2 +- .../device/mits88dcdd/cpmfs/entry/CpmPlusDiscLabel.java | 2 +- .../device/mits88dcdd/cpmfs/entry/CpmPlusPassword.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/entry/DateStamp.java | 2 +- .../device/mits88dcdd/cpmfs/sectorops/Altair8deramp.java | 2 +- .../device/mits88dcdd/cpmfs/sectorops/Altair8mits.java | 2 +- .../mits88dcdd/cpmfs/sectorops/AltairMinidiskDeramp.java | 2 +- .../plugins/device/mits88dcdd/cpmfs/sectorops/SectorOps.java | 2 +- .../net/emustudio/plugins/device/mits88dcdd/drive/Drive.java | 2 +- .../plugins/device/mits88dcdd/drive/DriveCollection.java | 2 +- .../plugins/device/mits88dcdd/drive/DriveListener.java | 2 +- .../plugins/device/mits88dcdd/drive/DriveParameters.java | 2 +- .../emustudio/plugins/device/mits88dcdd/gui/Constants.java | 2 +- .../net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java | 2 +- .../emustudio/plugins/device/mits88dcdd/gui/DriveButton.java | 2 +- .../plugins/device/mits88dcdd/gui/SettingsDialog.java | 2 +- .../plugins/device/mits88dcdd/ports/ControlPort.java | 2 +- .../emustudio/plugins/device/mits88dcdd/ports/DataPort.java | 2 +- .../emustudio/plugins/device/mits88dcdd/ports/StatusPort.java | 2 +- .../emustudio/plugins/device/mits88dcdd/DeviceImplTest.java | 2 +- .../net/emustudio/plugins/device/mits88dcdd/DriveTest.java | 2 +- plugins/device/88-sio/build.gradle | 2 +- .../emustudio/plugins/device/mits88sio/ControlChannel.java | 2 +- .../net/emustudio/plugins/device/mits88sio/DataChannel.java | 2 +- .../net/emustudio/plugins/device/mits88sio/DeviceImpl.java | 2 +- .../java/net/emustudio/plugins/device/mits88sio/SioUnit.java | 2 +- .../emustudio/plugins/device/mits88sio/SioUnitSettings.java | 2 +- .../java/net/emustudio/plugins/device/mits88sio/UART.java | 2 +- .../emustudio/plugins/device/mits88sio/gui/PortListModel.java | 2 +- .../plugins/device/mits88sio/gui/SettingsDialog.java | 2 +- .../net/emustudio/plugins/device/mits88sio/gui/SioGui.java | 2 +- .../plugins/device/mits88sio/ControlChannelTest.java | 2 +- .../emustudio/plugins/device/mits88sio/DataChannelTest.java | 2 +- .../emustudio/plugins/device/mits88sio/DeviceChannelTest.java | 2 +- .../emustudio/plugins/device/mits88sio/DeviceImplTest.java | 2 +- .../net/emustudio/plugins/device/mits88sio/SioUnitTest.java | 2 +- .../java/net/emustudio/plugins/device/mits88sio/UARTTest.java | 2 +- plugins/device/abstract-tape/build.gradle | 2 +- .../emustudio/plugins/device/abstracttape/AbstractTape.java | 2 +- .../plugins/device/abstracttape/AbstractTapeContextImpl.java | 2 +- .../plugins/device/abstracttape/api/AbstractTapeContext.java | 2 +- .../emustudio/plugins/device/abstracttape/api/TapeSymbol.java | 2 +- .../emustudio/plugins/device/abstracttape/gui/NiceButton.java | 2 +- .../plugins/device/abstracttape/gui/SettingsDialog.java | 2 +- .../plugins/device/abstracttape/gui/TapeCellRenderer.java | 2 +- .../emustudio/plugins/device/abstracttape/gui/TapeGui.java | 2 +- .../emustudio/plugins/device/abstracttape/gui/TapeModel.java | 2 +- .../plugins/device/abstracttape/AbstractTapeTest.java | 2 +- plugins/device/adm3A-terminal/build.gradle | 2 +- .../java/net/emustudio/plugins/device/adm3a/DeviceImpl.java | 2 +- .../net/emustudio/plugins/device/adm3a/TerminalSettings.java | 2 +- .../net/emustudio/plugins/device/adm3a/api/ContextAdm3A.java | 2 +- .../java/net/emustudio/plugins/device/adm3a/api/Display.java | 2 +- .../java/net/emustudio/plugins/device/adm3a/api/Keyboard.java | 2 +- .../net/emustudio/plugins/device/adm3a/gui/DisplayCanvas.java | 2 +- .../net/emustudio/plugins/device/adm3a/gui/DisplayFont.java | 2 +- .../plugins/device/adm3a/gui/DisplayFontJComboRenderer.java | 2 +- .../net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java | 2 +- .../emustudio/plugins/device/adm3a/gui/SettingsDialog.java | 2 +- .../emustudio/plugins/device/adm3a/gui/TerminalWindow.java | 2 +- .../emustudio/plugins/device/adm3a/interaction/Cursor.java | 2 +- .../plugins/device/adm3a/interaction/DisplayImpl.java | 2 +- .../plugins/device/adm3a/interaction/KeyboardFromFile.java | 2 +- .../plugins/device/adm3a/interaction/KeyboardGui.java | 2 +- .../plugins/device/adm3a/interaction/LoadCursorPosition.java | 2 +- .../net/emustudio/plugins/device/adm3a/DeviceImplTest.java | 2 +- .../emustudio/plugins/device/adm3a/api/ContextAdm3ATest.java | 2 +- .../plugins/device/adm3a/interaction/CursorTest.java | 2 +- plugins/device/audiotape-player/build.gradle | 2 +- .../emustudio/plugins/device/audiotape_player/DeviceImpl.java | 2 +- .../device/audiotape_player/TapePlaybackController.java | 2 +- .../plugins/device/audiotape_player/TapePlaybackImpl.java | 2 +- .../plugins/device/audiotape_player/gui/TapePlayerGui.java | 2 +- .../plugins/device/audiotape_player/gui/TapesListModel.java | 2 +- .../device/audiotape_player/gui/TapesListRenderer.java | 2 +- .../plugins/device/audiotape_player/loaders/Loader.java | 2 +- .../plugins/device/audiotape_player/loaders/TapLoader.java | 2 +- .../plugins/device/audiotape_player/loaders/TapTzxHeader.java | 2 +- .../plugins/device/audiotape_player/loaders/TzxLoader.java | 2 +- plugins/device/simh-pseudo/build.gradle | 2 +- .../main/java/net/emustudio/plugins/device/simh/Commands.java | 2 +- .../main/java/net/emustudio/plugins/device/simh/CpmUtils.java | 2 +- .../java/net/emustudio/plugins/device/simh/DeviceImpl.java | 2 +- .../java/net/emustudio/plugins/device/simh/PseudoContext.java | 2 +- .../net/emustudio/plugins/device/simh/commands/AttachPTP.java | 2 +- .../net/emustudio/plugins/device/simh/commands/AttachPTR.java | 2 +- .../net/emustudio/plugins/device/simh/commands/Command.java | 2 +- .../net/emustudio/plugins/device/simh/commands/DetachPTP.java | 2 +- .../net/emustudio/plugins/device/simh/commands/DetachPTR.java | 2 +- .../emustudio/plugins/device/simh/commands/GenInterrupt.java | 2 +- .../emustudio/plugins/device/simh/commands/GetBankSelect.java | 2 +- .../plugins/device/simh/commands/GetCPUClockFrequency.java | 2 +- .../emustudio/plugins/device/simh/commands/GetClockCPM3.java | 2 +- .../emustudio/plugins/device/simh/commands/GetClockZSDOS.java | 2 +- .../net/emustudio/plugins/device/simh/commands/GetCommon.java | 2 +- .../plugins/device/simh/commands/GetHostFilenames.java | 2 +- .../plugins/device/simh/commands/GetHostOSPathSeparator.java | 2 +- .../plugins/device/simh/commands/GetSimhVersion.java | 2 +- .../plugins/device/simh/commands/HasBankedMemory.java | 2 +- .../net/emustudio/plugins/device/simh/commands/PrintTime.java | 2 +- .../emustudio/plugins/device/simh/commands/ReadStopWatch.java | 2 +- .../net/emustudio/plugins/device/simh/commands/ReadURL.java | 2 +- .../net/emustudio/plugins/device/simh/commands/ResetPTR.java | 2 +- .../plugins/device/simh/commands/ResetSimhInterface.java | 2 +- .../plugins/device/simh/commands/ResetStopWatch.java | 2 +- .../net/emustudio/plugins/device/simh/commands/SIMHSleep.java | 2 +- .../emustudio/plugins/device/simh/commands/Set8080CPU.java | 2 +- .../emustudio/plugins/device/simh/commands/SetBankSelect.java | 2 +- .../plugins/device/simh/commands/SetCPUClockFrequency.java | 2 +- .../emustudio/plugins/device/simh/commands/SetClockCPM3.java | 2 +- .../emustudio/plugins/device/simh/commands/SetClockZSDOS.java | 2 +- .../emustudio/plugins/device/simh/commands/SetTimerDelta.java | 2 +- .../plugins/device/simh/commands/SetTimerInterruptAdr.java | 2 +- .../net/emustudio/plugins/device/simh/commands/SetZ80CPU.java | 2 +- .../net/emustudio/plugins/device/simh/commands/ShowTimer.java | 2 +- .../emustudio/plugins/device/simh/commands/StartTimer.java | 2 +- .../plugins/device/simh/commands/StartTimerInterrupts.java | 2 +- .../net/emustudio/plugins/device/simh/commands/StopTimer.java | 2 +- .../plugins/device/simh/commands/StopTimerInterrupts.java | 2 +- .../net/emustudio/plugins/device/simh/DeviceImplTest.java | 2 +- plugins/device/ssem-display/build.gradle | 2 +- .../net/emustudio/plugins/device/ssem/display/DeviceImpl.java | 2 +- .../net/emustudio/plugins/device/ssem/display/DisplayGui.java | 2 +- .../emustudio/plugins/device/ssem/display/DisplayPanel.java | 2 +- .../emustudio/plugins/device/ssem/display/DeviceImplTest.java | 2 +- plugins/device/vt100-terminal/build.gradle | 2 +- .../java/net/emustudio/plugins/device/vt100/DeviceImpl.java | 2 +- .../net/emustudio/plugins/device/vt100/TerminalSettings.java | 2 +- .../net/emustudio/plugins/device/vt100/Vt100StateMachine.java | 2 +- .../net/emustudio/plugins/device/vt100/api/ContextVt100.java | 2 +- .../java/net/emustudio/plugins/device/vt100/api/Display.java | 2 +- .../java/net/emustudio/plugins/device/vt100/api/Keyboard.java | 2 +- .../net/emustudio/plugins/device/vt100/gui/DisplayCanvas.java | 2 +- .../emustudio/plugins/device/vt100/gui/SettingsDialog.java | 2 +- .../emustudio/plugins/device/vt100/gui/TerminalWindow.java | 2 +- .../emustudio/plugins/device/vt100/interaction/Cursor.java | 2 +- .../plugins/device/vt100/interaction/DisplayImpl.java | 2 +- .../plugins/device/vt100/interaction/KeyboardFromFile.java | 2 +- .../plugins/device/vt100/interaction/KeyboardGui.java | 2 +- .../net/emustudio/plugins/device/vt100/DeviceImplTest.java | 2 +- .../emustudio/plugins/device/vt100/api/ContextVt100Test.java | 2 +- .../plugins/device/vt100/interaction/CursorTest.java | 2 +- plugins/device/zxspectrum-bus/build.gradle | 2 +- .../emustudio/plugins/device/zxspectrum/bus/DeviceImpl.java | 2 +- .../plugins/device/zxspectrum/bus/ZxSpectrumBusImpl.java | 2 +- .../plugins/device/zxspectrum/bus/api/ZxSpectrumBus.java | 2 +- plugins/device/zxspectrum-ula/build.gradle | 2 +- .../emustudio/plugins/device/zxspectrum/ula/DeviceImpl.java | 2 +- .../plugins/device/zxspectrum/ula/PassedCyclesMediator.java | 2 +- .../java/net/emustudio/plugins/device/zxspectrum/ula/ULA.java | 4 ++-- .../emustudio/plugins/device/zxspectrum/ula/ZxParameters.java | 2 +- .../plugins/device/zxspectrum/ula/gui/DisplayCanvas.java | 2 +- .../plugins/device/zxspectrum/ula/gui/DisplayWindow.java | 2 +- .../plugins/device/zxspectrum/ula/gui/KeyboardCanvas.java | 2 +- .../plugins/device/zxspectrum/ula/gui/KeyboardDispatcher.java | 2 +- plugins/memory/byte-mem/build.gradle | 2 +- .../emustudio/plugins/memory/bytemem/MemoryContextImpl.java | 2 +- .../java/net/emustudio/plugins/memory/bytemem/MemoryImpl.java | 2 +- .../java/net/emustudio/plugins/memory/bytemem/RangeTree.java | 2 +- .../plugins/memory/bytemem/api/ByteMemoryContext.java | 2 +- .../net/emustudio/plugins/memory/bytemem/gui/Constants.java | 2 +- .../plugins/memory/bytemem/gui/FindSequenceDialog.java | 2 +- .../emustudio/plugins/memory/bytemem/gui/KeyboardHandler.java | 2 +- .../net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java | 2 +- .../emustudio/plugins/memory/bytemem/gui/MouseHandler.java | 2 +- .../plugins/memory/bytemem/gui/SelectBankAddressDialog.java | 2 +- .../emustudio/plugins/memory/bytemem/gui/SettingsDialog.java | 2 +- .../plugins/memory/bytemem/gui/actions/AsciiModeAction.java | 2 +- .../plugins/memory/bytemem/gui/actions/DumpMemoryAction.java | 2 +- .../plugins/memory/bytemem/gui/actions/EraseMemoryAction.java | 2 +- .../memory/bytemem/gui/actions/FindSequenceAction.java | 2 +- .../plugins/memory/bytemem/gui/actions/GotoAddressAction.java | 2 +- .../plugins/memory/bytemem/gui/actions/LoadImageAction.java | 2 +- .../plugins/memory/bytemem/gui/actions/SettingsAction.java | 2 +- .../gui/actions/find_sequence/PerformFindSequenceAction.java | 2 +- .../plugins/memory/bytemem/gui/model/FileImagesModel.java | 2 +- .../emustudio/plugins/memory/bytemem/gui/model/ROMmodel.java | 2 +- .../plugins/memory/bytemem/gui/table/MemoryCellEditor.java | 2 +- .../plugins/memory/bytemem/gui/table/MemoryCellRenderer.java | 2 +- .../memory/bytemem/gui/table/MemoryRowHeaderRenderer.java | 2 +- .../plugins/memory/bytemem/gui/table/MemoryTable.java | 2 +- .../plugins/memory/bytemem/gui/table/MemoryTableModel.java | 2 +- .../plugins/memory/bytemem/loaders/BinaryLoader.java | 2 +- .../emustudio/plugins/memory/bytemem/loaders/HexLoader.java | 2 +- .../net/emustudio/plugins/memory/bytemem/loaders/Loader.java | 2 +- .../emustudio/plugins/memory/bytemem/loaders/TapLoader.java | 2 +- .../emustudio/plugins/memory/bytemem/loaders/TzxLoader.java | 2 +- .../net/emustudio/plugins/memory/bytemem/MemoryImplTest.java | 2 +- .../net/emustudio/plugins/memory/bytemem/RangeTreeTest.java | 2 +- plugins/memory/ram-mem/build.gradle | 2 +- .../net/emustudio/plugins/memory/ram/MemoryContextImpl.java | 2 +- .../java/net/emustudio/plugins/memory/ram/MemoryImpl.java | 2 +- .../net/emustudio/plugins/memory/ram/api/RamInstruction.java | 2 +- .../java/net/emustudio/plugins/memory/ram/api/RamLabel.java | 2 +- .../emustudio/plugins/memory/ram/api/RamMemoryContext.java | 2 +- .../java/net/emustudio/plugins/memory/ram/api/RamValue.java | 2 +- .../java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java | 2 +- .../net/emustudio/plugins/memory/ram/gui/RamTableModel.java | 2 +- .../plugins/memory/ram/gui/actions/DumpMemoryAction.java | 2 +- .../plugins/memory/ram/gui/actions/EraseMemoryAction.java | 2 +- .../plugins/memory/ram/gui/actions/LoadImageAction.java | 2 +- .../emustudio/plugins/memory/ram/MemoryContextImplTest.java | 2 +- .../java/net/emustudio/plugins/memory/ram/MemoryImplTest.java | 2 +- plugins/memory/rasp-mem/build.gradle | 2 +- .../net/emustudio/plugins/memory/rasp/MemoryContextImpl.java | 2 +- .../java/net/emustudio/plugins/memory/rasp/MemoryImpl.java | 2 +- .../java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java | 2 +- .../emustudio/plugins/memory/rasp/api/RaspMemoryContext.java | 2 +- .../net/emustudio/plugins/memory/rasp/gui/Disassembler.java | 2 +- .../java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java | 2 +- .../net/emustudio/plugins/memory/rasp/gui/RaspTableModel.java | 2 +- .../plugins/memory/rasp/gui/actions/DumpMemoryAction.java | 2 +- .../plugins/memory/rasp/gui/actions/EraseMemoryAction.java | 2 +- .../plugins/memory/rasp/gui/actions/LoadImageAction.java | 2 +- .../net/emustudio/plugins/memory/rasp/MemoryImplTest.java | 2 +- plugins/memory/ssem-mem/build.gradle | 2 +- .../net/emustudio/plugins/memory/ssem/MemoryContextImpl.java | 2 +- .../java/net/emustudio/plugins/memory/ssem/MemoryImpl.java | 2 +- .../java/net/emustudio/plugins/memory/ssem/gui/Constants.java | 2 +- .../java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java | 2 +- .../plugins/memory/ssem/gui/actions/DumpMemoryAction.java | 2 +- .../plugins/memory/ssem/gui/actions/EraseMemoryAction.java | 2 +- .../plugins/memory/ssem/gui/actions/LoadImageAction.java | 2 +- .../plugins/memory/ssem/gui/table/MemoryCellEditor.java | 2 +- .../plugins/memory/ssem/gui/table/MemoryCellRenderer.java | 2 +- .../memory/ssem/gui/table/MemoryRowHeaderRenderer.java | 2 +- .../emustudio/plugins/memory/ssem/gui/table/MemoryTable.java | 2 +- .../plugins/memory/ssem/gui/table/MemoryTableModel.java | 2 +- .../emustudio/plugins/memory/ssem/MemoryContextImplTest.java | 2 +- .../net/emustudio/plugins/memory/ssem/MemoryImplTest.java | 2 +- .../plugins/memory/ssem/gui/MemoryTableModelTest.java | 2 +- .../plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java | 2 +- .../memory/ssem/gui/actions/EraseMemoryActionTest.java | 2 +- .../plugins/memory/ssem/gui/actions/LoadImageActionTest.java | 2 +- settings.gradle | 2 +- test_report.gradle | 2 +- 741 files changed, 743 insertions(+), 744 deletions(-) diff --git a/application/build.gradle b/application/build.gradle index 2ca4d413e..e952dacc5 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java b/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java index e3f6fb277..5b736bcbe 100644 --- a/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java +++ b/application/src/main/java/net/emustudio/application/ApplicationApiImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application; diff --git a/application/src/main/java/net/emustudio/application/Constants.java b/application/src/main/java/net/emustudio/application/Constants.java index fed501744..a56ffc172 100644 --- a/application/src/main/java/net/emustudio/application/Constants.java +++ b/application/src/main/java/net/emustudio/application/Constants.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application; diff --git a/application/src/main/java/net/emustudio/application/Resources.java b/application/src/main/java/net/emustudio/application/Resources.java index e730bd4b7..abec562a4 100644 --- a/application/src/main/java/net/emustudio/application/Resources.java +++ b/application/src/main/java/net/emustudio/application/Resources.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application; diff --git a/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java b/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java index e7b634522..1a517ec9d 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java +++ b/application/src/main/java/net/emustudio/application/cmdline/AutomationCommand.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.cmdline; diff --git a/application/src/main/java/net/emustudio/application/cmdline/Runner.java b/application/src/main/java/net/emustudio/application/cmdline/Runner.java index c2eb357c0..c6752f62e 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/Runner.java +++ b/application/src/main/java/net/emustudio/application/cmdline/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.cmdline; diff --git a/application/src/main/java/net/emustudio/application/cmdline/Utils.java b/application/src/main/java/net/emustudio/application/cmdline/Utils.java index eb3888a0f..562d2de0b 100644 --- a/application/src/main/java/net/emustudio/application/cmdline/Utils.java +++ b/application/src/main/java/net/emustudio/application/cmdline/Utils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.cmdline; diff --git a/application/src/main/java/net/emustudio/application/emulation/Automation.java b/application/src/main/java/net/emustudio/application/emulation/Automation.java index 16caaecea..1bd91178e 100644 --- a/application/src/main/java/net/emustudio/application/emulation/Automation.java +++ b/application/src/main/java/net/emustudio/application/emulation/Automation.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.emulation; diff --git a/application/src/main/java/net/emustudio/application/emulation/AutomationException.java b/application/src/main/java/net/emustudio/application/emulation/AutomationException.java index 21c905ae6..3f2e41a2a 100644 --- a/application/src/main/java/net/emustudio/application/emulation/AutomationException.java +++ b/application/src/main/java/net/emustudio/application/emulation/AutomationException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.emulation; diff --git a/application/src/main/java/net/emustudio/application/emulation/EmulationController.java b/application/src/main/java/net/emustudio/application/emulation/EmulationController.java index a6058926c..56c8c3519 100644 --- a/application/src/main/java/net/emustudio/application/emulation/EmulationController.java +++ b/application/src/main/java/net/emustudio/application/emulation/EmulationController.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.emulation; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java index 3503b215c..5bdc2498f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java index 05f853870..df4a476d9 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/CompilerSettingsAction.java b/application/src/main/java/net/emustudio/application/gui/actions/CompilerSettingsAction.java index 28767fe33..6021fcb5b 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/CompilerSettingsAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/CompilerSettingsAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/ExitAction.java b/application/src/main/java/net/emustudio/application/gui/actions/ExitAction.java index dbcf2b86f..7dd146441 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/ExitAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/ExitAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java index 1c668614e..1783c7d01 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/ViewComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java index da1ca8ef9..754ca8fcb 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java index 87dbd0374..23eca5bd5 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindNextAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java index 89f4e807a..087c4e7db 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindPreviousAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java index 6648374cf..a32517857 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java index 8f2c0c7ea..d6d264888 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java index 002e856f4..655c1e90e 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java index 3ca8f8d64..993a89f0b 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAsAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAsAction.java index 2040e3e13..e06a20a3e 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAsAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAsAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java index 332d2f382..d6abbaee1 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java index 81ac13cbf..39667ed26 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java index 4e8bb65fd..10bab02e9 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java index dee043a64..a56003d88 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java index b091f7a8c..2a5225662 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java index 24cbccb4e..3bab9790f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java index 1ff4b7c14..dc0a915a8 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java index 6a7313fb1..c6faf7d2f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceGuiAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java index 9004fc503..636d026c6 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowDeviceSettingsAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java index 7095ab128..04ef6e726 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java index d9e3c1468..4f98cd8c9 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java index 637d0d6c8..7f51e0c9f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java index 907e7553a..b6cbe5611 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.emulator; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java index b813e56db..0f677b03a 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java index f6e2d6288..9131cc45a 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java index 7826c4b67..fba8103ad 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java index 7117f3be9..697036c4f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java index 974f7c783..91465169a 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java index cddab26ae..f8965cff7 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.actions.opencomputer; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java index 35fb10309..d1f7a7bbd 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java index e579f9ed9..2d66cedbc 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java index d8c261b58..f29f46642 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java b/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java index ee4059350..d26bdc2a1 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java index 53cae4e1d..3b9c0aa12 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java index 385eab30e..f32b60303 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java index a4bbb798d..6fb322bcf 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java index cac7a4683..2d3833349 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/PaginatingDisassembler.java b/application/src/main/java/net/emustudio/application/gui/debugtable/PaginatingDisassembler.java index 8eb12645c..2084749cd 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/PaginatingDisassembler.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/PaginatingDisassembler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java index 1658297aa..2b572676d 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java index f1fdd48fd..bf51ccc60 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java index 4a74023b4..051316f0b 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java index 896e0eab9..0855acdd1 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java index 6806248f1..041c78962 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java index 7ef8447a7..48884b35b 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java index 292d98c95..381361105 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java index fc7222460..268b79dbd 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/PluginComboModel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/PluginComboModel.java index 722babade..d015eed87 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/PluginComboModel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/PluginComboModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java index 1118e0f5f..26fc7683f 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java index 9a2a6b3a6..d128d8355 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java index a37101291..7548db2a2 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/main/java/net/emustudio/application/gui/editor/Editor.java b/application/src/main/java/net/emustudio/application/gui/editor/Editor.java index b211aaa49..f81d1e9f1 100644 --- a/application/src/main/java/net/emustudio/application/gui/editor/Editor.java +++ b/application/src/main/java/net/emustudio/application/gui/editor/Editor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/editor/REditor.java b/application/src/main/java/net/emustudio/application/gui/editor/REditor.java index 8405071e8..6683d1f91 100644 --- a/application/src/main/java/net/emustudio/application/gui/editor/REditor.java +++ b/application/src/main/java/net/emustudio/application/gui/editor/REditor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/editor/RTokenMaker.java b/application/src/main/java/net/emustudio/application/gui/editor/RTokenMaker.java index cff1fd98b..23e48e4d4 100644 --- a/application/src/main/java/net/emustudio/application/gui/editor/RTokenMaker.java +++ b/application/src/main/java/net/emustudio/application/gui/editor/RTokenMaker.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/editor/RTokenMakerWrapper.java b/application/src/main/java/net/emustudio/application/gui/editor/RTokenMakerWrapper.java index aba2761ea..8675bc268 100644 --- a/application/src/main/java/net/emustudio/application/gui/editor/RTokenMakerWrapper.java +++ b/application/src/main/java/net/emustudio/application/gui/editor/RTokenMakerWrapper.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.editor; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java index 5173fcb9c..041b26845 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java index 3e32f703d..a204ea041 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/ExtendedDialogs.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java index 3a23a4ca1..78de71747 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/GuiDialogsImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java index 793175d06..9129b2c70 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/NoGuiDialogsImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; diff --git a/application/src/main/java/net/emustudio/application/gui/framework/P.java b/application/src/main/java/net/emustudio/application/gui/framework/P.java index 8fc180ea6..42e1b40c5 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/P.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/P.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.framework; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java b/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java index 8b56e7799..46fbdf74b 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/DrawingModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java index 278460f81..ea8e17c57 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/DrawingPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ /* * KISS, YAGNI, DRY diff --git a/application/src/main/java/net/emustudio/application/gui/schema/Schema.java b/application/src/main/java/net/emustudio/application/gui/schema/Schema.java index 96de09844..76c4bb04d 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/Schema.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/Schema.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java index 7810c697d..a94c7dd10 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/SchemaPreviewPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java index 9414a85fc..476500af8 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/CompilerElement.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java index d4cbef33a..37d124294 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/ConnectionLine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java index ca8c68212..406b16db6 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/CpuElement.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java index f4965c54e..fa1225067 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/DeviceElement.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java index 83b1d50dc..83b622690 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/Element.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java b/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java index b63001601..8b2a6c689 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/elements/MemoryElement.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.elements; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/AbstractMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/AbstractMode.java index c1044d6f0..1e32371d2 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/AbstractMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/AbstractMode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/Mode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/Mode.java index 101135545..6833b5b5c 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/Mode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/Mode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModeSelector.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModeSelector.java index c025b0be2..6c011efc3 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModeSelector.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModeSelector.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java index 36d763a3d..a642c9788 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/ModelingMode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java index 9aa1754ae..3e8c7e1f1 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/MovingMode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/ResizingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/ResizingMode.java index 28eb6175e..ceffada4d 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/ResizingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/ResizingMode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/gui/schema/mode/SelectingMode.java b/application/src/main/java/net/emustudio/application/gui/schema/mode/SelectingMode.java index 7f5ecb7be..6f1342348 100644 --- a/application/src/main/java/net/emustudio/application/gui/schema/mode/SelectingMode.java +++ b/application/src/main/java/net/emustudio/application/gui/schema/mode/SelectingMode.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.schema.mode; diff --git a/application/src/main/java/net/emustudio/application/internal/Hashing.java b/application/src/main/java/net/emustudio/application/internal/Hashing.java index 65faa82b6..e202bb57f 100644 --- a/application/src/main/java/net/emustudio/application/internal/Hashing.java +++ b/application/src/main/java/net/emustudio/application/internal/Hashing.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.internal; diff --git a/application/src/main/java/net/emustudio/application/internal/Reflection.java b/application/src/main/java/net/emustudio/application/internal/Reflection.java index 9c09828cc..2f17cd3db 100644 --- a/application/src/main/java/net/emustudio/application/internal/Reflection.java +++ b/application/src/main/java/net/emustudio/application/internal/Reflection.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.internal; diff --git a/application/src/main/java/net/emustudio/application/settings/AppSettings.java b/application/src/main/java/net/emustudio/application/settings/AppSettings.java index 73a6be8df..5ee995418 100644 --- a/application/src/main/java/net/emustudio/application/settings/AppSettings.java +++ b/application/src/main/java/net/emustudio/application/settings/AppSettings.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/BasicSettingsImpl.java b/application/src/main/java/net/emustudio/application/settings/BasicSettingsImpl.java index b4d9e69aa..84f7ebe57 100644 --- a/application/src/main/java/net/emustudio/application/settings/BasicSettingsImpl.java +++ b/application/src/main/java/net/emustudio/application/settings/BasicSettingsImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/ComputerConfig.java b/application/src/main/java/net/emustudio/application/settings/ComputerConfig.java index 43481b762..5717fc837 100644 --- a/application/src/main/java/net/emustudio/application/settings/ComputerConfig.java +++ b/application/src/main/java/net/emustudio/application/settings/ComputerConfig.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/ConfigFiles.java b/application/src/main/java/net/emustudio/application/settings/ConfigFiles.java index e1321a49e..2b133cda7 100644 --- a/application/src/main/java/net/emustudio/application/settings/ConfigFiles.java +++ b/application/src/main/java/net/emustudio/application/settings/ConfigFiles.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/PluginConfig.java b/application/src/main/java/net/emustudio/application/settings/PluginConfig.java index 2e8aca766..4bbd87b1e 100644 --- a/application/src/main/java/net/emustudio/application/settings/PluginConfig.java +++ b/application/src/main/java/net/emustudio/application/settings/PluginConfig.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/PluginConnection.java b/application/src/main/java/net/emustudio/application/settings/PluginConnection.java index 66824dece..3485e9659 100644 --- a/application/src/main/java/net/emustudio/application/settings/PluginConnection.java +++ b/application/src/main/java/net/emustudio/application/settings/PluginConnection.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/PluginSettingsImpl.java b/application/src/main/java/net/emustudio/application/settings/PluginSettingsImpl.java index 853c72a32..5d20fb9ce 100644 --- a/application/src/main/java/net/emustudio/application/settings/PluginSettingsImpl.java +++ b/application/src/main/java/net/emustudio/application/settings/PluginSettingsImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/settings/SchemaPoint.java b/application/src/main/java/net/emustudio/application/settings/SchemaPoint.java index b65d63f2b..f4ee79cb3 100644 --- a/application/src/main/java/net/emustudio/application/settings/SchemaPoint.java +++ b/application/src/main/java/net/emustudio/application/settings/SchemaPoint.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/ContextPoolImpl.java b/application/src/main/java/net/emustudio/application/virtualcomputer/ContextPoolImpl.java index 57bcfea5a..27584297d 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/ContextPoolImpl.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/ContextPoolImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/InvalidPluginException.java b/application/src/main/java/net/emustudio/application/virtualcomputer/InvalidPluginException.java index 43db6dfc9..f9f6c1870 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/InvalidPluginException.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/InvalidPluginException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginConnections.java b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginConnections.java index 4024234af..a203b4a24 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginConnections.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginConnections.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoader.java b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoader.java index a4e3aab8e..cb0c1ff53 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoader.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoadingException.java b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoadingException.java index 5cc3375ec..a7d950133 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoadingException.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/PluginLoadingException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/main/java/net/emustudio/application/virtualcomputer/VirtualComputer.java b/application/src/main/java/net/emustudio/application/virtualcomputer/VirtualComputer.java index e63be64e1..ea863c40b 100644 --- a/application/src/main/java/net/emustudio/application/virtualcomputer/VirtualComputer.java +++ b/application/src/main/java/net/emustudio/application/virtualcomputer/VirtualComputer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; @@ -135,7 +135,7 @@ private static Plugin createPluginInstance(long pluginID, Class constructor = mainClass.getDeclaredConstructor(PLUGIN_CONSTRUCTOR_PARAMS); return (Plugin) constructor.newInstance(pluginID, applicationApi, pluginSettings); diff --git a/application/src/test/java/net/emustudio/application/emulation/EmulationControllerTest.java b/application/src/test/java/net/emustudio/application/emulation/EmulationControllerTest.java index 1703118fd..7bbce4df9 100644 --- a/application/src/test/java/net/emustudio/application/emulation/EmulationControllerTest.java +++ b/application/src/test/java/net/emustudio/application/emulation/EmulationControllerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.emulation; diff --git a/application/src/test/java/net/emustudio/application/gui/debugtable/CallFlowTest.java b/application/src/test/java/net/emustudio/application/gui/debugtable/CallFlowTest.java index 3a39518b0..872e65913 100644 --- a/application/src/test/java/net/emustudio/application/gui/debugtable/CallFlowTest.java +++ b/application/src/test/java/net/emustudio/application/gui/debugtable/CallFlowTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/test/java/net/emustudio/application/gui/debugtable/DisassemblerStub.java b/application/src/test/java/net/emustudio/application/gui/debugtable/DisassemblerStub.java index a916292d5..31feb80ba 100644 --- a/application/src/test/java/net/emustudio/application/gui/debugtable/DisassemblerStub.java +++ b/application/src/test/java/net/emustudio/application/gui/debugtable/DisassemblerStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/test/java/net/emustudio/application/gui/debugtable/MockHelper.java b/application/src/test/java/net/emustudio/application/gui/debugtable/MockHelper.java index f0f89339d..53015e885 100644 --- a/application/src/test/java/net/emustudio/application/gui/debugtable/MockHelper.java +++ b/application/src/test/java/net/emustudio/application/gui/debugtable/MockHelper.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/test/java/net/emustudio/application/gui/debugtable/PaginatingDisassemblerTest.java b/application/src/test/java/net/emustudio/application/gui/debugtable/PaginatingDisassemblerTest.java index 7c5e415d7..ff376e770 100644 --- a/application/src/test/java/net/emustudio/application/gui/debugtable/PaginatingDisassemblerTest.java +++ b/application/src/test/java/net/emustudio/application/gui/debugtable/PaginatingDisassemblerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.debugtable; diff --git a/application/src/test/java/net/emustudio/application/gui/dialogs/PluginComboModelTest.java b/application/src/test/java/net/emustudio/application/gui/dialogs/PluginComboModelTest.java index 8ff705802..05bb94fd7 100644 --- a/application/src/test/java/net/emustudio/application/gui/dialogs/PluginComboModelTest.java +++ b/application/src/test/java/net/emustudio/application/gui/dialogs/PluginComboModelTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.gui.dialogs; diff --git a/application/src/test/java/net/emustudio/application/settings/AppSettingsTest.java b/application/src/test/java/net/emustudio/application/settings/AppSettingsTest.java index 3ca3ac541..f21910ad5 100644 --- a/application/src/test/java/net/emustudio/application/settings/AppSettingsTest.java +++ b/application/src/test/java/net/emustudio/application/settings/AppSettingsTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java b/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java index 595c6cdf7..65378ad41 100644 --- a/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java +++ b/application/src/test/java/net/emustudio/application/settings/ComputerConfigTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/test/java/net/emustudio/application/settings/ConfigFilesTest.java b/application/src/test/java/net/emustudio/application/settings/ConfigFilesTest.java index 180244e8e..68ce4231d 100644 --- a/application/src/test/java/net/emustudio/application/settings/ConfigFilesTest.java +++ b/application/src/test/java/net/emustudio/application/settings/ConfigFilesTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java b/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java index 9f08afb6d..6c9146eca 100644 --- a/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java +++ b/application/src/test/java/net/emustudio/application/settings/PluginConfigTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/test/java/net/emustudio/application/settings/SchemaPointTest.java b/application/src/test/java/net/emustudio/application/settings/SchemaPointTest.java index c3719fd43..9b0dc057c 100644 --- a/application/src/test/java/net/emustudio/application/settings/SchemaPointTest.java +++ b/application/src/test/java/net/emustudio/application/settings/SchemaPointTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.settings; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/ContextPoolImplTest.java b/application/src/test/java/net/emustudio/application/virtualcomputer/ContextPoolImplTest.java index 92b277861..beaa88807 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/ContextPoolImplTest.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/ContextPoolImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/ContextStubs.java b/application/src/test/java/net/emustudio/application/virtualcomputer/ContextStubs.java index ef92feb1d..7dd06a1d6 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/ContextStubs.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/ContextStubs.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/JarCreator.java b/application/src/test/java/net/emustudio/application/virtualcomputer/JarCreator.java index 7976f0a20..a1519c497 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/JarCreator.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/JarCreator.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/PluginLoaderTest.java b/application/src/test/java/net/emustudio/application/virtualcomputer/PluginLoaderTest.java index 4339b00d8..decf55579 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/PluginLoaderTest.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/PluginLoaderTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/VirtualComputerTest.java b/application/src/test/java/net/emustudio/application/virtualcomputer/VirtualComputerTest.java index b630a277a..bb7a7ca4f 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/VirtualComputerTest.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/VirtualComputerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/AbstractCPUStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/AbstractCPUStub.java index b52a2c442..b5391535f 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/AbstractCPUStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/AbstractCPUStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUContextStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUContextStub.java index 163c01f29..4045d279b 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUContextStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUContextStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUImplStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUImplStub.java index d243efe84..5d56a719c 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUImplStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUImplStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUListenerStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUListenerStub.java index 4f6c7516b..5bedb93ea 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUListenerStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CPUListenerStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CompilerContextStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CompilerContextStub.java index d220bd870..17504e720 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CompilerContextStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/CompilerContextStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/DeviceContextStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/DeviceContextStub.java index 5c2e1de75..2f52c4a40 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/DeviceContextStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/DeviceContextStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/ShortMemoryContextStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/ShortMemoryContextStub.java index a8b0a36e2..ca98d3edf 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/ShortMemoryContextStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/ShortMemoryContextStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedCPUStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedCPUStub.java index 41550066d..9319b11fd 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedCPUStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedCPUStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedContextStub.java b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedContextStub.java index 6c567c21b..921d6eb53 100644 --- a/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedContextStub.java +++ b/application/src/test/java/net/emustudio/application/virtualcomputer/stubs/UnannotatedContextStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.application.virtualcomputer.stubs; diff --git a/application/src/test/resources/dependencies/APluginDependsOnB.java b/application/src/test/resources/dependencies/APluginDependsOnB.java index 152a31994..5d665f67d 100644 --- a/application/src/test/resources/dependencies/APluginDependsOnB.java +++ b/application/src/test/resources/dependencies/APluginDependsOnB.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package dependencies; diff --git a/application/src/test/resources/dependencies/hidden/BdependsOnC.java b/application/src/test/resources/dependencies/hidden/BdependsOnC.java index d1881e7c8..c6da453ef 100644 --- a/application/src/test/resources/dependencies/hidden/BdependsOnC.java +++ b/application/src/test/resources/dependencies/hidden/BdependsOnC.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package dependencies.hidden; diff --git a/application/src/test/resources/dependencies/hidden/C.java b/application/src/test/resources/dependencies/hidden/C.java index 9fc5fe976..9102fab65 100644 --- a/application/src/test/resources/dependencies/hidden/C.java +++ b/application/src/test/resources/dependencies/hidden/C.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package dependencies.hidden; diff --git a/build.gradle b/build.gradle index 27aef1c1b..4610844e5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import java.text.SimpleDateFormat diff --git a/plugins/compiler/as-8080/build.gradle b/plugins/compiler/as-8080/build.gradle index 9699c562b..dd108c474 100644 --- a/plugins/compiler/as-8080/build.gradle +++ b/plugins/compiler/as-8080/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/as-8080/src/main/antlr/As8080Lexer.g4 b/plugins/compiler/as-8080/src/main/antlr/As8080Lexer.g4 index 61272dd74..42d6e52ae 100644 --- a/plugins/compiler/as-8080/src/main/antlr/As8080Lexer.g4 +++ b/plugins/compiler/as-8080/src/main/antlr/As8080Lexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar As8080Lexer; diff --git a/plugins/compiler/as-8080/src/main/antlr/As8080Parser.g4 b/plugins/compiler/as-8080/src/main/antlr/As8080Parser.g4 index b3b4018ae..b4925a3e0 100644 --- a/plugins/compiler/as-8080/src/main/antlr/As8080Parser.g4 +++ b/plugins/compiler/as-8080/src/main/antlr/As8080Parser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar As8080Parser; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Assembler8080.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Assembler8080.java index d9362cc3e..e73b51133 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Assembler8080.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Assembler8080.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; @@ -24,7 +24,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.nio.charset.StandardCharsets; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/CompileError.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/CompileError.java index 04429a8e2..11c94270e 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/CompileError.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/CompileError.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImpl.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImpl.java index 301e349ec..56a41d6e1 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImpl.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParserErrorListener.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParserErrorListener.java index c3a745961..ecda7c5cc 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParserErrorListener.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParsingUtils.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParsingUtils.java index bd5bbd2ec..5e51a139a 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParsingUtils.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ParsingUtils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Runner.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Runner.java index 562d9b1c8..e4bc2ee7a 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Runner.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Evaluated.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Evaluated.java index 6920b4f1e..23ce4243a 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Evaluated.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Evaluated.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/NameSpace.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/NameSpace.java index d78771048..27ba6c865 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/NameSpace.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/NameSpace.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Node.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Node.java index 28ef7e1fa..5821c2938 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Node.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Node.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Program.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Program.java index 6b0d82955..df9c9b0d8 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Program.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDB.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDB.java index aff139865..5b4790d8b 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDB.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDB.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.data; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDS.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDS.java index 7fd2d0238..500f5c9ea 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDS.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDS.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.data; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDW.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDW.java index c696ceb4c..b92657102 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDW.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/data/DataDW.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.data; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprCurrentAddress.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprCurrentAddress.java index e41e291a9..99d2406f6 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprCurrentAddress.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprCurrentAddress.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprId.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprId.java index 3a8b61506..f92d197c2 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprId.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprId.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprInfix.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprInfix.java index 4ff6b0700..15b7ada2c 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprInfix.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprInfix.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprNumber.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprNumber.java index cd92dd13b..862177133 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprNumber.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprNumber.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprString.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprString.java index eea6d9f05..5f2e31e0f 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprString.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprString.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprUnary.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprUnary.java index 3eff5ef88..cc4f8fd3e 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprUnary.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/expr/ExprUnary.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.expr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrExpr.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrExpr.java index 94065b4c8..4ee044e72 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrExpr.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrExpr.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrNoArgs.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrNoArgs.java index 57d62d0dd..f8fcab691 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrNoArgs.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrNoArgs.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrReg.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrReg.java index 1b3f278df..20818ab7a 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrReg.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrReg.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegExpr.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegExpr.java index 6385f9ada..d87864620 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegExpr.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegExpr.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPair.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPair.java index e17a12762..6c0f2ab83 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPair.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPair.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPairExpr.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPairExpr.java index 0f432d58f..6c0880175 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPairExpr.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegPairExpr.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegReg.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegReg.java index b4225bbe5..02bd1b0ae 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegReg.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/instr/InstrRegReg.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.instr; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoEqu.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoEqu.java index 58e2b310b..9c703e8db 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoEqu.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoEqu.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIf.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIf.java index 5f61b4cfb..bf0e1e46f 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIf.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIf.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIfExpression.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIfExpression.java index b919d346e..c614dd4b8 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIfExpression.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoIfExpression.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoInclude.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoInclude.java index 127e59e7a..405ea6907 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoInclude.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoInclude.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoLabel.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoLabel.java index 5d0dbc8b5..ca436a69c 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoLabel.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoLabel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroArgument.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroArgument.java index 18061d9ba..7bc67e84e 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroArgument.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroArgument.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroCall.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroCall.java index 9c99f5ddc..70d555a33 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroCall.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroCall.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroDef.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroDef.java index 6141d1093..b7cff69cc 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroDef.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroDef.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroParameter.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroParameter.java index 74e81c3eb..ae1682fe7 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroParameter.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoMacroParameter.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoOrg.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoOrg.java index 67993072b..03fb972c0 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoOrg.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoOrg.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoSet.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoSet.java index a4f88385c..44818d2aa 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoSet.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/pseudo/PseudoSet.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.ast.pseudo; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/CompileException.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/CompileException.java index 55c852e85..bb63e4577 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/CompileException.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.exceptions; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/FatalError.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/FatalError.java index 1f532a410..f87680a45 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/FatalError.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/FatalError.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.exceptions; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/SyntaxErrorException.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/SyntaxErrorException.java index 5d144a3d0..73b0b2e17 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/SyntaxErrorException.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/exceptions/SyntaxErrorException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.exceptions; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitor.java index bc80be07f..2f9dde230 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitor.java index 5a0f7b083..541ab3f35 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateDataVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateDataVisitor.java index 189beb92c..43df1d36d 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateDataVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateDataVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateExprVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateExprVisitor.java index 514c1ee99..62bdc5eee 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateExprVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateExprVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateInstrVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateInstrVisitor.java index eb3ce4d06..7d0760872 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateInstrVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateInstrVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateLineVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateLineVisitor.java index a1929e7cc..ccdada05a 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateLineVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateLineVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateProgramVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateProgramVisitor.java index 929267773..be24acd2f 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateProgramVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateProgramVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreatePseudoVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreatePseudoVisitor.java index 0adcbf70a..0aeb997a2 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreatePseudoVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreatePseudoVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateVisitors.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateVisitors.java index 157d9d1a2..c853c7f60 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateVisitors.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/CreateVisitors.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitor.java index 22e67c7be..4865ec7cc 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitor.java index 27a5c9dc1..235e115ca 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosVisitor.java index 237274841..2a9fbd00f 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitor.java index aa467437b..12f15b03f 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/NodeVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/NodeVisitor.java index f598786f1..6396dc338 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/NodeVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/NodeVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitor.java b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitor.java index 9d03189ca..e0aa70a38 100644 --- a/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitor.java +++ b/plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImplTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImplTest.java index 67f1cb5e9..af385dd63 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/RunnerTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/RunnerTest.java index 1e604ed08..40c73a357 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/RunnerTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/RunnerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/Utils.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/Utils.java index 02c963ecc..b33223600 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/Utils.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/Utils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/AbstractCompilerTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/AbstractCompilerTest.java index 06ec16b28..07e208d3f 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/AbstractCompilerTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/AbstractCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/Assembler8080Test.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/Assembler8080Test.java index f273388ca..784e67dc1 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/Assembler8080Test.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/Assembler8080Test.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/ConstantsAndVariablesTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/ConstantsAndVariablesTest.java index 7a1dc08ce..ceed15e8f 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/ConstantsAndVariablesTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/ConstantsAndVariablesTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/DataTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/DataTest.java index c8be216a9..9b9490abd 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/DataTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/DataTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IfNodeTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IfNodeTest.java index 9c03bb363..54fe8f70c 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IfNodeTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IfNodeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IncludeTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IncludeTest.java index 7fe76d6aa..080d1db21 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IncludeTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/IncludeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrExprTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrExprTest.java index 2ba9a5252..549e4b198 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrExprTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrExprTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrRegTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrRegTest.java index 757e622f4..4f6035af8 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrRegTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/InstrRegTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/MacroTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/MacroTest.java index ac0f8ecc4..c43d9b71f 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/MacroTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/MacroTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/PseudoOrgTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/PseudoOrgTest.java index 58593e683..c9e9a534b 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/PseudoOrgTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/e2e/PseudoOrgTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.e2e; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/LexicalAnalyzerImplTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/LexicalAnalyzerImplTest.java index 43748ee73..f10235b4e 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseDataTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseDataTest.java index 843414afc..00f98fa6a 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseDataTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseDataTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseExprTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseExprTest.java index 00f13835d..e082c4ac7 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseExprTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseExprTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseInstrTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseInstrTest.java index aec38ad15..0cf664169 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseInstrTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParseInstrTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsePseudoTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsePseudoTest.java index fd223674d..a072f5823 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsePseudoTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsePseudoTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsingUtilsTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsingUtilsTest.java index 6b9982e7a..ff2167401 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsingUtilsTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/parser/ParsingUtilsTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.parser; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitorTest.java index 3b479ac22..1e2de7489 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckDeclarationsVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitorTest.java index d8025b258..9f0cec29b 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/CheckExprSizesVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitorTest.java index bca7898ad..09a7bcefd 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/EvaluateExprVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitorTest.java index 003c9bc1c..f41e2a22a 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandIncludesVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosTest.java index 8119d3a83..05e2f6a3d 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/ExpandMacrosTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitorTest.java index 6cc8919f6..cdd3ddbae 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/GenerateCodeVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitorTest.java b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitorTest.java index 83512cf81..f328e7003 100644 --- a/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitorTest.java +++ b/plugins/compiler/as-8080/src/test/java/net/emustudio/plugins/compiler/as8080/visitors/SortMacroArgumentsVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.as8080.visitors; diff --git a/plugins/compiler/as-ssem/build.gradle b/plugins/compiler/as-ssem/build.gradle index af920586c..c1b411645 100644 --- a/plugins/compiler/as-ssem/build.gradle +++ b/plugins/compiler/as-ssem/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/as-ssem/src/main/antlr/SSEMLexer.g4 b/plugins/compiler/as-ssem/src/main/antlr/SSEMLexer.g4 index baed110aa..ecd0d5327 100644 --- a/plugins/compiler/as-ssem/src/main/antlr/SSEMLexer.g4 +++ b/plugins/compiler/as-ssem/src/main/antlr/SSEMLexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar SSEMLexer; diff --git a/plugins/compiler/as-ssem/src/main/antlr/SSEMParser.g4 b/plugins/compiler/as-ssem/src/main/antlr/SSEMParser.g4 index 31d455bf7..c058de908 100644 --- a/plugins/compiler/as-ssem/src/main/antlr/SSEMParser.g4 +++ b/plugins/compiler/as-ssem/src/main/antlr/SSEMParser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar SSEMParser; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java index 1eaf47977..9afbd7658 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CodeGenerator.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompileException.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompileException.java index ec1b6d5f6..a2bc093a3 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompileException.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompilerChecks.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompilerChecks.java index 4c4e0918e..c0d4e3bef 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompilerChecks.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/CompilerChecks.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImpl.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImpl.java index 1d82f5baf..662bd6b47 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImpl.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ParserErrorListener.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ParserErrorListener.java index aae1d4bc5..78e4a59b3 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ParserErrorListener.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Position.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Position.java index d4beb84d0..f5f1dbfff 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Position.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Position.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Runner.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Runner.java index 1a124c1fd..7ae875d40 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Runner.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/SSEMCompiler.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/SSEMCompiler.java index 673f384c0..75cd7fc01 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/SSEMCompiler.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/SSEMCompiler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Instruction.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Instruction.java index 78f9448e7..6c61f1f78 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Instruction.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Instruction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem.ast; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Program.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Program.java index 6184fd3c2..9978a076b 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Program.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem.ast; diff --git a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/ProgramParser.java b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/ProgramParser.java index cc2d7435c..d56c2e97d 100644 --- a/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/ProgramParser.java +++ b/plugins/compiler/as-ssem/src/main/java/net/emustudio/plugins/compiler/ssem/ast/ProgramParser.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem.ast; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexerTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexerTest.java index c266d70ae..7e30a008d 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexerTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImplTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImplTest.java index a307fbe77..cdb485c3a 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/ParserTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/ParserTest.java index ee0a6b60d..ff2bd4b52 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/ParserTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/ParserTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java index 01d4854b5..62c5eab04 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/RunnerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java index 5fa779cf8..9e007783c 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/SSEMCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/Utils.java b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/Utils.java index 8a7bd3bd4..92e747f78 100644 --- a/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/Utils.java +++ b/plugins/compiler/as-ssem/src/test/java/net/emustudio/plugins/compiler/ssem/Utils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ssem; diff --git a/plugins/compiler/as-z80/build.gradle b/plugins/compiler/as-z80/build.gradle index 267bd3c11..3c3cad0df 100644 --- a/plugins/compiler/as-z80/build.gradle +++ b/plugins/compiler/as-z80/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/as-z80/src/main/antlr/AsZ80Lexer.g4 b/plugins/compiler/as-z80/src/main/antlr/AsZ80Lexer.g4 index 6613fe308..b0feb773e 100644 --- a/plugins/compiler/as-z80/src/main/antlr/AsZ80Lexer.g4 +++ b/plugins/compiler/as-z80/src/main/antlr/AsZ80Lexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar AsZ80Lexer; diff --git a/plugins/compiler/as-z80/src/main/antlr/AsZ80Parser.g4 b/plugins/compiler/as-z80/src/main/antlr/AsZ80Parser.g4 index 615d6dacf..5dd6f4558 100644 --- a/plugins/compiler/as-z80/src/main/antlr/AsZ80Parser.g4 +++ b/plugins/compiler/as-z80/src/main/antlr/AsZ80Parser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar AsZ80Parser; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/AssemblerZ80.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/AssemblerZ80.java index f311cb4d5..fa8355441 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/AssemblerZ80.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/AssemblerZ80.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompileError.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompileError.java index 973bb32e9..c57c42aae 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompileError.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompileError.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompilerTables.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompilerTables.java index 8555bc561..2086d89ac 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompilerTables.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/CompilerTables.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImpl.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImpl.java index e220fb28a..d3a83069a 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImpl.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Pair.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Pair.java index 9f735ce53..f70bc55d5 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Pair.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Pair.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParserErrorListener.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParserErrorListener.java index b022c2287..06400ab41 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParserErrorListener.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParsingUtils.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParsingUtils.java index bd31aecd2..e220b771f 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParsingUtils.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ParsingUtils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Runner.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Runner.java index 94864ac06..81e80a830 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Runner.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Evaluated.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Evaluated.java index 8781e42c3..bb8fa935d 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Evaluated.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Evaluated.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java index 2f9f9edaf..cd5b0d51c 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Node.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Node.java index 058d6bb67..7e9ecfdf3 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Node.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Node.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Program.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Program.java index 7a610ab2d..d0dfeba97 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Program.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDB.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDB.java index 929f902f5..aa05f51ba 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDB.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDB.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.data; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDS.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDS.java index b4d940e04..ba9ccd3e6 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDS.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDS.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.data; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDW.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDW.java index fad5799d6..4a53b9bd6 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDW.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/data/DataDW.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.data; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprCurrentAddress.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprCurrentAddress.java index 40533bbf0..5ea5acd4a 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprCurrentAddress.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprCurrentAddress.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprId.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprId.java index 4a7b8e85f..eae426a07 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprId.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprId.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprInfix.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprInfix.java index 4374cdb2a..d5020594a 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprInfix.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprInfix.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprNumber.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprNumber.java index bfdf4d070..cbe8282ef 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprNumber.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprNumber.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprString.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprString.java index ddf866839..0679b55ee 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprString.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprString.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprUnary.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprUnary.java index 167b23386..518704946 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprUnary.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/expr/ExprUnary.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.expr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/Instr.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/Instr.java index 6a6862259..fb1ceb745 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/Instr.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/Instr.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.instr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrCB.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrCB.java index 0310b798a..c7260c5d1 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrCB.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrCB.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.instr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrED.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrED.java index 8987d9c5d..1f089947d 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrED.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrED.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.instr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXD.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXD.java index e1c1e05f4..9d45a0755 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXD.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXD.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.instr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXDCB.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXDCB.java index 480e0b303..b434af452 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXDCB.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/instr/InstrXDCB.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.instr; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoEqu.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoEqu.java index 5fd8f49e1..0b5e59bae 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoEqu.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoEqu.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIf.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIf.java index 252f91f1f..c15b1f30f 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIf.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIf.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIfExpression.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIfExpression.java index 8a4088684..376505ab5 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIfExpression.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoIfExpression.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoInclude.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoInclude.java index 3e9ffa701..9e6bb64b6 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoInclude.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoInclude.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoLabel.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoLabel.java index c4686c30b..a2d0fadb4 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoLabel.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoLabel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroArgument.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroArgument.java index 5b3a1b93e..a84bde5ac 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroArgument.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroArgument.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroCall.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroCall.java index de165f6a9..109adb7e0 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroCall.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroCall.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroDef.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroDef.java index 5bdc2745f..c92ab9fca 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroDef.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroDef.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroParameter.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroParameter.java index 12df8f08f..38bd470e0 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroParameter.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoMacroParameter.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoOrg.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoOrg.java index d87b34f0c..6505f9698 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoOrg.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoOrg.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoVar.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoVar.java index cf7b042ec..742013569 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoVar.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/pseudo/PseudoVar.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.ast.pseudo; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/CompileException.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/CompileException.java index 69049ba7f..1a4982e3a 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/CompileException.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.exceptions; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/FatalError.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/FatalError.java index 849ecae37..76df4d6d7 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/FatalError.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/FatalError.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.exceptions; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/SyntaxErrorException.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/SyntaxErrorException.java index 1e8815cd8..1b0983e44 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/SyntaxErrorException.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/exceptions/SyntaxErrorException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.exceptions; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitor.java index 2e2e699c3..da1472cf0 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitor.java index d059939b0..2a54f9aa9 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CollectExprsInOpcodeVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CollectExprsInOpcodeVisitor.java index 3685a3644..007558a1c 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CollectExprsInOpcodeVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CollectExprsInOpcodeVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateDataVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateDataVisitor.java index 1d2f5c574..5d511c4f3 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateDataVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateDataVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateExprVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateExprVisitor.java index 854d06152..159e87dfe 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateExprVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateExprVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateInstrVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateInstrVisitor.java index 54008d187..687715563 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateInstrVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateInstrVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateLineVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateLineVisitor.java index 5a89d9961..77ccfe24c 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateLineVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateLineVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateProgramVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateProgramVisitor.java index c7d910899..51421f254 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateProgramVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateProgramVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreatePseudoVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreatePseudoVisitor.java index 4ba489742..98efc8874 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreatePseudoVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreatePseudoVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateVisitors.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateVisitors.java index 039098493..9662da8fd 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateVisitors.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateVisitors.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitor.java index 237666230..a76e52a66 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitor.java index bd05d23ab..74d22092e 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosVisitor.java index 4d57ee382..09407e646 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitor.java index 7aeb003dc..5a23211e3 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/NodeVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/NodeVisitor.java index 4abb66958..93fb7822f 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/NodeVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/NodeVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitor.java b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitor.java index a23ffea41..a8ec9dad7 100644 --- a/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitor.java +++ b/plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImplTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImplTest.java index 41cbfa7bf..0baeda8f3 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/RunnerTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/RunnerTest.java index daa95fe74..44c82aa59 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/RunnerTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/RunnerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/Utils.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/Utils.java index 9b23effbb..927724103 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/Utils.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/Utils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AbstractCompilerTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AbstractCompilerTest.java index cba567397..8fb1e5272 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AbstractCompilerTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AbstractCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AssemblerZ80Test.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AssemblerZ80Test.java index cedfff3f8..2bcfb997b 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AssemblerZ80Test.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/AssemblerZ80Test.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/ConstantsAndVariablesTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/ConstantsAndVariablesTest.java index afd406c58..f2e312fc0 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/ConstantsAndVariablesTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/ConstantsAndVariablesTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/DataTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/DataTest.java index afb3ef631..5e4ce6394 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/DataTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/DataTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IfNodeTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IfNodeTest.java index cd7278f05..164f36b87 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IfNodeTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IfNodeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IncludeTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IncludeTest.java index 425ec7afd..ffee83dbd 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IncludeTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/IncludeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrExprTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrExprTest.java index 498893315..e0812e02b 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrExprTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrExprTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrRegTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrRegTest.java index 73a794667..7b5923567 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrRegTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/InstrRegTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/JumpTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/JumpTest.java index 70fa6e5c7..9d05c16dc 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/JumpTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/JumpTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/MacroTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/MacroTest.java index 175cc8500..45ac5bf03 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/MacroTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/MacroTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/PseudoOrgTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/PseudoOrgTest.java index 5bf658f93..097b3680e 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/PseudoOrgTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/e2e/PseudoOrgTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.e2e; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/LexicalAnalyzerImplTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/LexicalAnalyzerImplTest.java index 625eb22da..2ad97c75b 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseDataTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseDataTest.java index 3007d2180..759b6d478 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseDataTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseDataTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseExprTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseExprTest.java index ff3a3712b..74f72b882 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseExprTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseExprTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseInstrTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseInstrTest.java index 8236c10e9..5df0ff49e 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseInstrTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParseInstrTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsePseudoTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsePseudoTest.java index 8dc59eef0..e7c3795b5 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsePseudoTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsePseudoTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsingUtilsTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsingUtilsTest.java index a7216e183..c9bc21c03 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsingUtilsTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/parser/ParsingUtilsTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.parser; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitorTest.java index 2ea8535e1..2c6ff7b40 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckDeclarationsVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitorTest.java index c3ceff9a5..81629455f 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/CheckExprSizesVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitorTest.java index fef46f936..cb7fb519a 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/EvaluateExprVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitorTest.java index da73ca110..c3358ac60 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandIncludesVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosTest.java index 5cea6094a..2e6996464 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/ExpandMacrosTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitorTest.java index 2f9bde351..de7228068 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/GenerateCodeVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitorTest.java b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitorTest.java index 152e504be..22eb985c2 100644 --- a/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitorTest.java +++ b/plugins/compiler/as-z80/src/test/java/net/emustudio/plugins/compiler/asZ80/visitors/SortMacroArgumentsVisitorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.asZ80.visitors; diff --git a/plugins/compiler/brainc-brainduck/build.gradle b/plugins/compiler/brainc-brainduck/build.gradle index 666ac58d4..93350667b 100644 --- a/plugins/compiler/brainc-brainduck/build.gradle +++ b/plugins/compiler/brainc-brainduck/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/brainc-brainduck/src/main/antlr/BraincLexer.g4 b/plugins/compiler/brainc-brainduck/src/main/antlr/BraincLexer.g4 index 97761e900..cab54d096 100644 --- a/plugins/compiler/brainc-brainduck/src/main/antlr/BraincLexer.g4 +++ b/plugins/compiler/brainc-brainduck/src/main/antlr/BraincLexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar BraincLexer; diff --git a/plugins/compiler/brainc-brainduck/src/main/antlr/BraincParser.g4 b/plugins/compiler/brainc-brainduck/src/main/antlr/BraincParser.g4 index 01af29b94..46b3d5c98 100644 --- a/plugins/compiler/brainc-brainduck/src/main/antlr/BraincParser.g4 +++ b/plugins/compiler/brainc-brainduck/src/main/antlr/BraincParser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar BraincParser; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompileException.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompileException.java index 8a14daf52..513fa0f5d 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompileException.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompilerBrainduck.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompilerBrainduck.java index f5ea5cd9d..9adcec6b1 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompilerBrainduck.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/CompilerBrainduck.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImpl.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImpl.java index 8b75ae8df..e4188ab63 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImpl.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ParserErrorListener.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ParserErrorListener.java index 9207340c6..980a92b25 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ParserErrorListener.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/Runner.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/Runner.java index c933a8332..666540718 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/Runner.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Instruction.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Instruction.java index dcba908da..d0d4b6c5e 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Instruction.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Instruction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck.ast; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Program.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Program.java index 6afd1da19..edd25741e 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Program.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck.ast; diff --git a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/ProgramParser.java b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/ProgramParser.java index a66b12f59..d79aacc7f 100644 --- a/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/ProgramParser.java +++ b/plugins/compiler/brainc-brainduck/src/main/java/net/emustudio/plugins/compiler/brainduck/ast/ProgramParser.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck.ast; diff --git a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/AbstractCompilerTest.java b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/AbstractCompilerTest.java index 04e95950e..a51f12126 100644 --- a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/AbstractCompilerTest.java +++ b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/AbstractCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/InstructionTest.java b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/InstructionTest.java index ee89bb7a7..8714ff8b5 100644 --- a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/InstructionTest.java +++ b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/InstructionTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImplTest.java b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImplTest.java index 75010a31b..e369ef8c0 100644 --- a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/RunnerTest.java b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/RunnerTest.java index 0b06e1fb1..a4a849462 100644 --- a/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/RunnerTest.java +++ b/plugins/compiler/brainc-brainduck/src/test/java/net/emustudio/plugins/compiler/brainduck/RunnerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.brainduck; diff --git a/plugins/compiler/ramc-ram/build.gradle b/plugins/compiler/ramc-ram/build.gradle index d5bcd5ba9..452ec6fd3 100644 --- a/plugins/compiler/ramc-ram/build.gradle +++ b/plugins/compiler/ramc-ram/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/ramc-ram/src/main/antlr/RAMLexer.g4 b/plugins/compiler/ramc-ram/src/main/antlr/RAMLexer.g4 index 6ec7c33a1..5b549864c 100644 --- a/plugins/compiler/ramc-ram/src/main/antlr/RAMLexer.g4 +++ b/plugins/compiler/ramc-ram/src/main/antlr/RAMLexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar RAMLexer; diff --git a/plugins/compiler/ramc-ram/src/main/antlr/RAMParser.g4 b/plugins/compiler/ramc-ram/src/main/antlr/RAMParser.g4 index dd1c333bf..6ce3187d6 100644 --- a/plugins/compiler/ramc-ram/src/main/antlr/RAMParser.g4 +++ b/plugins/compiler/ramc-ram/src/main/antlr/RAMParser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar RAMParser; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/CompilerRAM.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/CompilerRAM.java index 76a4af186..cbe422f80 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/CompilerRAM.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/CompilerRAM.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImpl.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImpl.java index 949af89c8..3a7bbceb2 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImpl.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParserErrorListener.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParserErrorListener.java index 7a03e4431..b14f790e3 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParserErrorListener.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParsingUtils.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParsingUtils.java index 397d61f2f..a5b69aa7f 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParsingUtils.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ParsingUtils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ProgramParser.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ProgramParser.java index 96c65bc3b..3b1286a07 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ProgramParser.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ProgramParser.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/Runner.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/Runner.java index b79f5ddcf..87639d20f 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/Runner.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/SerializableOptional.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/SerializableOptional.java index 9ffa20b02..46ce5be99 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/SerializableOptional.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/SerializableOptional.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Instruction.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Instruction.java index 2fa3de0ae..fc9ce6f54 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Instruction.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Instruction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.ast; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Label.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Label.java index 1f3dd90bf..726da06f2 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Label.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Label.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.ast; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Program.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Program.java index 893d3ed13..0011aa8fe 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Program.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.ast; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Value.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Value.java index 033fcea19..b74a32584 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Value.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/ast/Value.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.ast; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/CompileException.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/CompileException.java index 9b792df0e..f8cf9bff3 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/CompileException.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.exceptions; diff --git a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/SyntaxErrorException.java b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/SyntaxErrorException.java index ca2179f6b..48843094c 100644 --- a/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/SyntaxErrorException.java +++ b/plugins/compiler/ramc-ram/src/main/java/net/emustudio/plugins/compiler/ram/exceptions/SyntaxErrorException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram.exceptions; diff --git a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/AbstractCompilerTest.java b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/AbstractCompilerTest.java index 24a2ddf0d..02122fe5d 100644 --- a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/AbstractCompilerTest.java +++ b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/AbstractCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/CompilerTest.java b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/CompilerTest.java index 9d23b86af..37c706c1c 100644 --- a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/CompilerTest.java +++ b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/CompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImplTest.java b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImplTest.java index 42e9f9e19..e63a27000 100644 --- a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/MemoryStub.java b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/MemoryStub.java index 8f2c2a323..77dfe6eed 100644 --- a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/MemoryStub.java +++ b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/MemoryStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/RunnerTest.java b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/RunnerTest.java index 50fcbcfac..ee07614e4 100644 --- a/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/RunnerTest.java +++ b/plugins/compiler/ramc-ram/src/test/java/net/emustudio/plugins/compiler/ram/RunnerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.ram; diff --git a/plugins/compiler/raspc-rasp/build.gradle b/plugins/compiler/raspc-rasp/build.gradle index 9909e5723..ca70f43c4 100644 --- a/plugins/compiler/raspc-rasp/build.gradle +++ b/plugins/compiler/raspc-rasp/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/compiler/raspc-rasp/src/main/antlr/RASPLexer.g4 b/plugins/compiler/raspc-rasp/src/main/antlr/RASPLexer.g4 index 4d17be960..2703e4524 100644 --- a/plugins/compiler/raspc-rasp/src/main/antlr/RASPLexer.g4 +++ b/plugins/compiler/raspc-rasp/src/main/antlr/RASPLexer.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ lexer grammar RASPLexer; diff --git a/plugins/compiler/raspc-rasp/src/main/antlr/RASPParser.g4 b/plugins/compiler/raspc-rasp/src/main/antlr/RASPParser.g4 index d148f2692..12723a566 100644 --- a/plugins/compiler/raspc-rasp/src/main/antlr/RASPParser.g4 +++ b/plugins/compiler/raspc-rasp/src/main/antlr/RASPParser.g4 @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ parser grammar RASPParser; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/CompilerRASP.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/CompilerRASP.java index dfc487886..b6a615213 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/CompilerRASP.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/CompilerRASP.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImpl.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImpl.java index 3b8178beb..dccda8364 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImpl.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParserErrorListener.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParserErrorListener.java index 8dd5729a6..7dd54745d 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParserErrorListener.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParserErrorListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParsingUtils.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParsingUtils.java index 23083fe44..4c5cf880e 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParsingUtils.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ParsingUtils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ProgramParser.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ProgramParser.java index dbe75d907..c8a58d9ee 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ProgramParser.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ProgramParser.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/Runner.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/Runner.java index 9445edbca..acab5616f 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/Runner.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Instruction.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Instruction.java index 4069b2fa6..25cf1472a 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Instruction.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Instruction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp.ast; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Label.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Label.java index 08eff246f..66dd7a7d4 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Label.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Label.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp.ast; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Program.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Program.java index 6cdd0b1e6..52d8ed3a3 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Program.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/ast/Program.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp.ast; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/CompileException.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/CompileException.java index bc9409537..66f2d3af0 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/CompileException.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/CompileException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp.exceptions; diff --git a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/SyntaxErrorException.java b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/SyntaxErrorException.java index a80cc4ac5..9d776794e 100644 --- a/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/SyntaxErrorException.java +++ b/plugins/compiler/raspc-rasp/src/main/java/net/emustudio/plugins/compiler/rasp/exceptions/SyntaxErrorException.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp.exceptions; diff --git a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/AbstractCompilerTest.java b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/AbstractCompilerTest.java index d91c0fe53..0cfea7701 100644 --- a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/AbstractCompilerTest.java +++ b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/AbstractCompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/CompilerTest.java b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/CompilerTest.java index 7e1b61092..05d94e301 100644 --- a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/CompilerTest.java +++ b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/CompilerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImplTest.java b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImplTest.java index 9aa7e7be8..1c013c310 100644 --- a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImplTest.java +++ b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/LexicalAnalyzerImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/MemoryStub.java b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/MemoryStub.java index 4716b93d2..25b93b77a 100644 --- a/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/MemoryStub.java +++ b/plugins/compiler/raspc-rasp/src/test/java/net/emustudio/plugins/compiler/rasp/MemoryStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.compiler.rasp; diff --git a/plugins/cpu/8080-cpu/build.gradle b/plugins/cpu/8080-cpu/build.gradle index 0df84f5a1..1e33dd596 100644 --- a/plugins/cpu/8080-cpu/build.gradle +++ b/plugins/cpu/8080-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/8080-cpu/src/main/edigen/cpu.eds b/plugins/cpu/8080-cpu/src/main/edigen/cpu.eds index 2039dfe42..a11611827 100644 --- a/plugins/cpu/8080-cpu/src/main/edigen/cpu.eds +++ b/plugins/cpu/8080-cpu/src/main/edigen/cpu.eds @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ root instruction; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/Context8080Impl.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/Context8080Impl.java index 722683cd4..3b297311c 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/Context8080Impl.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/Context8080Impl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/CpuImpl.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/CpuImpl.java index 1fed0248a..fa617fa6a 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/CpuImpl.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/DispatchTables.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/DispatchTables.java index e225940e9..656faea95 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/DispatchTables.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/DispatchTables.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java index f1f734cdd..d3390900a 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorTables.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorTables.java index 29cb19625..83e20fc6a 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorTables.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorTables.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InitializerFor8080.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InitializerFor8080.java index 1105dfd64..babdd59da 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InitializerFor8080.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InitializerFor8080.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InstructionPrinter.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InstructionPrinter.java index 80d88a725..f2678ee68 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InstructionPrinter.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/InstructionPrinter.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/Context8080.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/Context8080.java index 0a4f2f4f0..015069df0 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/Context8080.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/Context8080.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.api; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java index d9d3ed6cf..87ea5a7fb 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.api; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DefaultInitializer.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DefaultInitializer.java index 6a7c47562..9e01a480d 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DefaultInitializer.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DefaultInitializer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.api; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DispatchListener.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DispatchListener.java index 2bb5de9de..b8f8965be 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DispatchListener.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/DispatchListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.api; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/FlagsModel.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/FlagsModel.java index fc20d5885..f81febf48 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/FlagsModel.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/FlagsModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.gui; diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java index 52721194f..8d2cdfe03 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.gui; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ArithmeticTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ArithmeticTest.java index 4b87f61cd..c8def35b2 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ArithmeticTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ArithmeticTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ControlTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ControlTest.java index ffd171d06..4469c9119 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ControlTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/ControlTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/CpuImplTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/CpuImplTest.java index c3091028c..a1d58e472 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/CpuImplTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/InstructionsTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/InstructionsTest.java index 197d5a55d..8da338689 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/InstructionsTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/InstructionsTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/LogicTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/LogicTest.java index a73c97c61..f0447d30d 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/LogicTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/LogicTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/StackTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/StackTest.java index 1481d1d5a..ff8a67fdb 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/StackTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/StackTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/TransferTest.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/TransferTest.java index 3ab9036dc..1cdd0aa80 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/TransferTest.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/TransferTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/ByteTestBuilder.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/ByteTestBuilder.java index f0365837e..5552304f2 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/ByteTestBuilder.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/ByteTestBuilder.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuRunnerImpl.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuRunnerImpl.java index 75f86412d..88e9e5b08 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuRunnerImpl.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuRunnerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuVerifierImpl.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuVerifierImpl.java index d9ed95e13..36f97e9bb 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuVerifierImpl.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/CpuVerifierImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/FlagsCheckImpl.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/FlagsCheckImpl.java index fcbc5f1a7..a972db34c 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/FlagsCheckImpl.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/FlagsCheckImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/IntegerTestBuilder.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/IntegerTestBuilder.java index 06dd17241..81efd3459 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/IntegerTestBuilder.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/IntegerTestBuilder.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/Register.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/Register.java index 4fa3ace0f..0635642fd 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/Register.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/Register.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite.injectors; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPair.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPair.java index 4ec539ffb..b5c9d0e5a 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPair.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPair.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite.injectors; diff --git a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPairPSW.java b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPairPSW.java index 0a9b508ef..e9d648775 100644 --- a/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPairPSW.java +++ b/plugins/cpu/8080-cpu/src/test/java/net/emustudio/plugins/cpu/intel8080/suite/injectors/RegisterPairPSW.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.intel8080.suite.injectors; diff --git a/plugins/cpu/brainduck-cpu/build.gradle b/plugins/cpu/brainduck-cpu/build.gradle index d6ec96b0a..dfe79d48c 100644 --- a/plugins/cpu/brainduck-cpu/build.gradle +++ b/plugins/cpu/brainduck-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/brainduck-cpu/src/main/edigen/cpu.eds b/plugins/cpu/brainduck-cpu/src/main/edigen/cpu.eds index 7b26c36f9..bd3ac4536 100644 --- a/plugins/cpu/brainduck-cpu/src/main/edigen/cpu.eds +++ b/plugins/cpu/brainduck-cpu/src/main/edigen/cpu.eds @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ root instruction; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContext.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContext.java index bb1708a53..c7f750f0c 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContext.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContextImpl.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContextImpl.java index cd9263306..083ea8d3d 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContextImpl.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/BrainCPUContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Breakpoint.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Breakpoint.java index fc42116e1..97328224a 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Breakpoint.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Breakpoint.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/CpuImpl.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/CpuImpl.java index 904d5a8f0..7036ef891 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/CpuImpl.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngine.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngine.java index 620de7623..18da1994f 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngine.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Profiler.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Profiler.java index 9a53d14e2..e192ea20d 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Profiler.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/Profiler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java index 6223794a7..e54d64d8a 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/ColumnsRepainter.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck.gui; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/MemoryTableModel.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/MemoryTableModel.java index c27d805b4..92844deb0 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/MemoryTableModel.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/MemoryTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck.gui; diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java index c42d66875..c884618fa 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck.gui; diff --git a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/CpuImplTest.java b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/CpuImplTest.java index 4830537d1..b57f6d029 100644 --- a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/CpuImplTest.java +++ b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/DeviceStub.java b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/DeviceStub.java index 09f6d8874..031e7a3b6 100644 --- a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/DeviceStub.java +++ b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/DeviceStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngineTest.java b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngineTest.java index 91dca1c59..a435a6148 100644 --- a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngineTest.java +++ b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/EmulatorEngineTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/MemoryStub.java b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/MemoryStub.java index e60c8b6fe..d6345153f 100644 --- a/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/MemoryStub.java +++ b/plugins/cpu/brainduck-cpu/src/test/java/net/emustudio/plugins/cpu/brainduck/MemoryStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.brainduck; diff --git a/plugins/cpu/ram-cpu/build.gradle b/plugins/cpu/ram-cpu/build.gradle index 068adeaa5..4dd55a1ab 100644 --- a/plugins/cpu/ram-cpu/build.gradle +++ b/plugins/cpu/ram-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/Breakpoint.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/Breakpoint.java index 1b4a1a7d6..2e4bb8068 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/Breakpoint.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/Breakpoint.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java index 90d54c36b..00187c37b 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/EmulatorEngine.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/EmulatorEngine.java index 0e03e2d7a..bd6ade533 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/EmulatorEngine.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/RamCpuContextImpl.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/RamCpuContextImpl.java index 327dac9b9..40d786eb7 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/RamCpuContextImpl.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/RamCpuContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/api/RamCpuContext.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/api/RamCpuContext.java index 8464c3380..b3a34f139 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/api/RamCpuContext.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/api/RamCpuContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram.api; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java index dff517975..d541a1910 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/LabelDebugColumn.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram.gui; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamDisassembler.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamDisassembler.java index e258a5091..04c5a640e 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamDisassembler.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamDisassembler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram.gui; diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java index a5f5ac557..880fbdb67 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram.gui; diff --git a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/AbstractEngineTest.java b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/AbstractEngineTest.java index 9115c511f..9776050b1 100644 --- a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/AbstractEngineTest.java +++ b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/AbstractEngineTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/CpuImplTest.java b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/CpuImplTest.java index be6eae6c0..3dc754c01 100644 --- a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/CpuImplTest.java +++ b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/EmulatorEngineTest.java b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/EmulatorEngineTest.java index b54e64167..bf53fe6e1 100644 --- a/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/EmulatorEngineTest.java +++ b/plugins/cpu/ram-cpu/src/test/java/net/emustudio/plugins/cpu/ram/EmulatorEngineTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ram; diff --git a/plugins/cpu/rasp-cpu/build.gradle b/plugins/cpu/rasp-cpu/build.gradle index 55534f7b6..a7d10b88a 100644 --- a/plugins/cpu/rasp-cpu/build.gradle +++ b/plugins/cpu/rasp-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/Breakpoint.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/Breakpoint.java index 460dbc4c1..793e7fc44 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/Breakpoint.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/Breakpoint.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java index 6557e57dd..eec919250 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/EmulatorEngine.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/EmulatorEngine.java index 548d2c2b2..304d3a796 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/EmulatorEngine.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/RaspCpuContextImpl.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/RaspCpuContextImpl.java index 74b233f52..dccaf612a 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/RaspCpuContextImpl.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/RaspCpuContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/api/RaspCpuContext.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/api/RaspCpuContext.java index a2348f63f..28d1df140 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/api/RaspCpuContext.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/api/RaspCpuContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp.api; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java index 69c81a91b..187db4c15 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/LabelDebugColumn.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp.gui; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspDisassembler.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspDisassembler.java index c3ebfc6f0..5a9a6822b 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspDisassembler.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspDisassembler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp.gui; diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java index 6b5008e91..d7c2d267d 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp.gui; diff --git a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/CpuImplTest.java b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/CpuImplTest.java index b5d1ad4b7..09bf98d7d 100644 --- a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/CpuImplTest.java +++ b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/EmulatorEngineTest.java b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/EmulatorEngineTest.java index 487d2ab17..2f3a5ed49 100644 --- a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/EmulatorEngineTest.java +++ b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/EmulatorEngineTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/MemoryStub.java b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/MemoryStub.java index c9b214248..a90e18679 100644 --- a/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/MemoryStub.java +++ b/plugins/cpu/rasp-cpu/src/test/java/net/emustudio/plugins/cpu/rasp/MemoryStub.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.rasp; diff --git a/plugins/cpu/ssem-cpu/build.gradle b/plugins/cpu/ssem-cpu/build.gradle index edb00e575..de29b3971 100644 --- a/plugins/cpu/ssem-cpu/build.gradle +++ b/plugins/cpu/ssem-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/ssem-cpu/src/main/edigen/cpu.eds b/plugins/cpu/ssem-cpu/src/main/edigen/cpu.eds index d1bb95ed9..feb8c0ec0 100644 --- a/plugins/cpu/ssem-cpu/src/main/edigen/cpu.eds +++ b/plugins/cpu/ssem-cpu/src/main/edigen/cpu.eds @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ root instruction, data; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/AutomaticEmulation.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/AutomaticEmulation.java index 174cd34f0..18cd55f43 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/AutomaticEmulation.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/AutomaticEmulation.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java index 36fa54f07..453f632bf 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java index b7aaf5f7a..c7f143d98 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java index ef6210708..84dfc99f3 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/LineColumn.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java index 26d1d55bc..14ff3836b 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem.gui; diff --git a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/CpuImplTest.java b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/CpuImplTest.java index 8688aa62a..ed6a870b2 100644 --- a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/CpuImplTest.java +++ b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/DisassemblerTest.java b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/DisassemblerTest.java index 11bd012fc..1c3d73945 100644 --- a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/DisassemblerTest.java +++ b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/DisassemblerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/EmulatorEngineTest.java b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/EmulatorEngineTest.java index fa23f7a6b..50a55ce10 100644 --- a/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/EmulatorEngineTest.java +++ b/plugins/cpu/ssem-cpu/src/test/java/net/emustudio/plugins/cpu/ssem/EmulatorEngineTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.ssem; diff --git a/plugins/cpu/z80-cpu/build.gradle b/plugins/cpu/z80-cpu/build.gradle index 7182e3aa9..f42bc45b4 100644 --- a/plugins/cpu/z80-cpu/build.gradle +++ b/plugins/cpu/z80-cpu/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/cpu/z80-cpu/src/main/edigen/cpu.eds b/plugins/cpu/z80-cpu/src/main/edigen/cpu.eds index d1bb79917..5d90f37b4 100644 --- a/plugins/cpu/z80-cpu/src/main/edigen/cpu.eds +++ b/plugins/cpu/z80-cpu/src/main/edigen/cpu.eds @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ root instruction; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/ContextZ80Impl.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/ContextZ80Impl.java index 2eed73041..a5d52b84b 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/ContextZ80Impl.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/ContextZ80Impl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/CpuImpl.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/CpuImpl.java index 678de7879..3b729db50 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/CpuImpl.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/CpuImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/DispatchTables.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/DispatchTables.java index 4a3218e4f..47ac95f62 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/DispatchTables.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/DispatchTables.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java index 38d3f43ae..da9adcd25 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTables.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTables.java index a8f67cc89..7bb3761cb 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTables.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTables.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InitializerZ80.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InitializerZ80.java index 1bbc9e6ff..802733a67 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InitializerZ80.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InitializerZ80.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InstructionPrinter.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InstructionPrinter.java index b45cdfa32..39531ed0c 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InstructionPrinter.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/InstructionPrinter.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/api/ContextZ80.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/api/ContextZ80.java index 2d277d3b6..4b83078fe 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/api/ContextZ80.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/api/ContextZ80.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.api; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/FlagsModel.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/FlagsModel.java index 35d78fa60..d486b7d5b 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/FlagsModel.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/FlagsModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.gui; diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java index ef0fcf338..9d0e817b4 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.gui; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java index 7f245f3f3..9dc6dfb53 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/BitTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/BitTest.java index 51a9e1af8..ce03c68a0 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/BitTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/BitTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ControlTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ControlTest.java index 1f6f92903..bd50a5e6d 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ControlTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ControlTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/CpuImplTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/CpuImplTest.java index ae9a9a1fd..d3c154540 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/CpuImplTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/CpuImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/DisassemblerTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/DisassemblerTest.java index fe9943692..a353cfcdd 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/DisassemblerTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/DisassemblerTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTablesGeneration.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTablesGeneration.java index 59e3cf954..5a293a860 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTablesGeneration.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorTablesGeneration.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/FakeByteDevice.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/FakeByteDevice.java index 8674cfab9..dfa6b4909 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/FakeByteDevice.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/FakeByteDevice.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/IOTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/IOTest.java index 920a9baa3..e1223cebf 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/IOTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/IOTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/InstructionsTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/InstructionsTest.java index c72dc98bf..e8977933e 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/InstructionsTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/InstructionsTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java index 826c4eaa8..9f5d8b40d 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/StackTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/StackTest.java index cde90b627..17b5c805f 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/StackTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/StackTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java index e37617156..0f876824f 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/Z80Tests.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/Z80Tests.java index 37e9d70d7..2bf2be266 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/Z80Tests.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/Z80Tests.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/ByteTestBuilder.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/ByteTestBuilder.java index 3285ed75c..5da06fb66 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/ByteTestBuilder.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/ByteTestBuilder.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuRunnerImpl.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuRunnerImpl.java index 01a1ffac7..73457113f 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuRunnerImpl.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuRunnerImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuVerifierImpl.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuVerifierImpl.java index 08721296d..361a7129b 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuVerifierImpl.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/CpuVerifierImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java index 1ce4f850e..fe36a7127 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/Utils.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/Utils.java index 71add1c59..ba8ed8290 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/Utils.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/Utils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/Register.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/Register.java index 98ec0887a..2021af4ec 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/Register.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/Register.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite.injectors; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair.java index 9d205c496..f724fd5f5 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite.injectors; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair2.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair2.java index 3904272b2..2294953c7 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair2.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPair2.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite.injectors; diff --git a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPairPSW.java b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPairPSW.java index 617837d4a..a13efc2cc 100644 --- a/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPairPSW.java +++ b/plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/injectors/RegisterPairPSW.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.cpu.zilogZ80.suite.injectors; diff --git a/plugins/device/88-dcdd/build.gradle b/plugins/device/88-dcdd/build.gradle index ed8649a4d..aec141da6 100644 --- a/plugins/device/88-dcdd/build.gradle +++ b/plugins/device/88-dcdd/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java index 893f7608f..0a55d0391 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DiskSettings.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DiskSettings.java index 16d5d34c9..fe36bce41 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DiskSettings.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/DiskSettings.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/Resources.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/Resources.java index c1f8f3928..e01b4f6a4 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/Resources.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/Resources.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Cpmfs.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Cpmfs.java index 5b09fa0e7..07ae62c5f 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Cpmfs.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Cpmfs.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cmdline; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Runner.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Runner.java index fcceb373e..9f2e192d4 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Runner.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cmdline/Runner.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cmdline; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFileSystem.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFileSystem.java index 8c670af83..87310b2e8 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFileSystem.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFileSystem.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFormat.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFormat.java index 17543e5e6..7ce8019aa 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFormat.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/CpmFormat.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DateFormat.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DateFormat.java index 6720a7b85..e45b07023 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DateFormat.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DateFormat.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DiskParameterBlock.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DiskParameterBlock.java index 090297f49..27e9fface 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DiskParameterBlock.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DiskParameterBlock.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DriveIO.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DriveIO.java index ddcf2b25c..6feb687a3 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DriveIO.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/DriveIO.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/Position.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/Position.java index ee3bcc3e9..383f5940c 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/Position.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/Position.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmEntry.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmEntry.java index 824d5233c..6e1119b21 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmEntry.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmEntry.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmFile.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmFile.java index db831d8f4..f6c2e6493 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmFile.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmFile.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmNativeDate.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmNativeDate.java index 1ca752ad7..9d79fb7f7 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmNativeDate.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmNativeDate.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusDiscLabel.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusDiscLabel.java index 35563dc80..44441d2c7 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusDiscLabel.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusDiscLabel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusPassword.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusPassword.java index a6469d158..1436aaa73 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusPassword.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/CpmPlusPassword.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/DateStamp.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/DateStamp.java index 40629a79b..0a7760cf9 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/DateStamp.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/entry/DateStamp.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.entry; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8deramp.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8deramp.java index 01cb73441..457126e7e 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8deramp.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8deramp.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.sectorops; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8mits.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8mits.java index 40ec7803c..80a4abb3c 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8mits.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/Altair8mits.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.sectorops; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/AltairMinidiskDeramp.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/AltairMinidiskDeramp.java index fc6e63b68..06ecf1fd6 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/AltairMinidiskDeramp.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/AltairMinidiskDeramp.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.sectorops; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/SectorOps.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/SectorOps.java index 9794fcc80..a6e0c896c 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/SectorOps.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/cpmfs/sectorops/SectorOps.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.cpmfs.sectorops; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/Drive.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/Drive.java index 050dc6dd5..48c64745a 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/Drive.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/Drive.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.drive; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java index 17af23b88..f52a2248b 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveCollection.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.drive; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveListener.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveListener.java index cee5d5e44..10e49b66b 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveListener.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveListener.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.drive; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveParameters.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveParameters.java index 7cc10c962..bf5d0a1e5 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveParameters.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/drive/DriveParameters.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.drive; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java index fc9e1bad6..18e9a3836 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/Constants.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.gui; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java index 7ba4d06de..226af95bd 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.gui; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java index 2c3e68dfc..df06f91ba 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DriveButton.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.gui; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java index d69e4ba12..d091abd94 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.gui; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/ControlPort.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/ControlPort.java index 70bdb1b34..a47c7c1e5 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/ControlPort.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/ControlPort.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.ports; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/DataPort.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/DataPort.java index ef13ef00e..258abe74c 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/DataPort.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/DataPort.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.ports; diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/StatusPort.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/StatusPort.java index 1b313ec56..627f238ad 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/StatusPort.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/ports/StatusPort.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.ports; diff --git a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java index 29a9f5e98..c6a9c04e2 100644 --- a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java +++ b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd; diff --git a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DriveTest.java b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DriveTest.java index 6fef7a46e..8ca6e63a9 100644 --- a/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DriveTest.java +++ b/plugins/device/88-dcdd/src/test/java/net/emustudio/plugins/device/mits88dcdd/DriveTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd; diff --git a/plugins/device/88-sio/build.gradle b/plugins/device/88-sio/build.gradle index 6bac053c4..cde29d814 100644 --- a/plugins/device/88-sio/build.gradle +++ b/plugins/device/88-sio/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/ControlChannel.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/ControlChannel.java index 3fe572c76..83b44b991 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/ControlChannel.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/ControlChannel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DataChannel.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DataChannel.java index f20aa0711..647a3d676 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DataChannel.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DataChannel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DeviceImpl.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DeviceImpl.java index 8cb8a4f84..f4f43f7e9 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DeviceImpl.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnit.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnit.java index ba75fb96b..24c7a8910 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnit.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnit.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnitSettings.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnitSettings.java index 7ccbabcd6..2d70e77e1 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnitSettings.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnitSettings.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/UART.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/UART.java index bddccd4ae..786ec5de7 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/UART.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/UART.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java index 14b657525..3a9b2e498 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio.gui; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java index 10e08e1ce..4f98d7cf5 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio.gui; diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java index b9165a716..6bbda13aa 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio.gui; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/ControlChannelTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/ControlChannelTest.java index 7b48aa485..d3927dbd1 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/ControlChannelTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/ControlChannelTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DataChannelTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DataChannelTest.java index 8819d6df1..a3b7bd5b9 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DataChannelTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DataChannelTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceChannelTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceChannelTest.java index c4e6b0f31..1b02d5562 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceChannelTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceChannelTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceImplTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceImplTest.java index c3d149555..177ff7935 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceImplTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/SioUnitTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/SioUnitTest.java index b51274aed..a151f4305 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/SioUnitTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/SioUnitTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/UARTTest.java b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/UARTTest.java index c4a30e9fd..71a908ae2 100644 --- a/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/UARTTest.java +++ b/plugins/device/88-sio/src/test/java/net/emustudio/plugins/device/mits88sio/UARTTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio; diff --git a/plugins/device/abstract-tape/build.gradle b/plugins/device/abstract-tape/build.gradle index 752fe8b55..d90b260c8 100644 --- a/plugins/device/abstract-tape/build.gradle +++ b/plugins/device/abstract-tape/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTape.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTape.java index 8a6ea91ce..21f3d6d6d 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTape.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTape.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTapeContextImpl.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTapeContextImpl.java index 7af12dfad..bd0de1d91 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTapeContextImpl.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTapeContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/AbstractTapeContext.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/AbstractTapeContext.java index 696b81a13..d6989cf09 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/AbstractTapeContext.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/AbstractTapeContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.api; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/TapeSymbol.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/TapeSymbol.java index 93be6cd6c..c88a5f4e5 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/TapeSymbol.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/api/TapeSymbol.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.api; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java index e76950687..1758ea71a 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java index 2a51b9b11..e3828f323 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java index 3544bd9e7..acbc55031 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java index 8c881261b..88eef5d8b 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeModel.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeModel.java index bc7dc90a5..7e38094ee 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeModel.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape.gui; diff --git a/plugins/device/abstract-tape/src/test/java/net/emustudio/plugins/device/abstracttape/AbstractTapeTest.java b/plugins/device/abstract-tape/src/test/java/net/emustudio/plugins/device/abstracttape/AbstractTapeTest.java index 687f79d71..39ab51765 100644 --- a/plugins/device/abstract-tape/src/test/java/net/emustudio/plugins/device/abstracttape/AbstractTapeTest.java +++ b/plugins/device/abstract-tape/src/test/java/net/emustudio/plugins/device/abstracttape/AbstractTapeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.abstracttape; diff --git a/plugins/device/adm3A-terminal/build.gradle b/plugins/device/adm3A-terminal/build.gradle index 752fe8b55..d90b260c8 100644 --- a/plugins/device/adm3A-terminal/build.gradle +++ b/plugins/device/adm3A-terminal/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java index 57d461df9..9218e0c18 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java index f7576caf9..d6a533082 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/TerminalSettings.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3A.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3A.java index ff0591788..8aee44bd7 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3A.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3A.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.api; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Display.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Display.java index 98762cf67..baa82e054 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Display.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Display.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.api; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Keyboard.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Keyboard.java index 535f76ac1..e740a7dc3 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Keyboard.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/api/Keyboard.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.api; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayCanvas.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayCanvas.java index d27795c52..56af15997 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayCanvas.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayCanvas.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFont.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFont.java index 3fb2fa354..94e8a2e5e 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFont.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFont.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFontJComboRenderer.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFontJComboRenderer.java index 84e858290..76c384320 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFontJComboRenderer.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/DisplayFontJComboRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java index 0bf8675fc..9a94ab800 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java index 24460b0db..4d5f7faaa 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java index 7db6e6fb8..2400ad2c7 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/TerminalWindow.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.gui; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/Cursor.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/Cursor.java index 7be467a2c..b52ff8ae1 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/Cursor.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/Cursor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/DisplayImpl.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/DisplayImpl.java index c010b6566..d11d672da 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/DisplayImpl.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/DisplayImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardFromFile.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardFromFile.java index 1a43ace0d..b8e8e9220 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardFromFile.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardFromFile.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java index 84da3b0cb..7cc775510 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/KeyboardGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/LoadCursorPosition.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/LoadCursorPosition.java index d018c7518..34195c5f2 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/LoadCursorPosition.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/interaction/LoadCursorPosition.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java index ed12344af..7f4e4ecd8 100644 --- a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java +++ b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a; diff --git a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3ATest.java b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3ATest.java index 0c8ab04de..bfd6daf9b 100644 --- a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3ATest.java +++ b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/api/ContextAdm3ATest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.api; diff --git a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/interaction/CursorTest.java b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/interaction/CursorTest.java index b83857fd1..ed6198665 100644 --- a/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/interaction/CursorTest.java +++ b/plugins/device/adm3A-terminal/src/test/java/net/emustudio/plugins/device/adm3a/interaction/CursorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.adm3a.interaction; diff --git a/plugins/device/audiotape-player/build.gradle b/plugins/device/audiotape-player/build.gradle index 02656593a..ec808bb06 100644 --- a/plugins/device/audiotape-player/build.gradle +++ b/plugins/device/audiotape-player/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/DeviceImpl.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/DeviceImpl.java index 8f9406d03..4c154fe2b 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/DeviceImpl.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackController.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackController.java index 3c0adc4d1..cd3f574bc 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackController.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackController.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackImpl.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackImpl.java index 66f779e0c..24ac302bf 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackImpl.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/TapePlaybackImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java index 21e99443d..62c67003d 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.gui; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java index 636e1a2f4..25a677679 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.gui; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java index 4f76aed37..8e3b5139c 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapesListRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.gui; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/Loader.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/Loader.java index 0b64953b2..2cf9cfad1 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/Loader.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/Loader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.loaders; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapLoader.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapLoader.java index 5efb381b7..a691c55f5 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapLoader.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.loaders; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapTzxHeader.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapTzxHeader.java index ef1854b5b..b677689c3 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapTzxHeader.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TapTzxHeader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.loaders; diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TzxLoader.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TzxLoader.java index 733e24dcc..b5a3440a9 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TzxLoader.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/loaders/TzxLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.audiotape_player.loaders; diff --git a/plugins/device/simh-pseudo/build.gradle b/plugins/device/simh-pseudo/build.gradle index 9648d6d41..11ffa8dbe 100644 --- a/plugins/device/simh-pseudo/build.gradle +++ b/plugins/device/simh-pseudo/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/Commands.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/Commands.java index 9ed434d52..06b085cee 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/Commands.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/Commands.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/CpmUtils.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/CpmUtils.java index 1a78a4d46..eeca89e3f 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/CpmUtils.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/CpmUtils.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/DeviceImpl.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/DeviceImpl.java index d1d9f008a..b1fe974e0 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/DeviceImpl.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/PseudoContext.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/PseudoContext.java index f274f67d6..ad0135718 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/PseudoContext.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/PseudoContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTP.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTP.java index 7d94bfea8..555b65754 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTP.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTP.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTR.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTR.java index bf00e8769..95ba99814 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTR.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/AttachPTR.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java index af469cdfa..fdaf721f4 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTP.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTP.java index 0fd35deb8..e2867fe7b 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTP.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTP.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTR.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTR.java index f483259bd..81ba08cd6 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTR.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/DetachPTR.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GenInterrupt.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GenInterrupt.java index 218bf8480..eb0944023 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GenInterrupt.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GenInterrupt.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetBankSelect.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetBankSelect.java index 2f1ec911a..77465f442 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetBankSelect.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetBankSelect.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCPUClockFrequency.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCPUClockFrequency.java index 69c4b8e23..765730a4e 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCPUClockFrequency.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCPUClockFrequency.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockCPM3.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockCPM3.java index 4920dd78f..aa97d02f6 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockCPM3.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockCPM3.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockZSDOS.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockZSDOS.java index 56ed16887..399b88006 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockZSDOS.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetClockZSDOS.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCommon.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCommon.java index a84f45bb6..e1e7e1b8a 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCommon.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetCommon.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostFilenames.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostFilenames.java index c2ec1fb7e..bf4f20e50 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostFilenames.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostFilenames.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostOSPathSeparator.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostOSPathSeparator.java index 0d414e9e7..c45df1226 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostOSPathSeparator.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetHostOSPathSeparator.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetSimhVersion.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetSimhVersion.java index ffd25b450..9f6842c66 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetSimhVersion.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/GetSimhVersion.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/HasBankedMemory.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/HasBankedMemory.java index da8ba3004..cc050cffd 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/HasBankedMemory.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/HasBankedMemory.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/PrintTime.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/PrintTime.java index 6f6f5a6e2..3b027d6a5 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/PrintTime.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/PrintTime.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadStopWatch.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadStopWatch.java index eacd317e8..69003833b 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadStopWatch.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadStopWatch.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadURL.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadURL.java index 07e4550d2..d09c5c472 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadURL.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ReadURL.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetPTR.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetPTR.java index 272503425..98b77dbe7 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetPTR.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetPTR.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetSimhInterface.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetSimhInterface.java index 797c2761a..fd61035f9 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetSimhInterface.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetSimhInterface.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetStopWatch.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetStopWatch.java index 85e75a490..73167b3cc 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetStopWatch.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ResetStopWatch.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SIMHSleep.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SIMHSleep.java index 0ace9e1e4..98cd8d791 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SIMHSleep.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SIMHSleep.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Set8080CPU.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Set8080CPU.java index fb9ad3c9e..8cd8d7d08 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Set8080CPU.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Set8080CPU.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetBankSelect.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetBankSelect.java index 3e05c61c6..dbd72acac 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetBankSelect.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetBankSelect.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetCPUClockFrequency.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetCPUClockFrequency.java index b20330e78..ff92e9b80 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetCPUClockFrequency.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetCPUClockFrequency.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockCPM3.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockCPM3.java index 6e0ab3672..d0c36da6d 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockCPM3.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockCPM3.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockZSDOS.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockZSDOS.java index 0bb27c711..f69ff71a0 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockZSDOS.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetClockZSDOS.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerDelta.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerDelta.java index e29f80a09..33ac9e24d 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerDelta.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerDelta.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerInterruptAdr.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerInterruptAdr.java index 2d0022031..fcfdb2174 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerInterruptAdr.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetTimerInterruptAdr.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetZ80CPU.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetZ80CPU.java index bfbc34460..38bfcbf6e 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetZ80CPU.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/SetZ80CPU.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ShowTimer.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ShowTimer.java index fa4ba780b..d67b0dba8 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ShowTimer.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/ShowTimer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimer.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimer.java index 5f86f2132..be4f2e455 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimer.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimerInterrupts.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimerInterrupts.java index 6112c8ac2..ab5fb628f 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimerInterrupts.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StartTimerInterrupts.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimer.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimer.java index 229de8deb..260b87e6c 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimer.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimerInterrupts.java b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimerInterrupts.java index 96abcb0df..9053d9e71 100644 --- a/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimerInterrupts.java +++ b/plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/StopTimerInterrupts.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh.commands; diff --git a/plugins/device/simh-pseudo/src/test/java/net/emustudio/plugins/device/simh/DeviceImplTest.java b/plugins/device/simh-pseudo/src/test/java/net/emustudio/plugins/device/simh/DeviceImplTest.java index fb5b676d1..7fd391241 100644 --- a/plugins/device/simh-pseudo/src/test/java/net/emustudio/plugins/device/simh/DeviceImplTest.java +++ b/plugins/device/simh-pseudo/src/test/java/net/emustudio/plugins/device/simh/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.simh; diff --git a/plugins/device/ssem-display/build.gradle b/plugins/device/ssem-display/build.gradle index 9fe7dee2b..66cc65853 100644 --- a/plugins/device/ssem-display/build.gradle +++ b/plugins/device/ssem-display/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DeviceImpl.java b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DeviceImpl.java index 535949431..0c0e29fd0 100644 --- a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DeviceImpl.java +++ b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.ssem.display; diff --git a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java index e538a52c9..6a6bf2509 100644 --- a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java +++ b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.ssem.display; diff --git a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayPanel.java b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayPanel.java index b53edfd69..2e5ca0987 100644 --- a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayPanel.java +++ b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayPanel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.ssem.display; diff --git a/plugins/device/ssem-display/src/test/java/net/emustudio/plugins/device/ssem/display/DeviceImplTest.java b/plugins/device/ssem-display/src/test/java/net/emustudio/plugins/device/ssem/display/DeviceImplTest.java index 2e4879d25..151fb0546 100644 --- a/plugins/device/ssem-display/src/test/java/net/emustudio/plugins/device/ssem/display/DeviceImplTest.java +++ b/plugins/device/ssem-display/src/test/java/net/emustudio/plugins/device/ssem/display/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.ssem.display; diff --git a/plugins/device/vt100-terminal/build.gradle b/plugins/device/vt100-terminal/build.gradle index d98a8cc94..34dc1198c 100644 --- a/plugins/device/vt100-terminal/build.gradle +++ b/plugins/device/vt100-terminal/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java index cc657334d..005adcf0e 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java index cc6cc375d..85204db47 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/TerminalSettings.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java index 1c2aa43c3..7cdca71df 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/ContextVt100.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/ContextVt100.java index 0a86ec6be..a07a63f05 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/ContextVt100.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/ContextVt100.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.api; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Display.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Display.java index f7506fd4d..2dd691b4d 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Display.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Display.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.api; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Keyboard.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Keyboard.java index 684c83e8a..35179da7a 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Keyboard.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/api/Keyboard.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.api; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/DisplayCanvas.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/DisplayCanvas.java index 4726d292d..15f341096 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/DisplayCanvas.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/DisplayCanvas.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.gui; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java index 4f536bc31..9f6858dbd 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.gui; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java index ae7d963d5..993b1949b 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.gui; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/Cursor.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/Cursor.java index e856b68a2..1f8f3a8fa 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/Cursor.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/Cursor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/DisplayImpl.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/DisplayImpl.java index f635bccb7..0b541fdfd 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/DisplayImpl.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/DisplayImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardFromFile.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardFromFile.java index a209bf90b..0df822359 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardFromFile.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardFromFile.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java index 4e422071e..8757d1a55 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/interaction/KeyboardGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; diff --git a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java index 28bc4ef9b..04766e942 100644 --- a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java +++ b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/DeviceImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100; diff --git a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/api/ContextVt100Test.java b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/api/ContextVt100Test.java index a12dd058c..264314738 100644 --- a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/api/ContextVt100Test.java +++ b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/api/ContextVt100Test.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.api; diff --git a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/interaction/CursorTest.java b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/interaction/CursorTest.java index 20ef89302..e36f59f91 100644 --- a/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/interaction/CursorTest.java +++ b/plugins/device/vt100-terminal/src/test/java/net/emustudio/plugins/device/vt100/interaction/CursorTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.vt100.interaction; diff --git a/plugins/device/zxspectrum-bus/build.gradle b/plugins/device/zxspectrum-bus/build.gradle index 580df6417..0f2fdcd3a 100644 --- a/plugins/device/zxspectrum-bus/build.gradle +++ b/plugins/device/zxspectrum-bus/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/DeviceImpl.java b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/DeviceImpl.java index 1e0be0bb3..548c11fda 100644 --- a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/DeviceImpl.java +++ b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.bus; diff --git a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/ZxSpectrumBusImpl.java b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/ZxSpectrumBusImpl.java index ed11a99b2..be5bff0bc 100644 --- a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/ZxSpectrumBusImpl.java +++ b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/ZxSpectrumBusImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.bus; diff --git a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/api/ZxSpectrumBus.java b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/api/ZxSpectrumBus.java index 0f62338b0..2d5684a31 100644 --- a/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/api/ZxSpectrumBus.java +++ b/plugins/device/zxspectrum-bus/src/main/java/net/emustudio/plugins/device/zxspectrum/bus/api/ZxSpectrumBus.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.bus.api; diff --git a/plugins/device/zxspectrum-ula/build.gradle b/plugins/device/zxspectrum-ula/build.gradle index c1b3efe0e..7f0d8621d 100644 --- a/plugins/device/zxspectrum-ula/build.gradle +++ b/plugins/device/zxspectrum-ula/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/DeviceImpl.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/DeviceImpl.java index d4bc9d0cb..92be0dad6 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/DeviceImpl.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/DeviceImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/PassedCyclesMediator.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/PassedCyclesMediator.java index a50892d5e..6bb330b09 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/PassedCyclesMediator.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/PassedCyclesMediator.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ULA.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ULA.java index d7e43c843..6ddcf4bcb 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ULA.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ULA.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula; @@ -248,7 +248,7 @@ public boolean onKeyEvent(KeyEvent e) { // shift / alt / ctrl are visible in modifiersEx only if pressed = true boolean symShift = (e.getModifiersEx() & (KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK)) != 0; boolean shift = (e.getModifiersEx() & (KeyEvent.SHIFT_DOWN_MASK)) != 0; - + Byte[] command = CHAR_MAPPING.get(e.getKeyCode()); if (command != null) { if (command[2] == 1 || (command[2] == -1 && shift)) { diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ZxParameters.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ZxParameters.java index 904dd98c9..b47578b6c 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ZxParameters.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/ZxParameters.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayCanvas.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayCanvas.java index 02eca5b7d..f0a4d1626 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayCanvas.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayCanvas.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula.gui; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java index 8391a7ef6..d1be44cad 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula.gui; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardCanvas.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardCanvas.java index 382adaf63..710ae47e9 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardCanvas.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardCanvas.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula.gui; diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardDispatcher.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardDispatcher.java index 28f13ba63..f4a5bca13 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardDispatcher.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/KeyboardDispatcher.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula.gui; diff --git a/plugins/memory/byte-mem/build.gradle b/plugins/memory/byte-mem/build.gradle index 05264ee55..da581de7a 100644 --- a/plugins/memory/byte-mem/build.gradle +++ b/plugins/memory/byte-mem/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryContextImpl.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryContextImpl.java index 0a2983f0e..60f69b9ec 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryContextImpl.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryImpl.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryImpl.java index 07c16f7fa..bf57f20b1 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryImpl.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/MemoryImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/RangeTree.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/RangeTree.java index 1295881be..e00d78e6f 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/RangeTree.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/RangeTree.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/api/ByteMemoryContext.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/api/ByteMemoryContext.java index 69a84f207..94330fef7 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/api/ByteMemoryContext.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/api/ByteMemoryContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.api; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java index a725c6637..8b0ae5486 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/Constants.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java index 0c1c7495b..d6d42235f 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/KeyboardHandler.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/KeyboardHandler.java index afff98013..4a4ea4f81 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/KeyboardHandler.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/KeyboardHandler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java index d4db5b452..f0631b726 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MouseHandler.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MouseHandler.java index dde492cfb..ad9be44ed 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MouseHandler.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MouseHandler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java index c99c1b48a..f0af352af 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java index 35d750e5c..8c79301e0 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java index e29bc7a3e..dc0ac8fe6 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/AsciiModeAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java index 780f9836b..8d15fa1ea 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/DumpMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java index ae9bef5d1..5199ab155 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/EraseMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java index 3210ec46c..6e7d7d624 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/FindSequenceAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java index ee80242e5..713e5f25a 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/GotoAddressAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java index 7c301b3ac..fbbca45b3 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/LoadImageAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java index a564becf7..3201720ae 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/SettingsAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java index 3ac9cec92..300b3ac34 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/actions/find_sequence/PerformFindSequenceAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.actions.find_sequence; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java index a8fb15bb2..3ef1a03bc 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/FileImagesModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.model; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/ROMmodel.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/ROMmodel.java index 5f5582b2e..d0efcb63c 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/ROMmodel.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/model/ROMmodel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.model; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellEditor.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellEditor.java index c0846d20c..6d25f3cc9 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellEditor.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellEditor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java index 9dda47439..4868f926e 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryCellRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java index 16d4657f2..c0bcb6bcc 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryRowHeaderRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java index 4c08761d4..40d3fb846 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTable.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTableModel.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTableModel.java index 4c52821a8..b4fa9387e 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTableModel.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/table/MemoryTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.gui.table; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/BinaryLoader.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/BinaryLoader.java index 96a3df956..ec54c112c 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/BinaryLoader.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/BinaryLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.loaders; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/HexLoader.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/HexLoader.java index 039648a25..4cb1beebd 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/HexLoader.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/HexLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.loaders; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/Loader.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/Loader.java index 3c105a0a9..6cb12ffde 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/Loader.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/Loader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.loaders; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TapLoader.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TapLoader.java index f62cd02cc..8ddaa0876 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TapLoader.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TapLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.loaders; diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TzxLoader.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TzxLoader.java index f1b8949c6..0fb895d88 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TzxLoader.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/loaders/TzxLoader.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem.loaders; diff --git a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java index 52c1b47ca..54ba78d18 100644 --- a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java +++ b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/MemoryImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem; diff --git a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/RangeTreeTest.java b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/RangeTreeTest.java index 5faee0dc8..b182165a8 100644 --- a/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/RangeTreeTest.java +++ b/plugins/memory/byte-mem/src/test/java/net/emustudio/plugins/memory/bytemem/RangeTreeTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.bytemem; diff --git a/plugins/memory/ram-mem/build.gradle b/plugins/memory/ram-mem/build.gradle index 752fe8b55..d90b260c8 100644 --- a/plugins/memory/ram-mem/build.gradle +++ b/plugins/memory/ram-mem/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryContextImpl.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryContextImpl.java index 352c17251..dea493284 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryContextImpl.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryImpl.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryImpl.java index ec2048b3d..a67c71d05 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryImpl.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/MemoryImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamInstruction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamInstruction.java index f04a87b39..b6af0ca7a 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamInstruction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamInstruction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.api; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamLabel.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamLabel.java index 181cf347d..3959fa02c 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamLabel.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamLabel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.api; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamMemoryContext.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamMemoryContext.java index e53165b79..7cdd153bc 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamMemoryContext.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamMemoryContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.api; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamValue.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamValue.java index 4d7d2b415..f31c03f56 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamValue.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamValue.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.api; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java index 7906ab569..cce516e19 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/RamTableModel.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/RamTableModel.java index 8f3edffd2..350afc3f4 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/RamTableModel.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/RamTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java index 5d48939b2..4986edf46 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/DumpMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui.actions; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java index 32c19a824..f7f632d4a 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/EraseMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui.actions; diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java index 37a5e367e..c44266f8c 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/actions/LoadImageAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram.gui.actions; diff --git a/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryContextImplTest.java b/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryContextImplTest.java index 639d3b638..1c7e6a1d1 100644 --- a/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryContextImplTest.java +++ b/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryContextImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram; diff --git a/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryImplTest.java b/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryImplTest.java index 0dc225dc2..5aa850815 100644 --- a/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryImplTest.java +++ b/plugins/memory/ram-mem/src/test/java/net/emustudio/plugins/memory/ram/MemoryImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ram; diff --git a/plugins/memory/rasp-mem/build.gradle b/plugins/memory/rasp-mem/build.gradle index 752fe8b55..d90b260c8 100644 --- a/plugins/memory/rasp-mem/build.gradle +++ b/plugins/memory/rasp-mem/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryContextImpl.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryContextImpl.java index aca8ff259..7657abd0b 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryContextImpl.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryImpl.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryImpl.java index efb13eaa0..fbb552192 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryImpl.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/MemoryImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java index fb41d3ac4..ddbe6f2e8 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.api; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspMemoryContext.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspMemoryContext.java index b12c31dd5..069430ce0 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspMemoryContext.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspMemoryContext.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.api; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/Disassembler.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/Disassembler.java index 031e441ba..8cb0223a1 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/Disassembler.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/Disassembler.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java index 15681053b..0de64728b 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/RaspTableModel.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/RaspTableModel.java index fd0df639b..92456ecba 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/RaspTableModel.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/RaspTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java index 5ad695d35..780adb370 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/DumpMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui.actions; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java index 9bf0bdd57..be4c419eb 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/EraseMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui.actions; diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java index 515184af5..dfdfc913c 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/actions/LoadImageAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp.gui.actions; diff --git a/plugins/memory/rasp-mem/src/test/java/net/emustudio/plugins/memory/rasp/MemoryImplTest.java b/plugins/memory/rasp-mem/src/test/java/net/emustudio/plugins/memory/rasp/MemoryImplTest.java index 7a67f9539..dfb8094c1 100644 --- a/plugins/memory/rasp-mem/src/test/java/net/emustudio/plugins/memory/rasp/MemoryImplTest.java +++ b/plugins/memory/rasp-mem/src/test/java/net/emustudio/plugins/memory/rasp/MemoryImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.rasp; diff --git a/plugins/memory/ssem-mem/build.gradle b/plugins/memory/ssem-mem/build.gradle index 50ecba6e3..a94030479 100644 --- a/plugins/memory/ssem-mem/build.gradle +++ b/plugins/memory/ssem-mem/build.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ import org.apache.tools.ant.filters.ReplaceTokens diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryContextImpl.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryContextImpl.java index 0ce0d9980..93f018dd3 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryContextImpl.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryContextImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryImpl.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryImpl.java index 3230c343b..ea17b23b8 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryImpl.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/MemoryImpl.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/Constants.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/Constants.java index 2c67331c4..c4fb3ef23 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/Constants.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/Constants.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java index c6b0b535b..7fb87cbc9 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java index 2944b9a67..a4da7ed2b 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java index 151347721..9f56aefe7 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java index fcd67421d..dea0a79d4 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageAction.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellEditor.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellEditor.java index ef0a5e9bd..351ee9741 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellEditor.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellEditor.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.table; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java index 10d69d074..b03b79dad 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryCellRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.table; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java index 5808ef4b3..a0fc07463 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryRowHeaderRenderer.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.table; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java index ab52fd910..16a637273 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTable.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.table; diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTableModel.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTableModel.java index 0daf32cae..b30849ae0 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTableModel.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/table/MemoryTableModel.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.table; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryContextImplTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryContextImplTest.java index a4462a29a..7fe166aad 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryContextImplTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryContextImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryImplTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryImplTest.java index 3b35b110a..956cbc096 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryImplTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/MemoryImplTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/MemoryTableModelTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/MemoryTableModelTest.java index 8dc1971de..4516f1b13 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/MemoryTableModelTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/MemoryTableModelTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java index 1734ac1cb..798dd9e4f 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/DumpMemoryActionTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryActionTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryActionTest.java index ea90cf055..c720c3ae0 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryActionTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/EraseMemoryActionTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageActionTest.java b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageActionTest.java index 8a5274f9c..c672bcfc5 100644 --- a/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageActionTest.java +++ b/plugins/memory/ssem-mem/src/test/java/net/emustudio/plugins/memory/ssem/gui/actions/LoadImageActionTest.java @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.memory.ssem.gui.actions; diff --git a/settings.gradle b/settings.gradle index 6e31a2615..b52262725 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ pluginManagement { repositories { diff --git a/test_report.gradle b/test_report.gradle index f006becf9..0c3b39c45 100644 --- a/test_report.gradle +++ b/test_report.gradle @@ -1,4 +1,4 @@ -/* SPDX-FileCopyrightText: 2006-2025 Peter Jakubčo +/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo SPDX-License-Identifier: GPL-3.0-or-later */ // Credits go to: https://gist.github.com/lwasyl/f5b2b4ebe9e348ebbd8ee4cb995f8362#file-gradle_tests_report-gradle // https://medium.com/@wasyl/pretty-tests-summary-in-gradle-744804dd676c From 5c3653599e73635bcb910b5e71ce71c16740b1d7 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 15 Feb 2026 09:11:37 +0100 Subject: [PATCH 05/11] Add VS Code stuff to .gitignore --- .gitignore | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 0a478ffa8..1f2bafddf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,9 +2,6 @@ *.hex *.jar -# Created by https://www.gitignore.io/api/gradle,eclipse,netbeans,intellij+iml -# Edit at https://www.gitignore.io/?templates=gradle,eclipse,netbeans,intellij+iml - ### Eclipse ### .metadata bin/ @@ -140,4 +137,14 @@ gradle-app.setting ### Gradle Patch ### **/build/ -# End of https://www.gitignore.io/api/gradle,eclipse,netbeans,intellij+iml +### VS Code ### +.vscode/ +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace +.metals/ + +# Local History for Visual Studio Code +.history/ From e6eac51214bb0ceeac6fb3767e42d0b6e1937209 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 15 Feb 2026 10:28:53 +0100 Subject: [PATCH 06/11] Update cpu-testsuite version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4610844e5..984af493e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ ext.versions = [ ext.libs = [ emuLib : "net.emustudio:emulib:12.1.0-SNAPSHOT", - cpuTestSuite : "net.emustudio:cpu-testsuite_12.1:1.2.0-SNAPSHOT", + cpuTestSuite : "net.emustudio:cpu-testsuite_12:1.2.1-SNAPSHOT", migLayout : "com.miglayout:miglayout-swing:11.1", flatLaf : "com.formdev:flatlaf:${versions.flatlaf}:no-natives", From 23d41197153122cc9af772910bda93ef6a63affb Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 15 Feb 2026 10:30:18 +0100 Subject: [PATCH 07/11] [#342] GUI refactoring: Application module --- .../net/emustudio/application/Constants.java | 4 +- .../application/gui/actions/AboutAction.java | 4 +- .../gui/actions/CompileAction.java | 4 +- .../gui/actions/editor/FindAction.java | 4 +- .../gui/actions/editor/NewFileAction.java | 5 +- .../gui/actions/editor/OpenFileAction.java | 5 +- .../gui/actions/editor/ReplaceAction.java | 5 +- .../gui/actions/editor/SaveFileAction.java | 5 +- .../actions/emulator/BreakpointAction.java | 4 +- .../gui/actions/emulator/JumpAction.java | 4 +- .../emulator/JumpToBeginningAction.java | 4 +- .../gui/actions/emulator/PauseAction.java | 4 +- .../gui/actions/emulator/ResetAction.java | 4 +- .../gui/actions/emulator/RunAction.java | 4 +- .../gui/actions/emulator/RunTimedAction.java | 4 +- .../actions/emulator/ShowMemoryAction.java | 4 +- .../gui/actions/emulator/StepAction.java | 4 +- .../gui/actions/emulator/StepBackAction.java | 4 +- .../gui/actions/emulator/StopAction.java | 4 +- .../opencomputer/AddNewComputerAction.java | 4 +- .../opencomputer/DeleteComputerAction.java | 4 +- .../opencomputer/EditComputerAction.java | 4 +- .../opencomputer/OpenComputerAction.java | 4 +- .../opencomputer/RenameComputerAction.java | 4 +- .../opencomputer/SaveSchemaAction.java | 4 +- .../gui/debugtable/BooleanCellEditor.java | 52 +-- .../gui/debugtable/BooleanCellRenderer.java | 11 +- .../gui/debugtable/BooleanComponent.java | 11 +- .../application/gui/debugtable/CallFlow.java | 36 +- .../gui/debugtable/DebugTableModelImpl.java | 102 +++--- .../gui/debugtable/PagesPanel.java | 62 +--- .../gui/debugtable/TextCellRenderer.java | 6 +- .../application/gui/dialogs/AboutDialog.java | 21 +- .../application/gui/dialogs/AutoDialog.java | 9 +- .../gui/dialogs/BreakpointDialog.java | 14 +- .../application/gui/dialogs/EditorPanel.java | 37 +-- .../gui/dialogs/EmulatorPanel.java | 41 +-- .../gui/dialogs/LoadingDialog.java | 12 +- .../gui/dialogs/OpenComputerDialog.java | 75 ++--- .../gui/dialogs/SchemaEditorDialog.java | 52 +-- .../application/gui/dialogs/StudioFrame.java | 45 ++- .../gui/dialogs/ViewComputerDialog.java | 313 +++++++----------- .../gui/framework/EmuStudioUI.java | 87 ++++- .../application/settings/AppSettings.java | 2 +- .../device/adm3a/gui/GuiUtilsAdm3A.java | 4 +- .../audiotape_player/gui/TapePlayerGui.java | 88 ++--- .../plugins/memory/ram/gui/MemoryGui.java | 4 +- 47 files changed, 495 insertions(+), 693 deletions(-) diff --git a/application/src/main/java/net/emustudio/application/Constants.java b/application/src/main/java/net/emustudio/application/Constants.java index a56ffc172..9df170a0c 100644 --- a/application/src/main/java/net/emustudio/application/Constants.java +++ b/application/src/main/java/net/emustudio/application/Constants.java @@ -5,11 +5,11 @@ import java.awt.*; -import static net.emustudio.emulib.runtime.ui.GUI.loadFontResource; +import static net.emustudio.emulib.runtime.ui.GUI.loadFont; public class Constants { - public static final Font FONT_CODE = loadFontResource( + public static final Font FONT_CODE = loadFont( "/net/emustudio/application/gui/FiraCode-Regular.ttf", Constants.class, 13); public static final Color DEBUGTABLE_COLOR_CURRENT_INSTRUCTION = Color.RED; diff --git a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java index 5bdc2498f..19dfb86a1 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/AboutAction.java @@ -9,14 +9,14 @@ import java.awt.event.KeyEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_FAVICON; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AboutAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/favicon16.png"; private final JFrame parent; public AboutAction(JFrame parent) { - super("About...", loadIcon(ICON_FILE)); + super("About...", loadIcon(ICON_FAVICON)); this.parent = Objects.requireNonNull(parent); putValue(MNEMONIC_KEY, KeyEvent.VK_A); } diff --git a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java index df4a476d9..b0cdd9c19 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/CompileAction.java @@ -18,11 +18,11 @@ import java.util.Optional; import java.util.function.Supplier; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_COMPILER; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class CompileAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/compile.png"; private final VirtualComputer computer; private final Dialogs dialogs; @@ -33,7 +33,7 @@ public class CompileAction extends AbstractAction { public CompileAction(VirtualComputer computer, Dialogs dialogs, Editor editor, Supplier runState, JTextArea compilerOutput, Runnable updateTitle) { - super("Compile", loadIcon(ICON_FILE)); + super("Compile", loadIcon(ICON_COMPILER)); this.computer = Objects.requireNonNull(computer); this.dialogs = Objects.requireNonNull(dialogs); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java index 754ca8fcb..2a8496c2f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/FindAction.java @@ -10,15 +10,15 @@ import java.awt.event.KeyEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_FIND; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class FindAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/edit-find.png"; private final FindDialog findDialog; private final ReplaceDialog replaceDialog; public FindAction(FindDialog findDialog, ReplaceDialog replaceDialog) { - super("Find...", loadIcon(ICON_FILE)); + super("Find...", loadIcon(ICON_FIND)); this.findDialog = Objects.requireNonNull(findDialog); this.replaceDialog = Objects.requireNonNull(replaceDialog); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java index a32517857..67a9c2903 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/NewFileAction.java @@ -10,18 +10,17 @@ import java.util.Objects; import java.util.function.Supplier; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_NEW_FILE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class NewFileAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-new.png"; - private final Supplier confirmSave; private final Editor editor; private final JTextArea compilerOutput; private final Runnable updateTitle; public NewFileAction(Supplier confirmSave, Editor editor, JTextArea compilerOutput, Runnable updateTitle) { - super("New", loadIcon(ICON_FILE)); + super("New", loadIcon(ICON_NEW_FILE)); this.confirmSave = Objects.requireNonNull(confirmSave); this.editor = Objects.requireNonNull(editor); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java index d6d264888..4d89f228d 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/OpenFileAction.java @@ -11,18 +11,17 @@ import java.util.Objects; import java.util.function.Supplier; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_OPEN_FILE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class OpenFileAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-open.png"; - private final Supplier confirmSave; private final Editor editor; private final JTextArea compilerOutput; private final Runnable updateTitle; public OpenFileAction(Supplier confirmSave, Editor editor, JTextArea compilerOutput, Runnable updateTitle) { - super("Open...", loadIcon(ICON_FILE)); + super("Open...", loadIcon(ICON_OPEN_FILE)); this.confirmSave = Objects.requireNonNull(confirmSave); this.editor = Objects.requireNonNull(editor); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java index 655c1e90e..f157eecfb 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/ReplaceAction.java @@ -10,16 +10,15 @@ import java.awt.event.KeyEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_REPLACE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ReplaceAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/edit-find-replace.png"; - private final FindDialog findDialog; private final ReplaceDialog replaceDialog; public ReplaceAction(FindDialog findDialog, ReplaceDialog replaceDialog) { - super("Replace...", loadIcon(ICON_FILE)); + super("Replace...", loadIcon(ICON_REPLACE)); this.findDialog = Objects.requireNonNull(findDialog); this.replaceDialog = Objects.requireNonNull(replaceDialog); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java index 993a89f0b..8d6fe7cc6 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/editor/SaveFileAction.java @@ -9,16 +9,15 @@ import java.awt.event.KeyEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_SAVE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class SaveFileAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-save.png"; - private final Editor editor; private final Runnable updateTitle; public SaveFileAction(Editor editor, Runnable updateTitle) { - super("Save", loadIcon(ICON_FILE)); + super("Save", loadIcon(ICON_SAVE)); this.editor = Objects.requireNonNull(editor); this.updateTitle = Objects.requireNonNull(updateTitle); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java index d6abbaee1..a60e4d6e5 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/BreakpointAction.java @@ -10,11 +10,11 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_BREAKPOINTS; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class BreakpointAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/breakpoints.png"; private final JFrame parent; private final VirtualComputer computer; @@ -22,7 +22,7 @@ public class BreakpointAction extends AbstractAction { private final Runnable refreshDebugTable; public BreakpointAction(JFrame parent, VirtualComputer computer, Dialogs dialogs, Runnable refreshDebugTable) { - super("Set/unset breakpoint...", loadIcon(ICON_FILE)); + super("Set/unset breakpoint...", loadIcon(ICON_BREAKPOINTS)); putValue(SHORT_DESCRIPTION, "Set/unset breakpoint to address..."); this.parent = Objects.requireNonNull(parent); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java index 39667ed26..2ebb557c5 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpAction.java @@ -9,18 +9,18 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_JUMP; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class JumpAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-jump.png"; private final VirtualComputer computer; private final Dialogs dialogs; private final Runnable refreshDebugTable; public JumpAction(VirtualComputer computer, Dialogs dialogs, Runnable refreshDebugTable) { - super("Jump...", loadIcon(ICON_FILE)); + super("Jump...", loadIcon(ICON_JUMP)); putValue(SHORT_DESCRIPTION, "Jump to address"); this.computer = Objects.requireNonNull(computer); this.dialogs = Objects.requireNonNull(dialogs); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java index 10bab02e9..a7644c98f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/JumpToBeginningAction.java @@ -8,16 +8,16 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_JUMP_TO_BEGINNING; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class JumpToBeginningAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-first.png"; private final VirtualComputer computer; private final Runnable refreshDebugTable; public JumpToBeginningAction(VirtualComputer computer, Runnable refreshDebugTable) { - super("Jump to beginning", loadIcon(ICON_FILE)); + super("Jump to beginning", loadIcon(ICON_JUMP_TO_BEGINNING)); putValue(SHORT_DESCRIPTION, "Jump to beginning"); this.computer = Objects.requireNonNull(computer); this.refreshDebugTable = Objects.requireNonNull(refreshDebugTable); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java index a56003d88..43855def3 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/PauseAction.java @@ -9,16 +9,16 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_PAUSE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class PauseAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-pause.png"; private final EmulationController emulationController; private final Runnable updateStatus; public PauseAction(EmulationController emulationController, Runnable updateStatus) { - super("Pause", loadIcon(ICON_FILE)); + super("Pause", loadIcon(ICON_PAUSE)); putValue(SHORT_DESCRIPTION, "Pause emulation"); this.emulationController = emulationController; this.updateStatus = Objects.requireNonNull(updateStatus); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java index 2a5225662..185f7e892 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ResetAction.java @@ -8,15 +8,15 @@ import java.awt.event.ActionEvent; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_RESET; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ResetAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/reset.png"; private final EmulationController emulationController; public ResetAction(EmulationController emulationController) { - super("Reset", loadIcon(ICON_FILE)); + super("Reset", loadIcon(ICON_RESET)); putValue(SHORT_DESCRIPTION, "Reset emulation"); this.emulationController = emulationController; } diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java index 3bab9790f..29b1556d7 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunAction.java @@ -9,16 +9,16 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_RUN; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class RunAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-play.png"; private final EmulationController emulationController; private final JTable debugTable; public RunAction(EmulationController emulationController, JTable debugTable) { - super("Run", loadIcon(ICON_FILE)); + super("Run", loadIcon(ICON_RUN)); putValue(SHORT_DESCRIPTION, "Run emulation"); this.emulationController = emulationController; this.debugTable = Objects.requireNonNull(debugTable); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java index dc0a915a8..afa8e3a68 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/RunTimedAction.java @@ -11,17 +11,17 @@ import java.util.Optional; import java.util.concurrent.TimeUnit; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_RUN_TIMED; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class RunTimedAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-play-time.png"; private final EmulationController emulationController; private final Dialogs dialogs; public RunTimedAction(EmulationController emulationController, Dialogs dialogs) { - super("Run timed...", loadIcon(ICON_FILE)); + super("Run timed...", loadIcon(ICON_RUN_TIMED)); putValue(SHORT_DESCRIPTION, "Run \"timed\" emulation"); this.emulationController = emulationController; this.dialogs = Objects.requireNonNull(dialogs); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java index 04ef6e726..261c0b9ff 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/ShowMemoryAction.java @@ -10,17 +10,17 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_GRID; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class ShowMemoryAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/grid_memory.gif"; private final JFrame parent; private final VirtualComputer computer; private final Dialogs dialogs; public ShowMemoryAction(JFrame parent, VirtualComputer computer, Dialogs dialogs) { - super("Show memory...", loadIcon(ICON_FILE)); + super("Show memory...", loadIcon(ICON_GRID)); putValue(SHORT_DESCRIPTION, "Show operating memory"); this.parent = Objects.requireNonNull(parent); this.computer = Objects.requireNonNull(computer); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java index 4f98cd8c9..24cc3f159 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepAction.java @@ -8,15 +8,15 @@ import java.awt.event.ActionEvent; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_STEP; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StepAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-next.png"; private final EmulationController emulationController; public StepAction(EmulationController emulationController) { - super("Step", loadIcon(ICON_FILE)); + super("Step", loadIcon(ICON_STEP)); putValue(SHORT_DESCRIPTION, "Step forward"); this.emulationController = emulationController; } diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java index 7f51e0c9f..acea32ba4 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StepBackAction.java @@ -9,17 +9,17 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_STEP_BACK; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StepBackAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-previous.png"; private final VirtualComputer computer; private final DebugTableModel debugTableModel; private final Runnable refreshDebugTable; public StepBackAction(VirtualComputer computer, DebugTableModel debugTableModel, Runnable refreshDebugTable) { - super("Step Back", loadIcon(ICON_FILE)); + super("Step Back", loadIcon(ICON_STEP_BACK)); putValue(SHORT_DESCRIPTION, "Step back"); this.computer = Objects.requireNonNull(computer); this.debugTableModel = Objects.requireNonNull(debugTableModel); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java index b6cbe5611..e18a6cd23 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/emulator/StopAction.java @@ -8,15 +8,15 @@ import java.awt.event.ActionEvent; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_STOP; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StopAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/go-stop.png"; private final EmulationController emulationController; public StopAction(EmulationController emulationController) { - super("Stop", loadIcon(ICON_FILE)); + super("Stop", loadIcon(ICON_STOP)); putValue(SHORT_DESCRIPTION, "Stop emulation"); this.emulationController = emulationController; } diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java index 0f677b03a..21d63b70f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/AddNewComputerAction.java @@ -17,13 +17,13 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_ADD; import static net.emustudio.application.settings.ConfigFiles.createConfiguration; import static net.emustudio.application.settings.ConfigFiles.loadConfiguration; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AddNewComputerAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(AddNewComputerAction.class); - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/list-add.png"; private final Dialogs dialogs; private final AppSettings appSettings; @@ -31,7 +31,7 @@ public class AddNewComputerAction extends AbstractAction { private final JDialog parent; public AddNewComputerAction(Dialogs dialogs, AppSettings appSettings, Runnable update, JDialog parent) { - super("Create new computer...", loadIcon(ICON_FILE)); + super("Create new computer...", loadIcon(ICON_ADD)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.dialogs = Objects.requireNonNull(dialogs); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java index 9131cc45a..960a96c2f 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/DeleteComputerAction.java @@ -13,19 +13,19 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_REMOVE; import static net.emustudio.application.settings.ConfigFiles.removeConfiguration; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class DeleteComputerAction extends AbstractAction { private final static Logger LOGGER = LoggerFactory.getLogger(DeleteComputerAction.class); - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/list-remove.png"; private final Dialogs dialogs; private final Runnable update; private final JList lstConfig; public DeleteComputerAction(Dialogs dialogs, Runnable update, JList lstConfig) { - super("Delete computer", loadIcon(ICON_FILE)); + super("Delete computer", loadIcon(ICON_REMOVE)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.dialogs = Objects.requireNonNull(dialogs); this.update = Objects.requireNonNull(update); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java index fba8103ad..a5fde3d3e 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/EditComputerAction.java @@ -13,10 +13,10 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_COMPUTER; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class EditComputerAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/computer.png"; private final Dialogs dialogs; private final AppSettings appSettings; @@ -26,7 +26,7 @@ public class EditComputerAction extends AbstractAction { public EditComputerAction(Dialogs dialogs, AppSettings appSettings, Runnable update, JDialog parent, JList lstConfig) { - super("Edit computer...", loadIcon(ICON_FILE)); + super("Edit computer...", loadIcon(ICON_COMPUTER)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.dialogs = Objects.requireNonNull(dialogs); this.appSettings = Objects.requireNonNull(appSettings); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java index 697036c4f..3e3182ab8 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/OpenComputerAction.java @@ -11,10 +11,10 @@ import java.util.Optional; import java.util.function.Consumer; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_ADD; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class OpenComputerAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/list-add.png"; private final Dialogs dialogs; private final JDialog parent; @@ -23,7 +23,7 @@ public class OpenComputerAction extends AbstractAction { public OpenComputerAction(Dialogs dialogs, JDialog parent, JList lstConfig, Consumer selectComputer) { - super("Create new computer...", loadIcon(ICON_FILE)); + super("Create new computer...", loadIcon(ICON_ADD)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.dialogs = Objects.requireNonNull(dialogs); this.parent = Objects.requireNonNull(parent); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java index 91465169a..e7a9104cb 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/RenameComputerAction.java @@ -14,11 +14,11 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_RENAME; import static net.emustudio.application.settings.ConfigFiles.renameConfiguration; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class RenameComputerAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/rename-computer.png"; private final static Logger LOGGER = LoggerFactory.getLogger(RenameComputerAction.class); private final Dialogs dialogs; @@ -27,7 +27,7 @@ public class RenameComputerAction extends AbstractAction { public RenameComputerAction(Dialogs dialogs, Runnable update, JList lstConfig) { - super("Rename computer...", loadIcon(ICON_FILE)); + super("Rename computer...", loadIcon(ICON_RENAME)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.dialogs = Objects.requireNonNull(dialogs); this.update = Objects.requireNonNull(update); diff --git a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java index f8965cff7..6e93c712b 100644 --- a/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java +++ b/application/src/main/java/net/emustudio/application/gui/actions/opencomputer/SaveSchemaAction.java @@ -8,14 +8,14 @@ import java.awt.event.ActionEvent; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_SAVE; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class SaveSchemaAction extends AbstractAction { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/document-save.png"; private final SchemaPreviewPanel preview; public SaveSchemaAction(SchemaPreviewPanel preview) { - super("Save schema image...", loadIcon(ICON_FILE)); + super("Save schema image...", loadIcon(ICON_SAVE)); putValue(SHORT_DESCRIPTION, getValue(Action.NAME)); this.preview = Objects.requireNonNull(preview); } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java index d1f7a7bbd..df18794dc 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellEditor.java @@ -5,28 +5,29 @@ import javax.swing.*; import javax.swing.table.TableCellEditor; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; +import java.awt.event.*; import java.util.EventObject; import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_EVEN; import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_ODD; -public class BooleanCellEditor extends AbstractCellEditor implements TableCellEditor, MouseListener { +public class BooleanCellEditor extends AbstractCellEditor implements TableCellEditor { private final BooleanComponent component; private boolean isMouseEvent; public BooleanCellEditor() { component = new BooleanComponent(false); - component.addMouseListener(this); + component.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + fireEditingStopped(); + } + }); + InputMap im = component.getInputMap(JComponent.WHEN_FOCUSED); ActionMap am = component.getActionMap(); - im.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "click"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "click"); - am.put("click", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { @@ -38,7 +39,7 @@ public void actionPerformed(ActionEvent e) { @Override public boolean isCellEditable(EventObject e) { isMouseEvent = e instanceof MouseEvent; - return true; //(e instanceof MouseEvent); + return true; } @Override @@ -47,40 +48,11 @@ public Object getCellEditorValue() { } @Override - public Component getTableCellEditorComponent(JTable table, - Object value, boolean isSelected, int row, int column) { - boolean state = (boolean) value; - if (isMouseEvent) { - state = !state; - } + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + boolean state = isMouseEvent != (boolean) value; component.setValue(state); component.setOpaque(isSelected); component.setBackground((row % 2 == 0) ? TABLE_COLOR_ROW_ODD : TABLE_COLOR_ROW_EVEN); return component; } - - @Override - public void mouseClicked(MouseEvent e) { - this.fireEditingStopped(); - } - - @Override - public void mousePressed(MouseEvent e) { - this.fireEditingStopped(); - } - - @Override - public void mouseReleased(MouseEvent e) { - this.fireEditingStopped(); - } - - @Override - public void mouseEntered(MouseEvent e) { - this.fireEditingStopped(); - } - - @Override - public void mouseExited(MouseEvent e) { - this.fireEditingStopped(); - } } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java index 2d66cedbc..53f446067 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanCellRenderer.java @@ -4,14 +4,13 @@ import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; -import javax.swing.table.TableCellRenderer; import java.awt.*; import static net.emustudio.application.gui.debugtable.BooleanComponent.BOOLEAN_ICON; import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_EVEN; import static net.emustudio.emulib.runtime.ui.Constants.TABLE_COLOR_ROW_ODD; -class BooleanCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer { +class BooleanCellRenderer extends DefaultTableCellRenderer { public BooleanCellRenderer() { setHorizontalAlignment(javax.swing.SwingConstants.CENTER); @@ -23,13 +22,7 @@ public Component getTableCellRendererComponent(JTable table, Object value, boole setBackground((row % 2 == 0) ? TABLE_COLOR_ROW_ODD : TABLE_COLOR_ROW_EVEN); super.getTableCellRendererComponent(table, null, isSelected, hasFocus, row, column); - - boolean isBreakpointSet = value != null && (Boolean) value; - if (isBreakpointSet) { - setIcon(BOOLEAN_ICON); - } else { - setIcon(null); - } + setIcon((value != null && (Boolean) value) ? BOOLEAN_ICON : null); return this; } } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java index f29f46642..a00e84a07 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/BooleanComponent.java @@ -4,16 +4,17 @@ import javax.swing.*; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_BREAKPOINT; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class BooleanComponent extends JLabel { - public static final Icon BOOLEAN_ICON = loadIcon("/net/emustudio/application/gui/dialogs/breakpoint.png"); + public static final Icon BOOLEAN_ICON = loadIcon(ICON_BREAKPOINT); private boolean value; public BooleanComponent(boolean value) { - this.value = value; setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + setValue(value); } public boolean getValue() { @@ -22,10 +23,6 @@ public boolean getValue() { public void setValue(boolean value) { this.value = value; - if (value) { - setIcon(BOOLEAN_ICON); - } else { - setIcon(null); - } + setIcon(value ? BOOLEAN_ICON : null); } } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java b/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java index d26bdc2a1..0d9a80b53 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/CallFlow.java @@ -30,18 +30,16 @@ class CallFlow { void updateCache(int currentLocation) { try { int nextPosition = disassembler.getNextInstructionPosition(currentLocation); - if (nextPosition - currentLocation > longestInstructionSize) { - longestInstructionSize = nextPosition - currentLocation; - } + updateLongestInstructionSize(currentLocation, nextPosition); + Integer prev = flowGraph.get(currentLocation); - if (prev != null) { + if (prev != null && prev != nextPosition) { // jump over previous instruction chain until we get to the last one - int originalPrev = prev; while (prev != null && prev < nextPosition) { prev = flowGraph.get(prev); } - if (prev != null && prev != nextPosition) { + if (prev != null) { // If the current instruction points to a different address than before // and the previous instruction chain does not end in the new position, remove the whole chain flowGraph.subMap(originalPrev, true, prev, true).clear(); @@ -53,6 +51,13 @@ void updateCache(int currentLocation) { } } + private void updateLongestInstructionSize(int from, int to) { + int size = to - from; + if (size > longestInstructionSize) { + longestInstructionSize = size; + } + } + /** * Will traverse instructions "knownFrom" (inclusive) up to "to" (exclusive). *

@@ -71,7 +76,6 @@ int traverseUpTo(int knownFrom, int to, Consumer consumer) { int lastKnownFrom; do { lastKnownFrom = knownFrom; - consumer.accept(lastKnownFrom); try { @@ -79,9 +83,7 @@ int traverseUpTo(int knownFrom, int to, Consumer consumer) { } catch (IndexOutOfBoundsException e) { break; } - if (knownFrom - lastKnownFrom > longestInstructionSize) { - longestInstructionSize = knownFrom - lastKnownFrom; - } + updateLongestInstructionSize(lastKnownFrom, knownFrom); } while (knownFrom < to); return (knownFrom == to) ? knownFrom : lastKnownFrom; } @@ -95,13 +97,10 @@ void traverseForInstructionCount(int knownFrom, int count, Consumer con } catch (IndexOutOfBoundsException e) { break; } - if (knownFrom - lastKnownFrom > longestInstructionSize) { - longestInstructionSize = knownFrom - lastKnownFrom; - } + updateLongestInstructionSize(lastKnownFrom, knownFrom); if (lastKnownFrom == knownFrom) { break; } - consumer.accept(knownFrom); } } @@ -119,10 +118,7 @@ void traverseBackForInstructionCount(int knownFrom, int count, Consumer } catch (IndexOutOfBoundsException e) { break; } - if (knownFrom - lastKnownFrom > longestInstructionSize) { - longestInstructionSize = knownFrom - lastKnownFrom; - } - + updateLongestInstructionSize(lastKnownFrom, knownFrom); consumer.accept(knownFrom); knownFrom = previousLocation; } @@ -143,9 +139,7 @@ List getLocations(int from, int to) { if (from > to) { throw new IllegalArgumentException("From (" + from + ") > to (" + to + ") !"); } - if (from < 0) { - from = 0; - } + from = Math.max(0, from); if (to < 0) { return Collections.emptyList(); } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java index 6fb322bcf..4b59dbad9 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/DebugTableModelImpl.java @@ -10,7 +10,6 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.function.Supplier; public class DebugTableModelImpl extends DebugTableModel { @@ -62,89 +61,84 @@ public Class getColumnClass(int columnIndex) { @Override public void previousPage() { - Optional.ofNullable(ida).ifPresent(i -> { - i.pagePrevious(); + if (ida != null) { + ida.pagePrevious(); fireTableDataChanged(); - }); + } } @Override public void seekBackwardPage(final int value) { - Optional.ofNullable(ida).ifPresent(i -> { + if (ida != null) { for (int counter = 0; counter < value; counter++) { - i.pagePrevious(); + ida.pagePrevious(); } fireTableDataChanged(); - }); + } } @Override public void firstPage() { - Optional.ofNullable(ida).ifPresent(i -> { - i.pageFirst(); + if (ida != null) { + ida.pageFirst(); fireTableDataChanged(); - }); + } } @Override public void nextPage() { - Optional.ofNullable(ida).ifPresent(i -> { - i.pageNext(); + if (ida != null) { + ida.pageNext(); fireTableDataChanged(); - }); + } } @Override public void seekForwardPage(final int value) { - Optional.ofNullable(ida).ifPresent(i -> { + if (ida != null) { for (int counter = 0; counter < value; counter++) { ida.pageNext(); } fireTableDataChanged(); - }); + } } @Override public void lastPage() { - Optional.ofNullable(ida).ifPresent(i -> { - i.pageLast(); + if (ida != null) { + ida.pageLast(); fireTableDataChanged(); - }); + } } @Override public void currentPage() { - Optional.ofNullable(ida).ifPresent(i -> { - i.pageCurrent(); + if (ida != null) { + ida.pageCurrent(); fireTableDataChanged(); - }); + } } @Override public Object getValueAt(int rowIndex, int columnIndex) { - return Optional.ofNullable(ida).map(i -> { - int location = i.rowToLocation(cpu.getInstructionLocation(), rowIndex); - if (location != -1) { - return columns[columnIndex].getValue(location); - } - return null; - }).orElse(null); + if (ida == null) return null; + int location = ida.rowToLocation(cpu.getInstructionLocation(), rowIndex); + return (location != -1) ? columns[columnIndex].getValue(location) : null; } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { - Optional.ofNullable(ida).ifPresent(i -> { - int location = i.rowToLocation(cpu.getInstructionLocation(), rowIndex); - if (location != -1) { - DebuggerColumn column = columns[columnIndex]; - if (value.getClass() == column.getClassType()) { - try { - column.setValue(location, value); - } catch (CannotSetDebuggerValueException ignored) { - } - } + if (ida == null) return; + int location = ida.rowToLocation(cpu.getInstructionLocation(), rowIndex); + if (location == -1) return; + + DebuggerColumn column = columns[columnIndex]; + if (value.getClass() == column.getClassType()) { + try { + column.setValue(location, value); + } catch (CannotSetDebuggerValueException ignored) { } - }); + } } @Override @@ -154,12 +148,14 @@ public boolean isCellEditable(int rowIndex, int columnIndex) { @Override public boolean isRowAtCurrentInstruction(int rowIndex) { - return Optional.ofNullable(ida).map(i -> i.isRowAtCurrentInstruction(rowIndex)).orElse(false); + return ida != null && ida.isRowAtCurrentInstruction(rowIndex); } @Override public void memoryChanged(int from, int to) { - Optional.ofNullable(ida).ifPresent(i -> i.flushCache(from, to + 1)); + if (ida != null) { + ida.flushCache(from, to + 1); + } fireTableDataChanged(); } @@ -170,18 +166,18 @@ public void memorySizeChanged(int memorySize) { @Override public final void setDefaultColumns() { - Optional.ofNullable(cpu).ifPresent(cpu -> { - Disassembler dis = cpu.getDisassembler(); - if (cpu.isBreakpointSupported()) { - setDebuggerColumns(Arrays.asList( - new BreakpointColumn(cpu), new AddressColumn(), new MnemoColumn(dis), new OpcodeColumn(dis) - )); - } else { - setDebuggerColumns(Arrays.asList( - new AddressColumn(), new MnemoColumn(dis), new OpcodeColumn(dis) - )); - } - }); + if (cpu == null) return; + + Disassembler dis = cpu.getDisassembler(); + if (cpu.isBreakpointSupported()) { + setDebuggerColumns(Arrays.asList( + new BreakpointColumn(cpu), new AddressColumn(), new MnemoColumn(dis), new OpcodeColumn(dis) + )); + } else { + setDebuggerColumns(Arrays.asList( + new AddressColumn(), new MnemoColumn(dis), new OpcodeColumn(dis) + )); + } } @Override diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java index 2d3833349..efbdba07d 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/PagesPanel.java @@ -8,15 +8,10 @@ import javax.swing.*; import java.util.Objects; -import java.util.Optional; + +import static net.emustudio.application.gui.framework.EmuStudioUI.*; public class PagesPanel extends JPanel { - private static final String PAGE_FIRST_PNG = "/net/emustudio/application/gui/dialogs/page-first.png"; - private static final String PAGE_BACK_PNG = "/net/emustudio/application/gui/dialogs/page-back.png"; - private static final String PAGE_CURRENT_PNG = "/net/emustudio/application/gui/dialogs/page-current.png"; - private static final String PAGE_FORWARD_PNG = "/net/emustudio/application/gui/dialogs/page-forward.png"; - private static final String PAGE_SEEK_BACKWARD_PNG = "/net/emustudio/application/gui/dialogs/page-seek-backward.png"; - private static final String PAGE_SEEK_FORWARD_PNG = "/net/emustudio/application/gui/dialogs/page-seek-forward.png"; private final Dialogs dialogs; private final DebugTableModel debugTableModel; @@ -35,12 +30,12 @@ public static PagesPanel create(DebugTableModel debugTableModel, Dialogs dialogs } private void initComponents() { - ToolbarButton btnFirst = GUI.toolbarButton(evt -> gotoFirstPage(), PAGE_FIRST_PNG, "Go to the first page"); - ToolbarButton btnBackward = GUI.toolbarButton(evt -> gotoPreviousPage(), PAGE_BACK_PNG, "Go to the previous page"); - ToolbarButton btnCurrentPage = GUI.toolbarButton(evt -> gotoCurrentPage(), PAGE_CURRENT_PNG, "Go to the current page"); - ToolbarButton btnForward = GUI.toolbarButton(evt -> gotoNextPage(), PAGE_FORWARD_PNG, "Go to the next page"); - ToolbarButton btnSeekBackward = GUI.toolbarButton(evt -> seekBackward(), PAGE_SEEK_BACKWARD_PNG, "Go to the current page"); - ToolbarButton btnSeekForward = GUI.toolbarButton(evt -> seekForward(), PAGE_SEEK_FORWARD_PNG, "Go to the current page"); + ToolbarButton btnFirst = GUI.toolbarButton(evt -> debugTableModel.firstPage(), ICON_PAGE_FIRST, "Go to the first page"); + ToolbarButton btnBackward = GUI.toolbarButton(evt -> debugTableModel.previousPage(), ICON_PAGE_BACK, "Go to the previous page"); + ToolbarButton btnCurrentPage = GUI.toolbarButton(evt -> debugTableModel.currentPage(), ICON_PAGE_CURRENT, "Go to the current page"); + ToolbarButton btnForward = GUI.toolbarButton(evt -> debugTableModel.nextPage(), ICON_PAGE_FORWARD, "Go to the next page"); + ToolbarButton btnSeekBackward = GUI.toolbarButton(evt -> seekBackward(), ICON_PAGE_SEEK_BACKWARD, "Go to the current page"); + ToolbarButton btnSeekForward = GUI.toolbarButton(evt -> seekForward(), ICON_PAGE_SEEK_FORWARD, "Go to the current page"); GroupLayout pagesLayout = new GroupLayout(this); setLayout(pagesLayout); @@ -72,40 +67,19 @@ private void initComponents() { ); } - private void gotoFirstPage() { - debugTableModel.firstPage(); - } - - private void gotoPreviousPage() { - debugTableModel.previousPage(); - } - - private void gotoCurrentPage() { - debugTableModel.currentPage(); - } - - private void gotoNextPage() { - debugTableModel.nextPage(); - } - - private boolean gatherPageValue(String message) { - Optional result = dialogs.readInteger(message, "Seek", pageSeekLastValue); - if (result.isPresent()) { - pageSeekLastValue = result.get(); - return true; - } - return false; - } - private void seekBackward() { - if (gatherPageValue("Please enter number of pages to backward")) { - debugTableModel.seekBackwardPage(pageSeekLastValue); - } + dialogs.readInteger("Please enter number of pages to backward", "Seek", pageSeekLastValue) + .ifPresent(value -> { + pageSeekLastValue = value; + debugTableModel.seekBackwardPage(value); + }); } private void seekForward() { - if (gatherPageValue("Please enter number of pages to forward")) { - debugTableModel.seekForwardPage(pageSeekLastValue); - } + dialogs.readInteger("Please enter number of pages to forward", "Seek", pageSeekLastValue) + .ifPresent(value -> { + pageSeekLastValue = value; + debugTableModel.seekForwardPage(value); + }); } } diff --git a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java index 2b572676d..f016e6542 100644 --- a/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java +++ b/application/src/main/java/net/emustudio/application/gui/debugtable/TextCellRenderer.java @@ -32,11 +32,7 @@ public Component getTableCellRendererComponent(JTable table, Object value, setBackground((row % 2 == 0) ? TABLE_COLOR_ROW_ODD : TABLE_COLOR_ROW_EVEN); setForeground(Color.BLACK); } - if (value != null) { - setText(value.toString()); - } else { - setText(""); - } + setText((value != null) ? value.toString() : ""); return this; } } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java index bf51ccc60..80f5ae6a2 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AboutDialog.java @@ -3,19 +3,17 @@ package net.emustudio.application.gui.dialogs; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.emulib.runtime.ui.components.DialogBase; -import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.*; import static net.emustudio.application.Resources.getCopyright; import static net.emustudio.application.Resources.getVersion; -import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class AboutDialog extends DialogBase { - public final static String LOGO_FILE = "/net/emustudio/application/gui/dialogs/logo.png"; public AboutDialog(JFrame parent) { super(parent, "About emuStudio", true); @@ -25,23 +23,18 @@ public AboutDialog(JFrame parent) { @Override protected JComponent initializeComponents() { // Main panel with horizontal layout - JPanel mainPanel = new JPanel(new MigLayout("insets 10", "[][grow]", "[]")); - - // Logo panel - JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); - lblLogo.setBackground(Color.WHITE); - lblLogo.setBorder(BorderFactory.createLineBorder(Color.BLACK)); - lblLogo.setOpaque(true); + JPanel mainPanel = GUI.panel("insets 10", "[][grow]", "[]"); + JLabel lblLogo = EmuStudioUI.createLogoJLabel(); // Info panel - JPanel infoPanel = new JPanel(new MigLayout("insets 10", "[grow]", "[]")); - infoPanel.add(GUI.titleLabel("emuStudio"), "wrap, gapbottom 10"); + JPanel infoPanel = GUI.panel("insets 10", "[grow]", "[]"); + infoPanel.add(GUI.labelTitle("emuStudio"), "wrap, gapbottom 10"); infoPanel.add(GUI.label(getCopyright()), "wrap, gapbottom 10"); infoPanel.add(GUI.label("Version: "), "split 2"); - infoPanel.add(GUI.boldLabel(getVersion()), "wrap, gapbottom 10"); + infoPanel.add(GUI.labelBold(getVersion()), "wrap, gapbottom 10"); - JLabel licenseInfo = new JLabel( + JLabel licenseInfo = GUI.label( "

This program comes with ABSOLUTELY NO WARRANTY. " + "This is free software, and you are welcome to redistribute it " + "under certain conditions; for details see " + diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java index 051316f0b..bbd7e5060 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/AutoDialog.java @@ -10,6 +10,7 @@ import javax.swing.*; import java.util.Objects; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_MOTHERBOARD; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; /** @@ -17,7 +18,6 @@ * is running. */ public class AutoDialog extends DialogBase { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/motherboard-icon.gif"; private final VirtualComputer computer; private final JLabel lblAction = new JLabel(); @@ -33,11 +33,10 @@ public AutoDialog(VirtualComputer computer) { @Override protected JComponent initializeComponents() { - JPanel panel = GUI.panelVertical(); + JPanel panel = GUI.column(); - JLabel lblPerforming = new JLabel(loadIcon(ICON_FILE)); - lblPerforming.setFont(lblPerforming.getFont().deriveFont(lblPerforming.getFont().getStyle() | java.awt.Font.BOLD)); - lblPerforming.setText("Running automatic emulation, please wait..."); + JLabel lblPerforming = GUI.labelBold("Running automatic emulation, please wait..."); + lblPerforming.setIcon(loadIcon(ICON_MOTHERBOARD)); lblAction.setText("Initializing..."); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java index 0855acdd1..6ecc4cbf8 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/BreakpointDialog.java @@ -39,16 +39,20 @@ public boolean isSet() { @Override protected JComponent initializeComponents() { - JPanel panel = GUI.panelVertical(); + JPanel panel = GUI.column(); panel.add(GUI.label("Set/unset breakpoint to address:"), "wrap, gapbottom 5"); - txtAddress = GUI.textField("0"); + txtAddress = new JTextField("0", 20); panel.add(txtAddress, "growx, wrap, gapbottom 10"); - JPanel buttonPanel = GUI.panelButtons(); - buttonPanel.add(GUI.button("Unset", this::btnUnsetActionPerformed), ""); - buttonPanel.add(GUI.button("Set", this::btnSetActionPerformed), ""); + JPanel buttonPanel = GUI.panel("insets dialog", "[grow, right]", "[]"); + JButton btnUnset = new JButton("Unset"); + btnUnset.addActionListener(e -> btnUnsetActionPerformed()); + JButton btnSet = new JButton("Set"); + btnSet.addActionListener(e -> btnSetActionPerformed()); + buttonPanel.add(btnUnset, ""); + buttonPanel.add(btnSet, ""); panel.add(buttonPanel, "growx, span"); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java index 041c78962..9f38b1ff9 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EditorPanel.java @@ -17,7 +17,7 @@ import java.util.Objects; import java.util.function.Supplier; -import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; public class EditorPanel extends JPanel { private final static int MIN_COMPILER_OUTPUT_HEIGHT = 200; @@ -36,7 +36,7 @@ public class EditorPanel extends JPanel { private final ReplaceDialog replaceDialog; private final FindDialog findDialog; - private final JSplitPane splitSource = GUI.splitPane(); + private final JSplitPane splitSource; public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualComputer computer, Runnable updateTitle, Supplier runState) { @@ -47,13 +47,8 @@ public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualCompute this.replaceDialog = new ReplaceDialog(parent, editor); this.findDialog = new FindDialog(parent, editor); - JTextArea compilerOutput = new JTextArea(); - compilerOutput.setColumns(20); + JTextArea compilerOutput = GUI.textAreaCode(3, 20); compilerOutput.setEditable(false); - compilerOutput.setFont(FONT_MONOSPACED); - compilerOutput.setLineWrap(true); - compilerOutput.setRows(3); - compilerOutput.setWrapStyleWord(true); this.saveFileAction = new SaveFileAction(editor, updateTitle); this.findAction = new FindAction(findDialog, replaceDialog); @@ -64,18 +59,12 @@ public EditorPanel(JFrame parent, Dialogs dialogs, Editor editor, VirtualCompute computer, dialogs, editor, runState, compilerOutput, updateTitle ); - JScrollPane compilerPane = new JScrollPane(); - compilerPane.setViewportView(compilerOutput); + JScrollPane compilerPane = GUI.scrollable(compilerOutput); - splitSource.setBorder(null); - splitSource.setOrientation(JSplitPane.VERTICAL_SPLIT); + splitSource = GUI.splitTopBottom(editor.getView(), compilerPane, 1.0); splitSource.setOneTouchExpandable(true); - splitSource.setResizeWeight(1.0); - splitSource.setLeftComponent(editor.getView()); - splitSource.setRightComponent(compilerPane); JToolBar mainToolBar = setupMainToolbar(); - mainToolBar.setRollover(true); setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[grow]", "[][grow]")); add(mainToolBar, "growx, wrap"); @@ -132,11 +121,7 @@ public final boolean confirmSave() { } private JToolBar setupMainToolbar() { - JToolBar mainToolBar = new JToolBar(); - - mainToolBar.setFloatable(false); - mainToolBar.setBorderPainted(false); - mainToolBar.setRollover(true); + JToolBar mainToolBar = GUI.toolbar(); mainToolBar.add(GUI.toolbarButton(newFileAction)); mainToolBar.add(GUI.toolbarButton(openFileAction)); @@ -144,28 +129,28 @@ private JToolBar setupMainToolbar() { mainToolBar.addSeparator(); mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.UNDO_ACTION), - "/net/emustudio/application/gui/dialogs/edit-undo.png", + ICON_UNDO, "Undo" )); mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.REDO_ACTION), - "/net/emustudio/application/gui/dialogs/edit-redo.png", + ICON_REDO, "Redo" )); mainToolBar.addSeparator(); mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.CUT_ACTION), - "/net/emustudio/application/gui/dialogs/edit-cut.png", + ICON_CUT, "Cut selection" )); mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.COPY_ACTION), - "/net/emustudio/application/gui/dialogs/edit-copy.png", + ICON_COPY, "Copy selection" )); mainToolBar.add(GUI.toolbarButton( RTextArea.getAction(RTextArea.PASTE_ACTION), - "/net/emustudio/application/gui/dialogs/edit-paste.png", + ICON_PASTE, "Paste from clipboard" )); mainToolBar.addSeparator(); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java index 48884b35b..c9461635d 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/EmulatorPanel.java @@ -14,7 +14,6 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.emulib.runtime.ui.GUI; -import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.event.*; @@ -28,12 +27,12 @@ public class EmulatorPanel extends JPanel { private final JPanel statusWindow = new JPanel(); private final GroupLayout statusWindowLayout = new GroupLayout(statusWindow); - private final JToolBar toolDebug = new JToolBar(); + private final JToolBar toolDebug = GUI.toolbar(); private final JPanel panelPages; private final JScrollPane paneDebug; private final JList lstDevices = new JList<>(); - private final JSplitPane splitPerDebug = GUI.splitPane(); + private final JSplitPane splitPerDebug; private final DebugTableModel debugTableModel; private final JTable debugTable; @@ -63,11 +62,11 @@ public EmulatorPanel(JFrame parent, VirtualComputer computer, DebugTableModel de this.debugTableModel = Objects.requireNonNull(debugTableModel); this.debugTable = new DebugTableImpl(debugTableModel); - paneDebug = GUI.scrollPane(debugTable); + paneDebug = GUI.scrollable(debugTable); paneDebug.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); debugTable.setFillsViewportHeight(true); - GUI.styleTable(debugTable); + GUI.style(debugTable); paneDebug.addComponentListener(new ComponentAdapter() { @Override @@ -100,8 +99,7 @@ public void componentResized(ComponentEvent e) { panelPages = PagesPanel.create(debugTableModel, dialogs); - JPanel debuggerPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow][]")); - debuggerPanel.setBorder(BorderFactory.createTitledBorder("Debugger")); + JPanel debuggerPanel = GUI.section("Debugger", "insets dialog", "[grow]", "[][grow][]"); debuggerPanel.add(toolDebug, "growx, wrap"); debuggerPanel.add(paneDebug, "grow, wrap"); debuggerPanel.add(panelPages, "growx"); @@ -138,10 +136,9 @@ public void mouseClicked(MouseEvent e) { } }); - JPanel peripheralPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[grow][]")); - peripheralPanel.setBorder(BorderFactory.createTitledBorder("Peripheral devices")); - JScrollPane paneDevices = GUI.scrollPane(lstDevices); - GUI.styleList(lstDevices); + JPanel peripheralPanel = GUI.section("Peripheral devices", "insets dialog", "[grow]", "[grow][]"); + JScrollPane paneDevices = GUI.scrollable(lstDevices); + GUI.style(lstDevices); JButton btnShowSettings = new JButton(showDeviceSettingsAction); JButton btnShowGUI = new JButton(showDeviceGuiAction); @@ -150,25 +147,15 @@ public void mouseClicked(MouseEvent e) { peripheralPanel.add(btnShowSettings, "split 2, sizegroup btns, tag ok"); peripheralPanel.add(btnShowGUI, "sizegroup btns, tag cancel"); - splitPerDebug.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); + splitPerDebug = GUI.splitTopBottom(debuggerPanel, peripheralPanel, 1.0); splitPerDebug.setDividerLocation(500); - splitPerDebug.setOrientation(JSplitPane.VERTICAL_SPLIT); splitPerDebug.setAutoscrolls(true); - splitPerDebug.setContinuousLayout(true); - splitPerDebug.setResizeWeight(1.0); - splitPerDebug.setTopComponent(debuggerPanel); - splitPerDebug.setRightComponent(peripheralPanel); - - JSplitPane splitLeftRight = GUI.splitPane(); - splitLeftRight.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); - splitLeftRight.setContinuousLayout(true); + + JSplitPane splitLeftRight = GUI.splitLeftRight(splitPerDebug, statusWindow, 1.0); splitLeftRight.setFocusable(false); splitLeftRight.setDividerLocation(1.0); - splitLeftRight.setResizeWeight(1.0); - splitLeftRight.setRightComponent(statusWindow); - splitLeftRight.setLeftComponent(splitPerDebug); - setLayout(new MigLayout("insets dialog, fill", "[grow]", "[grow]")); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog, fill", "[grow]", "[grow]")); add(splitLeftRight, "grow"); this.memoryListener = new MemoryContext.MemoryListener() { @@ -230,10 +217,6 @@ private void setStatusPanel(JPanel statusPanel) { } private void setupDebugToolbar() { - toolDebug.setFloatable(false); - toolDebug.setRollover(true); - toolDebug.setBorderPainted(false); - toolDebug.add(GUI.toolbarButton(resetAction)); toolDebug.addSeparator(); toolDebug.add(GUI.toolbarButton(jumpToBeginningAction)); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java index 381361105..1a4de5b31 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/LoadingDialog.java @@ -7,11 +7,10 @@ import javax.swing.*; -import static net.emustudio.emulib.runtime.ui.GUI.label; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_LOADING; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class LoadingDialog extends DialogBase { - private final static String ICON_FILE = "/net/emustudio/application/gui/dialogs/loading.gif"; public LoadingDialog() { super((JFrame) null, "emuStudio", false); @@ -21,14 +20,13 @@ public LoadingDialog() { @Override protected JComponent initializeComponents() { - JPanel panel = GUI.panelVertical(); + JPanel panel = GUI.column(); - JLabel lblLoading = new JLabel(loadIcon(ICON_FILE)); - lblLoading.setFont(lblLoading.getFont().deriveFont(lblLoading.getFont().getStyle() | java.awt.Font.BOLD)); - lblLoading.setText("Loading computer, please wait..."); + JLabel lblLoading = GUI.labelBold("Loading computer, please wait..."); + lblLoading.setIcon(loadIcon(ICON_LOADING)); panel.add(lblLoading, "wrap, gapbottom 10"); - panel.add(label("If you see some errors, please see the log file."), "wrap"); + panel.add(GUI.label("If you see some errors, please see the log file."), "wrap"); return panel; } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java index 268b79dbd..6ae9ba7ce 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/OpenComputerDialog.java @@ -3,6 +3,7 @@ package net.emustudio.application.gui.dialogs; import net.emustudio.application.gui.actions.opencomputer.*; +import net.emustudio.application.gui.framework.EmuStudioUI; import net.emustudio.application.gui.schema.Schema; import net.emustudio.application.gui.schema.SchemaPreviewPanel; import net.emustudio.application.settings.AppSettings; @@ -10,7 +11,6 @@ import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.emulib.runtime.ui.components.DialogBase; -import net.emustudio.emulib.runtime.ui.components.FadingBorder; import net.emustudio.emulib.runtime.ui.components.ToolbarButton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,9 +30,7 @@ import java.util.function.Consumer; import static net.emustudio.application.Resources.getVersion; -import static net.emustudio.application.gui.dialogs.AboutDialog.LOGO_FILE; import static net.emustudio.application.settings.ConfigFiles.loadConfigurations; -import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class OpenComputerDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(OpenComputerDialog.class); @@ -81,18 +79,15 @@ void update() { @Override protected JComponent initializeComponents() { JSplitPane splitConfig = GUI.splitPane(); - JPanel panelConfig = new JPanel(); - JScrollPane configScrollPane = new JScrollPane(); - JToolBar toolConfig = GUI.toolBar(); + JToolBar toolConfig = GUI.toolbarVertical(); ToolbarButton btnAdd = GUI.toolbarButton(addNewComputerAction); - ToolbarButton btnDelete = new ToolbarButton(deleteComputerAction); - ToolbarButton btnEdit = new ToolbarButton(editComputerAction); - ToolbarButton btnRename = new ToolbarButton(renameComputerAction); - ToolbarButton btnSaveSchemaImage = new ToolbarButton(saveSchemaAction); - JScrollPane scrollPreview = GUI.scrollPane(preview); - JButton btnOpen = new JButton(); + ToolbarButton btnDelete = GUI.toolbarButton(deleteComputerAction); + ToolbarButton btnEdit = GUI.toolbarButton(editComputerAction); + ToolbarButton btnRename = GUI.toolbarButton(renameComputerAction); + ToolbarButton btnSaveSchemaImage = GUI.toolbarButton(saveSchemaAction); + JScrollPane scrollPreview = GUI.scrollable(preview); JButton btnClose = new JButton(); - + JLabel lblLogo = EmuStudioUI.createLogoJLabel(); lstConfig.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -102,20 +97,16 @@ public void mouseClicked(MouseEvent evt) { lstConfig.addListSelectionListener(this::lstConfigValueChanged); lstConfig.registerKeyboardAction(openComputerAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - configScrollPane.setViewportView(lstConfig); - configScrollPane.setBorder(BorderFactory.createLineBorder(UIManager.getColor("Component.borderColor"))); - GUI.styleList(lstConfig); + JScrollPane configScrollPane = GUI.scrollableBordered(lstConfig); + GUI.style(lstConfig); - toolConfig.setFloatable(false); - toolConfig.setRollover(true); - toolConfig.setOrientation(JToolBar.VERTICAL); toolConfig.add(btnAdd); toolConfig.add(btnDelete); toolConfig.add(btnEdit); toolConfig.add(btnRename); toolConfig.add(btnSaveSchemaImage); - panelConfig.setLayout(new net.miginfocom.swing.MigLayout("insets 0, fill", "[][grow]", "[grow]")); + JPanel panelConfig = GUI.panel("insets 0, fill", "[][grow]", "[grow]"); panelConfig.add(toolConfig, "growy"); panelConfig.add(configScrollPane, "grow"); @@ -123,55 +114,39 @@ public void mouseClicked(MouseEvent evt) { splitConfig.setLeftComponent(panelConfig); splitConfig.setRightComponent(scrollPreview); - // Create logo panel - JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); - lblLogo.setBackground(Color.WHITE); - lblLogo.setBorder(new FadingBorder(10, Color.WHITE)); - lblLogo.setOpaque(false); - - JLabel lblIntroduction = new JLabel("

Welcome to emuStudio!

Version:" + getVersion() + ""); - lblIntroduction.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); + JLabel lblIntroduction = GUI.labelPadded("

Welcome to emuStudio!

Version:" + getVersion() + "", 5, 10, 5, 10); - JLabel lblPlease = new JLabel("Please select computer you wish to emulate:"); - lblPlease.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); + JLabel lblPlease = GUI.labelPadded("Please select computer you wish to emulate:", 5, 10, 5, 10); // Create a vertical panel for introduction and selection prompt - JPanel textPanel = new JPanel(new java.awt.BorderLayout()); - textPanel.add(lblIntroduction, java.awt.BorderLayout.NORTH); - textPanel.add(lblPlease, java.awt.BorderLayout.CENTER); + JPanel textPanel = GUI.panel("insets 0, flowy, fill", "[grow]", "[]0[grow]"); + textPanel.add(lblIntroduction); + textPanel.add(lblPlease); // Create header panel with logo and introduction - JPanel headerPanel = new JPanel(new java.awt.BorderLayout(10, 0)); - headerPanel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15)); // Top, Left, Bottom, Right - headerPanel.add(lblLogo, java.awt.BorderLayout.WEST); - headerPanel.add(textPanel, java.awt.BorderLayout.CENTER); + JPanel headerPanel = GUI.panel("insets 15", "[]10[grow]", "[grow]"); + headerPanel.add(lblLogo); + headerPanel.add(textPanel, "grow"); - btnOpen.setText("Open computer"); - btnOpen.addActionListener(openComputerAction); - GUI.buttonMakePrimary(btnOpen); + JButton btnOpen = GUI.buttonPrimary("Open computer", openComputerAction); btnClose.setText("Exit"); btnClose.addActionListener(this::btnCloseActionPerformed); SwingUtilities.invokeLater(() -> splitConfig.setDividerLocation(270)); - // --- Layout Construction --- - // We configure the clean structure directly on the content pane in the constructor, - // so here we return null or a dummy. - // But to respect the pattern, let's allow buildContent to assemble the pieces. - // Center Panel: Header + SplitPane - JPanel centerPanel = new JPanel(new java.awt.BorderLayout()); - centerPanel.add(headerPanel, java.awt.BorderLayout.NORTH); - centerPanel.add(splitConfig, java.awt.BorderLayout.CENTER); + JPanel centerPanel = GUI.panel("insets 0, fill", "[grow]", "[]0[grow]"); + centerPanel.add(headerPanel, "growx, wrap"); + centerPanel.add(splitConfig, "grow"); // Buttons Panel: Bottom Right - JPanel buttonsPanel = new JPanel(new net.miginfocom.swing.MigLayout("insets 5 10 10 10, fillx", "[grow][][]", "[]")); + JPanel buttonsPanel = GUI.panel("insets 5 10 10 10, fillx", "[grow][][]", "[]"); buttonsPanel.add(btnOpen, "align right, skip 1, split 2, tag ok, wmin 100"); buttonsPanel.add(btnClose, "tag cancel, wmin 80"); // Root Container to hold both centers - JPanel root = new JPanel(new net.miginfocom.swing.MigLayout("fill, insets 0", "[grow]", "[grow]0[]")); + JPanel root = GUI.panel("fill, insets 0", "[grow]", "[grow]0[]"); root.add(centerPanel, "grow, push, wrap"); root.add(buttonsPanel, "growx"); diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java index 26fc7683f..655ef27ae 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/SchemaEditorDialog.java @@ -11,12 +11,12 @@ import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.emulib.runtime.ui.components.ToolbarButton; -import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import javax.swing.event.ChangeEvent; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.KeyEvent; @@ -27,6 +27,7 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; import static net.emustudio.application.settings.ConfigFiles.listPluginFiles; public class SchemaEditorDialog extends DialogBase implements KeyListener { @@ -36,7 +37,7 @@ public class SchemaEditorDialog extends DialogBase implements KeyListener { private final Schema schema; private final Dialogs dialogs; - private DrawingPanel panel; + private final DrawingPanel panel; private boolean buttonSelected = false; private JToggleButton btnBidirection; private JToggleButton btnCPU; @@ -107,69 +108,68 @@ public Schema getSchema() { protected JComponent initializeComponents() { groupDraw = new ButtonGroup(); - JToolBar toolDraw = new JToolBar(); + JToolBar toolDraw = GUI.toolbar(); ToolbarButton btnSave = GUI.toolbarButton( this::btnSaveActionPerformed, - "/net/emustudio/application/gui/dialogs/document-save.png", + ICON_SAVE, "Save & Close" ); JToolBar.Separator separator1 = new JToolBar.Separator(); - btnCompiler = GUI.toolbarToggleButton( + btnCompiler = GUI.toolbarToggle( this::btnCompilerActionPerformed, this::btnCompilerItemStateChanged, - "/net/emustudio/application/gui/dialogs/compile.png", + ICON_COMPILER, "Set compiler" ); - btnCPU = GUI.toolbarToggleButton( + btnCPU = GUI.toolbarToggle( this::btnCPUActionPerformed, this::btnCPUItemStateChanged, - "/net/emustudio/application/gui/dialogs/cpu.gif", + ICON_CPU, "Set CPU" ); - btnRAM = GUI.toolbarToggleButton( + btnRAM = GUI.toolbarToggle( this::btnRAMActionPerformed, this::btnRAMItemStateChanged, - "/net/emustudio/application/gui/dialogs/ram.gif", + ICON_MEMORY, "Set operating memory" ); - btnDevice = GUI.toolbarToggleButton( + btnDevice = GUI.toolbarToggle( this::btnDeviceActionPerformed, this::btnDeviceItemStateChanged, - "/net/emustudio/application/gui/dialogs/device.png", + ICON_DEVICE, "Add device" ); JToolBar.Separator separator2 = new JToolBar.Separator(); - btnLine = GUI.toolbarToggleButton( + btnLine = GUI.toolbarToggle( this::btnLineActionPerformed, this::btnLineItemStateChanged, - "/net/emustudio/application/gui/dialogs/connection.png", + ICON_CONNECTION, "Add connection" ); - btnBidirection = GUI.toolbarToggleButton( + btnBidirection = GUI.toolbarToggle( this::btnBidirectionActionPerformed, - "/net/emustudio/application/gui/dialogs/bidirection.gif", + ICON_BIDIRECTION, "Bidirectional connection" ); JToolBar.Separator separator3 = new JToolBar.Separator(); - btnDelete = GUI.toolbarToggleButton( + btnDelete = GUI.toolbarToggle( this::btnDeleteActionPerformed, this::btnDeleteItemStateChanged, - "/net/emustudio/application/gui/dialogs/edit-delete.png", + ICON_DELETE, "Delete component or connection" ); JToolBar.Separator separator4 = new JToolBar.Separator(); cmbPlugin = new JComboBox<>(); JToolBar.Separator separator5 = new JToolBar.Separator(); - btnUseGrid = GUI.toolbarToggleButton( + btnUseGrid = GUI.toolbarToggle( this::btnUseGridActionPerformed, - "/net/emustudio/application/gui/dialogs/grid_memory.gif", + ICON_GRID, "Set/unset using grid" ); scrollScheme = new JScrollPane(); + scrollScheme.setPreferredSize(new Dimension(800, 600)); sliderGridGap = new JSlider(); - toolDraw.setFloatable(false); - toolDraw.setRollover(true); toolDraw.add(btnSave); toolDraw.add(separator1); @@ -209,10 +209,10 @@ protected JComponent initializeComponents() { sliderGridGap.setValue(30); sliderGridGap.addChangeListener(this::sliderGridGapStateChanged); - JPanel mainPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow]")); - mainPanel.add(toolDraw, "growx, wrap"); + JPanel mainPanel = GUI.panel("insets dialog", "[grow][]", "[][grow]"); + mainPanel.add(toolDraw, "growx, span, wrap"); mainPanel.add(scrollScheme, "grow"); - mainPanel.add(sliderGridGap, "w 31!"); + mainPanel.add(sliderGridGap, "w 31!, growy"); return mainPanel; } @@ -274,7 +274,7 @@ private void cmbPluginActionPerformed(ActionEvent evt) { } else if (btnDevice.isSelected()) { panel.setTool(Tool.TOOL_DEVICE, fileName); } - }, () -> panel.cancelDrawing()); + }, panel::cancelDrawing); } private void btnCompilerItemStateChanged(ItemEvent evt) { diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java index d128d8355..c478209b7 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/StudioFrame.java @@ -17,6 +17,7 @@ import net.emustudio.application.virtualcomputer.VirtualComputer; import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import org.fife.ui.rtextarea.RTextArea; import javax.swing.*; @@ -25,12 +26,12 @@ import java.util.Objects; import java.util.Optional; +import static net.emustudio.application.gui.framework.EmuStudioUI.ICON_FAVICON; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; public class StudioFrame extends JFrame { private final static String SOURCE_CODE_EDITOR = "Source code editor"; - private final static String ICON_FILE = "/net/emustudio/application/gui/favicon16.png"; private final Editor editor; @@ -96,12 +97,6 @@ public void componentResized(ComponentEvent e) { editor.grabFocus(); } - private static JMenuItem createMenuItem(Action action) { - JMenuItem item = new JMenuItem(action); - item.setToolTipText(null); // Swing annoyingly adds tool tip text to the menu item - return item; - } - private void resizeComponents() { int height = getHeight(); editorPanel.resizeComponents(height); @@ -109,7 +104,7 @@ private void resizeComponents() { } private void initComponents() { - setIconImage(Optional.ofNullable(loadIcon(ICON_FILE)).map(ImageIcon::getImage).orElse(null)); + setIconImage(Optional.ofNullable(loadIcon(ICON_FAVICON)).map(ImageIcon::getImage).orElse(null)); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); @@ -144,37 +139,37 @@ private JMenuBar setupMainMenu() { JMenu mnuHelp = new JMenu(); mnuFile.setText("File"); - mnuFile.add(createMenuItem(editorPanel.getNewFileAction())); - mnuFile.add(createMenuItem(editorPanel.getOpenFileAction())); + mnuFile.add(GUI.menuItem(editorPanel.getNewFileAction())); + mnuFile.add(GUI.menuItem(editorPanel.getOpenFileAction())); mnuFile.addSeparator(); - mnuFile.add(createMenuItem(editorPanel.getSaveFileAction())); + mnuFile.add(GUI.menuItem(editorPanel.getSaveFileAction())); mnuFile.add(saveFileAsAction); mnuFile.addSeparator(); - mnuFile.add(createMenuItem(exitAction)); + mnuFile.add(GUI.menuItem(exitAction)); mainMenuBar.add(mnuFile); mnuEdit.setText("Edit"); - mnuEdit.add(createMenuItem(RTextArea.getAction(RTextArea.UNDO_ACTION))); - mnuEdit.add(createMenuItem(RTextArea.getAction(RTextArea.REDO_ACTION))); + mnuEdit.add(GUI.menuItem(RTextArea.getAction(RTextArea.UNDO_ACTION))); + mnuEdit.add(GUI.menuItem(RTextArea.getAction(RTextArea.REDO_ACTION))); mnuEdit.addSeparator(); - mnuEdit.add(createMenuItem(RTextArea.getAction(RTextArea.CUT_ACTION))); - mnuEdit.add(createMenuItem(RTextArea.getAction(RTextArea.COPY_ACTION))); - mnuEdit.add(createMenuItem(RTextArea.getAction(RTextArea.PASTE_ACTION))); + mnuEdit.add(GUI.menuItem(RTextArea.getAction(RTextArea.CUT_ACTION))); + mnuEdit.add(GUI.menuItem(RTextArea.getAction(RTextArea.COPY_ACTION))); + mnuEdit.add(GUI.menuItem(RTextArea.getAction(RTextArea.PASTE_ACTION))); mnuEdit.addSeparator(); - mnuEdit.add(createMenuItem(editorPanel.getFindAction())); - mnuEdit.add(createMenuItem(editorPanel.getReplaceAction())); - mnuEdit.add(createMenuItem(findNextAction)); - mnuEdit.add(createMenuItem(findPreviousAction)); + mnuEdit.add(GUI.menuItem(editorPanel.getFindAction())); + mnuEdit.add(GUI.menuItem(editorPanel.getReplaceAction())); + mnuEdit.add(GUI.menuItem(findNextAction)); + mnuEdit.add(GUI.menuItem(findPreviousAction)); mainMenuBar.add(mnuEdit); mnuProject.setText("Project"); - mnuProject.add(createMenuItem(editorPanel.getCompileAction())); - mnuProject.add(createMenuItem(viewComputerAction)); - mnuProject.add(createMenuItem(compilerSettingsAction)); + mnuProject.add(GUI.menuItem(editorPanel.getCompileAction())); + mnuProject.add(GUI.menuItem(viewComputerAction)); + mnuProject.add(GUI.menuItem(compilerSettingsAction)); mainMenuBar.add(mnuProject); mnuHelp.setText("Help"); - mnuHelp.add(createMenuItem(aboutAction)); + mnuHelp.add(GUI.menuItem(aboutAction)); mainMenuBar.add(mnuHelp); return mainMenuBar; } diff --git a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java index 7548db2a2..ea85b3caf 100644 --- a/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java +++ b/application/src/main/java/net/emustudio/application/gui/dialogs/ViewComputerDialog.java @@ -10,30 +10,27 @@ import net.emustudio.emulib.plugins.Plugin; import net.emustudio.emulib.plugins.device.Device; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.emulib.runtime.ui.components.DialogBase; -import net.miginfocom.swing.MigLayout; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; +import java.awt.Dimension; import java.util.List; import java.util.Objects; +import java.util.Optional; -import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; +import static net.emustudio.application.gui.framework.EmuStudioUI.*; public class ViewComputerDialog extends DialogBase { - private final static Logger LOGGER = LoggerFactory.getLogger(ViewComputerDialog.class); - private final static String ICON_COMPILER = "/net/emustudio/application/gui/dialogs/compile.png"; - private final static String ICON_CPU = "/net/emustudio/application/gui/dialogs/cpu.gif"; - private final static String ICON_MEMORY = "/net/emustudio/application/gui/dialogs/ram.gif"; - private final static String ICON_DEVICE = "/net/emustudio/application/gui/dialogs/device.png"; - private final static String ICON_SAVE = "/net/emustudio/application/gui/dialogs/document-save.png"; + private static final Logger LOGGER = LoggerFactory.getLogger(ViewComputerDialog.class); private final VirtualComputer computer; + private final List devices; private final SchemaPreviewPanel panelSchema; - private JToggleButton btnCompiler; - private JToggleButton btnDevice; - private JToggleButton btnMemory; + private final ButtonGroup pluginButtonGroup = new ButtonGroup(); + private JComboBox cmbDevice; private JLabel lblComputerName; private JLabel lblCopyright; @@ -41,156 +38,124 @@ public class ViewComputerDialog extends DialogBase { private JLabel lblName; private JLabel lblSelectDevice; private JLabel lblVersion; - private JScrollPane scrollPane; private JTextArea txtDescription; public ViewComputerDialog(JFrame parent, VirtualComputer computer, AppSettings appSettings, Dialogs dialogs) { super(parent, "Computer information preview", true); this.computer = Objects.requireNonNull(computer); + this.devices = computer.getDevices(); + this.panelSchema = new SchemaPreviewPanel(new Schema(computer.getComputerConfig(), appSettings), dialogs); buildContent(); - + setMinimumSize(new Dimension(600, 450)); + setSize(new Dimension(800, 600)); lblComputerName.setText(computer.getComputerConfig().getName()); + devices.forEach(device -> cmbDevice.addItem(device.getTitle())); - final List devices = computer.getDevices(); - for (Device device : devices) { - cmbDevice.addItem(device.getTitle()); - } - - cmbDevice.addActionListener(e -> { - int i = cmbDevice.getSelectedIndex(); - if (i < 0) { - setVisibleInfo(false); - } else { - try { - setInfo(devices.get(i), computer.getComputerConfig().getDevices().get(i)); - setVisibleInfo(true); - } catch (Exception ex) { - setVisibleInfo(false); - LOGGER.error("Could not setup plugin information", ex); - } - } - }); - - panelSchema = new SchemaPreviewPanel(new Schema(computer.getComputerConfig(), appSettings), dialogs); - scrollPane.setViewportView(panelSchema); - scrollPane.getHorizontalScrollBar().setUnitIncrement(10); - scrollPane.getVerticalScrollBar().setUnitIncrement(10); - - if (computer.getCompiler().isEmpty()) { - btnCompiler.setEnabled(false); - } - if (computer.getMemory().isEmpty()) { - btnMemory.setEnabled(false); - } - if (computer.getDevices().isEmpty()) { - btnDevice.setEnabled(false); - } - - // Select default info + // Select default info (CPU) lblSelectDevice.setVisible(false); cmbDevice.setVisible(false); - computer.getComputerConfig().getCPU().ifPresent(conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf))); - } - - private void setInfo(Plugin plugin, PluginConfig config) { - lblName.setText(plugin.getTitle()); - lblVersion.setText(plugin.getVersion()); - lblFileName.setText(config.getPluginFile()); - lblCopyright.setText(plugin.getCopyright()); - txtDescription.setText(plugin.getDescription()); + showPluginInfo(computer.getCPU(), computer.getComputerConfig().getCPU()); } - private void setVisibleInfo(boolean visible) { - if (!visible) { + private void showPluginInfo(Optional plugin, Optional config) { + if (plugin.isPresent() && config.isPresent()) { + Plugin p = plugin.get(); + PluginConfig c = config.get(); + lblName.setText(p.getTitle()); + lblVersion.setText(p.getVersion()); + lblFileName.setText(c.getPluginFile()); + lblCopyright.setText(p.getCopyright()); + txtDescription.setText(p.getDescription()); + lblCopyright.setVisible(true); + lblVersion.setVisible(true); + lblFileName.setVisible(true); + txtDescription.setVisible(true); + } else { lblName.setText("Plug-in is not available. Please select another one."); + lblCopyright.setVisible(false); + lblVersion.setVisible(false); + lblFileName.setVisible(false); + txtDescription.setVisible(false); } - lblCopyright.setVisible(visible); - lblVersion.setVisible(visible); - lblFileName.setVisible(visible); - txtDescription.setVisible(visible); } @Override protected JComponent initializeComponents() { - ButtonGroup buttonGroup1 = new ButtonGroup(); - lblComputerName = new JLabel(); - JTabbedPane jTabbedPane1 = new JTabbedPane(); - JToolBar jToolBar1 = new JToolBar(); - btnCompiler = new JToggleButton(loadIcon(ICON_COMPILER)); - JToggleButton btnCPU = new JToggleButton(loadIcon(ICON_CPU)); - btnMemory = new JToggleButton(loadIcon(ICON_MEMORY)); - btnDevice = new JToggleButton(loadIcon(ICON_DEVICE)); - lblSelectDevice = new JLabel(); - cmbDevice = new JComboBox<>(); - lblName = new JLabel(); - lblFileName = new JLabel(); - lblVersion = new JLabel(); - lblCopyright = new JLabel(); - JPanel panelDescription = new JPanel(); - JScrollPane jScrollPane1 = new JScrollPane(); - txtDescription = new JTextArea(); - JToolBar jToolBar2 = new JToolBar(); - JButton btnSaveSchema = new JButton(loadIcon(ICON_SAVE)); - scrollPane = new JScrollPane(); - - lblComputerName.setFont(lblComputerName.getFont().deriveFont(lblComputerName.getFont().getStyle() | java.awt.Font.BOLD, lblComputerName.getFont().getSize() + 3)); + lblComputerName = GUI.labelTitle("computer_name"); lblComputerName.setHorizontalAlignment(SwingConstants.CENTER); - lblComputerName.setText("computer_name"); - - jToolBar1.setFloatable(false); - jToolBar1.setOrientation(SwingConstants.VERTICAL); - jToolBar1.setRollover(true); - jToolBar1.setDoubleBuffered(true); - - buttonGroup1.add(btnCompiler); - btnCompiler.setToolTipText("Compiler information"); - btnCompiler.setFocusable(false); - btnCompiler.addActionListener(this::btnCompilerActionPerformed); - jToolBar1.add(btnCompiler); - - buttonGroup1.add(btnCPU); - btnCPU.setSelected(true); - btnCPU.setToolTipText("CPU information"); - btnCPU.setFocusable(false); - btnCPU.addActionListener(this::btnCPUActionPerformed); - jToolBar1.add(btnCPU); - - buttonGroup1.add(btnMemory); - btnMemory.setToolTipText("Memory information"); - btnMemory.setFocusable(false); - btnMemory.addActionListener(this::btnMemoryActionPerformed); - jToolBar1.add(btnMemory); - - buttonGroup1.add(btnDevice); - btnDevice.setToolTipText("Devices information"); - btnDevice.setFocusable(false); - btnDevice.addActionListener(this::btnDeviceActionPerformed); - jToolBar1.add(btnDevice); - - lblSelectDevice.setText("Select device:"); - - lblName.setFont(lblName.getFont().deriveFont(lblName.getFont().getStyle() | java.awt.Font.BOLD)); - lblName.setText("plugin_name"); - lblFileName.setText("plugin_file_name"); - lblVersion.setText("plugin_version"); - lblCopyright.setText("plugin_copyright"); - - panelDescription.setBorder(BorderFactory.createTitledBorder("Short description")); + lblSelectDevice = GUI.label("Select device:"); + cmbDevice = new JComboBox<>(); + lblName = GUI.labelBold(""); + lblFileName = GUI.label(""); + lblVersion = GUI.label(""); + lblCopyright = GUI.label(""); - txtDescription.setColumns(20); - txtDescription.setEditable(false); - txtDescription.setLineWrap(true); - txtDescription.setRows(5); - txtDescription.setWrapStyleWord(true); - jScrollPane1.setViewportView(txtDescription); + txtDescription = GUI.textAreaReadOnly(5, 20); - JPanel descriptionPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[grow]")); - descriptionPanel.setBorder(BorderFactory.createTitledBorder("Short description")); - descriptionPanel.add(jScrollPane1, "grow"); + cmbDevice.addActionListener(e -> { + int index = cmbDevice.getSelectedIndex(); + if (index >= 0 && index < devices.size()) { + try { + showPluginInfo(Optional.of(devices.get(index)), + Optional.of(computer.getComputerConfig().getDevices().get(index))); + } catch (Exception ex) { + showPluginInfo(Optional.empty(), Optional.empty()); + LOGGER.error("Could not setup plugin information", ex); + } + } else { + showPluginInfo(Optional.empty(), Optional.empty()); + } + }); - JPanel infoPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][][][][][][][grow]")); + // Info tab toolbar + JToolBar infoToolbar = GUI.toolbarVertical(); + + JToggleButton btnCompiler = GUI.toggle(ICON_COMPILER, "Compiler information", false, + computer.getCompiler().isPresent(), () -> { + lblSelectDevice.setVisible(false); + cmbDevice.setVisible(false); + showPluginInfo(computer.getCompiler(), computer.getComputerConfig().getCompiler()); + }); + pluginButtonGroup.add(btnCompiler); + infoToolbar.add(btnCompiler); + + JToggleButton btnCPU = GUI.toggle(ICON_CPU, "CPU information", true, true, () -> { + lblSelectDevice.setVisible(false); + cmbDevice.setVisible(false); + showPluginInfo(computer.getCPU(), computer.getComputerConfig().getCPU()); + }); + pluginButtonGroup.add(btnCPU); + infoToolbar.add(btnCPU); + + JToggleButton btnMemory = GUI.toggle(ICON_MEMORY, "Memory information", false, + computer.getMemory().isPresent(), () -> { + lblSelectDevice.setVisible(false); + cmbDevice.setVisible(false); + showPluginInfo(computer.getMemory(), computer.getComputerConfig().getMemory()); + }); + pluginButtonGroup.add(btnMemory); + infoToolbar.add(btnMemory); + + JToggleButton btnDevice = GUI.toggle(ICON_DEVICE, "Devices information", false, + !devices.isEmpty(), () -> { + lblSelectDevice.setVisible(true); + cmbDevice.setVisible(true); + if (cmbDevice.getItemCount() > 0) { + cmbDevice.setSelectedIndex(0); + } else { + cmbDevice.setEnabled(false); + showPluginInfo(Optional.empty(), Optional.empty()); + } + }); + pluginButtonGroup.add(btnDevice); + infoToolbar.add(btnDevice); + + JPanel descriptionPanel = GUI.section("Short description", "insets dialog", "[grow]", "[grow]"); + descriptionPanel.add(GUI.scrollable(txtDescription), "grow"); + + JPanel infoPanel = GUI.panel("insets dialog", "[grow]", "[][][][][][grow]"); infoPanel.add(lblSelectDevice, "split 2"); infoPanel.add(cmbDevice, "grow, wrap"); infoPanel.add(lblName, "wrap"); @@ -199,70 +164,30 @@ protected JComponent initializeComponents() { infoPanel.add(lblCopyright, "wrap"); infoPanel.add(descriptionPanel, "grow"); - JPanel tabInfoPanel = new JPanel(new MigLayout("insets dialog", "[][grow]", "[grow]")); - tabInfoPanel.add(jToolBar1, "grow"); - tabInfoPanel.add(infoPanel, "grow"); + JPanel infoTab = GUI.panel("insets dialog", "[][grow]", "[grow]"); + infoTab.add(infoToolbar, "grow"); + infoTab.add(infoPanel, "grow"); - jTabbedPane1.addTab("Computer info", tabInfoPanel); + // Schema tab + JToolBar schemaToolbar = GUI.toolbarVertical(); - jToolBar2.setFloatable(false); - jToolBar2.setOrientation(SwingConstants.VERTICAL); - jToolBar2.setRollover(true); + JButton btnSave = GUI.buttonIcon(ICON_SAVE, "Save schema image", e -> panelSchema.saveSchemaImage()); + schemaToolbar.add(btnSave); - btnSaveSchema.setToolTipText("Save schema image"); - btnSaveSchema.setFocusable(false); - btnSaveSchema.setHorizontalTextPosition(SwingConstants.CENTER); - btnSaveSchema.setVerticalTextPosition(SwingConstants.BOTTOM); - btnSaveSchema.addActionListener(this::btnSaveSchemaActionPerformed); - jToolBar2.add(btnSaveSchema); + JScrollPane scrollPane = GUI.scrollable(panelSchema); - JPanel schemaPanel = new JPanel(new MigLayout("insets dialog", "[][grow]", "[grow]")); - schemaPanel.add(jToolBar2, "grow"); - schemaPanel.add(scrollPane, "grow"); + JPanel schemaTab = GUI.panel("insets dialog", "[][grow]", "[grow]"); + schemaTab.add(schemaToolbar, "grow"); + schemaTab.add(scrollPane, "grow"); - jTabbedPane1.addTab("Abstract schema", schemaPanel); + // Main panel + JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.addTab("Computer info", infoTab); + tabbedPane.addTab("Abstract schema", schemaTab); - JPanel mainPanel = new JPanel(new MigLayout("insets dialog", "[grow]", "[][grow]")); + JPanel mainPanel = GUI.panel("insets dialog", "[grow]", "[][grow]"); mainPanel.add(lblComputerName, "growx, wrap"); - mainPanel.add(jTabbedPane1, "grow"); - + mainPanel.add(tabbedPane, "grow"); return mainPanel; } - - private void btnCompilerActionPerformed(java.awt.event.ActionEvent evt) { - lblSelectDevice.setVisible(false); - cmbDevice.setVisible(false); - computer.getComputerConfig().getCompiler().ifPresent(conf -> computer.getCompiler().ifPresent(compiler -> setInfo(compiler, conf))); - } - - private void btnCPUActionPerformed(java.awt.event.ActionEvent evt) { - lblSelectDevice.setVisible(false); - cmbDevice.setVisible(false); - computer.getComputerConfig().getCPU().ifPresent(conf -> computer.getCPU().ifPresent(cpu -> setInfo(cpu, conf))); - } - - private void btnMemoryActionPerformed(java.awt.event.ActionEvent evt) { - lblSelectDevice.setVisible(false); - cmbDevice.setVisible(false); - computer.getComputerConfig().getMemory().ifPresent(conf -> computer.getMemory().ifPresent(memory -> setInfo(memory, conf))); - } - - private void btnDeviceActionPerformed(java.awt.event.ActionEvent evt) { - lblSelectDevice.setVisible(true); - cmbDevice.setVisible(true); - setVisibleInfo(false); - if (cmbDevice.getItemCount() > 0) { - cmbDevice.setSelectedIndex(0); - PluginConfig conf = computer.getComputerConfig().getDevices().get(0); - Device device = computer.getDevices().get(0); - setInfo(device, conf); - setVisibleInfo(true); - } else { - cmbDevice.setEnabled(false); - } - } - - private void btnSaveSchemaActionPerformed(java.awt.event.ActionEvent evt) { - panelSchema.saveSchemaImage(); - } } diff --git a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java index 041b26845..48f900a27 100644 --- a/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java +++ b/application/src/main/java/net/emustudio/application/gui/framework/EmuStudioUI.java @@ -10,16 +10,75 @@ import java.awt.*; import net.emustudio.application.settings.AppSettings; +import net.emustudio.emulib.runtime.ui.components.FadingBorder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static net.emustudio.emulib.runtime.ui.Constants.*; +import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; /** * Central UI configuration for emuStudio. * Provides theme management and common UI utilities. */ public class EmuStudioUI { + // General icons + public static final String LOGO_FILE = "/net/emustudio/application/gui/dialogs/logo.png"; + public static final String ICON_FAVICON = "/net/emustudio/application/gui/favicon16.png"; + + // Schema element icons + public static final String ICON_COMPILER = "/net/emustudio/application/gui/dialogs/compile.png"; + public static final String ICON_CPU = "/net/emustudio/application/gui/dialogs/cpu.gif"; + public static final String ICON_MEMORY = "/net/emustudio/application/gui/dialogs/ram.gif"; + public static final String ICON_DEVICE = "/net/emustudio/application/gui/dialogs/device.png"; + public static final String ICON_CONNECTION = "/net/emustudio/application/gui/dialogs/connection.png"; + public static final String ICON_BIDIRECTION = "/net/emustudio/application/gui/dialogs/bidirection.gif"; + public static final String ICON_GRID = "/net/emustudio/application/gui/dialogs/grid_memory.gif"; + + // Editor icons + public static final String ICON_FIND = "/net/emustudio/application/gui/dialogs/edit-find.png"; + public static final String ICON_REPLACE = "/net/emustudio/application/gui/dialogs/edit-find-replace.png"; + public static final String ICON_NEW_FILE = "/net/emustudio/application/gui/dialogs/document-new.png"; + public static final String ICON_OPEN_FILE = "/net/emustudio/application/gui/dialogs/document-open.png"; + public static final String ICON_SAVE = "/net/emustudio/application/gui/dialogs/document-save.png"; + public static final String ICON_UNDO = "/net/emustudio/application/gui/dialogs/edit-undo.png"; + public static final String ICON_REDO = "/net/emustudio/application/gui/dialogs/edit-redo.png"; + public static final String ICON_CUT = "/net/emustudio/application/gui/dialogs/edit-cut.png"; + public static final String ICON_COPY = "/net/emustudio/application/gui/dialogs/edit-copy.png"; + public static final String ICON_PASTE = "/net/emustudio/application/gui/dialogs/edit-paste.png"; + + // Emulator icons + public static final String ICON_RUN = "/net/emustudio/application/gui/dialogs/go-play.png"; + public static final String ICON_RUN_TIMED = "/net/emustudio/application/gui/dialogs/go-play-time.png"; + public static final String ICON_PAUSE = "/net/emustudio/application/gui/dialogs/go-pause.png"; + public static final String ICON_STOP = "/net/emustudio/application/gui/dialogs/go-stop.png"; + public static final String ICON_STEP = "/net/emustudio/application/gui/dialogs/go-next.png"; + public static final String ICON_STEP_BACK = "/net/emustudio/application/gui/dialogs/go-previous.png"; + public static final String ICON_JUMP = "/net/emustudio/application/gui/dialogs/go-jump.png"; + public static final String ICON_JUMP_TO_BEGINNING = "/net/emustudio/application/gui/dialogs/go-first.png"; + public static final String ICON_RESET = "/net/emustudio/application/gui/dialogs/reset.png"; + public static final String ICON_BREAKPOINT = "/net/emustudio/application/gui/dialogs/breakpoint.png"; + public static final String ICON_BREAKPOINTS = "/net/emustudio/application/gui/dialogs/breakpoints.png"; + + // Computer management icons + public static final String ICON_COMPUTER = "/net/emustudio/application/gui/dialogs/computer.png"; + public static final String ICON_ADD = "/net/emustudio/application/gui/dialogs/list-add.png"; + public static final String ICON_REMOVE = "/net/emustudio/application/gui/dialogs/list-remove.png"; + public static final String ICON_DELETE = "/net/emustudio/application/gui/dialogs/edit-delete.png"; + public static final String ICON_RENAME = "/net/emustudio/application/gui/dialogs/rename-computer.png"; + + // Debug table pagination icons + public static final String ICON_PAGE_FIRST = "/net/emustudio/application/gui/dialogs/page-first.png"; + public static final String ICON_PAGE_BACK = "/net/emustudio/application/gui/dialogs/page-back.png"; + public static final String ICON_PAGE_CURRENT = "/net/emustudio/application/gui/dialogs/page-current.png"; + public static final String ICON_PAGE_FORWARD = "/net/emustudio/application/gui/dialogs/page-forward.png"; + public static final String ICON_PAGE_SEEK_BACKWARD = "/net/emustudio/application/gui/dialogs/page-seek-backward.png"; + public static final String ICON_PAGE_SEEK_FORWARD = "/net/emustudio/application/gui/dialogs/page-seek-forward.png"; + + // Dialog icons + public static final String ICON_LOADING = "/net/emustudio/application/gui/dialogs/loading.gif"; + public static final String ICON_MOTHERBOARD = "/net/emustudio/application/gui/dialogs/motherboard-icon.gif"; + private static final Logger LOGGER = LoggerFactory.getLogger(EmuStudioUI.class); private static AppSettings.Theme currentTheme = AppSettings.Theme.INTELLIJ; @@ -148,27 +207,23 @@ public static AppSettings.Theme getCurrentTheme() { return currentTheme; } - // Common UI factory methods - public static JTextArea textArea(int rows, int cols) { - JTextArea area = new JTextArea(rows, cols); - area.setLineWrap(true); - area.setWrapStyleWord(true); - return area; - } - /** - * Apply modern styled border to a panel. + * Apply rounded corners to a component. */ - public static void stylePanel(JPanel panel, String title) { - if (title != null && !title.isEmpty()) { - panel.setBorder(BorderFactory.createTitledBorder(title)); - } + public static void applyRoundedCorners(JComponent component) { + component.putClientProperty("JComponent.roundRect", true); } /** - * Apply rounded corners to a component. + * Create a JLabel with the emuStudio logo, styled with a fading border. + * + * @return JLabel containing the logo */ - public static void applyRoundedCorners(JComponent component) { - component.putClientProperty("JComponent.roundRect", true); + public static JLabel createLogoJLabel() { + JLabel lblLogo = new JLabel(loadIcon(LOGO_FILE)); + lblLogo.setBackground(Color.WHITE); + lblLogo.setBorder(new FadingBorder(10, Color.WHITE)); + lblLogo.setOpaque(false); + return lblLogo; } } diff --git a/application/src/main/java/net/emustudio/application/settings/AppSettings.java b/application/src/main/java/net/emustudio/application/settings/AppSettings.java index 5ee995418..fd5b908f7 100644 --- a/application/src/main/java/net/emustudio/application/settings/AppSettings.java +++ b/application/src/main/java/net/emustudio/application/settings/AppSettings.java @@ -31,7 +31,7 @@ public enum Theme { } public AppSettings(Config config, boolean nogui, boolean auto) { - super(config, System.out::println); + super(config, () -> {}); this.emuStudioAuto = auto; this.noGUI = nogui; } diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java index 9a94ab800..58afaf681 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/GuiUtilsAdm3A.java @@ -4,11 +4,11 @@ import java.awt.*; -import static net.emustudio.emulib.runtime.ui.GUI.loadFontResource; +import net.emustudio.emulib.runtime.ui.GUI; public class GuiUtilsAdm3A { public static Font loadFont(DisplayFont displayFont) { - return loadFontResource(displayFont.path, GuiUtilsAdm3A.class, displayFont.fontSize); + return GUI.loadFont(displayFont.path, GuiUtilsAdm3A.class, displayFont.fontSize); } } diff --git a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java index 62c67003d..3e69cd3f2 100644 --- a/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java +++ b/plugins/device/audiotape-player/src/main/java/net/emustudio/plugins/device/audiotape_player/gui/TapePlayerGui.java @@ -6,20 +6,18 @@ import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.emulib.runtime.ui.ShortenedString; import net.emustudio.emulib.runtime.ui.components.CachedComboBoxModel; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.audiotape_player.TapePlaybackController; -import net.miginfocom.swing.MigLayout; import javax.swing.*; -import javax.swing.border.TitledBorder; import java.awt.*; import java.awt.event.*; -import java.net.URL; import java.nio.file.Path; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; // https://stackoverflow.com/questions/25010068/miglayout-push-vs-grow -public class TapePlayerGui extends JDialog { +public class TapePlayerGui extends DialogBase { private final static String FOLDER_OPEN_ICON = "/net/emustudio/plugins/device/audiotape_player/gui/folder-open.png"; private final static String PLAY_ICON = "/net/emustudio/plugins/device/audiotape_player/gui/media-playback-start.png"; private final static String STOP_ICON = "/net/emustudio/plugins/device/audiotape_player/gui/media-playback-stop.png"; @@ -27,49 +25,49 @@ public class TapePlayerGui extends JDialog { private final static String REFRESH_ICON = "/net/emustudio/plugins/device/audiotape_player/gui/view-refresh.png"; private final static String LOAD_ICON = "/net/emustudio/plugins/device/audiotape_player/gui/applications-multimedia.png"; - private final JPanel panelTapeInfo = new JPanel(); + private final JPanel panelTapeInfo = GUI.panel("", "[][grow]", "[][]"); private final JButton btnBrowse; - private final JButton btnRefresh = new JButton("Refresh", getIcon(REFRESH_ICON)); - private final JButton btnLoad = new JButton("Load", getIcon(LOAD_ICON)); + private final JButton btnRefresh = new JButton("Refresh", GUI.loadIcon(REFRESH_ICON)); + private final JButton btnLoad = new JButton("Load", GUI.loadIcon(LOAD_ICON)); private final CachedComboBoxModel> cmbDirsModel = new CachedComboBoxModel<>(); private final JComboBox> cmbDirs = new JComboBox<>(cmbDirsModel); private final TapesListModel lstTapesModel = new TapesListModel(); private final JList lstTapes = new JList<>(lstTapesModel); - private final JScrollPane scrollTapes = new JScrollPane(lstTapes); + private final JScrollPane scrollTapes = GUI.scrollable(lstTapes); private final AtomicReference> loadedFileName = new AtomicReference<>(); - private final JButton btnPlay = new JButton("Play", getIcon(PLAY_ICON)); - private final JButton btnStop = new JButton("Stop", getIcon(STOP_ICON)); - private final JButton btnEject = new JButton("Eject", getIcon(EJECT_ICON)); + private final JButton btnPlay = new JButton("Play", GUI.loadIcon(PLAY_ICON)); + private final JButton btnStop = new JButton("Stop", GUI.loadIcon(STOP_ICON)); + private final JButton btnEject = new JButton("Eject", GUI.loadIcon(EJECT_ICON)); private final JTextArea txtFileName = new JTextArea("N/A"); - private final JLabel lblStatus = new JLabel("Stopped"); + private final JLabel lblStatus = GUI.labelBold("Stopped"); - private final JTextArea txtEvents = new JTextArea(); + private final JTextArea txtEvents = GUI.textAreaReadOnly(0, 0); private final TapePlaybackController controller; public TapePlayerGui(JFrame parent, Dialogs dialogs, TapePlaybackController controller) { - super(parent, "Audio Tape Player"); + super(parent, "Audio Tape Player", false); Objects.requireNonNull(dialogs); this.controller = Objects.requireNonNull(controller); - btnBrowse = GUI.buttonBrowseDirectories(dialogs, "Select Directory", "Select", p -> { + btnBrowse = GUI.browseDirectories(dialogs, "Select Directory", "Select", p -> { ShortenedString ps = new ShortenedString<>(p, Path::toString); ps.deriveMaxStringLength(cmbDirs, cmbDirs.getWidth() - 36); cmbDirsModel.add(ps); cmbDirs.setSelectedIndex(0); cmbDirs.setMinimumSize(new Dimension(0, 0)); }); - btnBrowse.setIcon(getIcon(FOLDER_OPEN_ICON)); + btnBrowse.setIcon(GUI.loadIcon(FOLDER_OPEN_ICON)); btnBrowse.setText(""); btnBrowse.setToolTipText("Select directory"); btnBrowse.setFocusPainted(false); - initComponents(); setupListeners(); setCassetteState(controller.getState()); + buildContent(); } public void addProgramDetail(String program, String detail) { @@ -201,59 +199,45 @@ public void componentResized(ComponentEvent e) { btnEject.addActionListener(e -> controller.stop(true)); } - private void initComponents() { - JPanel panelAvailableTapes = new JPanel(); - JPanel panelDirs = new JPanel(); - JToolBar toolbarAvailableTapes = new JToolBar(); - JPanel panelTape = new JPanel(); - JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, panelAvailableTapes, panelTape); + @Override + protected JComponent initializeComponents() { + JPanel panelAvailableTapes = GUI.section("Available tapes", "insets 2", "[grow]", "[][grow][]"); + JPanel panelDirs = GUI.panel("fillx", "[fill, grow][]", "[]"); + JToolBar toolbarAvailableTapes = GUI.toolbar(); + JPanel panelTape = GUI.section("Audio Tape", "insets 2", "[grow]", "[][grow][]"); + JSplitPane splitPane = GUI.splitLeftRight(panelAvailableTapes, panelTape, 0.3); - JLabel lblFileNameLabel = new JLabel("File name:"); - JLabel lblStatusLabel = new JLabel("Status:"); + JLabel lblFileNameLabel = GUI.label("File name:"); + JLabel lblStatusLabel = GUI.label("Status:"); - txtEvents.setEditable(false); - JScrollPane scrollEvents = new JScrollPane(txtEvents); - JToolBar toolbarTape = new JToolBar(); + JScrollPane scrollEvents = GUI.scrollable(txtEvents); + JToolBar toolbarTape = GUI.toolbar(); JPanel hSpacer1 = new JPanel(null); JPanel hSpacer2 = new JPanel(null); - Container contentPane = getContentPane(); - contentPane.setLayout(new MigLayout("insets dialog, fill", "[fill]", "[fill]")); - splitPane.setDividerLocation(250); - splitPane.setResizeWeight(0.3); - splitPane.setDividerLocation(0.3); cmbDirs.setMinimumSize(new Dimension(0, 0)); - panelDirs.setLayout(new MigLayout("fillx", "[fill, grow][]", "[]")); panelDirs.add(cmbDirs, "cell 0 0"); - JToolBar btnBrowseToolBar = new JToolBar(); + JToolBar btnBrowseToolBar = GUI.toolbar(); btnBrowseToolBar.add(btnBrowse); - btnBrowseToolBar.setFloatable(false); panelDirs.add(btnBrowseToolBar, "cell 1 0"); toolbarAvailableTapes.add(btnRefresh); toolbarAvailableTapes.add(hSpacer2); toolbarAvailableTapes.add(btnLoad); - toolbarAvailableTapes.setFloatable(false); lstTapes.setCellRenderer(new TapesListRenderer()); - panelAvailableTapes.setBorder(new TitledBorder("Available tapes")); - panelAvailableTapes.setLayout(new MigLayout("insets 2", "[grow]", "[][grow][]")); panelAvailableTapes.add(panelDirs, "cell 0 0, growx"); panelAvailableTapes.add(scrollTapes, "cell 0 1, grow"); panelAvailableTapes.add(toolbarAvailableTapes, "cell 0 2, growx"); - splitPane.setLeftComponent(panelAvailableTapes); toolbarTape.add(btnPlay); toolbarTape.add(btnStop); toolbarTape.addSeparator(); toolbarTape.add(hSpacer1); toolbarTape.add(btnEject); - toolbarTape.setFloatable(false); - - lblStatus.setFont(lblStatus.getFont().deriveFont(lblStatus.getFont().getStyle() | Font.BOLD)); txtFileName.setEditable(false); txtFileName.setLineWrap(true); @@ -261,29 +245,17 @@ private void initComponents() { txtFileName.setBackground(UIManager.getColor("Panel.background")); lblStatus.setMinimumSize(new Dimension(0, 0)); - panelTapeInfo.setLayout(new MigLayout("", "[][grow]", "[][]")); panelTapeInfo.add(lblFileNameLabel, "cell 0 0, alignx right"); panelTapeInfo.add(txtFileName, "cell 1 0, growx"); panelTapeInfo.add(lblStatusLabel, "cell 0 1, alignx right"); panelTapeInfo.add(lblStatus, "cell 1 1, growx"); - panelTape.setBorder(new TitledBorder("Audio Tape")); - panelTape.setLayout(new MigLayout("insets 2", "[grow]", "[][grow][]")); panelTape.add(panelTapeInfo, "cell 0 0, growx"); panelTape.add(scrollEvents, "cell 0 1, grow"); panelTape.add(toolbarTape, "cell 0 2, growx"); - splitPane.setRightComponent(panelTape); - - contentPane.add(splitPane, "push, grow"); - - pack(); - setLocationRelativeTo(getOwner()); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - } - private ImageIcon getIcon(String resource) { - URL url = getClass().getResource(resource); - return url == null ? null : new ImageIcon(url); + JPanel contentPanel = GUI.panel("insets dialog, fill", "[fill]", "[fill]"); + contentPanel.add(splitPane, "push, grow"); + return contentPanel; } } diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java index cce516e19..0bfa9d862 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java @@ -43,7 +43,7 @@ public MemoryGui(JFrame parent, MemoryContextImpl memory, Dialogs dialogs) { } private void initComponents() { - JToolBar toolBar = GUI.toolBar(); + JToolBar toolBar = GUI.toolbar(); JPanel jPanel1 = new JPanel(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); @@ -57,7 +57,7 @@ private void initComponents() { jPanel1.setBorder(BorderFactory.createTitledBorder(null, "Tape content", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, FONT_COMMON)); table.setGridColor(java.awt.SystemColor.control); - JScrollPane jScrollPane1 = GUI.scrollPane(table); + JScrollPane jScrollPane1 = GUI.scrollable(table); GroupLayout jPanel1Layout = new GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); From a4c37cd3b1ded3581fefb73f5679ae7788088ea9 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Sun, 15 Feb 2026 23:30:03 +0100 Subject: [PATCH 08/11] [#342] GUI refactoring: device plugins --- .../device/mits88dcdd/gui/DiskGui.java | 239 ++------- .../device/mits88dcdd/gui/SettingsDialog.java | 474 ++++-------------- .../device/mits88sio/gui/PortListModel.java | 6 + .../device/mits88sio/gui/SettingsDialog.java | 410 ++++----------- .../plugins/device/mits88sio/gui/SioGui.java | 259 +++------- .../device/abstracttape/gui/NiceButton.java | 34 -- .../abstracttape/gui/SettingsDialog.java | 67 +-- .../abstracttape/gui/TapeCellRenderer.java | 2 +- .../device/abstracttape/gui/TapeGui.java | 80 +-- .../device/adm3a/gui/SettingsDialog.java | 188 ++----- .../device/ssem/display/DisplayGui.java | 39 +- .../device/vt100/Vt100StateMachine.java | 4 +- .../device/vt100/gui/SettingsDialog.java | 226 ++------- .../device/vt100/gui/TerminalWindow.java | 48 +- .../zxspectrum/ula/gui/DisplayWindow.java | 41 +- 15 files changed, 489 insertions(+), 1628 deletions(-) delete mode 100644 plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java index 226af95bd..235d68da7 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/DiskGui.java @@ -2,28 +2,28 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88dcdd.gui; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.mits88dcdd.drive.Drive; import net.emustudio.plugins.device.mits88dcdd.drive.DriveCollection; import net.emustudio.plugins.device.mits88dcdd.drive.DriveListener; import net.emustudio.plugins.device.mits88dcdd.drive.DriveParameters; import javax.swing.*; -import javax.swing.border.TitledBorder; import java.awt.*; -import java.awt.event.KeyEvent; import java.util.Objects; import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.plugins.device.mits88dcdd.gui.Constants.DIALOG_TITLE; -public class DiskGui extends JDialog { +public class DiskGui extends DialogBase { private final DriveCollection drives; private final JLabel lblOffset = createMonospacedLabel("0"); private final JLabel lblSector = createMonospacedLabel("0"); private final JLabel lblTrack = createMonospacedLabel("0"); private final JLabel lblPort1Status = createMonospacedLabel(DriveParameters.port1StatusString(Drive.DEAD_DRIVE)); private final JLabel lblPort2Status = createMonospacedLabel(DriveParameters.port2StatusString(Drive.SECTOR0)); - private final JTextArea txtMountedImage = new JTextArea(); + private final JTextArea txtMountedImage = GUI.textAreaReadOnly(5, 20); private final DriveButton[] driveButtons = new DriveButton[]{ new DriveButton("A", () -> updateDriveInfo(0)), new DriveButton("B", () -> updateDriveInfo(1)), @@ -44,16 +44,17 @@ public class DiskGui extends JDialog { }; public DiskGui(JFrame parent, DriveCollection drives) { - super(parent); + super(parent, DIALOG_TITLE, false); this.drives = Objects.requireNonNull(drives); - initComponents(); - setLocationRelativeTo(parent); + setResizable(false); drives.foreach((i, drive) -> { drive.addDriveListener(new GUIDriveListener(i)); return null; }); + + buildContent(); } private static JLabel createMonospacedLabel(String text) { @@ -91,207 +92,53 @@ public void select(int driveIndex, boolean selected) { } } - private void initComponents() { - ButtonGroup buttonGroup1 = new ButtonGroup(); - JPanel panelDiskSelection = new JPanel(); - JPanel panelFlags = new JPanel(); - JLabel lblPort1Label = new JLabel("Port 1:"); - JLabel lblPort2Label = new JLabel("Port 2:"); - JPanel panelImage = new JPanel(); - JScrollPane jScrollPane1 = new JScrollPane(); - JPanel panelPosition = new JPanel(); - JLabel lblTrackLabel = new JLabel("Track:"); - JLabel lblSectorLabel = new JLabel("Sector:"); - JLabel lblOffsetLabel = new JLabel("Offset:"); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - rootPane.registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle(DIALOG_TITLE); - setResizable(false); - - panelDiskSelection.setBorder(BorderFactory.createTitledBorder(null, "Disk selection", - TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - lblPort1Label.getFont().deriveFont(lblPort1Label.getFont().getStyle() | Font.BOLD) - )); - + @Override + protected JComponent initializeComponents() { + ButtonGroup buttonGroup = new ButtonGroup(); for (DriveButton button : driveButtons) { - buttonGroup1.add(button); + buttonGroup.add(button); } - GroupLayout diskSelectionLayout = new GroupLayout(panelDiskSelection); - panelDiskSelection.setLayout(diskSelectionLayout); - - GroupLayout.SequentialGroup upperSequentialGroup = diskSelectionLayout.createSequentialGroup(); - GroupLayout.ParallelGroup upperParallelGroup = diskSelectionLayout.createParallelGroup(GroupLayout.Alignment.BASELINE); + // Disk selection - 2 rows of 8 drive buttons + JPanel panelDiskSelection = GUI.section("Disk selection", "insets dialog", "[][][][][][][][]", "[][]"); for (int i = 0; i < 8; i++) { - upperSequentialGroup - .addGroup(diskSelectionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(driveButtons[i]) - .addComponent(driveButtons[i + 8]) - ).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); - upperParallelGroup.addComponent(driveButtons[i]); + panelDiskSelection.add(driveButtons[i], i == 7 ? "wrap" : ""); } - - GroupLayout.SequentialGroup lowerSequentialGroup = diskSelectionLayout.createSequentialGroup(); - GroupLayout.ParallelGroup lowerParallelGroup = diskSelectionLayout.createParallelGroup(GroupLayout.Alignment.BASELINE); for (int i = 8; i < 16; i++) { - lowerSequentialGroup.addComponent(driveButtons[i]).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); - lowerParallelGroup.addComponent(driveButtons[i]); + panelDiskSelection.add(driveButtons[i]); } - diskSelectionLayout.setHorizontalGroup( - diskSelectionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(diskSelectionLayout.createSequentialGroup() - .addContainerGap() - .addGroup(upperSequentialGroup) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - diskSelectionLayout.setVerticalGroup( - diskSelectionLayout.createSequentialGroup() - .addContainerGap() - .addGroup(upperParallelGroup) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(lowerParallelGroup) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - - panelFlags.setBorder(BorderFactory.createTitledBorder( - null, "Flags and settings", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - lblPort1Label.getFont().deriveFont(lblPort1Label.getFont().getStyle() | Font.BOLD) - )); - - GroupLayout panelFlagsLayout = new GroupLayout(panelFlags); - panelFlags.setLayout(panelFlagsLayout); - panelFlagsLayout.setHorizontalGroup( - panelFlagsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelFlagsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelFlagsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelFlagsLayout.createSequentialGroup() - .addComponent(lblPort2Label) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPort2Status)) - .addGroup(panelFlagsLayout.createSequentialGroup() - .addComponent(lblPort1Label) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPort1Status))) - .addContainerGap(119, Short.MAX_VALUE)) - ); - panelFlagsLayout.setVerticalGroup( - panelFlagsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelFlagsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelFlagsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPort1Label) - .addComponent(lblPort1Status)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelFlagsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPort2Label) - .addComponent(lblPort2Status)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelImage.setBorder(BorderFactory.createTitledBorder( - null, "Mounted image", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - lblPort1Label.getFont().deriveFont(lblPort1Label.getFont().getStyle() | Font.BOLD) - )); - - txtMountedImage.setEditable(false); - txtMountedImage.setBackground(UIManager.getDefaults().getColor("TextField.disabledBackground")); - txtMountedImage.setColumns(20); + // Flags and settings + JPanel panelFlags = GUI.section("Flags and settings", "insets dialog", "[][grow]", "[][]"); + panelFlags.add(GUI.label("Port 1:")); + panelFlags.add(lblPort1Status, "wrap"); + panelFlags.add(GUI.label("Port 2:")); + panelFlags.add(lblPort2Status); + + // Position + JPanel panelPosition = GUI.section("Position", "insets dialog", "[][grow]", "[][][]"); + panelPosition.add(GUI.label("Track:")); + panelPosition.add(lblTrack, "wrap"); + panelPosition.add(GUI.label("Sector:")); + panelPosition.add(lblSector, "wrap"); + panelPosition.add(GUI.label("Offset:")); + panelPosition.add(lblOffset); + + // Mounted image txtMountedImage.setFont(FONT_MONOSPACED); - txtMountedImage.setLineWrap(true); - txtMountedImage.setRows(5); - jScrollPane1.setViewportView(txtMountedImage); - - GroupLayout panelImageLayout = new GroupLayout(panelImage); - panelImage.setLayout(panelImageLayout); - panelImageLayout.setHorizontalGroup( - panelImageLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelImageLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1) - .addContainerGap()) - ); - panelImageLayout.setVerticalGroup( - panelImageLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelImageLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1) - .addContainerGap()) - ); - - panelPosition.setBorder(BorderFactory.createTitledBorder( - null, "Position", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - lblPort1Label.getFont().deriveFont(lblPort1Label.getFont().getStyle() | Font.BOLD) - )); + txtMountedImage.setBackground(UIManager.getDefaults().getColor("TextField.disabledBackground")); - GroupLayout panelPositionLayout = new GroupLayout(panelPosition); - panelPosition.setLayout(panelPositionLayout); - panelPositionLayout.setHorizontalGroup( - panelPositionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelPositionLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelPositionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblSectorLabel) - .addComponent(lblTrackLabel) - .addComponent(lblOffsetLabel)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblOffset) - .addComponent(this.lblTrack) - .addComponent(this.lblSector)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - panelPositionLayout.setVerticalGroup( - panelPositionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelPositionLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelPositionLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblTrackLabel) - .addComponent(this.lblTrack)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblSectorLabel) - .addComponent(this.lblSector)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPositionLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblOffsetLabel) - .addComponent(lblOffset)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + JPanel panelImage = GUI.section("Mounted image", "insets dialog, fill", "[grow]", "[grow]"); + panelImage.add(GUI.scrollable(txtMountedImage), "grow"); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelDiskSelection, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelImage, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(panelFlags, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelPosition, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(panelDiskSelection, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(panelPosition, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelFlags, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelImage, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + // Main layout + JPanel content = GUI.panel("insets dialog, fill", "[grow]", "[][][grow]"); + content.add(panelDiskSelection, "growx, wrap"); + content.add(panelFlags, "split 2, grow"); + content.add(panelPosition, "grow, wrap"); + content.add(panelImage, "grow"); - pack(); + return content; } private class GUIDriveListener implements DriveListener { diff --git a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java index d091abd94..981c6036a 100644 --- a/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java +++ b/plugins/device/88-dcdd/src/main/java/net/emustudio/plugins/device/mits88dcdd/gui/SettingsDialog.java @@ -5,6 +5,8 @@ import net.emustudio.emulib.plugins.PluginInitializationException; import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.emulib.runtime.ui.components.FileExtensionsFilter; import net.emustudio.plugins.device.mits88dcdd.DiskSettings; import net.emustudio.plugins.device.mits88dcdd.drive.DriveCollection; @@ -16,7 +18,6 @@ import javax.swing.event.DocumentListener; import java.awt.*; import java.awt.event.ItemEvent; -import java.awt.event.KeyEvent; import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; @@ -24,12 +25,13 @@ import java.util.Objects; import java.util.Optional; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Supplier; import static net.emustudio.plugins.device.mits88dcdd.DiskSettings.*; import static net.emustudio.plugins.device.mits88dcdd.gui.Constants.*; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(SettingsDialog.class); private final Dialogs dialogs; @@ -38,22 +40,6 @@ public class SettingsDialog extends JDialog { private final List driveSettingsUI = new ArrayList<>(); private final List driveButtons = new ArrayList<>(); - private final JToggleButton btnA = new JToggleButton("A"); - private final JToggleButton btnB = new JToggleButton("B"); - private final JToggleButton btnC = new JToggleButton("C"); - private final JToggleButton btnD = new JToggleButton("D"); - private final JToggleButton btnE = new JToggleButton("E"); - private final JToggleButton btnF = new JToggleButton("F"); - private final JToggleButton btnG = new JToggleButton("G"); - private final JToggleButton btnH = new JToggleButton("H"); - private final JToggleButton btnI = new JToggleButton("I"); - private final JToggleButton btnJ = new JToggleButton("J"); - private final JToggleButton btnK = new JToggleButton("K"); - private final JToggleButton btnL = new JToggleButton("L"); - private final JToggleButton btnM = new JToggleButton("M"); - private final JToggleButton btnN = new JToggleButton("N"); - private final JToggleButton btnO = new JToggleButton("O"); - private final JToggleButton btnP = new JToggleButton("P"); private final JToggleButton btnMountUnmount = new JToggleButton("Mount"); private final JButton btnUnmountAll = new JButton("Unmount all"); private final JButton btnSave = new JButton("Save"); @@ -69,8 +55,9 @@ public class SettingsDialog extends JDialog { private final JTextField txtSectorSize = new JTextField(String.valueOf(DiskSettings.DEFAULT_SECTOR_SIZE)); private final JTextField txtSectorsPerTrack = new JTextField(String.valueOf(DiskSettings.DEFAULT_SECTORS_PER_TRACK)); private int currentDriveIndex = 0; + public SettingsDialog(JFrame parent, DiskSettings settings, DriveCollection drives, Dialogs dialogs) { - super(parent, true); + super(parent, "88-DCDD Settings", true); this.settings = Objects.requireNonNull(settings); this.drives = Objects.requireNonNull(drives); @@ -78,40 +65,12 @@ public SettingsDialog(JFrame parent, DiskSettings settings, DriveCollection driv readSettings(); - initComponents(); - setLocationRelativeTo(parent); - - driveButtons.add(btnA); - driveButtons.add(btnB); - driveButtons.add(btnC); - driveButtons.add(btnD); - driveButtons.add(btnE); - driveButtons.add(btnF); - driveButtons.add(btnG); - driveButtons.add(btnH); - driveButtons.add(btnI); - driveButtons.add(btnJ); - driveButtons.add(btnK); - driveButtons.add(btnL); - driveButtons.add(btnM); - driveButtons.add(btnN); - driveButtons.add(btnO); - driveButtons.add(btnP); - - btnA.setSelected(true); - // update icons - drives.foreach((i, drive) -> { - DriveSettingsUI dsui = driveSettingsUI.get(i); - Optional - .ofNullable(dsui.image) - .filter(p -> !p.equals("")) - .map(Path::of) - .ifPresentOrElse( - path -> driveButtons.get(i).setIcon(ICON_ON), - () -> driveButtons.get(i).setIcon(ICON_OFF)); - return null; - }); + for (char c = 'A'; c <= 'P'; c++) { + driveButtons.add(new JToggleButton(String.valueOf(c))); + } + driveButtons.get(0).setSelected(true); updateGUI(0); + buildContent(); } private void readSettings() { @@ -156,42 +115,35 @@ private void saveSettings() throws PluginInitializationException, RuntimeExcepti drives.foreach((i, drive) -> { DriveSettingsUI dsui = driveSettingsUI.get(i); - String nullablePath = dsui.image; - if (nullablePath != null && nullablePath.equals("")) { - nullablePath = null; - } DiskSettings.DriveSettings driveSettings = new DiskSettings.DriveSettings( - parsedSectorSizes.get(i), parsedSectorsPerTracks.get(i), nullablePath, dsui.mounted); + parsedSectorSizes.get(i), parsedSectorsPerTracks.get(i), + hasImage(dsui.image) ? dsui.image : null, dsui.mounted); settings.setDriveSettings(i, driveSettings); return null; }); } + private static boolean hasImage(String image) { + return image != null && !image.isEmpty(); + } + private void updateGUI(int index) { this.currentDriveIndex = index; DriveSettingsUI dsui = driveSettingsUI.get(index); txtSectorSize.setText(dsui.sectorSize); txtSectorsPerTrack.setText(dsui.sectorsPerTrack); - Optional - .ofNullable(dsui.image) - .filter(p -> !p.equals("")) - .map(Path::of) - .ifPresentOrElse(path -> { - txtImageFile.setText(path.toAbsolutePath().toString()); - btnMountUnmount.setSelected(dsui.mounted); - if (dsui.mounted) { - btnMountUnmount.setText("Unmount"); - } else { - btnMountUnmount.setText("Mount"); - } - driveButtons.get(index).setIcon(ICON_ON); - }, () -> { - txtImageFile.setText(""); - btnMountUnmount.setSelected(false); - btnMountUnmount.setText("Mount"); - driveButtons.get(index).setIcon(ICON_OFF); - }); + if (hasImage(dsui.image)) { + txtImageFile.setText(Path.of(dsui.image).toAbsolutePath().toString()); + btnMountUnmount.setSelected(dsui.mounted); + btnMountUnmount.setText(dsui.mounted ? "Unmount" : "Mount"); + driveButtons.get(index).setIcon(ICON_ON); + } else { + txtImageFile.setText(""); + btnMountUnmount.setSelected(false); + btnMountUnmount.setText("Mount"); + driveButtons.get(index).setIcon(ICON_OFF); + } } private int parseInt(JComponent component, String name, Supplier text) { @@ -218,282 +170,81 @@ private int parseInt(JToggleButton driveButton, JComponent component, String nam } } - private void initComponents() { - ButtonGroup buttonGroup1 = new ButtonGroup(); - JTabbedPane tabbedPane = new JTabbedPane(); - JPanel panelDrive = new JPanel(); - JPanel panelImageParameters = new JPanel(); - JLabel lblDrive = new JLabel("Drive:"); - JLabel lblImage = new JLabel("Image:"); - JLabel lblSpt = new JLabel("Sectors per track:"); - JLabel lblSectorSize = new JLabel("Sector size:"); - JLabel lblBytes = new JLabel("bytes"); - JPanel panelCpu = new JPanel(); - JLabel lblPort1 = new JLabel("Port 1:"); - JLabel lblPort2 = new JLabel("Port 2:"); - JLabel lblPort3 = new JLabel("Port 3:"); - JLabel lblInterruptVector = new JLabel("Interrupt vector:"); - JLabel lblPort1In = new JLabel("(IN: Get flags"); - JLabel lblPort2In = new JLabel("(IN: Current sector"); - JLabel lblPort3In = new JLabel("(IN: Read data"); - JLabel lblNote = new JLabel("Set CPU ports and interrupt vector used by this device."); - JLabel lblPort1Out = new JLabel("OUT: Select/unselect drive)"); - JLabel lblPort2Out = new JLabel("OUT: Set flags)"); - JLabel lblPort3Out = new JLabel("OUT: Write data)"); - JLabel lblRange = new JLabel("(range 0-7)"); - - setTitle("88-DCDD Settings"); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - rootPane.registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setupDriveButton(buttonGroup1, btnA, 0); - setupDriveButton(buttonGroup1, btnB, 1); - setupDriveButton(buttonGroup1, btnC, 2); - setupDriveButton(buttonGroup1, btnD, 3); - setupDriveButton(buttonGroup1, btnE, 4); - setupDriveButton(buttonGroup1, btnF, 5); - setupDriveButton(buttonGroup1, btnG, 6); - setupDriveButton(buttonGroup1, btnH, 7); - setupDriveButton(buttonGroup1, btnI, 8); - setupDriveButton(buttonGroup1, btnJ, 9); - setupDriveButton(buttonGroup1, btnK, 10); - setupDriveButton(buttonGroup1, btnL, 11); - setupDriveButton(buttonGroup1, btnM, 12); - setupDriveButton(buttonGroup1, btnN, 13); - setupDriveButton(buttonGroup1, btnO, 14); - setupDriveButton(buttonGroup1, btnP, 15); + @Override + protected JComponent initializeComponents() { + ButtonGroup buttonGroup = new ButtonGroup(); + for (int i = 0; i < driveButtons.size(); i++) { + setupDriveButton(buttonGroup, driveButtons.get(i), i); + } + // === Drive settings tab === + + // Drive selection: 2 rows of 8 buttons + JPanel panelDriveSelection = GUI.panel("insets dialog", "[][][][][][][][]", "[][]"); + panelDriveSelection.add(GUI.label("Drive:"), "span 1 2"); + for (int i = 0; i < 8; i++) { + panelDriveSelection.add(driveButtons.get(i), i == 7 ? "wrap" : ""); + } + panelDriveSelection.add(new JPanel(), "skip 1"); // skip "Drive:" label column + for (int i = 8; i < 16; i++) { + panelDriveSelection.add(driveButtons.get(i)); + } + + // Image file + JPanel panelImage = GUI.panel("insets dialog", "[][grow]", "[][]"); + panelImage.add(GUI.label("Image:")); + panelImage.add(txtImageFile, "growx, wrap"); + panelImage.add(btnBrowse, "skip 1, split 3"); + panelImage.add(btnMountUnmount); + panelImage.add(btnUnmountAll, "push, align right"); + + // Parameters section + JPanel panelParameters = GUI.section("Parameters", "insets dialog", "[][grow][][]", "[][]"); + panelParameters.add(GUI.label("Sectors per track:")); + panelParameters.add(txtSectorsPerTrack, "growx, wrap"); + panelParameters.add(GUI.label("Sector size:")); + panelParameters.add(txtSectorSize, "growx"); + panelParameters.add(GUI.label("bytes")); + panelParameters.add(btnDriveDefault); + + JPanel panelDrive = GUI.panel("insets dialog", "[grow]", "[][][grow]"); + panelDrive.add(panelDriveSelection, "growx, wrap"); + panelDrive.add(panelImage, "growx, wrap"); + panelDrive.add(panelParameters, "growx"); + + // === CPU tab === + JPanel panelCpu = GUI.panel("insets dialog", "[][fill][][]", "[][][][]20[][][]"); + panelCpu.add(GUI.label("Set CPU ports and interrupt vector used by this device."), "span, wrap"); + + panelCpu.add(GUI.label("Port 1:")); + panelCpu.add(txtPort1); + panelCpu.add(GUI.label("(IN: Get flags")); + panelCpu.add(GUI.label("OUT: Select/unselect drive)"), "wrap"); + + panelCpu.add(GUI.label("Port 2:")); + panelCpu.add(txtPort2); + panelCpu.add(GUI.label("(IN: Current sector")); + panelCpu.add(GUI.label("OUT: Set flags)"), "wrap"); + + panelCpu.add(GUI.label("Port 3:")); + panelCpu.add(txtPort3); + panelCpu.add(GUI.label("(IN: Read data")); + panelCpu.add(GUI.label("OUT: Write data)"), "wrap"); + + panelCpu.add(chkInterruptsSupported, "span, wrap"); + + panelCpu.add(GUI.label("Interrupt vector:")); + panelCpu.add(spnInterruptVector); + panelCpu.add(GUI.label("(range 0-7)"), "wrap"); + + panelCpu.add(btnCpuDefault, "span, align right"); + + // === Tabbed pane === + JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("Drive settings", panelDrive); tabbedPane.addTab("Connection with CPU", panelCpu); - panelImageParameters.setBorder(BorderFactory.createTitledBorder("Parameters")); - GroupLayout panelImageParametersLayout = new GroupLayout(panelImageParameters); - panelImageParameters.setLayout(panelImageParametersLayout); - panelImageParametersLayout.setHorizontalGroup( - panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelImageParametersLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblSpt) - .addComponent(lblSectorSize)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtSectorSize) - .addComponent(txtSectorsPerTrack)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblBytes) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnDriveDefault) - .addContainerGap()) - ); - panelImageParametersLayout.setVerticalGroup( - panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelImageParametersLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblSpt) - .addComponent(txtSectorsPerTrack, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelImageParametersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblSectorSize) - .addComponent(txtSectorSize, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblBytes) - .addComponent(btnDriveDefault)) - .addContainerGap(9, Short.MAX_VALUE)) - ); - - GroupLayout panelDriveLayout = new GroupLayout(panelDrive); - panelDrive.setLayout(panelDriveLayout); - panelDriveLayout.setHorizontalGroup( - panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDriveLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, panelDriveLayout.createSequentialGroup() - .addComponent(lblImage) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDriveLayout.createSequentialGroup() - .addComponent(btnBrowse) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnMountUnmount) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnUnmountAll)) - .addComponent(txtImageFile))) - .addGroup(panelDriveLayout.createSequentialGroup() - .addComponent(lblDrive) - .addGap(22, 22, 22) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnI, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnA, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnJ, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnB, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnK, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnC, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnL, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnD, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnM, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnE, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnF, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnN, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnO, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnG, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnP, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnH, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addComponent(panelImageParameters, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - panelDriveLayout.setVerticalGroup( - panelDriveLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDriveLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblDrive) - .addComponent(btnA) - .addComponent(btnB) - .addComponent(btnC) - .addComponent(btnD) - .addComponent(btnE) - .addComponent(btnF) - .addComponent(btnG) - .addComponent(btnH)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnI) - .addComponent(btnJ) - .addComponent(btnK) - .addComponent(btnL) - .addComponent(btnM) - .addComponent(btnN) - .addComponent(btnO) - .addComponent(btnP)) - .addGap(18, 18, 18) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblImage) - .addComponent(txtImageFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDriveLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnMountUnmount) - .addComponent(btnBrowse) - .addComponent(btnUnmountAll)) - .addGap(18, 18, 18) - .addComponent(panelImageParameters, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - GroupLayout panelCpuLayout = new GroupLayout(panelCpu); - panelCpu.setLayout(panelCpuLayout); - panelCpuLayout.setHorizontalGroup( - panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(btnCpuDefault, GroupLayout.Alignment.TRAILING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblNote) - .addGroup(panelCpuLayout.createSequentialGroup() - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(lblPort3) - .addComponent(lblPort2)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(txtPort2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPort2In)) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(txtPort3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPort3In))) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblPort3Out) - .addComponent(lblPort1Out) - .addComponent(lblPort2Out))) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(lblPort1) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtPort1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPort1In)) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(lblInterruptVector) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spnInterruptVector, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblRange)) - .addComponent(chkInterruptsSupported)) - .addGap(0, 164, Short.MAX_VALUE))) - .addContainerGap()) - ); - panelCpuLayout.setVerticalGroup( - panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, panelCpuLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblNote) - .addGap(18, 18, 18) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPort1) - .addComponent(txtPort1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblPort1In) - .addComponent(lblPort1Out)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPort2) - .addComponent(txtPort2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblPort2In) - .addComponent(lblPort2Out)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPort3) - .addComponent(txtPort3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblPort3In) - .addComponent(lblPort3Out)) - .addGap(32, 32, 32) - .addComponent(chkInterruptsSupported) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInterruptVector) - .addComponent(spnInterruptVector, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblRange)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE) - .addComponent(btnCpuDefault) - .addContainerGap()) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(tabbedPane) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnSave) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnSave) - .addContainerGap()) - ); - + // === Listeners === btnMountUnmount.addItemListener(e -> { DriveSettingsUI dsui = driveSettingsUI.get(currentDriveIndex); if (e.getStateChange() == ItemEvent.SELECTED) { @@ -565,33 +316,27 @@ private void initComponents() { setupTextField(txtSectorsPerTrack, (dsui, value) -> dsui.sectorsPerTrack = value); setupTextField(txtSectorSize, (dsui, value) -> dsui.sectorSize = value); - pack(); + // Main content: tabbed pane + save button + JPanel content = GUI.panel("insets 0, fill", "[grow]", "[grow][]"); + content.add(tabbedPane, "grow, wrap"); + content.add(btnSave, "align right, gapright 6, gapbottom 6"); + return content; } private void setupDriveButton(ButtonGroup group, JToggleButton button, int index) { group.add(button); button.setFont(DRIVE_BUTTON_FONT); - button.setIcon(ICON_OFF); + button.setIcon(hasImage(driveSettingsUI.get(index).image) ? ICON_ON : ICON_OFF); button.setFocusPainted(false); button.addActionListener(e -> updateGUI(index)); } private void setupTextField(JTextField textField, BiConsumer property) { + Consumer handler = e -> property.accept(driveSettingsUI.get(currentDriveIndex), textField.getText()); textField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - property.accept(driveSettingsUI.get(currentDriveIndex), textField.getText()); - } - - @Override - public void removeUpdate(DocumentEvent e) { - property.accept(driveSettingsUI.get(currentDriveIndex), textField.getText()); - } - - @Override - public void changedUpdate(DocumentEvent e) { - property.accept(driveSettingsUI.get(currentDriveIndex), textField.getText()); - } + @Override public void insertUpdate(DocumentEvent e) { handler.accept(e); } + @Override public void removeUpdate(DocumentEvent e) { handler.accept(e); } + @Override public void changedUpdate(DocumentEvent e) { handler.accept(e); } }); } @@ -610,5 +355,4 @@ static DriveSettingsUI fromDriveSettings(DiskSettings.DriveSettings driveSetting return dsui; } } - } diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java index 3a9b2e498..22f3bbd3c 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/PortListModel.java @@ -26,6 +26,12 @@ public void addAll(Collection ports) { fireContentsChanged(this, 0, this.ports.size() - 1); } + public void setAll(Collection ports) { + this.ports.clear(); + this.ports.addAll(ports); + fireContentsChanged(this, 0, this.ports.size() - 1); + } + public List getAll() { return Collections.unmodifiableList(ports); } diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java index 4f98d7cf5..e05d21106 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SettingsDialog.java @@ -3,29 +3,22 @@ package net.emustudio.plugins.device.mits88sio.gui; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.mits88sio.SioUnitSettings; import javax.swing.*; import java.awt.*; -import java.awt.event.KeyEvent; +import java.util.Collection; import java.util.Objects; import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final Dialogs dialogs; - private final SioUnitSettings settings; private final PortListModel statusPortsModel = new PortListModel(); private final PortListModel dataPortsModel = new PortListModel(); - private final JButton btnDataAdd = new JButton("Add"); - private final JButton btnDataDefaults = new JButton("Set default"); - private final JButton btnDataRemove = new JButton("Remove"); - private final JButton btnInterruptDefaults = new JButton("Set default"); - private final JButton btnSave = new JButton("Save"); - private final JButton btnStatusAdd = new JButton("Add"); - private final JButton btnStatusDefaults = new JButton("Set default"); - private final JButton btnStatusRemove = new JButton("Remove"); private final JCheckBox chkAnsiMode = new JCheckBox("ANSI mode (clear output bit 8)"); private final JCheckBox chkInterruptsSupported = new JCheckBox("Interrupts supported"); private final JCheckBox chkToUpperCase = new JCheckBox("Convert input to upper-case"); @@ -36,20 +29,18 @@ public class SettingsDialog extends JDialog { private final JComboBox cmbMapDel = new JComboBox<>(new DefaultComboBoxModel<>( SioUnitSettings.MAP_CHAR.values() )); - private final JList lstDataPorts = new JList<>(); - private final JList lstStatusPorts = new JList<>(); private final JSpinner spnInputInterrupt = new JSpinner(new SpinnerNumberModel(0, 0, 7, 1)); private final JSpinner spnOutputInterrupt = new JSpinner(new SpinnerNumberModel(0, 0, 7, 1)); public SettingsDialog(JFrame parent, SioUnitSettings settings, Dialogs dialogs) { - super(parent, true); + super(parent, "88-SIO Settings", true); this.settings = Objects.requireNonNull(settings); this.dialogs = Objects.requireNonNull(dialogs); - initComponents(); - setLocationRelativeTo(parent); + setResizable(false); readSettings(); + buildContent(); } private void readSettings() { @@ -61,271 +52,101 @@ private void readSettings() { spnInputInterrupt.setValue(settings.getInputInterruptVector()); spnOutputInterrupt.setValue(settings.getOutputInterruptVector()); chkInterruptsSupported.setSelected(settings.getInterruptsSupported()); - - statusPortsModel.clear(); - statusPortsModel.addAll(settings.getStatusPorts()); - - dataPortsModel.clear(); - dataPortsModel.addAll(settings.getDataPorts()); - } - - private void setDefaultStatusPorts() { - statusPortsModel.clear(); - statusPortsModel.addAll(settings.getDefaultStatusPorts()); + statusPortsModel.setAll(settings.getStatusPorts()); + dataPortsModel.setAll(settings.getDataPorts()); } - private void setDefaultDataPorts() { - dataPortsModel.clear(); - dataPortsModel.addAll(settings.getDefaultDataPorts()); - } - - private void initComponents() { + @Override + protected JComponent initializeComponents() { + // Tab 1: General settings + JPanel panelSettings = GUI.panel("insets dialog", "[grow]", "[][][][18][][18][][][grow]"); + panelSettings.add(chkTtyMode, "wrap"); + panelSettings.add(chkAnsiMode, "wrap"); + panelSettings.add(chkToUpperCase, "gaptop 18, wrap"); + panelSettings.add(GUI.label("Map DEL char to:"), "gaptop 18, split 2"); + panelSettings.add(cmbMapDel, "w 157!, wrap"); + panelSettings.add(GUI.label("Map BACKSPACE char to:"), "split 2"); + panelSettings.add(cmbMapBs, "w 157!, wrap"); + + // Tab 2: Connection with CPU + JList lstStatusPorts = new JList<>(statusPortsModel); + JList lstDataPorts = new JList<>(dataPortsModel); + + JPanel panelCpu = GUI.panel("insets dialog", "[grow][grow]", "[][grow]"); + panelCpu.add(GUI.label("88-SIO has two ports/channels: Status channel and Data channel. Attach these channels to CPU ports (possibly to multiple ports). Be aware of possible CPU-port conflicts."), "span, growx, h 63!, wrap"); + panelCpu.add(createPortChannelSection("Status channel ports", lstStatusPorts, statusPortsModel, "status", "data", dataPortsModel, settings::getDefaultStatusPorts), "grow"); + panelCpu.add(createPortChannelSection("Data channel ports", lstDataPorts, dataPortsModel, "data", "status", statusPortsModel, settings::getDefaultDataPorts), "grow"); + + // Tab 3: Interrupts + JButton btnInterruptDefaults = new JButton("Set default"); + btnInterruptDefaults.addActionListener(e -> { + spnInputInterrupt.setValue(0); + spnOutputInterrupt.setValue(0); + chkInterruptsSupported.setSelected(false); + }); + + JPanel panelInterrupts = GUI.panel("insets dialog", "[grow]", "[][][][][][grow][]"); + panelInterrupts.add(GUI.label("88-SIO can support input and output interrupts. Input interrupt is triggered when 88-SIO received data from connected device. Output interrupt is triggered when 88-SIO receives data from CPU."), "growx, h 63!, wrap"); + panelInterrupts.add(chkInterruptsSupported, "gaptop 18, wrap"); + panelInterrupts.add(GUI.label("Input interrupt vector:"), "split 2"); + panelInterrupts.add(spnInputInterrupt, "wrap"); + panelInterrupts.add(GUI.label("Output interrupt vector:"), "split 2"); + panelInterrupts.add(spnOutputInterrupt, "wrap"); + panelInterrupts.add(new JPanel(), "grow, wrap"); + panelInterrupts.add(btnInterruptDefaults, "align right"); + + // Tabbed pane JTabbedPane tabbedPane = new JTabbedPane(); - JPanel panelSettings = new JPanel(); - JLabel lblMapDel = new JLabel("Map DEL char to:"); - JLabel lblMapBs = new JLabel("Map BACKSPACE char to:"); - JPanel panelCpu = new JPanel(); - JLabel lblCpuNote = new JLabel("88-SIO has two ports/channels: Status channel and Data channel. Attach these channels to CPU ports (possibly to multiple ports). Be aware of possible CPU-port conflicts."); - JPanel panelStatusChannel = new JPanel(); - JScrollPane srlStatus = new JScrollPane(); - JPanel panelDataChannel = new JPanel(); - JScrollPane srlData = new JScrollPane(); - JPanel panelInterrupts = new JPanel(); - JLabel lblInputInterrupt = new JLabel("Input interrupt vector:"); - JLabel lblOutputInterrupt = new JLabel("Output interrupt vector:"); - JLabel lblInterruptsNote = new JLabel("88-SIO can support input and output interrupts. Input interrupt is triggered when 88-SIO received data from connected device. Output interrupt is triggered when 88-SIO receives data from CPU."); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setTitle("88-SIO Settings"); - setResizable(false); - rootPane.registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - cmbMapBs.setEditable(false); - cmbMapDel.setEditable(false); - - GroupLayout panelSettingsLayout = new GroupLayout(panelSettings); - panelSettings.setLayout(panelSettingsLayout); - panelSettingsLayout.setHorizontalGroup( - panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSettingsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(chkTtyMode) - .addComponent(chkAnsiMode) - .addComponent(chkToUpperCase) - .addGroup(panelSettingsLayout.createSequentialGroup() - .addGroup(panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblMapDel) - .addComponent(lblMapBs)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(cmbMapDel, 0, 157, Short.MAX_VALUE) - .addComponent(cmbMapBs, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - .addContainerGap(128, Short.MAX_VALUE)) - ); - panelSettingsLayout.setVerticalGroup( - panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSettingsLayout.createSequentialGroup() - .addContainerGap() - .addComponent(chkTtyMode) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkAnsiMode) - .addGap(18, 18, 18) - .addComponent(chkToUpperCase) - .addGap(18, 18, 18) - .addGroup(panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblMapDel) - .addComponent(cmbMapDel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSettingsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(cmbMapBs, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblMapBs)) - .addContainerGap(57, Short.MAX_VALUE)) - ); - tabbedPane.addTab("General settings", panelSettings); - - panelStatusChannel.setBorder(BorderFactory.createTitledBorder("Status channel ports")); - - lstStatusPorts.setFont(FONT_MONOSPACED); - lstStatusPorts.setModel(statusPortsModel); - lstStatusPorts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - srlStatus.setViewportView(lstStatusPorts); - - GroupLayout panelStatusChannelLayout = new GroupLayout(panelStatusChannel); - panelStatusChannel.setLayout(panelStatusChannelLayout); - panelStatusChannelLayout.setHorizontalGroup( - panelStatusChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelStatusChannelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(srlStatus, GroupLayout.PREFERRED_SIZE, 67, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE) - .addGroup(panelStatusChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnStatusAdd, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnStatusRemove, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnStatusDefaults, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - panelStatusChannelLayout.setVerticalGroup( - panelStatusChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelStatusChannelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelStatusChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(srlStatus, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(panelStatusChannelLayout.createSequentialGroup() - .addComponent(btnStatusAdd) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnStatusRemove) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) - .addComponent(btnStatusDefaults))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelDataChannel.setBorder(BorderFactory.createTitledBorder("Data channel ports")); - - lstDataPorts.setFont(FONT_MONOSPACED); - lstDataPorts.setModel(dataPortsModel); - lstDataPorts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - srlData.setViewportView(lstDataPorts); - - GroupLayout panelDataChannelLayout = new GroupLayout(panelDataChannel); - panelDataChannel.setLayout(panelDataChannelLayout); - panelDataChannelLayout.setHorizontalGroup( - panelDataChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDataChannelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(srlData, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelDataChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnDataRemove, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnDataAdd, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnDataDefaults, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - panelDataChannelLayout.setVerticalGroup( - panelDataChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDataChannelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelDataChannelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(srlData, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(panelDataChannelLayout.createSequentialGroup() - .addComponent(btnDataAdd) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnDataRemove) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) - .addComponent(btnDataDefaults))) - .addContainerGap()) - ); - - GroupLayout panelCpuLayout = new GroupLayout(panelCpu); - panelCpu.setLayout(panelCpuLayout); - panelCpuLayout.setHorizontalGroup( - panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(lblCpuNote, GroupLayout.PREFERRED_SIZE, 438, GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(panelCpuLayout.createSequentialGroup() - .addComponent(panelStatusChannel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelDataChannel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addContainerGap()) - ); - panelCpuLayout.setVerticalGroup( - panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelCpuLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblCpuNote, GroupLayout.PREFERRED_SIZE, 63, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addGroup(panelCpuLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelStatusChannel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(panelDataChannel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - tabbedPane.addTab("Connection with CPU", panelCpu); - - GroupLayout panelInterruptsLayout = new GroupLayout(panelInterrupts); - panelInterrupts.setLayout(panelInterruptsLayout); - panelInterruptsLayout.setHorizontalGroup( - panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInterruptsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblInterruptsNote, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(GroupLayout.Alignment.TRAILING, panelInterruptsLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnInterruptDefaults)) - .addGroup(panelInterruptsLayout.createSequentialGroup() - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(chkInterruptsSupported) - .addGroup(panelInterruptsLayout.createSequentialGroup() - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblInputInterrupt) - .addComponent(lblOutputInterrupt)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(spnInputInterrupt, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(spnOutputInterrupt, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))) - .addGap(0, 225, Short.MAX_VALUE))) - .addContainerGap()) - ); - panelInterruptsLayout.setVerticalGroup( - panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, panelInterruptsLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblInterruptsNote, GroupLayout.PREFERRED_SIZE, 63, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(chkInterruptsSupported) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInputInterrupt) - .addComponent(spnInputInterrupt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInterruptsLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblOutputInterrupt) - .addComponent(spnOutputInterrupt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 27, Short.MAX_VALUE) - .addComponent(btnInterruptDefaults) - .addContainerGap()) - ); - tabbedPane.addTab("Interrupts", panelInterrupts); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnSave) - .addContainerGap()) - .addComponent(tabbedPane) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(tabbedPane) - .addGap(12, 12, 12) - .addComponent(btnSave) - .addContainerGap()) - ); - - btnStatusAdd.addActionListener(e -> addPort("status", "data", statusPortsModel, dataPortsModel)); - btnStatusRemove.addActionListener(e -> removePort("status", lstStatusPorts, statusPortsModel)); - btnStatusDefaults.addActionListener(e -> setDefaultStatusPorts()); - - btnDataAdd.addActionListener(e -> addPort("data", "status", dataPortsModel, statusPortsModel)); - btnDataRemove.addActionListener(e -> removePort("data", lstDataPorts, dataPortsModel)); - btnDataDefaults.addActionListener(e -> setDefaultDataPorts()); - + // Save button + JButton btnSave = new JButton("Save"); btnSave.setFont(btnSave.getFont().deriveFont(Font.BOLD)); - btnSave.addActionListener(this::btnSaveActionPerformed); + btnSave.addActionListener(e -> { + settings.setStatusPorts(statusPortsModel.getAll()); + settings.setDataPorts(dataPortsModel.getAll()); + settings.setClearInputBit8(chkTtyMode.isSelected()); + settings.setClearOutputBit8(chkAnsiMode.isSelected()); + settings.setInputToUpperCase(chkToUpperCase.isSelected()); + settings.setMapBackspaceChar(cmbMapBs.getItemAt(cmbMapBs.getSelectedIndex())); + settings.setMapDeleteChar(cmbMapDel.getItemAt(cmbMapDel.getSelectedIndex())); + settings.setInterruptsSupported(chkInterruptsSupported.isSelected()); + settings.setInputInterruptVector(((Number) spnInputInterrupt.getValue()).intValue()); + settings.setOutputInterruptVector(((Number) spnOutputInterrupt.getValue()).intValue()); + dispose(); + }); + + JPanel content = GUI.panel("insets dialog", "[grow]", "[grow][]"); + content.add(tabbedPane, "grow, w 460!, wrap"); + content.add(btnSave, "align right"); + return content; + } - pack(); + private JPanel createPortChannelSection(String title, JList list, PortListModel model, + String nameAdd, String nameCheck, PortListModel checkModel, + java.util.function.Supplier> defaultPorts) { + list.setFont(FONT_MONOSPACED); + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + JButton btnAdd = new JButton("Add"); + JButton btnRemove = new JButton("Remove"); + JButton btnDefaults = new JButton("Set default"); + btnAdd.addActionListener(e -> addPort(nameAdd, nameCheck, model, checkModel)); + btnRemove.addActionListener(e -> removePort(nameAdd, list, model)); + btnDefaults.addActionListener(e -> model.setAll(defaultPorts.get())); + + JPanel buttons = GUI.panel("insets 0, flowy", "[grow]", "[][][grow][]"); + buttons.add(btnAdd, "growx"); + buttons.add(btnRemove, "growx"); + buttons.add(new JPanel(), "grow"); + buttons.add(btnDefaults, "growx"); + + JPanel section = GUI.section(title, "insets dialog", "[67!,grow][grow]", "[grow]"); + section.add(new JScrollPane(list), "grow"); + section.add(buttons, "grow"); + return section; } private void addPort(String nameAdd, String nameCheck, PortListModel portModelAdd, PortListModel portModelCheck) { @@ -352,49 +173,4 @@ private void removePort(String name, JList lstPorts, PortListModel portM portModel.removeAt(i); } } - - private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) { - int inputInterruptVector; - int outputInterruptVector; - try { - inputInterruptVector = ((Number) spnInputInterrupt.getValue()).intValue(); - } catch (NumberFormatException e) { - dialogs.showError("Could not parse input interrupt vector", "88-SIO Settings"); - spnInputInterrupt.grabFocus(); - return; - } - try { - outputInterruptVector = ((Number) spnOutputInterrupt.getValue()).intValue(); - } catch (NumberFormatException e) { - dialogs.showError("Could not parse interrupt vector", "88-SIO Settings"); - spnOutputInterrupt.grabFocus(); - return; - } - if (inputInterruptVector < 0 || inputInterruptVector > 7) { - dialogs.showError("Allowed range of input interrupt vector is 0-7"); - spnInputInterrupt.grabFocus(); - return; - } - if (outputInterruptVector < 0 || outputInterruptVector > 7) { - dialogs.showError("Allowed range of output interrupt vector is 0-7"); - spnOutputInterrupt.grabFocus(); - return; - } - - settings.setStatusPorts(statusPortsModel.getAll()); - settings.setDataPorts(dataPortsModel.getAll()); - - settings.setClearInputBit8(chkTtyMode.isSelected()); - settings.setClearOutputBit8(chkAnsiMode.isSelected()); - settings.setInputToUpperCase(chkToUpperCase.isSelected()); - - settings.setMapBackspaceChar(cmbMapBs.getItemAt(cmbMapBs.getSelectedIndex())); - settings.setMapDeleteChar(cmbMapDel.getItemAt(cmbMapDel.getSelectedIndex())); - - settings.setInterruptsSupported(chkInterruptsSupported.isSelected()); - settings.setInputInterruptVector(inputInterruptVector); - settings.setOutputInterruptVector(outputInterruptVector); - - dispose(); - } } diff --git a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java index 6bbda13aa..3818fd4ce 100644 --- a/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java +++ b/plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/gui/SioGui.java @@ -2,17 +2,16 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.mits88sio.gui; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.mits88sio.UART; import javax.swing.*; -import javax.swing.border.TitledBorder; import java.awt.*; -import java.awt.event.KeyEvent; import java.util.Objects; -public class SioGui extends JDialog { +public class SioGui extends DialogBase { private final static Font FONT_BOLD_14 = new Font("sansserif", Font.BOLD, 14); - private final static Font FONT_BOLD_13 = new Font("sansserif", Font.BOLD, 13); private final static Font FONT_MONOSPACED_BOLD_14 = new Font("Monospaced", Font.BOLD, 14); private final UART uart; @@ -24,12 +23,10 @@ public class SioGui extends JDialog { private final JTextField txtAttachedDevice = new JTextField(); public SioGui(JFrame parent, UART uart) { - super(parent); + super(parent, "MITS 88-SIO", false); this.uart = Objects.requireNonNull(uart); - - initComponents(); - setLocationRelativeTo(parent); + setResizable(false); setStatus(uart.getStatus()); @@ -52,6 +49,8 @@ public void noData() { lblDataAscii.setText("empty"); } }); + + buildContent(); } private void setStatus(int status) { @@ -64,214 +63,68 @@ private void setStatus(int status) { lblStatusLong.setText(r + d + o + x + i); } - private void initComponents() { - JPanel panelAttachedDevice = new JPanel(); - JPanel panelControl = new JPanel(); - JLabel lblNoteControl = new JLabel("Control channel shows intermal status of 88-SIO."); - JLabel lblHexControl = new JLabel("Hex value:"); - JSeparator sepControl = new JSeparator(); - JLabel lblR = new JLabel("R"); - JLabel lblD = new JLabel("D"); - JLabel lblO = new JLabel("O"); - JLabel lblX = new JLabel("X"); - JLabel lblI = new JLabel("I"); - JLabel lblNoteR = new JLabel("Output device ready"); - JLabel lblNoteD = new JLabel("Data available"); - JLabel lblNoteO = new JLabel("Data overflow"); - JLabel lblNoteX = new JLabel("Data sent to x-mitter"); - JLabel lblNoteI = new JLabel("Input device ready"); - JPanel panelData = new JPanel(); - JLabel lblHexData = new JLabel("Hex value:"); - JLabel lblNoteData = new JLabel("Data buffer is an internal buffer to be read by CPU."); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - rootPane.registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - setResizable(false); - setTitle("MITS 88-SIO"); - - panelAttachedDevice.setBorder(BorderFactory.createTitledBorder( - null, "Attached device", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - FONT_BOLD_13)); - + @Override + protected JComponent initializeComponents() { + // Attached device section txtAttachedDevice.setEditable(false); txtAttachedDevice.setFont(FONT_BOLD_14); - GroupLayout panelAttachedDeviceLayout = new GroupLayout(panelAttachedDevice); - panelAttachedDevice.setLayout(panelAttachedDeviceLayout); - panelAttachedDeviceLayout.setHorizontalGroup( - panelAttachedDeviceLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelAttachedDeviceLayout.createSequentialGroup() - .addContainerGap() - .addComponent(txtAttachedDevice) - .addContainerGap()) - ); - panelAttachedDeviceLayout.setVerticalGroup( - panelAttachedDeviceLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelAttachedDeviceLayout.createSequentialGroup() - .addContainerGap() - .addComponent(txtAttachedDevice, GroupLayout.PREFERRED_SIZE, 43, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelControl.setBorder(BorderFactory.createTitledBorder( - null, "Control channel", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - FONT_BOLD_13)); + JPanel panelAttachedDevice = GUI.section("Attached device", "insets dialog, fill", "[grow]", "[]"); + panelAttachedDevice.add(txtAttachedDevice, "growx, h 43!"); + // Control channel section lblStatusLong.setFont(FONT_MONOSPACED_BOLD_14); lblStatusLong.setHorizontalAlignment(SwingConstants.CENTER); lblStatusLong.setBorder(BorderFactory.createEtchedBorder()); - lblR.setFont(FONT_BOLD_14); - lblD.setFont(FONT_BOLD_14); - lblO.setFont(FONT_BOLD_14); - lblX.setFont(FONT_BOLD_14); - lblI.setFont(FONT_BOLD_14); - - GroupLayout panelControlLayout = new GroupLayout(panelControl); - panelControl.setLayout(panelControlLayout); - panelControlLayout.setHorizontalGroup( - panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelControlLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, panelControlLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(lblStatusLong, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE) - .addComponent(sepControl) - .addComponent(lblNoteControl, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))) - .addGroup(panelControlLayout.createSequentialGroup() - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelControlLayout.createSequentialGroup() - .addComponent(lblHexControl) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblStatus)) - .addGroup(panelControlLayout.createSequentialGroup() - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblR) - .addComponent(lblD) - .addComponent(lblO) - .addComponent(lblX) - .addComponent(lblI)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblNoteX) - .addComponent(lblNoteO) - .addComponent(lblNoteR) - .addComponent(lblNoteD) - .addComponent(lblNoteI)))) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - panelControlLayout.setVerticalGroup( - panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelControlLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblNoteControl, GroupLayout.PREFERRED_SIZE, 46, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(lblStatusLong, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblHexControl) - .addComponent(lblStatus)) - .addGap(18, 18, 18) - .addComponent(sepControl, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelControlLayout.createSequentialGroup() - .addGap(24, 24, 24) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblD) - .addComponent(lblNoteD))) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblNoteR) - .addComponent(lblR))) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblO) - .addComponent(lblNoteO)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblNoteX) - .addComponent(lblX)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelControlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblNoteI) - .addComponent(lblI)) - .addContainerGap(13, Short.MAX_VALUE)) - ); - - panelData.setBorder(BorderFactory.createTitledBorder( - null, "Data buffer", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, - FONT_BOLD_13)); - + JPanel panelControl = GUI.section("Control channel", "insets dialog", "[grow]", "[][pref!][][][][][][]"); + panelControl.add(GUI.label("Control channel shows intermal status of 88-SIO."), "growx, h 46!, wrap"); + panelControl.add(lblStatusLong, "growx, h 33!, wrap"); + + panelControl.add(GUI.label("Hex value:"), "split 2"); + panelControl.add(lblStatus, "wrap"); + + panelControl.add(new JSeparator(), "growx, wrap"); + + JLabel lblR = GUI.labelBold("R"); + JLabel lblD = GUI.labelBold("D"); + JLabel lblO = GUI.labelBold("O"); + JLabel lblX = GUI.labelBold("X"); + JLabel lblI = GUI.labelBold("I"); + + panelControl.add(lblR, "split 2"); + panelControl.add(GUI.label("Output device ready"), "wrap"); + panelControl.add(lblD, "split 2"); + panelControl.add(GUI.label("Data available"), "wrap"); + panelControl.add(lblO, "split 2"); + panelControl.add(GUI.label("Data overflow"), "wrap"); + panelControl.add(lblX, "split 2"); + panelControl.add(GUI.label("Data sent to x-mitter"), "wrap"); + panelControl.add(lblI, "split 2"); + panelControl.add(GUI.label("Input device ready")); + + // Data buffer section lblDataAscii.setFont(FONT_BOLD_14); lblDataAscii.setHorizontalAlignment(SwingConstants.CENTER); lblDataAscii.setBorder(BorderFactory.createEtchedBorder()); btnClearBuffer.setDefaultCapable(false); - - GroupLayout panelDataLayout = new GroupLayout(panelData); - panelData.setLayout(panelDataLayout); - panelDataLayout.setHorizontalGroup( - panelDataLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDataLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelDataLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, panelDataLayout.createSequentialGroup() - .addGap(0, 102, Short.MAX_VALUE) - .addComponent(btnClearBuffer)) - .addGroup(panelDataLayout.createSequentialGroup() - .addComponent(lblHexData) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblData) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(lblNoteData, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(lblDataAscii, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - panelDataLayout.setVerticalGroup( - panelDataLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelDataLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblNoteData, GroupLayout.PREFERRED_SIZE, 46, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(lblDataAscii, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelDataLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblHexData) - .addComponent(lblData)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnClearBuffer) - .addContainerGap()) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(panelAttachedDevice, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(panelControl, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelData, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(panelAttachedDevice, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelControl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelData, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - btnClearBuffer.addActionListener(e -> uart.readBuffer()); - pack(); + + JPanel panelData = GUI.section("Data buffer", "insets dialog", "[grow]", "[][pref!][][grow][]"); + panelData.add(GUI.label("Data buffer is an internal buffer to be read by CPU."), "growx, h 46!, wrap"); + panelData.add(lblDataAscii, "growx, h 33!, wrap"); + panelData.add(GUI.label("Hex value:"), "split 2"); + panelData.add(lblData, "wrap"); + panelData.add(new JPanel(), "grow, wrap"); // spacer + panelData.add(btnClearBuffer, "align right"); + + // Main layout + JPanel content = GUI.panel("insets dialog", "[grow][grow]", "[][grow]"); + content.add(panelAttachedDevice, "span, growx, wrap"); + content.add(panelControl, "grow"); + content.add(panelData, "grow"); + + return content; } } diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java deleted file mode 100644 index 1758ea71a..000000000 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/NiceButton.java +++ /dev/null @@ -1,34 +0,0 @@ -/* SPDX-FileCopyrightText: 2006-2026 Peter Jakubčo - SPDX-License-Identifier: GPL-3.0-or-later */ -package net.emustudio.plugins.device.abstracttape.gui; - -import javax.swing.*; -import java.awt.*; - -class NiceButton extends JButton { - - private final static int x_WIDTH = 95; - private final static int x_HEIGHT = 30; - - private NiceButton() { - super(); - Dimension d = getPreferredSize(); - d.setSize(x_WIDTH, x_HEIGHT); //d.getHeight()); - this.setPreferredSize(d); - this.setSize(x_WIDTH, x_HEIGHT);//this.getHeight()); - this.setMinimumSize(d); - this.setMaximumSize(d); - } - - NiceButton(String text) { - this(); - this.setText(text); - } - - - NiceButton(String text, Icon icon) { - this(); - this.setIcon(icon); - this.setText(text); - } -} diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java index e3828f323..d065ee414 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/SettingsDialog.java @@ -5,56 +5,48 @@ import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import java.awt.*; -import java.awt.event.KeyEvent; import java.util.Objects; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(SettingsDialog.class); private final PluginSettings settings; private final Dialogs dialogs; private final TapeGui gui; - private JCheckBox chkAlwaysOnTop; - private JCheckBox chkShowAtStartup; + private final JCheckBox chkAlwaysOnTop = new JCheckBox("Always on top"); + private final JCheckBox chkShowAtStartup = new JCheckBox("Show GUI at startup"); public SettingsDialog(JFrame parent, PluginSettings settings, Dialogs dialogs, TapeGui gui, String title) { - super(parent, true); + super(parent, title + " settings", true); this.settings = Objects.requireNonNull(settings); this.dialogs = Objects.requireNonNull(dialogs); this.gui = gui; - initComponents(); - setSize(250, this.getHeight()); - setLocationRelativeTo(parent); - setTitle(title + " settings"); + setResizable(false); - boolean alwaysOnTop = settings.getBoolean("alwaysOnTop", false); - chkAlwaysOnTop.setSelected(alwaysOnTop); + chkAlwaysOnTop.setSelected(settings.getBoolean("alwaysOnTop", false)); + chkShowAtStartup.setSelected(settings.getBoolean("showAtStartup", false)); - boolean showAtStartup = settings.getBoolean("showAtStartup", false); - chkShowAtStartup.setSelected(showAtStartup); + buildContent(); } - private void initComponents() { - chkAlwaysOnTop = new JCheckBox("Always on top"); - chkShowAtStartup = new JCheckBox("Show GUI at startup"); - JButton btnSave = new JButton("Save"); - - setResizable(false); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - + @Override + protected JComponent initializeComponents() { chkAlwaysOnTop.addActionListener(e -> { if (gui != null) { gui.setAlwaysOnTop(chkAlwaysOnTop.isSelected()); } }); + + JButton btnSave = new JButton("Save"); + btnSave.setFont(btnSave.getFont().deriveFont(Font.BOLD)); btnSave.addActionListener(e -> { try { settings.setBoolean("alwaysOnTop", chkAlwaysOnTop.isSelected()); @@ -66,29 +58,12 @@ private void initComponents() { dispose(); }); - Container pane = this.getContentPane(); - GroupLayout layout = new GroupLayout(pane); - pane.setLayout(layout); + JPanel content = GUI.panel("insets dialog", "[grow]", "[][][grow][]"); + content.add(chkAlwaysOnTop, "wrap"); + content.add(chkShowAtStartup, "wrap"); + content.add(new JPanel(), "grow, wrap"); + content.add(btnSave, "align right"); - layout.setHorizontalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(chkAlwaysOnTop) - .addComponent(chkShowAtStartup) - .addGroup(layout.createSequentialGroup() - .addContainerGap(-1, Short.MAX_VALUE) - .addComponent(btnSave))) - .addContainerGap()); - layout.setVerticalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addComponent(chkAlwaysOnTop) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkShowAtStartup) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnSave) - .addContainerGap()); - pack(); + return content; } } diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java index acbc55031..20ef86f3c 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeCellRenderer.java @@ -31,7 +31,7 @@ public Component getListCellRendererComponent(JList list, Object value, int i } String s = tapeContext.getSymbolAt(index).map(TapeSymbol::toString).orElse(""); - if (s.equals("")) { + if (s.isEmpty()) { setForeground(Color.DARK_GRAY); } else { setForeground(Color.BLACK); diff --git a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java index 88eef5d8b..71d066841 100644 --- a/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java +++ b/plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/gui/TapeGui.java @@ -3,18 +3,19 @@ package net.emustudio.plugins.device.abstracttape.gui; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.abstracttape.AbstractTapeContextImpl; import net.emustudio.plugins.device.abstracttape.api.TapeSymbol; import javax.swing.*; -import java.awt.event.KeyEvent; import java.util.Objects; import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; import static net.emustudio.emulib.runtime.ui.GUI.loadIcon; -public class TapeGui extends JDialog { +public class TapeGui extends DialogBase { private static final String ICON_ADD_FIRST = "/net/emustudio/plugins/device/abstracttape/gui/go-up.png"; private static final String ICON_ADD_LAST = "/net/emustudio/plugins/device/abstracttape/gui/go-down.png"; @@ -22,23 +23,21 @@ public class TapeGui extends JDialog { private final AbstractTapeContextImpl tapeContext; private final TapeModel listModel; - private NiceButton btnAddFirst; - private NiceButton btnAddLast; - private NiceButton btnRemove; - private NiceButton btnEdit; - private NiceButton btnClear; + private JButton btnAddFirst; + private JButton btnAddLast; + private JButton btnRemove; + private JButton btnEdit; + private JButton btnClear; private JList lstTape; public TapeGui(JFrame parent, String title, AbstractTapeContextImpl tapeContext, boolean alwaysOnTop, Dialogs dialogs) { - super(parent); + super(parent, title, false); this.tapeContext = Objects.requireNonNull(tapeContext); this.dialogs = Objects.requireNonNull(dialogs); this.listModel = new TapeModel(tapeContext); - initComponents(); - setTitle(title); setAlwaysOnTop(alwaysOnTop); - setLocationRelativeTo(parent); + buildContent(); tapeContext.setListener(() -> { listModel.fireChange(); @@ -48,7 +47,6 @@ public TapeGui(JFrame parent, String title, AbstractTapeContextImpl tapeContext, changeEditable(); } - private void changeEditable() { boolean b = tapeContext.getEditable(); btnAddFirst.setEnabled(b && !tapeContext.isLeftBounded()); @@ -58,22 +56,18 @@ private void changeEditable() { btnClear.setEnabled(b); } - private void initComponents() { - JScrollPane scrollTape = new JScrollPane(); + @Override + protected JComponent initializeComponents() { lstTape = new JList<>(listModel); - btnAddFirst = new NiceButton("Add symbol", loadIcon(ICON_ADD_FIRST)); - btnAddLast = new NiceButton("Add symbol", loadIcon(ICON_ADD_LAST)); - btnRemove = new NiceButton("Remove symbol"); - btnEdit = new NiceButton("Edit symbol"); - btnClear = new NiceButton("Clear tape"); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - lstTape.setFont(FONT_MONOSPACED); lstTape.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); lstTape.setCellRenderer(new TapeCellRenderer(tapeContext)); - scrollTape.setViewportView(lstTape); + + btnAddFirst = new JButton("Add symbol", loadIcon(ICON_ADD_FIRST)); + btnAddLast = new JButton("Add symbol", loadIcon(ICON_ADD_LAST)); + btnRemove = new JButton("Remove symbol"); + btnEdit = new JButton("Edit symbol"); + btnClear = new JButton("Clear tape"); btnAddFirst.addActionListener(e -> dialogs .readString("Symbol value:", "Add symbol (on top)") @@ -118,34 +112,14 @@ private void initComponents() { }); btnClear.addActionListener(e -> tapeContext.clear()); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(btnEdit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnClear, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnRemove, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnAddLast, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnAddFirst, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(scrollTape, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE) - ).addContainerGap()); - layout.setVerticalGroup( - layout.createSequentialGroup() - .addContainerGap() - .addComponent(btnAddFirst) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(scrollTape, GroupLayout.PREFERRED_SIZE, 200, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnAddLast) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnRemove) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnEdit) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnClear) - .addContainerGap()); - pack(); + JPanel content = GUI.panel("insets dialog", "[148!,grow]", "[][200:200:,grow][][][][][]"); + content.add(btnAddFirst, "growx, wrap"); + content.add(new JScrollPane(lstTape), "grow, wrap"); + content.add(btnAddLast, "growx, wrap"); + content.add(btnRemove, "growx, gaptop 10, wrap"); + content.add(btnEdit, "growx, wrap"); + content.add(btnClear, "growx, wrap"); + + return content; } } diff --git a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java index 4d5f7faaa..07a871bb8 100644 --- a/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java +++ b/plugins/device/adm3A-terminal/src/main/java/net/emustudio/plugins/device/adm3a/gui/SettingsDialog.java @@ -3,11 +3,12 @@ package net.emustudio.plugins.device.adm3a.gui; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.adm3a.TerminalSettings; import javax.swing.*; import java.awt.*; -import java.awt.event.KeyEvent; import java.io.IOException; import java.nio.file.Path; import java.util.Objects; @@ -16,7 +17,7 @@ import static net.emustudio.plugins.device.adm3a.TerminalSettings.DEFAULT_INPUT_FILE_NAME; import static net.emustudio.plugins.device.adm3a.TerminalSettings.DEFAULT_OUTPUT_FILE_NAME; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final TerminalSettings settings; private final TerminalWindow window; private final Dialogs dialogs; @@ -28,16 +29,14 @@ public class SettingsDialog extends JDialog { private final JComboBox cmbFont = new JComboBox<>(new Integer[]{0, 1}); public SettingsDialog(JFrame parent, TerminalSettings settings, TerminalWindow window, Dialogs dialogs) { - super(parent, true); + super(parent, "LSI ADM-3A Settings", true); this.dialogs = Objects.requireNonNull(dialogs); this.settings = Objects.requireNonNull(settings); this.window = window; - initComponents(); - readSettings(); - setLocationRelativeTo(parent); + buildContent(); } private void readSettings() { @@ -59,153 +58,46 @@ private void updateSettings() throws IOException { settings.write(); } - private void initComponents() { - JPanel panelRedirectIO = new JPanel(); - JLabel lblInputFileName = new JLabel("Input file name:"); - JButton btnInputBrowse = new JButton("Browse..."); - JLabel lblOutputFileName = new JLabel("Output file name:"); - JButton btnOutputBrowse = new JButton("Browse..."); - JLabel lblNote = new JLabel("Note: I/O redirection will be used only in case of No GUI mode."); - JLabel lblInputDelay = new JLabel("Input delay:"); - JLabel lblMs = new JLabel("ms"); - JPanel panelTerminal = new JPanel(); - JButton btnSave = new JButton("Save"); - JLabel lblFont = new JLabel("Font"); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("LSI ADM-3A Settings"); - - panelRedirectIO.setBorder(BorderFactory.createTitledBorder( - null, "Redirect I/O", 0, 0, - lblInputFileName.getFont().deriveFont(lblInputFileName.getFont().getStyle() | Font.BOLD) - )); - + @Override + protected JComponent initializeComponents() { cmbFont.setRenderer(new DisplayFontJComboRenderer()); cmbFont.setSelectedIndex(settings.getFont().ordinal()); - spnInputDelay.setModel(new SpinnerNumberModel(0, 0, null, 100)); - btnSave.addActionListener(this::btnSaveActionPerformed); + JButton btnInputBrowse = GUI.browseFiles(dialogs, "Select input file", "Select", false, p -> txtInputFileName.setText(p.toString())); + JButton btnOutputBrowse = GUI.browseFiles(dialogs, "Select output file", "Select", false, p -> txtOutputFileName.setText(p.toString())); + + // Redirect I/O section + JPanel panelRedirectIO = GUI.section("Redirect I/O", "insets dialog", "[][grow][]", "[][][][]"); + panelRedirectIO.add(GUI.label("Input file name:")); + panelRedirectIO.add(txtInputFileName, "growx"); + panelRedirectIO.add(btnInputBrowse, "wrap"); + panelRedirectIO.add(GUI.label("Output file name:")); + panelRedirectIO.add(txtOutputFileName, "growx"); + panelRedirectIO.add(btnOutputBrowse, "wrap"); + panelRedirectIO.add(GUI.label("Input delay:")); + panelRedirectIO.add(spnInputDelay, "split 2, w 73!"); + panelRedirectIO.add(GUI.label("ms"), "wrap"); + panelRedirectIO.add(GUI.label("Note: I/O redirection will be used only in case of No GUI mode."), "span, wrap"); + + // Terminal section + JPanel panelTerminal = GUI.section("Terminal", "insets dialog", "[][grow]", "[][][]"); + panelTerminal.add(GUI.label("Font")); + panelTerminal.add(cmbFont, "growx, wrap"); + panelTerminal.add(chkHalfDuplex, "span, wrap"); + panelTerminal.add(chkAlwaysOnTop, "span, wrap"); + + // Save button + JButton btnSave = new JButton("Save"); btnSave.setFont(btnSave.getFont().deriveFont(Font.BOLD)); - btnSave.setDefaultCapable(true); - - GroupLayout layoutRedirectIO = new GroupLayout(panelRedirectIO); - panelRedirectIO.setLayout(layoutRedirectIO); - layoutRedirectIO.setHorizontalGroup( - layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutRedirectIO.createSequentialGroup() - .addContainerGap() - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblNote) - .addGroup(layoutRedirectIO.createSequentialGroup() - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblInputFileName, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblOutputFileName, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)) - .addComponent(lblInputDelay)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutRedirectIO.createSequentialGroup() - .addComponent(txtOutputFileName, GroupLayout.PREFERRED_SIZE, 241, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnOutputBrowse)) - .addGroup(GroupLayout.Alignment.TRAILING, layoutRedirectIO.createSequentialGroup() - .addComponent(txtInputFileName, GroupLayout.PREFERRED_SIZE, 241, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnInputBrowse)) - .addGroup(layoutRedirectIO.createSequentialGroup() - .addComponent(spnInputDelay, GroupLayout.PREFERRED_SIZE, 73, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblMs))))) - .addContainerGap()) - ); - layoutRedirectIO.setVerticalGroup( - layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, layoutRedirectIO.createSequentialGroup() - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInputFileName) - .addComponent(txtInputFileName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnInputBrowse)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblOutputFileName) - .addComponent(txtOutputFileName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnOutputBrowse)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layoutRedirectIO.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInputDelay) - .addComponent(spnInputDelay, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblMs)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE) - .addComponent(lblNote)) - ); - - panelTerminal.setBorder(BorderFactory.createTitledBorder( - null, "Terminal", 0, 0, - lblInputFileName.getFont().deriveFont(lblInputFileName.getFont().getStyle() | Font.BOLD) - )); - - GroupLayout layoutTerminal = new GroupLayout(panelTerminal); - panelTerminal.setLayout(layoutTerminal); - layoutTerminal.setHorizontalGroup( - layoutTerminal.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutTerminal.createSequentialGroup() - .addContainerGap() - .addGroup(layoutTerminal.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutTerminal.createSequentialGroup() - .addComponent(lblFont) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmbFont)) - .addComponent(chkHalfDuplex) - .addComponent(chkAlwaysOnTop)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - layoutTerminal.setVerticalGroup( - layoutTerminal.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layoutTerminal.createSequentialGroup() - .addGroup(layoutTerminal.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblFont) - .addComponent(cmbFont)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkHalfDuplex) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkAlwaysOnTop) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(panelRedirectIO, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addComponent(panelTerminal, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()))) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnSave, GroupLayout.PREFERRED_SIZE, 75, GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(18, 18, 18) - .addComponent(panelRedirectIO, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelTerminal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnSave) - .addContainerGap()) - ); - - pack(); + btnSave.addActionListener(this::btnSaveActionPerformed); + + JPanel content = GUI.panel("insets dialog", "[grow]", "[][][][]"); + content.add(panelRedirectIO, "growx, wrap"); + content.add(panelTerminal, "growx, wrap"); + content.add(btnSave, "align right"); + + return content; } private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) { diff --git a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java index 6a6bf2509..7f36058ed 100644 --- a/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java +++ b/plugins/device/ssem-display/src/main/java/net/emustudio/plugins/device/ssem/display/DisplayGui.java @@ -3,27 +3,25 @@ package net.emustudio.plugins.device.ssem.display; import net.emustudio.emulib.plugins.memory.MemoryContext; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import javax.swing.*; import java.util.Objects; -class DisplayGui extends JDialog { +class DisplayGui extends DialogBase { private final MemoryContext memory; private final DisplayPanel displayPanel; - private final JScrollPane scrollPane = new JScrollPane(); DisplayGui(JFrame parent, MemoryContext memory, DisplayPanel displayPanel) { - super(parent); + super(parent, "SSEM CRT Display", false); this.memory = Objects.requireNonNull(memory); this.displayPanel = Objects.requireNonNull(displayPanel); - initComponents(); - setLocationRelativeTo(parent); - - scrollPane.setViewportView(displayPanel); displayPanel.reset(memory); initListener(); + buildContent(); } private void initListener() { @@ -48,27 +46,10 @@ public void memorySizeChanged() { }); } - private void initComponents() { - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setTitle("SSEM CRT Display"); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 416, Short.MAX_VALUE) - .addContainerGap()) - ); - - pack(); + @Override + protected JComponent initializeComponents() { + JPanel content = GUI.panel("insets dialog", "[432:432:,grow]", "[416:416:,grow]"); + content.add(new JScrollPane(displayPanel), "grow"); + return content; } } diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java index 7cdca71df..ebde19d32 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/Vt100StateMachine.java @@ -9,7 +9,7 @@ /** * VT100 state machine *

- * https://vt100.net/emu/dec_ansi_parser + * dec_ansi_parser */ public class Vt100StateMachine { interface Vt100State { @@ -23,7 +23,7 @@ public interface Vt100Dispatcher { * changing the cursor position, suspending or resuming communications or changing the shift states in effect. * There are no parameters to this action. *

- * https://vt100.net/docs/vt220-rm/chapter4.html + * chapter4 * * @param data */ diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java index 9f6858dbd..2ad5bfd6d 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/SettingsDialog.java @@ -4,31 +4,34 @@ import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.device.vt100.TerminalSettings; +import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; import java.nio.file.Path; import java.util.Objects; -import javax.swing.*; -import javax.swing.GroupLayout; -import javax.swing.LayoutStyle; -import javax.swing.border.*; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final TerminalSettings settings; private final Dialogs dialogs; + private final JTextField txtInputFile = new JTextField(); + private final JTextField txtOutputFile = new JTextField(); + private final JTextField txtColumns = new JTextField(); + private final JTextField txtRows = new JTextField(); + private final JSpinner spnInputDelay = new JSpinner(); public SettingsDialog(JFrame parent, TerminalSettings settings, Dialogs dialogs) { - super(parent, true); + super(parent, "VT100 Terminal Settings", true); this.settings = Objects.requireNonNull(settings); this.dialogs = Objects.requireNonNull(dialogs); - initComponents(); + setResizable(false); readSettings(); + buildContent(); } private void readSettings() { @@ -39,163 +42,55 @@ private void readSettings() { spnInputDelay.setValue(settings.getInputReadDelayMillis()); } - private void initComponents() { - JPanel panelRedirectIO = new JPanel(); - JLabel lblInputFile = new JLabel("Input file:"); - JLabel lblOutputFile = new JLabel("Output file:"); - JLabel lblRedirectIoNote = new JLabel("In No GUI mode, input/output will be redirected to files."); - JLabel lblInputDelay = new JLabel("Input delay:"); - JLabel lblMs = new JLabel("ms"); - JPanel panelSize = new JPanel(); - JLabel lblColumns = new JLabel("Columns:"); - JLabel lblRows = new JLabel("Rows:"); - JLabel lblSizeNote = new JLabel("Terminal size changes will clear current content."); - - setTitle("VT100 Terminal Settings"); - setModal(true); - Container contentPane = getContentPane(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - setResizable(false); + @Override + protected JComponent initializeComponents() { + spnInputDelay.setModel(new SpinnerNumberModel(0, 0, null, 100)); - btnSave.addActionListener(this::btnSaveActionPerformed); + // Terminal size section + JButton btnColumnsDefault = new JButton("Set default"); + JButton btnRowsDefault = new JButton("Set default"); + btnColumnsDefault.addActionListener(e -> txtColumns.setText(String.valueOf(TerminalSettings.DEFAULT_COLUMNS))); + btnRowsDefault.addActionListener(e -> txtRows.setText(String.valueOf(TerminalSettings.DEFAULT_ROWS))); + + JPanel panelSize = GUI.section("Terminal size", "insets dialog", "[][64!][]", "[][][]"); + panelSize.add(GUI.label("Terminal size changes will clear current content."), "span, wrap"); + panelSize.add(GUI.label("Columns:")); + panelSize.add(txtColumns, "growx"); + panelSize.add(btnColumnsDefault, "wrap"); + panelSize.add(GUI.label("Rows:")); + panelSize.add(txtRows, "growx"); + panelSize.add(btnRowsDefault, "wrap"); + + // Redirect I/O section + JButton btnBrowseInputFile = GUI.browseFiles(dialogs, "Select input file", "Select", false, p -> txtInputFile.setText(p.toString())); + JButton btnBrowseOutputFile = GUI.browseFiles(dialogs, "Select output file", "Select", false, p -> txtOutputFile.setText(p.toString())); + + JPanel panelRedirectIO = GUI.section("Redirect I/O", "insets dialog", "[][grow][]", "[][][][]"); + panelRedirectIO.add(GUI.label("In No GUI mode, input/output will be redirected to files."), "span, h 30!, wrap"); + panelRedirectIO.add(GUI.label("Input file:")); + panelRedirectIO.add(txtInputFile, "growx"); + panelRedirectIO.add(btnBrowseInputFile, "wrap"); + panelRedirectIO.add(GUI.label("Output file:")); + panelRedirectIO.add(txtOutputFile, "growx"); + panelRedirectIO.add(btnBrowseOutputFile, "wrap"); + panelRedirectIO.add(GUI.label("Input delay:")); + panelRedirectIO.add(spnInputDelay, "split 2, w 64!"); + panelRedirectIO.add(GUI.label("ms"), "wrap"); + + // Save button + JButton btnSave = new JButton("Save"); btnSave.setFont(btnSave.getFont().deriveFont(Font.BOLD)); - btnSave.setDefaultCapable(true); + btnSave.addActionListener(this::btnSaveActionPerformed); - btnRowsDefault.addActionListener(e -> txtRows.setText(String.valueOf(TerminalSettings.DEFAULT_ROWS))); - btnColumnsDefault.addActionListener(e -> txtColumns.setText(String.valueOf(TerminalSettings.DEFAULT_COLUMNS))); + JPanel content = GUI.panel("insets dialog", "[grow]", "[][][]"); + content.add(panelSize, "growx, wrap"); + content.add(panelRedirectIO, "growx, wrap"); + content.add(btnSave, "align right"); - panelRedirectIO.setBorder(new TitledBorder(null, "Redirect I/O", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, - new Font("sansserif", Font.BOLD, 13))); - - panelSize.setBorder(new TitledBorder(null, "Terminal size", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, - new Font("sansserif", Font.BOLD, 13))); - - GroupLayout panelSizeLayout = new GroupLayout(panelSize); - panelSize.setLayout(panelSizeLayout); - panelSizeLayout.setHorizontalGroup( - panelSizeLayout.createParallelGroup() - .addGroup(panelSizeLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSizeLayout.createParallelGroup() - .addGroup(panelSizeLayout.createSequentialGroup() - .addGroup(panelSizeLayout.createParallelGroup() - .addComponent(lblColumns) - .addComponent(lblRows)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSizeLayout.createParallelGroup() - .addGroup(panelSizeLayout.createSequentialGroup() - .addComponent(txtRows, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnRowsDefault)) - .addGroup(panelSizeLayout.createSequentialGroup() - .addComponent(txtColumns, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnColumnsDefault)))) - .addComponent(lblSizeNote)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - panelSizeLayout.setVerticalGroup( - panelSizeLayout.createParallelGroup() - .addGroup(panelSizeLayout.createSequentialGroup() - .addComponent(lblSizeNote) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSizeLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblColumns) - .addComponent(txtColumns, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnColumnsDefault)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSizeLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblRows) - .addComponent(txtRows, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnRowsDefault)) - .addContainerGap(19, Short.MAX_VALUE)) - ); - - GroupLayout panelIOLayout = new GroupLayout(panelRedirectIO); - panelRedirectIO.setLayout(panelIOLayout); - panelIOLayout.setHorizontalGroup( - panelIOLayout.createParallelGroup() - .addGroup(panelIOLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelIOLayout.createParallelGroup() - .addComponent(lblRedirectIoNote) - .addGroup(panelIOLayout.createSequentialGroup() - .addGroup(panelIOLayout.createParallelGroup() - .addComponent(lblInputFile) - .addComponent(lblOutputFile) - .addComponent(lblInputDelay)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelIOLayout.createParallelGroup() - .addGroup(panelIOLayout.createSequentialGroup() - .addComponent(spnInputDelay, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblMs)) - .addGroup(panelIOLayout.createSequentialGroup() - .addGroup(panelIOLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtInputFile, GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE) - .addComponent(txtOutputFile)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelIOLayout.createParallelGroup() - .addComponent(btnBrowseInputFile) - .addComponent(btnBrowseOutputFile)))))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - panelIOLayout.setVerticalGroup( - panelIOLayout.createParallelGroup() - .addGroup(GroupLayout.Alignment.TRAILING, panelIOLayout.createSequentialGroup() - .addComponent(lblRedirectIoNote, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelIOLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInputFile) - .addComponent(txtInputFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnBrowseInputFile)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelIOLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblOutputFile) - .addComponent(txtOutputFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(btnBrowseOutputFile)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelIOLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblInputDelay) - .addComponent(spnInputDelay, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblMs)) - .addContainerGap()) - ); - - GroupLayout contentPaneLayout = new GroupLayout(contentPane); - contentPane.setLayout(contentPaneLayout); - contentPaneLayout.setHorizontalGroup( - contentPaneLayout.createParallelGroup() - .addGroup(contentPaneLayout.createSequentialGroup() - .addGroup(contentPaneLayout.createParallelGroup() - .addGroup(GroupLayout.Alignment.TRAILING, contentPaneLayout.createSequentialGroup() - .addContainerGap() - .addComponent(panelSize, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, contentPaneLayout.createSequentialGroup() - .addContainerGap() - .addComponent(panelRedirectIO, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, contentPaneLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnSave, GroupLayout.PREFERRED_SIZE, 82, GroupLayout.PREFERRED_SIZE))) - .addContainerGap()) - ); - contentPaneLayout.setVerticalGroup( - contentPaneLayout.createParallelGroup() - .addGroup(contentPaneLayout.createSequentialGroup() - .addComponent(panelSize, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelRedirectIO, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnSave) - .addContainerGap()) - ); - pack(); - setLocationRelativeTo(getOwner()); + return content; } - private void btnSaveActionPerformed(ActionEvent evt) { + private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) { if (txtInputFile.getText().trim().equals(txtOutputFile.getText().trim())) { dialogs.showError("Input and output file names cannot point to the same file"); txtInputFile.grabFocus(); @@ -227,15 +122,4 @@ private void btnSaveActionPerformed(ActionEvent evt) { settings.write(); dispose(); } - - private final JButton btnSave = new JButton("Save"); - private final JTextField txtInputFile = new JTextField(); - private final JTextField txtOutputFile = new JTextField(); - private final JTextField txtColumns = new JTextField(); - private final JTextField txtRows = new JTextField(); - private final JButton btnBrowseInputFile = new JButton("Browse..."); - private final JButton btnBrowseOutputFile = new JButton("Browse..."); - private final JButton btnRowsDefault = new JButton("Set default"); - private final JButton btnColumnsDefault = new JButton("Set default"); - private final JSpinner spnInputDelay = new JSpinner(); } diff --git a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java index 993b1949b..7762bd198 100644 --- a/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java +++ b/plugins/device/vt100-terminal/src/main/java/net/emustudio/plugins/device/vt100/gui/TerminalWindow.java @@ -4,6 +4,7 @@ import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.device.vt100.interaction.DisplayImpl; import net.emustudio.plugins.device.vt100.interaction.KeyboardGui; @@ -22,6 +23,8 @@ public class TerminalWindow extends JDialog { private final DisplayCanvas canvas; private final KeyboardGui keyboard; + private final JLabel lblStatusIcon = new JLabel(); + private final JButton btnASCII = new JButton(); public TerminalWindow(JFrame parent, DisplayImpl display, Dialogs dialogs, KeyboardGui keyboard) { super(parent); @@ -57,8 +60,6 @@ public void destroy() { } private void initComponents() { - JPanel panelStatus = new JPanel(); - setTitle("VT100 Terminal"); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); canvas.setBounds(0, 0, 900, 700); @@ -67,7 +68,6 @@ private void initComponents() { lblStatusIcon.setToolTipText("Input not requested"); lblStatusIcon.setVerticalAlignment(SwingConstants.TOP); - btnASCII.setFont(btnASCII.getFont()); btnASCII.setIcon(loadIcon("/net/emustudio/plugins/device/vt100/16_ascii.png")); btnASCII.setToolTipText("Input by ASCII code"); btnASCII.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); @@ -75,38 +75,15 @@ private void initComponents() { btnASCII.setVerticalAlignment(SwingConstants.TOP); btnASCII.addActionListener(this::btnASCIIActionPerformed); - GroupLayout panelStatusLayout = new GroupLayout(panelStatus); - panelStatus.setLayout(panelStatusLayout); - panelStatusLayout.setHorizontalGroup( - panelStatusLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelStatusLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblStatusIcon, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnASCII) - .addContainerGap(900, Short.MAX_VALUE)) - ); - panelStatusLayout.setVerticalGroup( - panelStatusLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblStatusIcon, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnASCII, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelStatus, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(canvas) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(canvas, GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelStatus, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - ); + JPanel panelStatus = GUI.panel("insets 2 6 2 6", "[20!]6[]push", "[24!]"); + panelStatus.add(lblStatusIcon); + panelStatus.add(btnASCII); + + JPanel content = GUI.panel("insets 0", "[grow]", "[grow]0[]"); + content.add(canvas, "grow, wrap"); + content.add(panelStatus, "growx"); + setContentPane(content); pack(); } @@ -127,7 +104,4 @@ private void btnASCIIActionPerformed(java.awt.event.ActionEvent evt) { } }); } - - private final JLabel lblStatusIcon = new JLabel(); - private final JButton btnASCII = new JButton(); } diff --git a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java index d1be44cad..458d0c8e2 100644 --- a/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java +++ b/plugins/device/zxspectrum-ula/src/main/java/net/emustudio/plugins/device/zxspectrum/ula/gui/DisplayWindow.java @@ -2,6 +2,7 @@ SPDX-License-Identifier: GPL-3.0-or-later */ package net.emustudio.plugins.device.zxspectrum.ula.gui; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.device.zxspectrum.ula.ULA; import javax.swing.*; @@ -20,7 +21,6 @@ public class DisplayWindow extends JDialog { private final DisplayCanvas canvas; private final KeyboardCanvas keyboardCanvas = new KeyboardCanvas(0); - private final JPanel statusBar = new JPanel(); public DisplayWindow(JFrame parent, ULA ula) { super(parent); @@ -56,39 +56,28 @@ private void initComponents() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); canvas.setBounds(MARGIN, MARGIN, BOUND_X, BOUND_Y); - statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); - statusBar.setBorder(new BevelBorder(BevelBorder.LOWERED)); - JLabel lblOpacity = new JLabel("Keyboard opacity:"); - lblOpacity.setHorizontalAlignment(SwingConstants.LEFT); - statusBar.add(lblOpacity); - - JSlider sliderOpacity = new JSlider(); - sliderOpacity.setMinimum(0); - sliderOpacity.setMaximum(100); - sliderOpacity.setValue(keyboardCanvas.getAlpha()); - statusBar.add(sliderOpacity); - JLabel lblOpacityPercent = new JLabel(keyboardCanvas.getAlpha() + "%"); - statusBar.add(lblOpacityPercent); + + JSlider sliderOpacity = new JSlider(0, 100, keyboardCanvas.getAlpha()); sliderOpacity.addChangeListener(e -> { int value = sliderOpacity.getValue(); keyboardCanvas.setAlpha(value); lblOpacityPercent.setText(value + "%"); }); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(canvas) - .addComponent(statusBar, GroupLayout.DEFAULT_SIZE, 400, 400)); // TODO: gap? - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(canvas, GroupLayout.DEFAULT_SIZE, 407, Short.MAX_VALUE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(statusBar, GroupLayout.PREFERRED_SIZE, 46, GroupLayout.PREFERRED_SIZE))); + JPanel statusBar = new JPanel(); + statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); + statusBar.setBorder(new BevelBorder(BevelBorder.LOWERED)); + statusBar.add(lblOpacity); + statusBar.add(sliderOpacity); + statusBar.add(lblOpacityPercent); + + JPanel content = GUI.panel("insets 0", "[grow]", "[grow]0[46!]"); + content.add(canvas, "grow, wrap"); + content.add(statusBar, "growx"); + + setContentPane(content); pack(); } From 88297b5ce430ad400db54bfeeac2169f1525261f Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Mon, 16 Feb 2026 00:24:10 +0100 Subject: [PATCH 09/11] [#342] GUI refactoring: memory plugins --- .../bytemem/gui/FindSequenceDialog.java | 123 ++------ .../plugins/memory/bytemem/gui/MemoryGui.java | 286 ++++-------------- .../bytemem/gui/SelectBankAddressDialog.java | 64 +--- .../memory/bytemem/gui/SettingsDialog.java | 285 ++++------------- .../plugins/memory/ram/gui/MemoryGui.java | 42 +-- .../plugins/memory/rasp/gui/MemoryGui.java | 46 +-- .../plugins/memory/ssem/gui/MemoryGui.java | 42 +-- 7 files changed, 210 insertions(+), 678 deletions(-) diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java index d6d42235f..13e20d164 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/FindSequenceDialog.java @@ -3,14 +3,15 @@ package net.emustudio.plugins.memory.bytemem.gui; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.bytemem.gui.actions.find_sequence.PerformFindSequenceAction; import net.emustudio.plugins.memory.bytemem.gui.table.MemoryTableModel; import javax.swing.*; -import java.awt.event.KeyEvent; import java.util.function.Consumer; -public class FindSequenceDialog extends JDialog { +public class FindSequenceDialog extends DialogBase { private final PerformFindSequenceAction performFindSequenceAction; private final JRadioButton radioCurrentPage = new JRadioButton(); private final JRadioButton radioPlainText = new JRadioButton(); @@ -19,132 +20,54 @@ public class FindSequenceDialog extends JDialog { public FindSequenceDialog(Dialogs dialogs, JDialog parent, MemoryTableModel tableModel, int currentAddress, Consumer setFoundAddress) { - super(parent, true); - setLocationRelativeTo(parent); + super(parent, "Find sequence", true); this.performFindSequenceAction = new PerformFindSequenceAction( dialogs, this::dispose, tableModel, setFoundAddress, radioCurrentPage::isSelected, radioPlainText::isSelected, currentAddress, txtPosition, txtSequence ); - initComponents(); + buildContent(); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { ButtonGroup btnGroupSequenceToFind = new ButtonGroup(); ButtonGroup btnGroupStartPosition = new ButtonGroup(); - JPanel jPanel1 = new JPanel(); JRadioButton radioBytes = new JRadioButton(); - JPanel jPanel2 = new JPanel(); JRadioButton radioSpecificPosition = new JRadioButton(); JButton btnFind = new JButton(performFindSequenceAction); + btnGroupSequenceToFind.add(radioPlainText); btnGroupSequenceToFind.add(radioBytes); - btnGroupStartPosition.add(radioCurrentPage); btnGroupStartPosition.add(radioSpecificPosition); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - btnFind.setText("Find"); - getRootPane().setDefaultButton(btnFind); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - setTitle("Find sequence"); - - jPanel1.setBorder(BorderFactory.createTitledBorder("Sequence to find")); radioPlainText.setSelected(true); radioPlainText.setText("Plain text (case-sensitive)"); - radioBytes.setText("Sequence of bytes (space-separated)"); - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(radioBytes, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(radioPlainText) - .addComponent(txtSequence)) - .addContainerGap(42, Short.MAX_VALUE)) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(txtSequence, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(radioPlainText) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(radioBytes) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Start position")); - radioCurrentPage.setSelected(true); radioCurrentPage.setText("Current page"); - radioSpecificPosition.setText("Specific position:"); - txtPosition.setText("0"); - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() - .addGap(21, 21, 21) - .addComponent(txtPosition)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(radioCurrentPage) - .addComponent(radioSpecificPosition)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(radioCurrentPage) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(radioSpecificPosition) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtPosition, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE) - .addContainerGap(24, Short.MAX_VALUE)) - ); - - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnFind, GroupLayout.PREFERRED_SIZE, 92, GroupLayout.PREFERRED_SIZE)) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap())); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnFind) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - pack(); + JPanel panelSequence = GUI.section("Sequence to find", "insets dialog", "[grow]", "[25!]unrel[][]"); + panelSequence.add(txtSequence, "growx, wrap"); + panelSequence.add(radioPlainText, "wrap"); + panelSequence.add(radioBytes); + + JPanel panelPosition = GUI.section("Start position", "insets dialog", "[grow]", "[][][25!]"); + panelPosition.add(radioCurrentPage, "wrap"); + panelPosition.add(radioSpecificPosition, "wrap"); + panelPosition.add(txtPosition, "gapleft 21, growx"); + + JPanel content = GUI.panel("insets dialog", "[grow]", "[]6[]unrel[]"); + content.add(panelSequence, "growx, wrap"); + content.add(panelPosition, "growx, wrap"); + content.add(btnFind, "w 92!, align right"); + return content; } } diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java index f0631b726..dc47f32f9 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/MemoryGui.java @@ -5,6 +5,7 @@ import net.emustudio.emulib.runtime.settings.PluginSettings; import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.bytemem.MemoryContextImpl; import net.emustudio.plugins.memory.bytemem.MemoryImpl; import net.emustudio.plugins.memory.bytemem.gui.actions.*; @@ -13,27 +14,26 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.KeyEvent; import java.util.Objects; import static javax.swing.Action.SHORT_DESCRIPTION; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatBinaryString; -public class MemoryGui extends JDialog { +public class MemoryGui extends DialogBase { private final MemoryTable table; private final MemoryTableModel tableModel; private final JLabel lblBanksCount = new JLabel("0"); - private final JLabel lblPageCount = new JLabel("0"); + private final JLabel lblPageCount = GUI.labelBold("0"); private final JScrollPane paneMemory = new JScrollPane(); private final JSpinner spnBank = new JSpinner(); private final JSpinner spnPage = new JSpinner(); - private final JTextField txtAddress = new JTextField("0000"); - private final JTextField txtChar = new JTextField(); - private final JTextField txtValueBin = new JTextField("0000 0000"); - private final JTextField txtValueDec = new JTextField("00"); - private final JTextField txtValueHex = new JTextField("00"); - private final JTextField txtValueOct = new JTextField("000"); + private final JTextField txtAddress = readOnlyField("0000"); + private final JTextField txtChar = readOnlyField(""); + private final JTextField txtValueBin = readOnlyField("0000 0000"); + private final JTextField txtValueDec = readOnlyField("00"); + private final JTextField txtValueHex = readOnlyField("00"); + private final JTextField txtValueOct = readOnlyField("000"); private final JToggleButton btnAsciiMode = new JToggleButton(); private final LoadImageAction loadImageAction; @@ -44,7 +44,7 @@ public class MemoryGui extends JDialog { private final SettingsAction settingsAction; public MemoryGui(JFrame parent, MemoryImpl memory, MemoryContextImpl context, PluginSettings settings, Dialogs dialogs) { - super(parent); + super(parent, "Byte Operating Memory", false); Objects.requireNonNull(context); Objects.requireNonNull(memory); @@ -72,11 +72,6 @@ public MemoryGui(JFrame parent, MemoryImpl memory, MemoryContextImpl context, Pl this.eraseMemoryAction = new EraseMemoryAction(tableModel, context); this.settingsAction = new SettingsAction(dialogs, this, memory, context, table, settings); - initComponents(); - super.setLocationRelativeTo(parent); - - paneMemory.setViewportView(table); - tableModel.addTableModelListener(e -> spnPage.getModel().setValue(tableModel.getPage())); lblPageCount.setText(String.valueOf(tableModel.getPageCount())); lblBanksCount.setText(String.valueOf(context.getBanksCount())); @@ -93,21 +88,18 @@ public MemoryGui(JFrame parent, MemoryImpl memory, MemoryContextImpl context, Pl try { tableModel.setCurrentBank(i); } catch (IndexOutOfBoundsException ex) { - int currentBank = tableModel.getCurrentBank(); - spnBank.getModel().setValue(currentBank); + spnBank.getModel().setValue(tableModel.getCurrentBank()); } }); - tableModel.addTableModelListener(e -> { - int row = e.getFirstRow(); - int column = e.getColumn(); - updateMemVal(row, column); - }); + tableModel.addTableModelListener(e -> updateMemVal(e.getFirstRow(), e.getColumn())); MouseHandler mouseHandler = new MouseHandler( tableModel, () -> updateMemVal(table.getSelectedRow(), table.getSelectedColumn())); table.addMouseListener(mouseHandler); table.addMouseWheelListener(mouseHandler); table.addKeyListener(new KeyboardHandler(table, spnPage.getModel(), this)); + + buildContent(); } public void updateMemVal(int row, int column) { @@ -126,33 +118,9 @@ public void updateMemVal(int row, int column) { txtValueBin.setText(formatBinaryString(data, 8)); } - private void initComponents() { - JToolBar toolBar = new JToolBar(); - JSplitPane splitPane = new JSplitPane(); - JPanel jPanel2 = new JPanel(); - JPanel jPanel3 = new JPanel(); - JLabel lblPageNumber = new JLabel("Page number:"); - JLabel lblPageFrom = new JLabel("/"); - JLabel lblMemoryBank = new JLabel("Memory bank:"); - JLabel lblMemoryBankFrom = new JLabel("/"); - JPanel jPanel4 = new JPanel(); - JLabel lblAddress = new JLabel("Address:"); - JLabel lblSymbol = new JLabel("Symbol:"); - JSeparator jSeparator4 = new JSeparator(); - JLabel lblValue = new JLabel("Value:"); - JLabel lblValueDec = new JLabel("(dec)"); - JLabel lblValueHex = new JLabel("(hex)"); - JLabel lblValueOct = new JLabel("(oct)"); - JLabel lblValueBin = new JLabel("(bin)"); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("Byte Operating Memory"); - setSize(new Dimension(794, 629)); - - toolBar.setFloatable(false); - toolBar.setRollover(true); + @Override + protected JComponent initializeComponents() { + JToolBar toolBar = GUI.toolbar(); toolBar.add(GUI.toolbarButton(loadImageAction)); toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); @@ -165,183 +133,50 @@ private void initComponents() { toolBar.addSeparator(); toolBar.add(GUI.toolbarButton(settingsAction)); - splitPane.setDividerLocation(390); - splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); - splitPane.setResizeWeight(1.0); - - jPanel3.setBorder(BorderFactory.createTitledBorder("Memory control")); - - lblPageCount.setFont(lblPageCount.getFont().deriveFont(lblPageCount.getFont().getStyle() | java.awt.Font.BOLD)); - - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblPageNumber) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spnPage, GroupLayout.PREFERRED_SIZE, 75, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPageFrom) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblPageCount) - .addGap(54, 54, 54) - .addComponent(lblMemoryBank) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spnBank, GroupLayout.PREFERRED_SIZE, 75, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblMemoryBankFrom) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblBanksCount) - .addContainerGap(283, Short.MAX_VALUE)) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblPageNumber) - .addComponent(spnPage, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblPageFrom) - .addComponent(lblPageCount) - .addComponent(lblMemoryBank) - .addComponent(spnBank, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblMemoryBankFrom) - .addComponent(lblBanksCount)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + // Memory control section + JPanel panelControl = GUI.section("Memory control", "insets dialog", "[]6[75!]6[]6[]54[]6[75!]6[]6[]push", "[]"); + panelControl.add(GUI.label("Page number:")); + panelControl.add(spnPage); + panelControl.add(GUI.label("/")); + panelControl.add(lblPageCount); + panelControl.add(GUI.label("Memory bank:")); + panelControl.add(spnBank); + panelControl.add(GUI.label("/")); + panelControl.add(lblBanksCount); + + // Selected value section + JPanel panelValue = GUI.section("Selected value", "insets dialog", "[][80!]20[][80!][][80!][]", "[][]"); + panelValue.add(GUI.label("Address:")); + panelValue.add(txtAddress); + panelValue.add(GUI.label("Value:")); + panelValue.add(txtValueDec); + panelValue.add(GUI.label("(dec)")); + panelValue.add(txtValueOct); + panelValue.add(GUI.label("(oct)"), "wrap"); + panelValue.add(GUI.label("Symbol:")); + panelValue.add(txtChar); + panelValue.add(GUI.label("")); + panelValue.add(txtValueHex); + panelValue.add(GUI.label("(hex)")); + panelValue.add(txtValueBin); + panelValue.add(GUI.label("(bin)")); + + JPanel bottomPanel = GUI.panel("insets dialog", "[grow]", "[]6[]"); + bottomPanel.add(panelControl, "growx, wrap"); + bottomPanel.add(panelValue, "growx"); - jPanel4.setBorder(BorderFactory.createTitledBorder("Selected value")); - - txtAddress.setEditable(false); - txtAddress.setHorizontalAlignment(JTextField.RIGHT); - - txtChar.setEditable(false); - txtChar.setHorizontalAlignment(JTextField.RIGHT); - - jSeparator4.setOrientation(SwingConstants.VERTICAL); - - txtValueDec.setEditable(false); - txtValueDec.setHorizontalAlignment(JTextField.RIGHT); - txtValueHex.setEditable(false); - txtValueHex.setHorizontalAlignment(JTextField.RIGHT); - txtValueOct.setEditable(false); - txtValueOct.setHorizontalAlignment(JTextField.RIGHT); - txtValueBin.setEditable(false); - txtValueBin.setHorizontalAlignment(JTextField.RIGHT); - - GroupLayout jPanel4Layout = new GroupLayout(jPanel4); - jPanel4.setLayout(jPanel4Layout); - jPanel4Layout.setHorizontalGroup( - jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblAddress) - .addComponent(lblSymbol)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtChar, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) - .addComponent(txtAddress, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator4, GroupLayout.PREFERRED_SIZE, 13, GroupLayout.PREFERRED_SIZE) - .addGap(2, 2, 2) - .addComponent(lblValue) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtValueHex) - .addComponent(txtValueDec, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblValueDec) - .addComponent(lblValueHex)) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtValueBin) - .addComponent(txtValueOct, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE)) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblValueOct)) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() - .addGap(7, 7, 7) - .addComponent(lblValueBin))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel4Layout.setVerticalGroup( - jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblValue) - .addComponent(txtValueDec, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblValueDec) - .addComponent(txtValueOct, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblValueOct)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(txtValueHex, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblValueHex) - .addComponent(txtValueBin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(lblValueBin))) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addGroup(jPanel4Layout.createSequentialGroup() - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblAddress) - .addComponent(txtAddress, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel4Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblSymbol) - .addComponent(txtChar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) - .addComponent(jSeparator4))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jPanel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - splitPane.setBottomComponent(jPanel2); + paneMemory.setViewportView(table); + paneMemory.setMinimumSize(new Dimension(768, 300)); - paneMemory.setMinimumSize(new java.awt.Dimension(768, 300)); - splitPane.setLeftComponent(paneMemory); + JSplitPane splitPane = GUI.splitTopBottom(paneMemory, bottomPanel, 1.0); + splitPane.setDividerLocation(390); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(toolBar, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(splitPane) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(toolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(splitPane, GroupLayout.DEFAULT_SIZE, 598, Short.MAX_VALUE)) - ); + JPanel content = GUI.panel("insets 0", "[grow]", "[]6[grow]"); + content.add(toolBar, "growx, wrap"); + content.add(splitPane, "grow"); - pack(); + setPreferredSize(new Dimension(794, 629)); + return content; } private int getCurrentAddress() { @@ -360,4 +195,11 @@ private void setPageFromAddress(int address) { } catch (RuntimeException ignored) { } } + + private static JTextField readOnlyField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setHorizontalAlignment(JTextField.RIGHT); + return field; + } } diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java index f0af352af..a73ac302a 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SelectBankAddressDialog.java @@ -4,13 +4,14 @@ import net.emustudio.emulib.runtime.helpers.RadixUtils; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import javax.swing.*; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; import java.util.Objects; -public class SelectBankAddressDialog extends JDialog { +public class SelectBankAddressDialog extends DialogBase { private final RadixUtils ru = RadixUtils.getInstance(); private final Dialogs dialogs; private final boolean selectBank; @@ -22,12 +23,11 @@ public class SelectBankAddressDialog extends JDialog { private boolean okPressed; public SelectBankAddressDialog(JDialog parent, boolean selectBank, boolean selectAddress, Dialogs dialogs) { - super(parent, true); + super(parent, "Select address", true); this.selectBank = selectBank; this.selectAddress = selectAddress; this.dialogs = Objects.requireNonNull(dialogs); - setLocationRelativeTo(parent); - initComponents(); + buildContent(); txtAddress.grabFocus(); } @@ -43,17 +43,13 @@ public boolean isOk() { return okPressed; } - private void initComponents() { - setTitle("Select address"); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - JLabel lblBank = new JLabel("Memory bank:"); - JLabel lblAddress = new JLabel("Address:"); + @Override + protected JComponent initializeComponents() { + JLabel lblBank = GUI.label("Memory bank:"); + JLabel lblAddress = GUI.label("Address:"); JButton btnOK = new JButton("OK"); btnOK.setDefaultCapable(true); btnOK.addActionListener(this::clickBtnOK); - getRootPane().setDefaultButton(btnOK); if (!selectBank) { @@ -68,41 +64,13 @@ private void initComponents() { txtAddress.setSelectionEnd(txtAddress.getText().length()); } - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblBank) - .addComponent(lblAddress)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtAddress, 128, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBank, 128, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnOK) - .addContainerGap())); - - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblBank) - .addComponent(txtBank, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblAddress) - .addComponent(txtAddress, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addComponent(btnOK) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - pack(); + JPanel content = GUI.panel("insets dialog", "[][128!]", "[][][18][]]"); + content.add(lblBank); + content.add(txtBank, "growx, wrap"); + content.add(lblAddress); + content.add(txtAddress, "growx, wrap"); + content.add(btnOK, "span, align right"); + return content; } private void clickBtnOK(ActionEvent e) { diff --git a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java index 8c79301e0..66ea55939 100644 --- a/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java +++ b/plugins/memory/byte-mem/src/main/java/net/emustudio/plugins/memory/bytemem/gui/SettingsDialog.java @@ -6,6 +6,8 @@ import net.emustudio.emulib.runtime.settings.CannotUpdateSettingException; import net.emustudio.emulib.runtime.settings.PluginSettings; import net.emustudio.emulib.runtime.ui.Dialogs; +import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.bytemem.MemoryContextImpl; import net.emustudio.plugins.memory.bytemem.MemoryImpl; import net.emustudio.plugins.memory.bytemem.RangeTree; @@ -16,14 +18,14 @@ import org.slf4j.LoggerFactory; import javax.swing.*; -import java.awt.event.KeyEvent; +import java.awt.*; import java.nio.file.Path; import java.util.Objects; import java.util.Optional; import static net.emustudio.plugins.memory.bytemem.gui.Constants.IMAGE_EXTENSION_FILTER; -public class SettingsDialog extends JDialog { +public class SettingsDialog extends DialogBase { private final static Logger LOGGER = LoggerFactory.getLogger(SettingsDialog.class); private final MemoryContextImpl context; @@ -32,31 +34,32 @@ public class SettingsDialog extends JDialog { private final FileImagesModel imagesModel; private final ROMmodel romModel; private final Dialogs dialogs; - private JCheckBox chkApplyROMatStartup; - private JTable tblImages; - private JTable tblROM; - private JTextField txtBanksCount; - private JTextField txtCommonBoundary; + private final JCheckBox chkApplyROMatStartup = new JCheckBox("Apply at startup"); + private final JTable tblImages = new JTable(); + private final JTable tblROM = new JTable(); + private final JTextField txtBanksCount = new JTextField("0"); + private final JTextField txtCommonBoundary = new JTextField("0x0000"); public SettingsDialog(JDialog parent, MemoryImpl memory, MemoryContextImpl context, MemoryTable tblMem, PluginSettings settings, Dialogs dialogs) { - super(parent, true); + super(parent, "Memory Settings", true); this.memory = Objects.requireNonNull(memory); this.context = Objects.requireNonNull(context); this.tblMem = Objects.requireNonNull(tblMem); this.dialogs = Objects.requireNonNull(dialogs); - initComponents(); - super.setLocationRelativeTo(parent); - loadSettings(settings); imagesModel = new FileImagesModel(settings, dialogs); tblImages.setModel(imagesModel); + tblImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.romModel = new ROMmodel(this.context); tblROM.setModel(romModel); + tblROM.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + buildContent(); } private void loadSettings(PluginSettings settings) { @@ -68,226 +71,68 @@ private void loadSettings(PluginSettings settings) { } } - private void initComponents() { - JPanel jPanel1 = new JPanel(); - JScrollPane jScrollPane1 = new JScrollPane(); - tblROM = new JTable(); - JButton btnAddRange = new JButton(); - JButton btnRemoveRange = new JButton(); - chkApplyROMatStartup = new JCheckBox(); - JPanel jPanel3 = new JPanel(); - JLabel jLabel6 = new JLabel(); - txtBanksCount = new JTextField(); - JLabel jLabel7 = new JLabel(); - txtCommonBoundary = new JTextField(); - JSeparator jSeparator2 = new JSeparator(); - JLabel jLabel8 = new JLabel(); - JLabel jLabel9 = new JLabel(); - JLabel jLabel10 = new JLabel(); - JLabel jLabel1 = new JLabel(); - JPanel jPanel2 = new JPanel(); - JScrollPane jScrollPane2 = new JScrollPane(); - tblImages = new JTable(); - JButton btnAddImage = new JButton(); - JButton btnRemoveImage = new JButton(); - JButton btnLoadNow = new JButton(); - JButton btnOK = new JButton(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("Memory Settings"); - - jPanel1.setBorder(BorderFactory.createTitledBorder("ROM areas")); - - tblROM.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - jScrollPane1.setViewportView(tblROM); - - btnAddRange.setText("Add"); + @Override + protected JComponent initializeComponents() { + // Bank-switching section + JLabel lblDescription = new JLabel( + "Memory banks are different locations of memory wired in a way they share the addresses. Common area is shared across all banks. "); + lblDescription.setHorizontalAlignment(SwingConstants.LEFT); + lblDescription.setVerticalAlignment(SwingConstants.TOP); + + JPanel panelBanks = GUI.section("Bank-switching", "insets dialog", "[][grow]", ""); + panelBanks.add(GUI.label("Banks count:")); + panelBanks.add(txtBanksCount, "growx, wrap"); + panelBanks.add(GUI.label("Common boundary:")); + panelBanks.add(txtCommonBoundary, "growx, wrap"); + panelBanks.add(new JSeparator(), "span, growx, h 2!, wrap"); + panelBanks.add(lblDescription, "span, h 64!, growx, wrap"); + panelBanks.add(new JLabel("Banks are accessible from [0..Common]."), "span, wrap"); + panelBanks.add(new JLabel("Common area starts from [Common..memory end]."), "span, wrap"); + panelBanks.add(new JLabel("NOTE: Changes will be visible after restart."), "span, gaptop 12"); + + // ROM areas section + JButton btnAddRange = new JButton("Add"); btnAddRange.addActionListener(this::btnAddRangeActionPerformed); - - btnRemoveRange.setText("Remove"); + JButton btnRemoveRange = new JButton("Remove"); btnRemoveRange.addActionListener(this::btnRemoveRangeActionPerformed); - chkApplyROMatStartup.setText("Apply at startup"); - - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(chkApplyROMatStartup) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnRemoveRange) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnAddRange)) - .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 116, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(btnAddRange) - .addComponent(btnRemoveRange)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(chkApplyROMatStartup) - .addContainerGap()) - ); - - jPanel3.setBorder(BorderFactory.createTitledBorder("Bank-switching")); - - jLabel6.setText("Banks count:"); - txtBanksCount.setText("0"); - - jLabel7.setText("Common boundary:"); - txtCommonBoundary.setText("0x0000"); - - jLabel8.setHorizontalAlignment(SwingConstants.LEFT); - jLabel8.setText("Memory banks are different locations of memory wired in a way they share the addresses. Common area is shared across all banks. "); - jLabel8.setVerticalAlignment(SwingConstants.TOP); - - jLabel9.setText("Banks are accessible from [0..Common]."); - jLabel10.setText("Common area starts from [Common..memory end]."); - jLabel1.setText("NOTE: Changes will be visible after restart."); - - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel8, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(jSeparator2, GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel6) - .addComponent(jLabel7)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtBanksCount) - .addComponent(txtCommonBoundary)))) - .addContainerGap()) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel9, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)))) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel6) - .addComponent(txtBanksCount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(txtCommonBoundary, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator2, GroupLayout.PREFERRED_SIZE, 2, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel8, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel9, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jLabel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Files to load at startup")); + JPanel panelROM = GUI.section("ROM areas", "insets dialog", "[grow]", "[116!][][grow][]"); + panelROM.add(new JScrollPane(tblROM), "grow, wrap"); + panelROM.add(btnRemoveRange, "split 2, align right"); + panelROM.add(btnAddRange, "wrap"); + panelROM.add(new JPanel(), "grow, wrap"); + panelROM.add(chkApplyROMatStartup); - tblImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - jScrollPane2.setViewportView(tblImages); + // Files to load at startup section + JScrollPane scrollImages = new JScrollPane(tblImages); + scrollImages.setPreferredSize(new Dimension(498, 117)); - btnAddImage.setText("Add"); + JButton btnAddImage = new JButton("Add"); btnAddImage.addActionListener(this::btnAddImageActionPerformed); - - btnRemoveImage.setText("Remove"); + JButton btnRemoveImage = new JButton("Remove"); btnRemoveImage.addActionListener(this::btnRemoveImageActionPerformed); - - btnLoadNow.setText("Load now"); + JButton btnLoadNow = new JButton("Load now"); btnLoadNow.addActionListener(this::btnLoadNowActionPerformed); - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, 498, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(btnLoadNow, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnRemoveImage, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnAddImage, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(btnAddImage) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnRemoveImage) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnLoadNow)) - .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - btnOK.setText("OK"); + JPanel btnPanel = GUI.panel("insets 0", "[grow]", "[][][unrel][]"); + btnPanel.add(btnAddImage, "growx, wrap"); + btnPanel.add(btnRemoveImage, "growx, wrap"); + btnPanel.add(btnLoadNow, "growx"); + + JPanel panelImages = GUI.section("Files to load at startup", "insets dialog", "[grow]unrel[]", "[]"); + panelImages.add(scrollImages, "grow"); + panelImages.add(btnPanel, "top"); + + // OK button + JButton btnOK = new JButton("OK"); btnOK.addActionListener(this::btnOKActionPerformed); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(btnOK, GroupLayout.PREFERRED_SIZE, 99, GroupLayout.PREFERRED_SIZE))) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnOK) - .addContainerGap()) - ); - - pack(); + JPanel content = GUI.panel("insets dialog", "[340!]6[grow]", "[]6[]6[]"); + content.add(panelBanks, "grow"); + content.add(panelROM, "grow, wrap"); + content.add(panelImages, "span, growx, wrap"); + content.add(btnOK, "span, w 99!, align right"); + return content; } private void btnAddRangeActionPerformed(java.awt.event.ActionEvent evt) { diff --git a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java index 0bfa9d862..959fa148b 100644 --- a/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java +++ b/plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/gui/MemoryGui.java @@ -4,20 +4,18 @@ import net.emustudio.emulib.runtime.ui.Dialogs; import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.ram.MemoryContextImpl; import net.emustudio.plugins.memory.ram.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.ram.gui.actions.EraseMemoryAction; import net.emustudio.plugins.memory.ram.gui.actions.LoadImageAction; import javax.swing.*; -import javax.swing.border.TitledBorder; +import java.awt.*; -import java.awt.event.KeyEvent; - -import static net.emustudio.emulib.runtime.ui.Constants.FONT_COMMON; import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; -public class MemoryGui extends JDialog { +public class MemoryGui extends DialogBase { private final JTable table; private final LoadImageAction loadImageAction; @@ -38,37 +36,27 @@ public MemoryGui(JFrame parent, MemoryContextImpl memory, Dialogs dialogs) { this.dumpMemoryAction = new DumpMemoryAction(dialogs, memory); this.eraseMemoryAction = new EraseMemoryAction(tableModel, memory); - initComponents(); - setLocationRelativeTo(parent); + buildContent(); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { JToolBar toolBar = GUI.toolbar(); - JPanel jPanel1 = new JPanel(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - toolBar.add(GUI.toolbarButton(loadImageAction)); toolBar.add(GUI.toolbarButton(dumpMemoryAction)); toolBar.addSeparator(); toolBar.add(GUI.toolbarButton(eraseMemoryAction)); - jPanel1.setBorder(BorderFactory.createTitledBorder(null, "Tape content", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, FONT_COMMON)); - - table.setGridColor(java.awt.SystemColor.control); - JScrollPane jScrollPane1 = GUI.scrollable(table); - - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 439, Short.MAX_VALUE)); - jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 456, Short.MAX_VALUE))); + table.setGridColor(SystemColor.control); + JScrollPane scrollPane = GUI.scrollable(table); + scrollPane.setPreferredSize(new Dimension(439, 456)); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(toolBar, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jPanel1)); - layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(toolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(jPanel1))); + JPanel panelContent = GUI.section("Tape content", "insets dialog", "[grow]", "[grow]"); + panelContent.add(scrollPane, "grow"); - pack(); + JPanel content = GUI.panel("insets 0", "[grow]", "[]6[grow]"); + content.add(toolBar, "growx, wrap"); + content.add(panelContent, "grow"); + return content; } } diff --git a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java index 0de64728b..134fd5a20 100644 --- a/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java +++ b/plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/gui/MemoryGui.java @@ -4,18 +4,19 @@ import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.rasp.MemoryContextImpl; import net.emustudio.plugins.memory.rasp.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.rasp.gui.actions.EraseMemoryAction; import net.emustudio.plugins.memory.rasp.gui.actions.LoadImageAction; import javax.swing.*; -import java.awt.event.KeyEvent; +import java.awt.*; import java.util.Objects; import static net.emustudio.emulib.runtime.ui.Constants.FONT_MONOSPACED; -public class MemoryGui extends JDialog { +public class MemoryGui extends DialogBase { private final JTable table; private final LoadImageAction loadImageAction; @@ -23,7 +24,7 @@ public class MemoryGui extends JDialog { private final EraseMemoryAction eraseMemoryAction; public MemoryGui(JFrame parent, MemoryContextImpl context, ApplicationApi api) { - super(parent, false); + super(parent, "RASP Memory", false); MemoryContextImpl memory = Objects.requireNonNull(context); RaspTableModel tableModel = new RaspTableModel(memory); @@ -37,30 +38,26 @@ public MemoryGui(JFrame parent, MemoryContextImpl context, ApplicationApi api) { this.dumpMemoryAction = new DumpMemoryAction(api.getDialogs(), context, api::getProgramLocation); this.eraseMemoryAction = new EraseMemoryAction(tableModel, context); - initComponents(); - setLocationRelativeTo(parent); + buildContent(); } - private void initComponents() { - JScrollPane jScrollPane1 = new JScrollPane(); - JToolBar toolBar = new JToolBar(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("RASP Memory"); + @Override + protected JComponent initializeComponents() { + JScrollPane scrollPane = new JScrollPane(); table.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { memoryTableMouseClicked(evt); } }); - jScrollPane1.setViewportView(table); + scrollPane.setViewportView(table); if (table.getColumnModel().getColumnCount() > 1) { table.getColumnModel().getColumn(0).setResizable(false); table.getColumnModel().getColumn(1).setResizable(false); } + scrollPane.setPreferredSize(new Dimension(265, 491)); + JToolBar toolBar = new JToolBar(); toolBar.setFloatable(false); toolBar.setRollover(true); toolBar.add(GUI.toolbarButton(loadImageAction)); @@ -68,22 +65,10 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { toolBar.addSeparator(); toolBar.add(GUI.toolbarButton(eraseMemoryAction)); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(toolBar, GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE) - .addComponent(jScrollPane1, GroupLayout.Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(toolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 491, Short.MAX_VALUE)) - ); - - pack(); + JPanel content = GUI.panel("insets 0", "[grow]", "[]6[grow]"); + content.add(toolBar, "growx, wrap"); + content.add(scrollPane, "grow"); + return content; } /** @@ -95,7 +80,6 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { */ private void memoryTableMouseClicked(java.awt.event.MouseEvent evt) { int row = table.rowAtPoint(evt.getPoint()); - //check if double-click if (evt.getClickCount() == 2) { table.editCellAt(row, 1); } diff --git a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java index 7fb87cbc9..bdb06e132 100644 --- a/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java +++ b/plugins/memory/ssem-mem/src/main/java/net/emustudio/plugins/memory/ssem/gui/MemoryGui.java @@ -5,6 +5,7 @@ import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.ApplicationApi; import net.emustudio.emulib.runtime.ui.GUI; +import net.emustudio.emulib.runtime.ui.components.DialogBase; import net.emustudio.plugins.memory.ssem.gui.actions.DumpMemoryAction; import net.emustudio.plugins.memory.ssem.gui.actions.EraseMemoryAction; import net.emustudio.plugins.memory.ssem.gui.actions.LoadImageAction; @@ -12,9 +13,9 @@ import net.emustudio.plugins.memory.ssem.gui.table.MemoryTableModel; import javax.swing.*; -import java.awt.event.KeyEvent; +import java.awt.*; -public class MemoryGui extends JDialog { +public class MemoryGui extends DialogBase { private final MemoryTableModel tableModel; private final JScrollPane scrollPane = new JScrollPane(); @@ -23,7 +24,7 @@ public class MemoryGui extends JDialog { private final EraseMemoryAction eraseMemoryAction; public MemoryGui(JFrame parent, MemoryContext memory, ApplicationApi api) { - super(parent); + super(parent, "SSEM Memory (Williams–Kilburn Tube)", false); this.tableModel = new MemoryTableModel(memory); MemoryTable table = new MemoryTable(tableModel, scrollPane); @@ -35,21 +36,15 @@ public MemoryGui(JFrame parent, MemoryContext memory, ApplicationApi api) this.dumpMemoryAction = new DumpMemoryAction(api, memory); this.eraseMemoryAction = new EraseMemoryAction(tableModel, memory); - initComponents(); - setLocationRelativeTo(parent); - scrollPane.setViewportView(table); + scrollPane.setPreferredSize(new Dimension(965, 455)); memory.addMemoryListener(new MemoryListenerImpl()); + buildContent(); } - private void initComponents() { + @Override + protected JComponent initializeComponents() { JToolBar toolBar = new JToolBar(); - - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - getRootPane().registerKeyboardAction(e -> dispose(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); - - setTitle("SSEM Memory (Williams–Kilburn Tube)"); - toolBar.setFloatable(false); toolBar.setRollover(true); toolBar.add(GUI.toolbarButton(loadImageAction)); @@ -57,26 +52,13 @@ private void initComponents() { toolBar.addSeparator(); toolBar.add(GUI.toolbarButton(eraseMemoryAction)); - GroupLayout layout = new GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 965, Short.MAX_VALUE) - .addComponent(toolBar, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(toolBar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 455, Short.MAX_VALUE)) - ); - - pack(); + JPanel content = GUI.panel("insets 0", "[grow]", "[]6[grow]"); + content.add(toolBar, "growx, wrap"); + content.add(scrollPane, "grow"); + return content; } private class MemoryListenerImpl implements MemoryContext.MemoryListener { - @Override public void memoryContentChanged(int fromLocation, int toLocation) { tableModel.dataChangedAt(fromLocation, toLocation); From 7a2c70bcbec4f2c55864bb2ae84ac661877284a1 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Mon, 16 Feb 2026 00:49:36 +0100 Subject: [PATCH 10/11] [#342] GUI refactoring: CPU plugins --- plugins/cpu/8080-cpu/build.gradle | 1 + .../cpu/intel8080/gui/StatusPanel.java | 290 ++---- plugins/cpu/brainduck-cpu/build.gradle | 1 + .../cpu/brainduck/gui/StatusPanel.java | 246 +----- plugins/cpu/ram-cpu/build.gradle | 3 +- .../plugins/cpu/ram/gui/RamStatusPanel.java | 160 +--- plugins/cpu/rasp-cpu/build.gradle | 3 +- .../plugins/cpu/rasp/gui/RaspStatusPanel.java | 160 +--- plugins/cpu/ssem-cpu/build.gradle | 1 + .../plugins/cpu/ssem/gui/CpuPanel.java | 349 ++------ plugins/cpu/z80-cpu/build.gradle | 3 +- .../plugins/cpu/zilogZ80/gui/StatusPanel.java | 823 +++--------------- 12 files changed, 393 insertions(+), 1647 deletions(-) diff --git a/plugins/cpu/8080-cpu/build.gradle b/plugins/cpu/8080-cpu/build.gradle index 1e33dd596..46694c610 100644 --- a/plugins/cpu/8080-cpu/build.gradle +++ b/plugins/cpu/8080-cpu/build.gradle @@ -23,6 +23,7 @@ repositories { dependencies { implementation libs.emuLib implementation libs.jcipAnnotations + implementation libs.migLayout implementation libs.slf4JApi testImplementation libs.cpuTestSuite diff --git a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java index 8d2cdfe03..ac1199d8e 100644 --- a/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java +++ b/plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/gui/StatusPanel.java @@ -4,6 +4,7 @@ import net.emustudio.emulib.plugins.cpu.CPU; import net.emustudio.emulib.plugins.cpu.CPU.RunState; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.intel8080.CpuImpl; import net.emustudio.plugins.cpu.intel8080.EmulatorEngine; import net.emustudio.plugins.cpu.intel8080.InstructionPrinter; @@ -12,11 +13,9 @@ import javax.swing.*; import javax.swing.table.AbstractTableModel; import java.awt.*; -import java.awt.event.ActionEvent; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatByteHexString; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatWordHexString; -import static net.emustudio.emulib.runtime.ui.Constants.FONT_TITLE_BORDER; public class StatusPanel extends JPanel { private final CpuImpl cpu; @@ -24,31 +23,32 @@ public class StatusPanel extends JPanel { private final Context8080 context; private final AbstractTableModel flagModel; - JLabel lblFrequency; - JLabel lblRun; - JSpinner spnFrequency; - JTable tblFlags; - JTextField txtFlags; - JTextField txtRegA; - JTextField txtRegB; - JTextField txtRegBC; - JTextField txtRegC; - JTextField txtRegD; - JTextField txtRegDE; - JTextField txtRegE; - JTextField txtRegH; - JTextField txtRegHL; - JTextField txtRegL; - JTextField txtRegPC; - JTextField txtRegSP; - JCheckBox chkPrintInstructions; + private final JLabel lblFrequency = new JLabel("0,0 kHz"); + private final JLabel lblRun = new JLabel("Stopped"); + private final JSpinner spnFrequency = new JSpinner(); + private final JTable tblFlags = new JTable(); + private final JTextField txtFlags = regField("00"); + private final JTextField txtRegA = regField("00"); + private final JTextField txtRegB = regField("00"); + private final JTextField txtRegBC = regField("0000"); + private final JTextField txtRegC = regField("00"); + private final JTextField txtRegD = regField("00"); + private final JTextField txtRegDE = regField("0000"); + private final JTextField txtRegE = regField("00"); + private final JTextField txtRegH = regField("00"); + private final JTextField txtRegHL = regField("0000"); + private final JTextField txtRegL = regField("00"); + private final JTextField txtRegPC = regField("0000"); + private final JTextField txtRegSP = regField("0000"); + private final JCheckBox chkPrintInstructions = new JCheckBox("Dump instructions history"); + private volatile RunState runState = RunState.STATE_STOPPED_NORMAL; public StatusPanel(CpuImpl cpu, Context8080 context, boolean dumpInstructions) { this.cpu = cpu; this.context = context; this.engine = cpu.getEngine(); - flagModel = new FlagsModel(engine); + this.flagModel = new FlagsModel(engine); initComponents(); chkPrintInstructions.setSelected(dumpInstructions); @@ -59,7 +59,6 @@ public StatusPanel(CpuImpl cpu, Context8080 context, boolean dumpInstructions) { private void setupListeners() { cpu.addCPUListener(new CPU.CPUListener() { - @Override public void runStateChanged(RunState state) { runState = state; @@ -69,7 +68,6 @@ public void runStateChanged(RunState state) { public void internalStateChanged() { updateGUI(); } - }); cpu.getFrequencyCalculator().addListener(f -> lblFrequency.setText(String.format("%.2f kHz", f))); spnFrequency.addChangeListener(e -> { @@ -95,203 +93,91 @@ public void updateGUI() { txtRegHL.setText(formatWordHexString((short) engine.regs[EmulatorEngine.REG_H], (short) engine.regs[EmulatorEngine.REG_L])); txtRegSP.setText(formatWordHexString(engine.SP)); txtRegPC.setText(formatWordHexString(engine.PC)); - txtFlags.setText(formatByteHexString(engine.flags)); flagModel.fireTableDataChanged(); - lblRun.setText(runState.toString()); spnFrequency.setEnabled(runState != RunState.STATE_RUNNING); } - private void onDumpInstructionsSelect(ActionEvent e) { - if (chkPrintInstructions.isSelected()) { - engine.setDispatchListener(new InstructionPrinter(cpu.getDisassembler(), engine, true, System.err)); - } else { - engine.setDispatchListener(null); - } - } - private void initComponents() { - JPanel paneRegisters = new JPanel(); - JLabel lblRegB = new JLabel("B"); - txtRegB = new JTextField("00"); - JLabel lblRegC = new JLabel("C"); - txtRegC = new JTextField("00"); - JLabel lblRegBC = new JLabel("BC"); - txtRegBC = new JTextField("0000"); - JLabel lblRegD = new JLabel("D"); - txtRegD = new JTextField("00"); - JLabel lblRegE = new JLabel("E"); - txtRegE = new JTextField("00"); - JLabel lblRegDE = new JLabel("DE"); - txtRegDE = new JTextField("0000"); - JLabel lblRegH = new JLabel("H"); - txtRegH = new JTextField("00"); - JLabel lblRegL = new JLabel("L"); - txtRegL = new JTextField("00"); - JLabel lblRegHL = new JLabel("HL"); - txtRegHL = new JTextField("0000"); - JLabel lblRegA = new JLabel("A"); - txtRegA = new JTextField("00"); - JLabel lblRegF = new JLabel("F"); - txtFlags = new JTextField("00"); - JLabel lblRegPC = new JLabel("PC"); - txtRegPC = new JTextField("0000"); - JLabel lblRegSP = new JLabel("SP"); - txtRegSP = new JTextField("0000"); - JPanel panelRun = new JPanel(); - lblRun = new JLabel("Stopped"); - JLabel lblCPUFreq = new JLabel("CPU frequency:"); - spnFrequency = new JSpinner(); - JLabel lblKHZ = new JLabel("kHz"); - JLabel lblRuntimeFreq = new JLabel("Runtime frequency:"); - lblFrequency = new JLabel("0,0 kHz"); - JLabel lblFlags = new JLabel("Flags (F): "); - tblFlags = new JTable(); - chkPrintInstructions = new JCheckBox("Dump instructions history"); - - setBorder(null); - paneRegisters.setBorder(null); - - lblCPUFreq.setFont(lblCPUFreq.getFont().deriveFont(lblCPUFreq.getFont().getStyle() & ~Font.BOLD)); - lblRuntimeFreq.setFont(lblRuntimeFreq.getFont().deriveFont(lblRuntimeFreq.getFont().getStyle() & ~Font.BOLD)); - lblFlags.setFont(lblFlags.getFont().deriveFont(lblFlags.getFont().getStyle() & ~Font.BOLD)); - chkPrintInstructions.setFont(chkPrintInstructions.getFont().deriveFont(chkPrintInstructions.getFont().getStyle() & ~Font.BOLD)); - - chkPrintInstructions.addActionListener(this::onDumpInstructionsSelect); - - lblRegB.setFont(lblRegB.getFont().deriveFont(lblRegB.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegB.setEditable(false); - txtRegB.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegC.setFont(lblRegC.getFont().deriveFont(lblRegC.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegC.setEditable(false); - txtRegC.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegBC.setFont(lblRegBC.getFont().deriveFont(lblRegBC.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegBC.setEditable(false); - txtRegBC.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegD.setFont(lblRegD.getFont().deriveFont(lblRegD.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegD.setEditable(false); - txtRegD.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegE.setFont(lblRegE.getFont().deriveFont(lblRegE.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegE.setEditable(false); - txtRegE.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegDE.setFont(lblRegDE.getFont().deriveFont(lblRegDE.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegDE.setEditable(false); - txtRegDE.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegH.setFont(lblRegH.getFont().deriveFont(lblRegH.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegH.setEditable(false); - txtRegH.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegL.setFont(lblRegL.getFont().deriveFont(lblRegL.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegL.setEditable(false); - txtRegL.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegHL.setFont(lblRegHL.getFont().deriveFont(lblRegHL.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegHL.setEditable(false); - txtRegHL.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegA.setFont(lblRegA.getFont().deriveFont(lblRegA.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegA.setEditable(false); - txtRegA.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegF.setFont(lblRegF.getFont().deriveFont(lblRegF.getFont().getStyle() | java.awt.Font.BOLD)); - txtFlags.setEditable(false); - txtFlags.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegPC.setFont(lblRegPC.getFont().deriveFont(lblRegPC.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegPC.setEditable(false); - txtRegPC.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - - lblRegSP.setFont(lblRegSP.getFont().deriveFont(lblRegSP.getFont().getStyle() | java.awt.Font.BOLD)); - txtRegSP.setEditable(false); - txtRegSP.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); - tblFlags.setAutoCreateRowSorter(true); tblFlags.setBackground(Color.white); tblFlags.setBorder(null); tblFlags.setRowSelectionAllowed(false); - GroupLayout paneRegistersLayout = new GroupLayout(paneRegisters); - paneRegisters.setLayout(paneRegistersLayout); - - paneRegistersLayout.setHorizontalGroup( - paneRegistersLayout.createSequentialGroup().addContainerGap().addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(paneRegistersLayout.createSequentialGroup().addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(lblRegB).addComponent(lblRegD).addComponent(lblRegH).addComponent(lblRegA)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(txtRegB).addComponent(txtRegD).addComponent(txtRegH).addComponent(txtRegA)).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(lblRegC).addComponent(lblRegE).addComponent(lblRegL).addComponent(lblRegF)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(txtRegC).addComponent(txtRegE).addComponent(txtRegL).addComponent(txtFlags)).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(lblRegBC).addComponent(lblRegDE).addComponent(lblRegHL).addComponent(lblRegPC).addComponent(lblRegSP)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(txtRegBC).addComponent(txtRegDE).addComponent(txtRegHL).addComponent(txtRegPC).addComponent(txtRegSP))).addComponent(lblFlags).addComponent(tblFlags)).addContainerGap()); - paneRegistersLayout.setVerticalGroup( - paneRegistersLayout.createSequentialGroup().addContainerGap().addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lblRegB).addComponent(txtRegB).addComponent(lblRegC).addComponent(txtRegC).addComponent(lblRegBC).addComponent(txtRegBC)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lblRegD).addComponent(txtRegD).addComponent(lblRegE).addComponent(txtRegE).addComponent(lblRegDE).addComponent(txtRegDE)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lblRegH).addComponent(txtRegH).addComponent(lblRegL).addComponent(txtRegL).addComponent(lblRegHL).addComponent(txtRegHL)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(lblRegA).addComponent(txtRegA).addComponent(lblRegF).addComponent(txtFlags).addComponent(lblRegPC).addComponent(txtRegPC)).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addGroup(paneRegistersLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(lblRegSP).addComponent(txtRegSP)).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(lblFlags).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(tblFlags)); - - panelRun.setBorder(BorderFactory.createTitledBorder( - new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), - "Run control", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, - javax.swing.border.TitledBorder.DEFAULT_POSITION, - FONT_TITLE_BORDER, - new java.awt.Color(102, 102, 102))); - - lblRun.setFont(lblRun.getFont().deriveFont(lblRun.getFont().getStyle() | java.awt.Font.BOLD)); - lblRun.setForeground(new java.awt.Color(0, 102, 0)); + chkPrintInstructions.addActionListener(e -> { + if (chkPrintInstructions.isSelected()) { + engine.setDispatchListener(new InstructionPrinter(cpu.getDisassembler(), engine, true, System.err)); + } else { + engine.setDispatchListener(null); + } + }); + // Registers panel + JPanel paneRegisters = GUI.panel("insets dialog", "[][grow]6[][grow]6[][grow]", "[][][][][][]6[][grow]"); + paneRegisters.add(GUI.labelBold("B")); + paneRegisters.add(txtRegB, "growx"); + paneRegisters.add(GUI.labelBold("C")); + paneRegisters.add(txtRegC, "growx"); + paneRegisters.add(GUI.labelBold("BC")); + paneRegisters.add(txtRegBC, "growx, wrap"); + paneRegisters.add(GUI.labelBold("D")); + paneRegisters.add(txtRegD, "growx"); + paneRegisters.add(GUI.labelBold("E")); + paneRegisters.add(txtRegE, "growx"); + paneRegisters.add(GUI.labelBold("DE")); + paneRegisters.add(txtRegDE, "growx, wrap"); + paneRegisters.add(GUI.labelBold("H")); + paneRegisters.add(txtRegH, "growx"); + paneRegisters.add(GUI.labelBold("L")); + paneRegisters.add(txtRegL, "growx"); + paneRegisters.add(GUI.labelBold("HL")); + paneRegisters.add(txtRegHL, "growx, wrap"); + paneRegisters.add(GUI.labelBold("A")); + paneRegisters.add(txtRegA, "growx"); + paneRegisters.add(GUI.labelBold("F")); + paneRegisters.add(txtFlags, "growx"); + paneRegisters.add(GUI.labelBold("PC")); + paneRegisters.add(txtRegPC, "growx, wrap"); + paneRegisters.add(new JLabel()); + paneRegisters.add(new JLabel()); + paneRegisters.add(new JLabel()); + paneRegisters.add(new JLabel()); + paneRegisters.add(GUI.labelBold("SP")); + paneRegisters.add(txtRegSP, "growx, wrap"); + paneRegisters.add(GUI.label("Flags (F):"), "span, wrap"); + paneRegisters.add(tblFlags, "span, growx"); + + // Run control panel SpinnerNumberModel spFrequencyModel = new SpinnerNumberModel(); spFrequencyModel.setValue(context.getCPUFrequency()); spFrequencyModel.setStepSize(100); spnFrequency.setModel(spFrequencyModel); - lblKHZ.setFont(lblKHZ.getFont().deriveFont(lblKHZ.getFont().getStyle() | java.awt.Font.BOLD)); - lblFrequency.setFont(lblFrequency.getFont().deriveFont(lblFrequency.getFont().getStyle() | java.awt.Font.BOLD)); - GroupLayout panelRunLayout = new GroupLayout(panelRun); - panelRun.setLayout(panelRunLayout); - panelRunLayout.setHorizontalGroup( - panelRunLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelRunLayout.createSequentialGroup() - .addContainerGap().addComponent(lblRun).addContainerGap() - ).addGroup(panelRunLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblCPUFreq) - ).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(spnFrequency) - ).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblKHZ) - ).addContainerGap() - ).addGroup(panelRunLayout.createSequentialGroup() - .addContainerGap() - .addComponent(lblRuntimeFreq) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblFrequency).addContainerGap() - ).addGroup(panelRunLayout.createSequentialGroup() - .addContainerGap() - .addComponent(chkPrintInstructions) - .addContainerGap() - ) - ); - panelRunLayout.setVerticalGroup( - panelRunLayout.createSequentialGroup().addContainerGap().addComponent(lblRun) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.BASELINE, false) - .addComponent(lblCPUFreq) - .addComponent(spnFrequency, GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE) - .addComponent(lblKHZ) - ).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblRuntimeFreq) - .addComponent(lblFrequency) - ).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelRunLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(chkPrintInstructions) - ).addContainerGap() - ); + lblRun.setFont(lblRun.getFont().deriveFont(lblRun.getFont().getStyle() | Font.BOLD)); + lblRun.setForeground(new Color(0, 102, 0)); + lblFrequency.setFont(lblFrequency.getFont().deriveFont(lblFrequency.getFont().getStyle() | Font.BOLD)); + + JPanel panelRun = GUI.section("Run control", "insets dialog", "[]6[grow]6[]", "[][][][]"); + panelRun.add(lblRun, "span, wrap"); + panelRun.add(GUI.label("CPU frequency:")); + panelRun.add(spnFrequency, "growx"); + panelRun.add(GUI.labelBold("kHz"), "wrap"); + panelRun.add(GUI.label("Runtime frequency:")); + panelRun.add(lblFrequency, "span, wrap"); + panelRun.add(chkPrintInstructions, "span"); + + // Main layout + setBorder(null); + setLayout(new net.miginfocom.swing.MigLayout("insets 0", "[grow]", "[]6[]")); + add(paneRegisters, "growx, wrap"); + add(panelRun, "growx"); + } - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(paneRegisters, 10, 290, Short.MAX_VALUE).addComponent(panelRun, 10, 290, Short.MAX_VALUE)); - layout.setVerticalGroup( - layout.createSequentialGroup().addComponent(paneRegisters, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(panelRun, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addContainerGap()); + private static JTextField regField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.lightGray)); + return field; } } diff --git a/plugins/cpu/brainduck-cpu/build.gradle b/plugins/cpu/brainduck-cpu/build.gradle index dfe79d48c..fe3b14aa1 100644 --- a/plugins/cpu/brainduck-cpu/build.gradle +++ b/plugins/cpu/brainduck-cpu/build.gradle @@ -14,6 +14,7 @@ repositories { dependencies { implementation libs.emuLib + implementation libs.migLayout implementation libs.slf4JApi memoryLib project(":plugins:memory:byte-mem") diff --git a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java index c884618fa..68e751879 100644 --- a/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java +++ b/plugins/cpu/brainduck-cpu/src/main/java/net/emustudio/plugins/cpu/brainduck/gui/StatusPanel.java @@ -3,12 +3,12 @@ package net.emustudio.plugins.cpu.brainduck.gui; import net.emustudio.emulib.plugins.cpu.CPU; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.brainduck.CpuImpl; import net.emustudio.plugins.cpu.brainduck.EmulatorEngine; import net.emustudio.plugins.memory.bytemem.api.ByteMemoryContext; import javax.swing.*; -import javax.swing.table.DefaultTableModel; import static net.emustudio.emulib.runtime.ui.Constants.*; @@ -17,13 +17,15 @@ public class StatusPanel extends JPanel { private final MemoryTableModel tableModel; private final Byte[] memory; private final EmulatorEngine cpu; - private JLabel lblLoopLevel; - private JLabel lblRunState; - private JLabel lblTime; - private JTable tblMemory; - private JTextField txtIP; - private JTextField txtMemP; - private JTextField txtP; + + private final JLabel lblLoopLevel = new JLabel("0"); + private final JLabel lblRunState = new JLabel("stopped (breakpoint)"); + private final JLabel lblTime = new JLabel("0 ms"); + private final JTable tblMemory = new JTable(); + private final JTextField txtIP = readOnlyField("0"); + private final JTextField txtMemP = readOnlyField("0"); + private final JTextField txtP = readOnlyField("0"); + public StatusPanel(ByteMemoryContext memory, CpuImpl cpu) { this.memory = memory.getRawMemory()[0]; this.cpu = cpu.getEngine(); @@ -38,218 +40,42 @@ public StatusPanel(ByteMemoryContext memory, CpuImpl cpu) { } private void initComponents() { - JPanel jPanel1 = new JPanel(); - JLabel jLabel1 = new JLabel(); - JLabel jLabel2 = new JLabel(); - JLabel jLabel3 = new JLabel(); - txtMemP = new JTextField(); - txtP = new JTextField(); - txtIP = new JTextField(); - JLabel jLabel4 = new JLabel(); - JLabel jLabel5 = new JLabel(); - JLabel jLabel6 = new JLabel(); - JSeparator jSeparator1 = new JSeparator(); - JLabel jLabel7 = new JLabel(); - lblTime = new JLabel(); - JLabel jLabel8 = new JLabel(); - lblLoopLevel = new JLabel(); - JPanel jPanel2 = new JPanel(); - lblRunState = new JLabel(); - JPanel jPanel3 = new JPanel(); - JScrollPane jScrollPane1 = new JScrollPane(); - tblMemory = new JTable(); - - jPanel1.setBorder(BorderFactory.createTitledBorder("Internal state")); - - jLabel1.setText("IP:"); - jLabel2.setText("P:"); - jLabel3.setText("*P:"); - - txtMemP.setEditable(false); - txtMemP.setFont(FONT_MONOSPACED); - txtMemP.setText("0"); - - txtP.setEditable(false); - txtP.setFont(FONT_MONOSPACED); - txtP.setText("0"); - - txtIP.setEditable(false); - txtIP.setFont(FONT_MONOSPACED); - txtIP.setText("0"); - - jLabel4.setText("h"); - jLabel5.setText("h"); - jLabel6.setText("h"); - - jLabel7.setText("Execution time:"); - lblTime.setFont(lblTime.getFont().deriveFont(lblTime.getFont().getStyle() | java.awt.Font.BOLD)); - lblTime.setText("0 ms"); - - jLabel8.setText("Loop level:"); - lblLoopLevel.setFont(lblLoopLevel.getFont().deriveFont(lblLoopLevel.getFont().getStyle() | java.awt.Font.BOLD)); - lblLoopLevel.setText("0"); - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel3) - .addComponent(jLabel2) - .addComponent(jLabel1)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtIP) - .addComponent(txtP) - .addComponent(txtMemP)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel4) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(jLabel5) - .addContainerGap())) - .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(jLabel6) - .addContainerGap()))) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jSeparator1) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel7) - .addComponent(jLabel8)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblLoopLevel) - .addComponent(lblTime)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()))) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) - .addComponent(txtIP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel4)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel2) - .addComponent(txtP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel3) - .addComponent(txtMemP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator1, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 7, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(lblTime)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel8) - .addComponent(lblLoopLevel))) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Run state")); + JPanel panelInternal = GUI.section("Internal state", "insets dialog", "[][grow]6[]", "[][][]6[][][]"); + panelInternal.add(GUI.label("IP:")); + panelInternal.add(txtIP, "growx"); + panelInternal.add(GUI.label("h"), "wrap"); + panelInternal.add(GUI.label("P:")); + panelInternal.add(txtP, "growx"); + panelInternal.add(GUI.label("h"), "wrap"); + panelInternal.add(GUI.label("*P:")); + panelInternal.add(txtMemP, "growx"); + panelInternal.add(GUI.label("h"), "wrap"); + panelInternal.add(new JSeparator(), "span, growx, h 2!, wrap"); + panelInternal.add(GUI.label("Execution time:")); + panelInternal.add(lblTime, "span, wrap"); + panelInternal.add(GUI.label("Loop level:")); + panelInternal.add(lblLoopLevel, "span"); lblRunState.setFont(FONT_MONOSPACED_BIG_BOLD); lblRunState.setForeground(CPU_RUN_STATE_COLOR); lblRunState.setHorizontalAlignment(SwingConstants.CENTER); - lblRunState.setText("stopped (breakpoint)"); - - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblRunState, GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblRunState) - .addContainerGap(21, Short.MAX_VALUE)) - ); - jPanel3.setBorder(BorderFactory.createTitledBorder("Memory view")); - - jScrollPane1.setBorder(null); + JPanel panelRunState = GUI.section("Run state", "insets dialog", "[grow]", "[]"); + panelRunState.add(lblRunState, "growx"); tblMemory.setFont(FONT_MONOSPACED); - tblMemory.setModel(new DefaultTableModel( - new Object[][]{ - {null, null, null, null, null} - }, - new String[]{ - "00", "01", "02", "03", "04" - } - ) { - final Class[] types = new Class[]{ - java.lang.Byte.class, java.lang.Byte.class, java.lang.Byte.class, java.lang.Byte.class, java.lang.Byte.class - }; - - public Class getColumnClass(int columnIndex) { - return types[columnIndex]; - } - }); tblMemory.setRowSelectionAllowed(false); - jScrollPane1.setViewportView(tblMemory); - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addContainerGap()) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 63, Short.MAX_VALUE) - .addContainerGap()) - ); + JPanel panelMemory = GUI.section("Memory view", "insets dialog", "[grow]", "[grow]"); + panelMemory.add(new JScrollPane(tblMemory), "grow"); - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel2, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog", "[grow]", "[][][]")); + add(panelInternal, "growx, wrap"); + add(panelRunState, "growx, wrap"); + add(panelMemory, "growx"); } private class CPUStatusListener implements CPU.CPUListener { @@ -302,6 +128,12 @@ public void internalStateChanged() { tblMemory.repaint(); } } + } + private static JTextField readOnlyField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setFont(FONT_MONOSPACED); + return field; } } diff --git a/plugins/cpu/ram-cpu/build.gradle b/plugins/cpu/ram-cpu/build.gradle index 4dd55a1ab..f557cadb3 100644 --- a/plugins/cpu/ram-cpu/build.gradle +++ b/plugins/cpu/ram-cpu/build.gradle @@ -14,8 +14,9 @@ repositories { dependencies { implementation libs.emuLib - implementation libs.slf4JApi implementation libs.jcipAnnotations + implementation libs.migLayout + implementation libs.slf4JApi memoryLib project(":plugins:memory:ram-mem") deviceLib project(":plugins:device:abstract-tape") diff --git a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java index 880fbdb67..87e3d0af9 100644 --- a/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java +++ b/plugins/cpu/ram-cpu/src/main/java/net/emustudio/plugins/cpu/ram/gui/RamStatusPanel.java @@ -3,6 +3,7 @@ package net.emustudio.plugins.cpu.ram.gui; import net.emustudio.emulib.plugins.cpu.CPU; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.ram.CpuImpl; import net.emustudio.plugins.device.abstracttape.api.AbstractTapeContext; import net.emustudio.plugins.device.abstracttape.api.TapeSymbol; @@ -13,16 +14,15 @@ public class RamStatusPanel extends JPanel { private final JLabel lblStatus = new JLabel("breakpoint"); - private final JTextField txtIP = new JTextField("0"); - private final JTextField txtInput = new JTextField("N/A"); - private final JTextField txtOutput = new JTextField("N/A"); - private final JTextField txtR0 = new JTextField("0"); + private final JTextField txtIP = readOnlyField("0"); + private final JTextField txtInput = readOnlyField("N/A"); + private final JTextField txtOutput = readOnlyField("N/A"); + private final JTextField txtR0 = readOnlyField("0"); public RamStatusPanel(final CpuImpl cpu, AbstractTapeContext input, AbstractTapeContext output) { initComponents(); cpu.addCPUListener(new CPU.CPUListener() { - @Override public void runStateChanged(CPU.RunState state) { lblStatus.setText(state.toString()); @@ -36,7 +36,6 @@ public void internalStateChanged() { } txtR0.setText(r0); txtIP.setText(String.format("%04d", cpu.getInstructionLocation())); - txtInput.setText(input.getSymbolAt(input.getHeadPosition()).map(TapeSymbol::toString).orElse("")); int outputPos = Math.max(0, output.getHeadPosition() - 1); txtOutput.setText(output.getSymbolAt(outputPos).map(TapeSymbol::toString).orElse("")); @@ -45,138 +44,35 @@ public void internalStateChanged() { } private void initComponents() { - JPanel panelInternalState = new JPanel(); - JLabel lblR0 = new JLabel("R0"); - JLabel lblIP = new JLabel("IP"); - JPanel jPanel2 = new JPanel(); - JPanel jPanel3 = new JPanel(); - JLabel lblNextInput = new JLabel("Next Input:"); - JLabel lblLastOutput = new JLabel("Last Output:"); - - panelInternalState.setBorder(BorderFactory.createTitledBorder("Internal state")); - - lblR0.setFont(FONT_MONOSPACED); - lblIP.setFont(FONT_MONOSPACED); - - txtR0.setEditable(false); - txtR0.setFont(FONT_MONOSPACED); - - txtIP.setEditable(false); - txtIP.setFont(FONT_MONOSPACED); - - GroupLayout panelInternalStateLayout = new GroupLayout(panelInternalState); - panelInternalState.setLayout(panelInternalStateLayout); - panelInternalStateLayout.setHorizontalGroup( - panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addComponent(lblR0) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtR0, GroupLayout.PREFERRED_SIZE, 120, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addComponent(lblIP) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtIP))) - .addContainerGap(64, Short.MAX_VALUE)) - ); - panelInternalStateLayout.setVerticalGroup( - panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblR0) - .addComponent(txtR0, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblIP) - .addComponent(txtIP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Run state")); + JPanel panelInternalState = GUI.section("Internal state", "insets dialog", "[][grow]", "[][]"); + panelInternalState.add(GUI.label("R0")); + panelInternalState.add(txtR0, "growx, wrap"); + panelInternalState.add(GUI.label("IP")); + panelInternalState.add(txtIP, "growx"); + + JPanel panelIO = GUI.section("Input / output", "insets dialog", "[][grow]", "[][]"); + panelIO.add(GUI.label("Next Input:")); + panelIO.add(txtInput, "growx, wrap"); + panelIO.add(GUI.label("Last Output:")); + panelIO.add(txtOutput, "growx"); lblStatus.setFont(FONT_MONOSPACED_BIG_BOLD); lblStatus.setForeground(CPU_RUN_STATE_COLOR); lblStatus.setHorizontalAlignment(SwingConstants.CENTER); - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblStatus, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblStatus) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel3.setBorder(BorderFactory.createTitledBorder("Input / output")); + JPanel panelRunState = GUI.section("Run state", "insets dialog", "[grow]", "[]"); + panelRunState.add(lblStatus, "growx"); - txtOutput.setEditable(false); - txtOutput.setFont(FONT_MONOSPACED); - - txtInput.setEditable(false); - txtInput.setFont(FONT_MONOSPACED); - - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblLastOutput) - .addComponent(lblNextInput)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtOutput, GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) - .addComponent(txtInput)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblNextInput) - .addComponent(txtInput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblLastOutput) - .addComponent(txtOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog", "[grow]", "[][][]")); + add(panelInternalState, "growx, wrap"); + add(panelIO, "growx, wrap"); + add(panelRunState, "growx"); + } - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelInternalState, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(panelInternalState, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + private static JTextField readOnlyField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setFont(FONT_MONOSPACED); + return field; } } diff --git a/plugins/cpu/rasp-cpu/build.gradle b/plugins/cpu/rasp-cpu/build.gradle index a7d10b88a..6970b01cd 100644 --- a/plugins/cpu/rasp-cpu/build.gradle +++ b/plugins/cpu/rasp-cpu/build.gradle @@ -14,8 +14,9 @@ repositories { dependencies { implementation libs.emuLib - implementation libs.slf4JApi implementation libs.jcipAnnotations + implementation libs.migLayout + implementation libs.slf4JApi memoryLib project(":plugins:memory:rasp-mem") deviceLib project(":plugins:device:abstract-tape") diff --git a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java index d7c2d267d..c66753d07 100644 --- a/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java +++ b/plugins/cpu/rasp-cpu/src/main/java/net/emustudio/plugins/cpu/rasp/gui/RaspStatusPanel.java @@ -3,6 +3,7 @@ package net.emustudio.plugins.cpu.rasp.gui; import net.emustudio.emulib.plugins.cpu.CPU; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.rasp.CpuImpl; import net.emustudio.plugins.device.abstracttape.api.AbstractTapeContext; import net.emustudio.plugins.device.abstracttape.api.TapeSymbol; @@ -13,16 +14,15 @@ public class RaspStatusPanel extends JPanel { private final JLabel lblStatus = new JLabel("breakpoint"); - private final JTextField txtIP = new JTextField("0"); - private final JTextField txtInput = new JTextField("N/A"); - private final JTextField txtOutput = new JTextField("N/A"); - private final JTextField txtR0 = new JTextField("0"); + private final JTextField txtIP = readOnlyField("0"); + private final JTextField txtInput = readOnlyField("N/A"); + private final JTextField txtOutput = readOnlyField("N/A"); + private final JTextField txtR0 = readOnlyField("0"); public RaspStatusPanel(final CpuImpl cpu, AbstractTapeContext input, AbstractTapeContext output) { initComponents(); cpu.addCPUListener(new CPU.CPUListener() { - @Override public void runStateChanged(CPU.RunState state) { lblStatus.setText(state.toString()); @@ -32,7 +32,6 @@ public void runStateChanged(CPU.RunState state) { public void internalStateChanged() { txtR0.setText(String.valueOf(cpu.getACC())); txtIP.setText(String.format("%04d", cpu.getInstructionLocation())); - txtInput.setText(input.getSymbolAt(input.getHeadPosition()).map(TapeSymbol::toString).orElse("")); int outputPos = Math.max(0, output.getHeadPosition() - 1); txtOutput.setText(output.getSymbolAt(outputPos).map(TapeSymbol::toString).orElse("")); @@ -41,138 +40,35 @@ public void internalStateChanged() { } private void initComponents() { - JPanel panelInternalState = new JPanel(); - JLabel lblR0 = new JLabel("R0"); - JLabel lblIP = new JLabel("IP"); - JPanel jPanel2 = new JPanel(); - JPanel jPanel3 = new JPanel(); - JLabel lblNextInput = new JLabel("Next Input:"); - JLabel lblLastOutput = new JLabel("Last Output:"); - - panelInternalState.setBorder(BorderFactory.createTitledBorder("Internal state")); - - lblR0.setFont(FONT_MONOSPACED); - lblIP.setFont(FONT_MONOSPACED); - - txtR0.setEditable(false); - txtR0.setFont(FONT_MONOSPACED); - - txtIP.setEditable(false); - txtIP.setFont(FONT_MONOSPACED); - - GroupLayout panelInternalStateLayout = new GroupLayout(panelInternalState); - panelInternalState.setLayout(panelInternalStateLayout); - panelInternalStateLayout.setHorizontalGroup( - panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addComponent(lblR0) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtR0, GroupLayout.PREFERRED_SIZE, 120, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addComponent(lblIP) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtIP))) - .addContainerGap(64, Short.MAX_VALUE)) - ); - panelInternalStateLayout.setVerticalGroup( - panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelInternalStateLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblR0) - .addComponent(txtR0, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInternalStateLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblIP) - .addComponent(txtIP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Run state")); + JPanel panelInternalState = GUI.section("Internal state", "insets dialog", "[][grow]", "[][]"); + panelInternalState.add(GUI.label("R0")); + panelInternalState.add(txtR0, "growx, wrap"); + panelInternalState.add(GUI.label("IP")); + panelInternalState.add(txtIP, "growx"); + + JPanel panelIO = GUI.section("Input / output", "insets dialog", "[][grow]", "[][]"); + panelIO.add(GUI.label("Next Input:")); + panelIO.add(txtInput, "growx, wrap"); + panelIO.add(GUI.label("Last Output:")); + panelIO.add(txtOutput, "growx"); lblStatus.setFont(FONT_MONOSPACED_BIG_BOLD); lblStatus.setForeground(CPU_RUN_STATE_COLOR); lblStatus.setHorizontalAlignment(SwingConstants.CENTER); - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblStatus, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblStatus) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel3.setBorder(BorderFactory.createTitledBorder("Input / output")); + JPanel panelRunState = GUI.section("Run state", "insets dialog", "[grow]", "[]"); + panelRunState.add(lblStatus, "growx"); - txtOutput.setEditable(false); - txtOutput.setFont(FONT_MONOSPACED); - - txtInput.setEditable(false); - txtInput.setFont(FONT_MONOSPACED); - - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblLastOutput) - .addComponent(lblNextInput)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtOutput, GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) - .addComponent(txtInput)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblNextInput) - .addComponent(txtInput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblLastOutput) - .addComponent(txtOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog", "[grow]", "[][][]")); + add(panelInternalState, "growx, wrap"); + add(panelIO, "growx, wrap"); + add(panelRunState, "growx"); + } - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(panelInternalState, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(panelInternalState, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); + private static JTextField readOnlyField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setFont(FONT_MONOSPACED); + return field; } } diff --git a/plugins/cpu/ssem-cpu/build.gradle b/plugins/cpu/ssem-cpu/build.gradle index de29b3971..52cbde0bb 100644 --- a/plugins/cpu/ssem-cpu/build.gradle +++ b/plugins/cpu/ssem-cpu/build.gradle @@ -22,6 +22,7 @@ repositories { dependencies { implementation libs.emuLib + implementation libs.migLayout implementation libs.slf4JApi testImplementation libs.cpuTestSuite diff --git a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java index 14ff3836b..e326f664e 100644 --- a/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java +++ b/plugins/cpu/ssem-cpu/src/main/java/net/emustudio/plugins/cpu/ssem/gui/CpuPanel.java @@ -5,6 +5,7 @@ import net.emustudio.emulib.plugins.cpu.CPU; import net.emustudio.emulib.plugins.memory.MemoryContext; import net.emustudio.emulib.runtime.helpers.NumberUtils; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.ssem.EmulatorEngine; import javax.swing.*; @@ -16,23 +17,24 @@ public class CpuPanel extends JPanel { private final EmulatorEngine engine; private final MemoryContext memory; - private JLabel lblRunState; - private JLabel lblSpeed; - private JTextField txtA; - private JTextField txtDecA; - private JTextField txtBinA; - private JTextField txtBinLine; - private JTextField txtBinMCI; - private JTextField txtBinMLine; - private JTextField txtCI; - private JTextField txtDecCI; - private JTextField txtBinCI; - private JTextField txtLine; - private JTextField txtDecLine; - private JTextField txtMCI; - private JTextField txtDecMCI; - private JTextField txtMLine; - private JTextField txtDecMLine; + + private final JLabel lblRunState = new JLabel("BREAKPOINT"); + private final JLabel lblSpeed = new JLabel("0"); + private final JTextField txtA = readOnlyField("0"); + private final JTextField txtDecA = readOnlyField("0"); + private final JTextField txtBinA = readOnlyField("0000 0000 0000 0000 0000 0000 0000 0000"); + private final JTextField txtBinLine = readOnlyField("0000 0000"); + private final JTextField txtBinMCI = readOnlyField("0000 0000 0000 0000 0000 0000 0000 0000"); + private final JTextField txtBinMLine = readOnlyField("0000 0000 0000 0000 0000 0000 0000 0000"); + private final JTextField txtCI = readOnlyField("0"); + private final JTextField txtDecCI = readOnlyField("0"); + private final JTextField txtBinCI = readOnlyField("0000 0000 0000 0000 0000 0000 0000 0000"); + private final JTextField txtLine = readOnlyField("0"); + private final JTextField txtDecLine = readOnlyField("0"); + private final JTextField txtMCI = readOnlyField("0"); + private final JTextField txtDecMCI = readOnlyField("0"); + private final JTextField txtMLine = readOnlyField("0"); + private final JTextField txtDecMLine = readOnlyField("0"); public CpuPanel(CPU cpu, EmulatorEngine engine, MemoryContext memory) { this.engine = Objects.requireNonNull(engine); @@ -43,279 +45,49 @@ public CpuPanel(CPU cpu, EmulatorEngine engine, MemoryContext memory) { lblSpeed.setText(String.format("%.2f", EmulatorEngine.INSTRUCTIONS_PER_SECOND)); } - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - // //GEN-BEGIN:initComponents private void initComponents() { - - JPanel jPanel1 = new JPanel(); - lblRunState = new JLabel("BREAKPOINT"); - JLabel jLabel7 = new JLabel("ins/s"); - lblSpeed = new JLabel("0"); - JPanel jPanel2 = new JPanel(); - JLabel jLabel2 = new JLabel("A"); - JLabel jLabel3 = new JLabel("CI"); - txtCI = new JTextField("0"); - txtDecCI = new JTextField("0"); - txtA = new JTextField("0"); - txtDecA = new JTextField("0"); - txtBinA = new JTextField("0000 0000 0000 0000 0000 0000 0000 0000"); - txtBinCI = new JTextField("0000 0000 0000 0000 0000 0000 0000 0000"); - JPanel jPanel3 = new JPanel(); - JLabel jLabel4 = new JLabel("M[CI]"); - JLabel jLabel5 = new JLabel("M[line]"); - txtMLine = new JTextField("0"); - txtDecMLine = new JTextField("0"); - txtMCI = new JTextField("0"); - txtDecMCI = new JTextField("0"); - txtBinMCI = new JTextField("0000 0000 0000 0000 0000 0000 0000 0000"); - txtBinMLine = new JTextField("0000 0000 0000 0000 0000 0000 0000 0000"); - JLabel jLabel6 = new JLabel("line"); - txtLine = new JTextField("0"); - txtDecLine = new JTextField("0"); - txtBinLine = new JTextField("0000 0000"); - - jPanel1.setBorder(BorderFactory.createTitledBorder("Run control")); - lblRunState.setFont(FONT_MONOSPACED_BIG_BOLD); lblRunState.setForeground(CPU_RUN_STATE_COLOR); - - jLabel7.setFont(jLabel7.getFont().deriveFont(jLabel7.getFont().getStyle() | java.awt.Font.BOLD)); - lblSpeed.setFont(FONT_MONOSPACED); - lblSpeed.setToolTipText("Speed"); - - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblRunState) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(lblSpeed) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel7) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(lblRunState) - .addComponent(jLabel7) - .addComponent(lblSpeed)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Registers")); - - jLabel2.setFont(FONT_MONOSPACED); - jLabel2.setToolTipText("Accumulator"); - - jLabel3.setFont(FONT_MONOSPACED); - jLabel3.setToolTipText("Control Instruction"); - - txtCI.setEditable(false); - txtCI.setFont(FONT_MONOSPACED); - txtCI.setHorizontalAlignment(JTextField.RIGHT); - - txtDecCI.setEditable(false); - txtDecCI.setFont(FONT_MONOSPACED); - txtDecCI.setHorizontalAlignment(JTextField.RIGHT); - - txtA.setEditable(false); - txtA.setFont(FONT_MONOSPACED); - txtA.setHorizontalAlignment(JTextField.RIGHT); - - txtDecA.setEditable(false); - txtDecA.setFont(FONT_MONOSPACED); - txtDecA.setHorizontalAlignment(JTextField.RIGHT); - - txtBinA.setEditable(false); - txtBinA.setFont(FONT_MONOSPACED); - txtBinA.setHorizontalAlignment(JTextField.RIGHT); - - txtBinCI.setEditable(false); - txtBinCI.setFont(FONT_MONOSPACED); - txtBinCI.setHorizontalAlignment(JTextField.RIGHT); - - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(47, 47, 47) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jLabel3, GroupLayout.Alignment.TRAILING) - .addComponent(jLabel2)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtA, GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE) - .addComponent(txtCI)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(txtDecA, GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE) - .addComponent(txtDecCI)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtBinCI) - .addComponent(txtBinA)) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel2) - .addComponent(txtA, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDecA, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBinA, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel3) - .addComponent(txtCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDecCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBinCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel3.setBorder(BorderFactory.createTitledBorder("Memory snippet")); - - jLabel4.setFont(FONT_MONOSPACED); - jLabel4.setToolTipText("Control Instruction"); - - jLabel5.setFont(FONT_MONOSPACED); - jLabel5.setToolTipText("Control Instruction"); - - txtMLine.setEditable(false); - txtMLine.setFont(FONT_MONOSPACED); - txtMLine.setHorizontalAlignment(JTextField.RIGHT); - - txtDecMLine.setEditable(false); - txtDecMLine.setFont(FONT_MONOSPACED); - txtDecMLine.setHorizontalAlignment(JTextField.RIGHT); - - txtMCI.setEditable(false); - txtMCI.setFont(FONT_MONOSPACED); - txtMCI.setHorizontalAlignment(JTextField.RIGHT); - - txtDecMCI.setEditable(false); - txtDecMCI.setFont(FONT_MONOSPACED); - txtDecMCI.setHorizontalAlignment(JTextField.RIGHT); - - txtBinMCI.setEditable(false); - txtBinMCI.setFont(FONT_MONOSPACED); - txtBinMCI.setHorizontalAlignment(JTextField.RIGHT); - - txtBinMLine.setEditable(false); - txtBinMLine.setFont(FONT_MONOSPACED); - txtBinMLine.setHorizontalAlignment(JTextField.RIGHT); - - jLabel6.setFont(FONT_MONOSPACED); - jLabel6.setToolTipText("Control Instruction"); - - txtLine.setEditable(false); - txtLine.setFont(FONT_MONOSPACED); - txtLine.setHorizontalAlignment(JTextField.RIGHT); - - txtDecLine.setEditable(false); - txtDecLine.setFont(FONT_MONOSPACED); - txtDecLine.setHorizontalAlignment(JTextField.RIGHT); - - txtBinLine.setEditable(false); - txtBinLine.setFont(FONT_MONOSPACED); - txtBinLine.setHorizontalAlignment(JTextField.RIGHT); - - GroupLayout jPanel3Layout = new GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(jLabel5) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtMLine, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtDecMLine, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtBinMLine)) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGap(14, 14, 14) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel6) - .addComponent(jLabel4)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(txtMCI, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtDecMCI, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtBinMCI)) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(txtLine, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtDecLine, GroupLayout.PREFERRED_SIZE, 81, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtBinLine))))) - .addContainerGap()) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(txtMCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDecMCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBinMCI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel6) - .addComponent(txtLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDecLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBinLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) - .addComponent(txtMLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDecMLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtBinMLine, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - }// //GEN-END:initComponents + // Run control + JPanel panelRun = GUI.section("Run control", "insets dialog", "[grow]push[]6[]", "[]"); + panelRun.add(lblRunState); + panelRun.add(lblSpeed); + panelRun.add(GUI.labelBold("ins/s")); + + // Columns: label, hex, dec, binary + // Registers + JPanel panelRegs = GUI.section("Registers", "insets dialog", "[]6[80!]6[80!]6[grow]", "[][]"); + panelRegs.add(GUI.label("A")); + panelRegs.add(txtA, "growx"); + panelRegs.add(txtDecA, "growx"); + panelRegs.add(txtBinA, "growx, wrap"); + panelRegs.add(GUI.label("CI")); + panelRegs.add(txtCI, "growx"); + panelRegs.add(txtDecCI, "growx"); + panelRegs.add(txtBinCI, "growx"); + + // Memory snippet + JPanel panelMem = GUI.section("Memory snippet", "insets dialog", "[]6[80!]6[80!]6[grow]", "[][][]"); + panelMem.add(GUI.label("M[CI]")); + panelMem.add(txtMCI, "growx"); + panelMem.add(txtDecMCI, "growx"); + panelMem.add(txtBinMCI, "growx, wrap"); + panelMem.add(GUI.label("line")); + panelMem.add(txtLine, "growx"); + panelMem.add(txtDecLine, "growx"); + panelMem.add(txtBinLine, "growx, wrap"); + panelMem.add(GUI.label("M[line]")); + panelMem.add(txtMLine, "growx"); + panelMem.add(txtDecMLine, "growx"); + panelMem.add(txtBinMLine, "growx"); + + setLayout(new net.miginfocom.swing.MigLayout("insets dialog", "[grow]", "[][][]")); + add(panelRegs, "growx, wrap"); + add(panelMem, "growx, wrap"); + add(panelRun, "growx"); + } private final class Updater implements CPU.CPUListener { @@ -371,6 +143,13 @@ private String formatBinary(int number) { private String formatBinary(int number, int length) { return formatBinaryString(number, length, 4, true); } + } + private static JTextField readOnlyField(String text) { + JTextField field = new JTextField(text); + field.setEditable(false); + field.setFont(FONT_MONOSPACED); + field.setHorizontalAlignment(JTextField.RIGHT); + return field; } } diff --git a/plugins/cpu/z80-cpu/build.gradle b/plugins/cpu/z80-cpu/build.gradle index f42bc45b4..d354cbff4 100644 --- a/plugins/cpu/z80-cpu/build.gradle +++ b/plugins/cpu/z80-cpu/build.gradle @@ -15,8 +15,9 @@ repositories { dependencies { implementation libs.emuLib - implementation libs.slf4JApi implementation libs.jcipAnnotations + implementation libs.migLayout + implementation libs.slf4JApi cpuLib project(":plugins:cpu:8080-cpu") diff --git a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java index 9d0e817b4..2d3325d13 100644 --- a/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java +++ b/plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/gui/StatusPanel.java @@ -3,13 +3,13 @@ package net.emustudio.plugins.cpu.zilogZ80.gui; import net.emustudio.emulib.plugins.cpu.CPU; +import net.emustudio.emulib.runtime.ui.GUI; import net.emustudio.plugins.cpu.intel8080.api.Context8080; import net.emustudio.plugins.cpu.zilogZ80.CpuImpl; import net.emustudio.plugins.cpu.zilogZ80.EmulatorEngine; import net.emustudio.plugins.cpu.zilogZ80.InstructionPrinter; import javax.swing.*; -import javax.swing.table.DefaultTableModel; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatByteHexString; import static net.emustudio.emulib.runtime.helpers.RadixUtils.formatWordHexString; @@ -22,46 +22,55 @@ public class StatusPanel extends JPanel { private final FlagsModel flagModel2; private volatile CPU.RunState runState = CPU.RunState.STATE_STOPPED_NORMAL; - // Variables declaration - do not modify//GEN-BEGIN:variables - private JCheckBox chkPrintInstructions; - private JLabel lblFrequency; - private JLabel lblRunState; - private JSpinner spnFrequency; - private JTable tblFlags1; - private JTable tblFlags2; - private JTextField txtA1; - private JTextField txtA2; - private JTextField txtB1; - private JTextField txtB2; - private JTextField txtBC1; - private JTextField txtBC2; - private JTextField txtC1; - private JTextField txtC2; - private JTextField txtD1; - private JTextField txtD2; - private JTextField txtDE1; - private JTextField txtDE2; - private JTextField txtE1; - private JTextField txtE2; - private JTextField txtF1; - private JTextField txtF2; - private JTextField txtH1; - private JTextField txtH2; - private JTextField txtHL1; - private JTextField txtHL2; - private JTextField txtI; - private JTextField txtIX; - private JTextField txtIY; - private JTextField txtL1; - private JTextField txtL2; - private JTextField txtPC; - private JTextField txtR; - private JTextField txtSP; + + // Set 1 + private final JTextField txtA1 = regField(); + private final JTextField txtF1 = regField(); + private final JTextField txtB1 = regField(); + private final JTextField txtC1 = regField(); + private final JTextField txtBC1 = regField(); + private final JTextField txtD1 = regField(); + private final JTextField txtE1 = regField(); + private final JTextField txtDE1 = regField(); + private final JTextField txtH1 = regField(); + private final JTextField txtL1 = regField(); + private final JTextField txtHL1 = regField(); + private final JTable tblFlags1 = new JTable(); + + // Set 2 + private final JTextField txtA2 = regField(); + private final JTextField txtF2 = regField(); + private final JTextField txtB2 = regField(); + private final JTextField txtC2 = regField(); + private final JTextField txtBC2 = regField(); + private final JTextField txtD2 = regField(); + private final JTextField txtE2 = regField(); + private final JTextField txtDE2 = regField(); + private final JTextField txtH2 = regField(); + private final JTextField txtL2 = regField(); + private final JTextField txtHL2 = regField(); + private final JTable tblFlags2 = new JTable(); + + // Extra registers + private final JTextField txtPC = regField(); + private final JTextField txtSP = regField(); + private final JTextField txtIX = regField(); + private final JTextField txtIY = regField(); + private final JTextField txtI = regField(); + private final JTextField txtR = regField(); + + // Run control + private final JLabel lblRunState = new JLabel("BREAKPOINT"); + private final JLabel lblFrequency = new JLabel("0.00 kHz"); + private final JSpinner spnFrequency; + private final JCheckBox chkPrintInstructions = new JCheckBox("Dump instructions history"); + public StatusPanel(CpuImpl cpu, Context8080 context, boolean dumpInstructions) { this.cpu = cpu; this.context = context; this.flagModel1 = new FlagsModel(0, cpu.getEngine()); this.flagModel2 = new FlagsModel(1, cpu.getEngine()); + this.spnFrequency = new JSpinner(new SpinnerNumberModel(context.getCPUFrequency(), 1, null, 100)); initComponents(); chkPrintInstructions.setSelected(dumpInstructions); @@ -143,666 +152,108 @@ public void updateGUI() { } private void initComponents() { - JTabbedPane jTabbedPane1 = new JTabbedPane(); - JPanel panelSet1 = new JPanel(); - JLabel jLabel13 = new JLabel(); - txtA1 = new JTextField(); - JLabel jLabel14 = new JLabel(); - txtB1 = new JTextField(); - txtF1 = new JTextField(); - JLabel jLabel15 = new JLabel(); - JLabel jLabel16 = new JLabel(); - txtC1 = new JTextField(); - txtD1 = new JTextField(); - JLabel jLabel17 = new JLabel(); - JLabel jLabel18 = new JLabel(); - txtH1 = new JTextField(); - JLabel jLabel19 = new JLabel(); - JLabel jLabel20 = new JLabel(); - txtE1 = new JTextField(); - txtL1 = new JTextField(); - txtHL1 = new JTextField(); - txtDE1 = new JTextField(); - txtBC1 = new JTextField(); - JLabel jLabel21 = new JLabel(); - JLabel jLabel22 = new JLabel(); - JLabel jLabel23 = new JLabel(); - JScrollPane jScrollPane2 = new JScrollPane(); - tblFlags1 = new JTable(); - JLabel jLabel24 = new JLabel(); - JPanel panelSet2 = new JPanel(); - JLabel jLabel1 = new JLabel(); - txtB2 = new JTextField(); - JLabel jLabel2 = new JLabel(); - txtC2 = new JTextField(); - JLabel jLabel3 = new JLabel(); - txtBC2 = new JTextField(); - JLabel jLabel4 = new JLabel(); - txtD2 = new JTextField(); - JLabel jLabel5 = new JLabel(); - txtE2 = new JTextField(); - JLabel jLabel6 = new JLabel(); - txtDE2 = new JTextField(); - JLabel jLabel7 = new JLabel(); - txtH2 = new JTextField(); - JLabel jLabel8 = new JLabel(); - txtL2 = new JTextField(); - JLabel jLabel9 = new JLabel(); - txtHL2 = new JTextField(); - JLabel jLabel10 = new JLabel(); - txtA2 = new JTextField(); - JLabel jLabel11 = new JLabel(); - txtF2 = new JTextField(); - JScrollPane jScrollPane1 = new JScrollPane(); - tblFlags2 = new JTable(); - JLabel jLabel12 = new JLabel(); - JPanel jPanel1 = new JPanel(); - JLabel jLabel26 = new JLabel(); - txtPC = new JTextField(); - JLabel jLabel25 = new JLabel(); - txtSP = new JTextField(); - JLabel jLabel27 = new JLabel(); - txtIX = new JTextField(); - JLabel jLabel28 = new JLabel(); - txtIY = new JTextField(); - JLabel jLabel29 = new JLabel(); - txtI = new JTextField(); - JLabel jLabel30 = new JLabel(); - txtR = new JTextField(); - JPanel jPanel2 = new JPanel(); - lblRunState = new JLabel(); - JSeparator jSeparator1 = new JSeparator(); - JLabel jLabel31 = new JLabel(); - spnFrequency = new JSpinner(); - JLabel jLabel33 = new JLabel(); - JLabel jLabel35 = new JLabel(); - lblFrequency = new JLabel(); - chkPrintInstructions = new JCheckBox(); - - jLabel13.setFont(FONT_MONOSPACED); - jLabel13.setText("A"); - - txtA1.setEditable(false); - txtA1.setFont(FONT_MONOSPACED); - txtA1.setText("00"); - - jLabel14.setFont(FONT_MONOSPACED_BOLD); - jLabel14.setText("B"); - - txtB1.setEditable(false); - txtB1.setFont(FONT_MONOSPACED); - txtB1.setText("00"); - - txtF1.setEditable(false); - txtF1.setFont(FONT_MONOSPACED); - txtF1.setText("00"); - - jLabel15.setFont(FONT_MONOSPACED_BOLD); - jLabel15.setText("F"); - - jLabel16.setFont(FONT_MONOSPACED_BOLD); - jLabel16.setText("C"); - - txtC1.setEditable(false); - txtC1.setFont(FONT_MONOSPACED); - txtC1.setText("00"); - - txtD1.setEditable(false); - txtD1.setFont(FONT_MONOSPACED); - txtD1.setText("00"); - - jLabel17.setFont(FONT_MONOSPACED_BOLD); - jLabel17.setText("D"); - - jLabel18.setFont(FONT_MONOSPACED_BOLD); - jLabel18.setText("H"); - - txtH1.setEditable(false); - txtH1.setFont(FONT_MONOSPACED); - txtH1.setText("00"); - - jLabel19.setFont(FONT_MONOSPACED_BOLD); - jLabel19.setText("L"); - - jLabel20.setFont(FONT_MONOSPACED_BOLD); - jLabel20.setText("E"); - - txtE1.setEditable(false); - txtE1.setFont(FONT_MONOSPACED); - txtE1.setText("00"); - - txtL1.setEditable(false); - txtL1.setFont(FONT_MONOSPACED); - txtL1.setText("00"); - - txtHL1.setEditable(false); - txtHL1.setFont(FONT_MONOSPACED); - txtHL1.setText("00"); - - txtDE1.setEditable(false); - txtDE1.setFont(FONT_MONOSPACED); - txtDE1.setText("00"); - - txtBC1.setEditable(false); - txtBC1.setFont(FONT_MONOSPACED); - txtBC1.setText("00"); - - jLabel21.setFont(FONT_MONOSPACED_BOLD); - jLabel21.setText("BC"); - - jLabel22.setFont(FONT_MONOSPACED_BOLD); - jLabel22.setText("DE"); - - jLabel23.setFont(FONT_MONOSPACED_BOLD); - jLabel23.setText("HL"); - - jScrollPane2.setBorder(null); - - tblFlags1.setModel(new DefaultTableModel( - new Object[][]{ - - }, - new String[]{ - - } - )); - tblFlags1.setRowSelectionAllowed(false); - jScrollPane2.setViewportView(tblFlags1); - - jLabel24.setText("Flags:"); - - GroupLayout panelSet1Layout = new GroupLayout(panelSet1); - panelSet1.setLayout(panelSet1Layout); - panelSet1Layout.setHorizontalGroup( - panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(panelSet1Layout.createSequentialGroup() - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel17) - .addComponent(jLabel14)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addGroup(panelSet1Layout.createSequentialGroup() - .addComponent(txtB1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel16)) - .addGroup(panelSet1Layout.createSequentialGroup() - .addComponent(txtD1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel20))) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(txtC1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addComponent(txtE1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel21) - .addComponent(jLabel22)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtBC1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDE1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE))) - .addGroup(panelSet1Layout.createSequentialGroup() - .addComponent(jLabel18) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtH1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel19) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtL1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel23) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtHL1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelSet1Layout.createSequentialGroup() - .addComponent(jLabel13) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtA1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel15) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtF1, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addComponent(jLabel24)) - .addContainerGap(24, Short.MAX_VALUE)) - ); - panelSet1Layout.setVerticalGroup( - panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel13) - .addComponent(txtA1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel15) - .addComponent(txtF1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel14) - .addComponent(txtB1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel16) - .addComponent(txtC1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel21) - .addComponent(txtBC1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel17) - .addComponent(txtD1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(txtE1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel20) - .addComponent(txtDE1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel22))) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel18) - .addComponent(txtH1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel19) - .addComponent(txtL1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtHL1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel23)) - .addGap(9, 9, 9) - .addComponent(jLabel24) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE) - .addContainerGap(20, Short.MAX_VALUE)) - ); - - jTabbedPane1.addTab("Set 1", panelSet1); - - jLabel1.setFont(FONT_MONOSPACED_BOLD); - jLabel1.setText("B"); - - txtB2.setEditable(false); - txtB2.setFont(FONT_MONOSPACED); - txtB2.setText("00"); - - jLabel2.setFont(FONT_MONOSPACED_BOLD); - jLabel2.setText("C"); - - txtC2.setEditable(false); - txtC2.setFont(FONT_MONOSPACED); - txtC2.setText("00"); - - jLabel3.setFont(FONT_MONOSPACED_BOLD); - jLabel3.setText("BC"); - - txtBC2.setEditable(false); - txtBC2.setFont(FONT_MONOSPACED); - txtBC2.setText("00"); - - jLabel4.setFont(FONT_MONOSPACED_BOLD); - jLabel4.setText("D"); - - txtD2.setEditable(false); - txtD2.setFont(FONT_MONOSPACED); - txtD2.setText("00"); - - jLabel5.setFont(FONT_MONOSPACED_BOLD); - jLabel5.setText("E"); - - txtE2.setEditable(false); - txtE2.setFont(FONT_MONOSPACED); - txtE2.setText("00"); - - jLabel6.setFont(FONT_MONOSPACED_BOLD); - jLabel6.setText("DE"); - - txtDE2.setEditable(false); - txtDE2.setFont(FONT_MONOSPACED); - txtDE2.setText("00"); - - jLabel7.setFont(FONT_MONOSPACED_BOLD); - jLabel7.setText("H"); - - txtH2.setEditable(false); - txtH2.setFont(FONT_MONOSPACED); - txtH2.setText("00"); - - jLabel8.setFont(FONT_MONOSPACED_BOLD); - jLabel8.setText("L"); - - txtL2.setEditable(false); - txtL2.setFont(FONT_MONOSPACED); - txtL2.setText("00"); - - jLabel9.setFont(FONT_MONOSPACED_BOLD); - jLabel9.setText("HL"); - - txtHL2.setEditable(false); - txtHL2.setFont(FONT_MONOSPACED); - txtHL2.setText("00"); - - jLabel10.setFont(FONT_MONOSPACED_BOLD); - jLabel10.setText("A"); - - txtA2.setEditable(false); - txtA2.setFont(FONT_MONOSPACED); - txtA2.setText("00"); - - jLabel11.setFont(FONT_MONOSPACED_BOLD); - jLabel11.setText("F"); - - txtF2.setEditable(false); - txtF2.setFont(FONT_MONOSPACED); - txtF2.setText("00"); - - jScrollPane1.setBorder(null); - - tblFlags2.setModel(new DefaultTableModel( - new Object[][]{ - - }, - new String[]{ - - } - )); - tblFlags2.setRowSelectionAllowed(false); - jScrollPane1.setViewportView(tblFlags2); - - jLabel12.setText("Flags:"); - - GroupLayout panelSet2Layout = new GroupLayout(panelSet2); - panelSet2.setLayout(panelSet2Layout); - panelSet2Layout.setHorizontalGroup( - panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(panelSet2Layout.createSequentialGroup() - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel4) - .addComponent(jLabel1)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false) - .addGroup(panelSet2Layout.createSequentialGroup() - .addComponent(txtB2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel2)) - .addGroup(panelSet2Layout.createSequentialGroup() - .addComponent(txtD2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel5))) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(txtC2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addComponent(txtE2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jLabel3) - .addComponent(jLabel6)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(txtBC2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addComponent(txtDE2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE))) - .addGroup(panelSet2Layout.createSequentialGroup() - .addComponent(jLabel7) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtH2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel8) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtL2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel9) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtHL2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelSet2Layout.createSequentialGroup() - .addComponent(jLabel10) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtA2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel11) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtF2, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addComponent(jLabel12)) - .addContainerGap(24, Short.MAX_VALUE)) - ); - panelSet2Layout.setVerticalGroup( - panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel10) - .addComponent(txtA2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel11) - .addComponent(txtF2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) - .addComponent(txtB2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel2) - .addComponent(txtC2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel3) - .addComponent(txtBC2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(txtD2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(txtE2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5) - .addComponent(txtDE2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6))) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSet2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(txtH2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel8) - .addComponent(txtL2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtHL2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9)) - .addGap(9, 9, 9) - .addComponent(jLabel12) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 54, GroupLayout.PREFERRED_SIZE) - .addContainerGap(20, Short.MAX_VALUE)) - ); - - jTabbedPane1.addTab("Set 2", panelSet2); - - jLabel26.setFont(FONT_MONOSPACED_BOLD); - jLabel26.setText("PC"); - - txtPC.setEditable(false); - txtPC.setFont(FONT_MONOSPACED); - txtPC.setText("00"); - - jLabel25.setFont(FONT_MONOSPACED_BOLD); - jLabel25.setText("SP"); - - txtSP.setEditable(false); - txtSP.setFont(FONT_MONOSPACED); - txtSP.setText("00"); - - jLabel27.setFont(FONT_MONOSPACED_BOLD); - jLabel27.setText("IX"); - - txtIX.setEditable(false); - txtIX.setFont(FONT_MONOSPACED); - txtIX.setText("00"); - - jLabel28.setFont(FONT_MONOSPACED_BOLD); - jLabel28.setText("IY"); - - txtIY.setEditable(false); - txtIY.setFont(FONT_MONOSPACED); - txtIY.setText("00"); - - jLabel29.setFont(FONT_MONOSPACED_BOLD); - jLabel29.setText("I"); - - txtI.setEditable(false); - txtI.setFont(FONT_MONOSPACED); - txtI.setText("00"); - - jLabel30.setFont(FONT_MONOSPACED_BOLD); - jLabel30.setText("R"); - - txtR.setEditable(false); - txtR.setFont(FONT_MONOSPACED); - txtR.setText("00"); - - GroupLayout jPanel1Layout = new GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jLabel25) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtSP, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addGap(10, 10, 10) - .addComponent(jLabel28) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtIY, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jLabel26) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtPC, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE) - .addGap(10, 10, 10) - .addComponent(jLabel27) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtIX, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jLabel29) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtI, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jLabel30) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(txtR, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE))) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel26) - .addComponent(txtPC, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtIX, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel27) - .addComponent(jLabel29) - .addComponent(txtI, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel28) - .addComponent(txtIY, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(txtSP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel25) - .addComponent(jLabel30) - .addComponent(txtR, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jPanel2.setBorder(BorderFactory.createTitledBorder("Run control")); - lblRunState.setFont(FONT_MONOSPACED_BIG_BOLD); lblRunState.setForeground(CPU_RUN_STATE_COLOR); - lblRunState.setText("BREAKPOINT"); - - jLabel31.setText("CPU Frequency:"); - - spnFrequency.setModel(new SpinnerNumberModel(context.getCPUFrequency(), 1, null, 100)); + lblFrequency.setFont(lblFrequency.getFont().deriveFont(java.awt.Font.BOLD)); spnFrequency.setName("CPU frequency"); - jLabel33.setFont(jLabel33.getFont().deriveFont(jLabel33.getFont().getStyle() | java.awt.Font.BOLD)); - jLabel33.setText("kHz"); - - jLabel35.setText("Runtime frequency:"); + // Tabbed register sets + JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.addTab("Set 1", createRegisterSetPanel( + txtA1, txtF1, txtB1, txtC1, txtBC1, txtD1, txtE1, txtDE1, txtH1, txtL1, txtHL1, tblFlags1)); + tabbedPane.addTab("Set 2", createRegisterSetPanel( + txtA2, txtF2, txtB2, txtC2, txtBC2, txtD2, txtE2, txtDE2, txtH2, txtL2, txtHL2, tblFlags2)); + + // Extra registers: PC IX I / SP IY R + JPanel panelExtra = GUI.panel("insets dialog", "[]6[66!]10[]6[66!]10[]6[66!]", "[][]"); + panelExtra.add(GUI.labelBold("PC")); + panelExtra.add(txtPC, "growx"); + panelExtra.add(GUI.labelBold("IX")); + panelExtra.add(txtIX, "growx"); + panelExtra.add(GUI.labelBold("I")); + panelExtra.add(txtI, "growx, wrap"); + panelExtra.add(GUI.labelBold("SP")); + panelExtra.add(txtSP, "growx"); + panelExtra.add(GUI.labelBold("IY")); + panelExtra.add(txtIY, "growx"); + panelExtra.add(GUI.labelBold("R")); + panelExtra.add(txtR, "growx"); + + // Run control + JPanel panelRun = GUI.section("Run control", "insets dialog", "[]6[]6[]push[]", "[]6[]6[]6[]12[]"); + panelRun.add(lblRunState, "span, wrap"); + panelRun.add(new JSeparator(), "span, growx, wrap"); + panelRun.add(GUI.label("CPU Frequency:")); + panelRun.add(spnFrequency, "w 91!"); + panelRun.add(GUI.labelBold("kHz"), "wrap"); + panelRun.add(GUI.label("Runtime frequency:")); + panelRun.add(lblFrequency, "span, wrap"); + chkPrintInstructions.addActionListener(this::chkPrintInstructionsActionPerformed); + panelRun.add(chkPrintInstructions, "span"); - lblFrequency.setFont(lblFrequency.getFont().deriveFont(lblFrequency.getFont().getStyle() | java.awt.Font.BOLD)); - lblFrequency.setText("0.00 kHz"); + setLayout(new net.miginfocom.swing.MigLayout("insets dialog", "[grow]", "[][][]")); + add(tabbedPane, "growx, wrap"); + add(panelExtra, "growx, wrap"); + add(panelRun, "growx"); + } - chkPrintInstructions.setText("Dump instructions history"); - chkPrintInstructions.addActionListener(this::chkPrintInstructionsActionPerformed); + private JPanel createRegisterSetPanel( + JTextField txtA, JTextField txtF, + JTextField txtB, JTextField txtC, JTextField txtBC, + JTextField txtD, JTextField txtE, JTextField txtDE, + JTextField txtH, JTextField txtL, JTextField txtHL, + JTable tblFlags) { + + JPanel panel = GUI.panel("insets dialog", "[]6[66!]6[]6[66!]6[]6[66!]", "[][][][]6[]6[54!]"); + + panel.add(GUI.labelBold("A")); + panel.add(txtA, "growx"); + panel.add(GUI.labelBold("F")); + panel.add(txtF, "growx, wrap"); + + panel.add(GUI.labelBold("B")); + panel.add(txtB, "growx"); + panel.add(GUI.labelBold("C")); + panel.add(txtC, "growx"); + panel.add(GUI.labelBold("BC")); + panel.add(txtBC, "growx, wrap"); + + panel.add(GUI.labelBold("D")); + panel.add(txtD, "growx"); + panel.add(GUI.labelBold("E")); + panel.add(txtE, "growx"); + panel.add(GUI.labelBold("DE")); + panel.add(txtDE, "growx, wrap"); + + panel.add(GUI.labelBold("H")); + panel.add(txtH, "growx"); + panel.add(GUI.labelBold("L")); + panel.add(txtL, "growx"); + panel.add(GUI.labelBold("HL")); + panel.add(txtHL, "growx, wrap"); + + panel.add(GUI.label("Flags:"), "span, wrap"); + + tblFlags.setRowSelectionAllowed(false); + JScrollPane scrollPane = new JScrollPane(tblFlags); + scrollPane.setBorder(null); + panel.add(scrollPane, "span, growx, h 54!"); + + return panel; + } - GroupLayout jPanel2Layout = new GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(jSeparator1) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addComponent(lblRunState) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel31) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spnFrequency, GroupLayout.PREFERRED_SIZE, 91, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel33)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel35) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(lblFrequency)) - .addComponent(chkPrintInstructions)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(lblRunState) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jSeparator1, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel31) - .addComponent(spnFrequency, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel33)) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) - .addComponent(jLabel35) - .addComponent(lblFrequency)) - .addGap(18, 18, 18) - .addComponent(chkPrintInstructions) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - GroupLayout layout = new GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) - .addComponent(jPanel2, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jTabbedPane1, GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jTabbedPane1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - }// //GEN-END:initComponents - - private void chkPrintInstructionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkPrintInstructionsActionPerformed + private void chkPrintInstructionsActionPerformed(java.awt.event.ActionEvent evt) { if (chkPrintInstructions.isSelected()) { cpu.getEngine().setDispatchListener(new InstructionPrinter(cpu.getDisassembler(), cpu.getEngine(), true, System.err)); } else { cpu.getEngine().setDispatchListener(null); } - }//GEN-LAST:event_chkPrintInstructionsActionPerformed - // End of variables declaration//GEN-END:variables + } + + private static JTextField regField() { + JTextField field = new JTextField("00"); + field.setEditable(false); + field.setFont(FONT_MONOSPACED); + return field; + } } From 3da8f587493663cd093862b9b7a31c6af88b7c43 Mon Sep 17 00:00:00 2001 From: Peter Jakubco Date: Mon, 16 Feb 2026 01:00:46 +0100 Subject: [PATCH 11/11] Add Maven Central Portal snapshots URL --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 984af493e..47929ffb3 100644 --- a/build.gradle +++ b/build.gradle @@ -89,5 +89,8 @@ subprojects { maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } + maven { + url 'https://central.sonatype.com/repository/maven-snapshots/' + } } }