From b18e58c3f0b11f2816b214272c80b1c95acfadc0 Mon Sep 17 00:00:00 2001 From: Lorna Date: Mon, 27 Apr 2026 16:40:28 -0400 Subject: [PATCH] Add preference to toggle delete measurement confirmation dialog (fixes #783) --- .../org/weasis/core/api/service/UICore.java | 1 + .../core/ui/model/AbstractGraphicModel.java | 19 ++++++++++++------- .../weasis/core/ui/pref/GeneralSetting.java | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/weasis-core/src/main/java/org/weasis/core/api/service/UICore.java b/weasis-core/src/main/java/org/weasis/core/api/service/UICore.java index 1315202ac3..8caeaefea6 100644 --- a/weasis-core/src/main/java/org/weasis/core/api/service/UICore.java +++ b/weasis-core/src/main/java/org/weasis/core/api/service/UICore.java @@ -76,6 +76,7 @@ public final class UICore { public static final String P_FORMAT_CODE = "locale.format.code"; public static final String CONFIRM_CLOSE = "weasis.confirm.closing"; + public static final String CONFIRM_DELETE_MEASUREMENT = "weasis.confirm.delete.measurement"; public static final String LINUX_WINDOWS_DECORATION = "weasis.linux.windows.decoration"; public static final String USE_SYSTEM_FILE_CHOOSER = "weasis.use.system.file.chooser"; private static final Logger LOGGER = LoggerFactory.getLogger(UICore.class); diff --git a/weasis-core/src/main/java/org/weasis/core/ui/model/AbstractGraphicModel.java b/weasis-core/src/main/java/org/weasis/core/ui/model/AbstractGraphicModel.java index 8b6483dbe7..b866549c2d 100755 --- a/weasis-core/src/main/java/org/weasis/core/ui/model/AbstractGraphicModel.java +++ b/weasis-core/src/main/java/org/weasis/core/ui/model/AbstractGraphicModel.java @@ -34,8 +34,10 @@ import javax.swing.JOptionPane; import org.weasis.core.Messages; import org.weasis.core.api.gui.util.ActionW; +import org.weasis.core.api.gui.util.GuiUtils; import org.weasis.core.api.image.util.MeasurableLayer; import org.weasis.core.api.media.data.ImageElement; +import org.weasis.core.api.service.UICore; import org.weasis.core.ui.editor.image.Canvas; import org.weasis.core.ui.editor.image.MeasureToolBar; import org.weasis.core.ui.editor.image.ViewCanvas; @@ -561,14 +563,17 @@ public void deleteSelectedGraphics(Canvas canvas, Boolean warningMessage) { List list = getSelectedGraphics(); if (!list.isEmpty()) { int response = 0; - if (warningMessage) { + boolean confirmPref = GuiUtils.getUICore() + .getSystemPreferences() + .getBooleanProperty(UICore.CONFIRM_DELETE_MEASUREMENT, true); + if (warningMessage && confirmPref) { response = - JOptionPane.showConfirmDialog( - canvas.getJComponent(), - String.format(Messages.getString("AbstractLayerModel.del_conf"), list.size()), - Messages.getString("AbstractLayerModel.del_graphs"), - JOptionPane.YES_NO_OPTION, - JOptionPane.WARNING_MESSAGE); + JOptionPane.showConfirmDialog( + canvas.getJComponent(), + String.format(Messages.getString("AbstractLayerModel.del_conf"), list.size()), + Messages.getString("AbstractLayerModel.del_graphs"), + JOptionPane.YES_NO_OPTION, + JOptionPane.WARNING_MESSAGE); } if (Objects.equals(response, 0)) { list.forEach(Graphic::fireRemoveAction); diff --git a/weasis-core/src/main/java/org/weasis/core/ui/pref/GeneralSetting.java b/weasis-core/src/main/java/org/weasis/core/ui/pref/GeneralSetting.java index 7bd85ca0b8..ebd9ceecda 100755 --- a/weasis-core/src/main/java/org/weasis/core/ui/pref/GeneralSetting.java +++ b/weasis-core/src/main/java/org/weasis/core/ui/pref/GeneralSetting.java @@ -30,6 +30,9 @@ public class GeneralSetting extends AbstractItemDialogPage { private final JCheckBox checkboxConfirmClosing = new JCheckBox(Messages.getString("GeneralSetting.closingConfirmation")); + private final JCheckBox checkboxConfirmDeleteMeasurement = + new JCheckBox("Confirm delete measurement"); + private final JPanel menuPanel = new JPanel(); public GeneralSetting(PreferenceDialog dialog) { @@ -60,6 +63,7 @@ public GeneralSetting(PreferenceDialog dialog) { private void jbInit() { add(GuiUtils.getFlowLayoutPanel(0, ITEM_SEPARATOR_LARGE, checkboxConfirmClosing)); + add(GuiUtils.getFlowLayoutPanel(0, ITEM_SEPARATOR_LARGE, checkboxConfirmDeleteMeasurement)); add(GuiUtils.boxVerticalStrut(BLOCK_SEPARATOR)); add(GuiUtils.boxYLastElement(LAST_FILLER_HEIGHT)); @@ -74,6 +78,8 @@ public JPanel getMenuPanel() { protected void initialize() { WProperties preferences = GuiUtils.getUICore().getSystemPreferences(); checkboxConfirmClosing.setSelected(preferences.getBooleanProperty(UICore.CONFIRM_CLOSE, false)); + checkboxConfirmDeleteMeasurement.setSelected( + preferences.getBooleanProperty(UICore.CONFIRM_DELETE_MEASUREMENT, true)); } @Override @@ -85,13 +91,21 @@ public void closeAdditionalWindow() { GuiUtils.getUICore() .getSystemPreferences() .putBooleanProperty(UICore.CONFIRM_CLOSE, checkboxConfirmClosing.isSelected()); + + GuiUtils.getUICore() + .getSystemPreferences() + .putBooleanProperty(UICore.CONFIRM_DELETE_MEASUREMENT, checkboxConfirmDeleteMeasurement.isSelected()); } + @Override public void resetToDefaultValues() { GuiUtils.getUICore() .getSystemPreferences() .resetProperty(UICore.CONFIRM_CLOSE, Boolean.FALSE.toString()); + GuiUtils.getUICore() + .getSystemPreferences() + .resetProperty(UICore.CONFIRM_DELETE_MEASUREMENT, Boolean.TRUE.toString()); initialize(); } }