From dac5699075be56e9022775a67aeee6319e07756c Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Wed, 15 Dec 2021 10:21:33 +0100 Subject: [PATCH] #184 - prevent to open settings view of one pad multiple times --- .../desktop/pad/DesktopPadViewController.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index e9db0c64..4791b906 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -34,6 +34,8 @@ public class DesktopPadViewController extends AbstractPadViewController implemen private final DesktopPadView padView; private Pad pad; + private PadSettingsViewController padSettingsViewController; + private final PadLockedListener padLockedListener; private final PadStatusListener padStatusListener; private final PadContentListener padContentListener; @@ -204,21 +206,26 @@ public class DesktopPadViewController extends AbstractPadViewController implemen } private void onSettings() { - GlobalSettings settings = PlayPadPlugin.getInstance().getGlobalSettings(); - IMainViewController mvc = PlayPadPlugin.getInstance().getMainViewController(); + final GlobalSettings globalSettings = PlayPadPlugin.getInstance().getGlobalSettings(); + final IMainViewController mvc = PlayPadPlugin.getInstance().getMainViewController(); if (mvc != null) { - if (pad.getProject() != null && settings.isLiveMode() && settings.isLiveModeSettings() && pad.getProject().getActivePlayers() > 0) { + if (pad.getProject() != null && globalSettings.isLiveMode() && globalSettings.isLiveModeSettings() && pad.getProject().getActivePlayers() > 0) { return; } - PadSettingsViewController padSettingsViewController = new PadSettingsViewController(pad, mvc); - padSettingsViewController.getStageContainer().ifPresent(nvcStage -> nvcStage.addCloseHook(() -> { - if (padView != null && pad != null) - padView.setTriggerLabelActive(pad.getPadSettings().hasTriggerItems()); - return true; - })); - padSettingsViewController.getStageContainer().ifPresent(NVCStage::show); + if (padSettingsViewController == null) { + padSettingsViewController = new PadSettingsViewController(pad, mvc); + padSettingsViewController.getStageContainer().ifPresent(nvcStage -> nvcStage.addCloseHook(() -> { + if (padView != null && pad != null) + padView.setTriggerLabelActive(pad.getPadSettings().hasTriggerItems()); + padSettingsViewController = null; + return true; + })); + padSettingsViewController.getStageContainer().ifPresent(NVCStage::show); + } else { + padSettingsViewController.getStageContainer().ifPresent(stage -> stage.getStage().toFront()); + } } } -- GitLab