From 7cdae099f07a27f25773471148e6d9ac641f2187 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Fri, 8 Jan 2016 10:59:08 +0100 Subject: [PATCH] close confirmation fix --- src/com/jpexs/decompiler/flash/gui/Main.java | 14 ++++--- .../decompiler/flash/gui/MainFrameMenu.java | 3 +- .../decompiler/flash/gui/MainFrameRibbon.java | 2 +- .../jpexs/decompiler/flash/gui/MainPanel.java | 4 +- src/com/jpexs/decompiler/flash/gui/View.java | 41 +++++++++++-------- 5 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 672f09df2..4d7a61e63 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -1163,7 +1163,7 @@ public class Main { } if (mainFrame != null) { mainFrame.setVisible(false); - mainFrame.getPanel().closeAll(); + mainFrame.getPanel().closeAll(false); mainFrame.dispose(); mainFrame = null; } @@ -1210,7 +1210,7 @@ public class Main { public static OpenFileResult openFile(SWFSourceInfo[] newSourceInfos, Runnable executeAfterOpen) { if (mainFrame != null && !Configuration.openMultipleFiles.get()) { sourceInfos.clear(); - mainFrame.getPanel().closeAll(); + mainFrame.getPanel().closeAll(false); mainFrame.setVisible(false); Helper.freeMem(); } @@ -1227,9 +1227,13 @@ public class Main { mainFrame.getPanel().close(swf); } - public static void closeAll() { - sourceInfos.clear(); - mainFrame.getPanel().closeAll(); + public static boolean closeAll() { + boolean closeResult = mainFrame.getPanel().closeAll(true); + if (closeResult) { + sourceInfos.clear(); + } + + return closeResult; } public static boolean saveFileDialog(SWF swf, final SaveFileMode mode) { diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index 1b75b5b30..e2dbbeb80 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -226,8 +226,7 @@ public abstract class MainFrameMenu implements MenuBuilder { } if (swf != null) { - Main.closeAll(); - return true; + return Main.closeAll(); } return false; diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java index a95df17f8..fb010b285 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java @@ -147,7 +147,7 @@ public final class MainFrameRibbon extends AppRibbonFrame { } - boolean closeResult = panel.closeAll(); + boolean closeResult = panel.closeAll(true); if (closeResult) { Main.exit(); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 71b2816ae..bfd870f5b 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -852,8 +852,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se return false; } - public boolean closeAll() { - if (isModified()) { + public boolean closeAll(boolean showCloseConfirmation) { + if (showCloseConfirmation && isModified()) { boolean closeConfirmResult = closeConfirmation(swfs.size() == 1 ? swfs.get(0) : null); if (!closeConfirmResult) { return false; diff --git a/src/com/jpexs/decompiler/flash/gui/View.java b/src/com/jpexs/decompiler/flash/gui/View.java index 115e1c8e4..833da13a8 100644 --- a/src/com/jpexs/decompiler/flash/gui/View.java +++ b/src/com/jpexs/decompiler/flash/gui/View.java @@ -474,22 +474,30 @@ public class View { public static int showConfirmDialog(final Component parentComponent, String message, final String title, final int optionType, final int messageType, ConfigurationItem showAgainConfig, int defaultOption) { - JLabel warLabel = new JLabel("" + message.replace("\r\n", "
") + ""); - final JPanel warPanel = new JPanel(new BorderLayout()); - warPanel.add(warLabel, BorderLayout.CENTER); - JCheckBox donotShowAgainCheckBox = new JCheckBox(AppStrings.translate("message.confirm.donotshowagain")); - donotShowAgainCheckBox.setSelected(!showAgainConfig.get()); - warPanel.add(donotShowAgainCheckBox, BorderLayout.SOUTH); + JCheckBox donotShowAgainCheckBox = null; + JPanel warPanel = null; + if (showAgainConfig != null) { + if (!showAgainConfig.get()) { + return defaultOption; + } - if (donotShowAgainCheckBox.isSelected()) { - return defaultOption; + JLabel warLabel = new JLabel("" + message.replace("\r\n", "
") + ""); + warPanel = new JPanel(new BorderLayout()); + warPanel.add(warLabel, BorderLayout.CENTER); + donotShowAgainCheckBox = new JCheckBox(AppStrings.translate("message.confirm.donotshowagain")); + warPanel.add(donotShowAgainCheckBox, BorderLayout.SOUTH); } final int ret[] = new int[1]; + final Object messageObj = warPanel == null ? message : warPanel; execInEventDispatch(() -> { - ret[0] = JOptionPane.showConfirmDialog(parentComponent, warPanel, title, optionType, messageType); + ret[0] = JOptionPane.showConfirmDialog(parentComponent, messageObj, title, optionType, messageType); }); - showAgainConfig.set(!donotShowAgainCheckBox.isSelected()); + + if (donotShowAgainCheckBox != null) { + showAgainConfig.set(!donotShowAgainCheckBox.isSelected()); + } + return ret[0]; } @@ -501,22 +509,23 @@ public class View { execInEventDispatch(() -> { Object msg = message; - JCheckBox donotShowAgainCheckBox = new JCheckBox(AppStrings.translate("message.confirm.donotshowagain")); + JCheckBox donotShowAgainCheckBox = null; if (showAgainConfig != null) { + if (!showAgainConfig.get()) { + return; + } + JLabel warLabel = new JLabel("" + message.replace("\r\n", "
") + ""); final JPanel warPanel = new JPanel(new BorderLayout()); warPanel.add(warLabel, BorderLayout.CENTER); - donotShowAgainCheckBox.setSelected(!showAgainConfig.get()); + donotShowAgainCheckBox = new JCheckBox(AppStrings.translate("message.confirm.donotshowagain")); warPanel.add(donotShowAgainCheckBox, BorderLayout.SOUTH); msg = warPanel; - if (donotShowAgainCheckBox.isSelected()) { - return; - } } final Object fmsg = msg; JOptionPane.showMessageDialog(parentComponent, fmsg, title, messageType); - if (showAgainConfig != null) { + if (donotShowAgainCheckBox != null) { showAgainConfig.set(!donotShowAgainCheckBox.isSelected()); } });