From 5360342bb28411fd4bccc6968ef76536093e0327 Mon Sep 17 00:00:00 2001 From: Carlson Date: Mon, 24 Jul 2023 11:28:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=A8=A1=E6=9D=BF=E6=97=B6=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=85=B6=E5=AE=83=E7=B1=BB=E5=9E=8B=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=98=AF=E5=90=A6=E4=BF=9D=E5=AD=98=20#REPORT-99959?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/file/SaveSomeTemplatePane.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java index 0bdd48b359..fecd39129c 100644 --- a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java @@ -3,7 +3,6 @@ package com.fr.design.file; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.dialog.FineJOptionPane; import com.fr.design.event.StateChangeListener; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icontainer.UIScrollPane; @@ -15,14 +14,19 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.general.ComparatorUtils; - import com.fr.log.FineLoggerFactory; import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.awt.event.*; +import javax.swing.AbstractListModel; +import javax.swing.BorderFactory; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Window; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.ArrayList; /** @@ -204,6 +208,7 @@ public class SaveSomeTemplatePane extends BasicPane { for (int i = 0; i < opendedTemplate.size(); i++) { //满足关闭条件的才继续判断文件是否发生了改动 boolean needClose = option == null || option.shouldClose(opendedTemplate.get(i), currentIndex, i); + needClose &= ComparatorUtils.equals(opendedTemplate.get(i).getTemplateTabOperatorType(), currentTemplate.getTemplateTabOperatorType()); if (needClose && isneedToAdd(opendedTemplate.get(i), currentTemplate)) { unSavedTemplate.add(opendedTemplate.get(i)); } From 040ffc520ca1139c408ba7843d07a59b03142086 Mon Sep 17 00:00:00 2001 From: Carlson Date: Mon, 24 Jul 2023 11:30:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=A8=A1=E6=9D=BF=E6=97=B6=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=85=B6=E5=AE=83=E7=B1=BB=E5=9E=8B=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=98=AF=E5=90=A6=E4=BF=9D=E5=AD=98=20#REPORT-99959?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/file/SaveSomeTemplatePane.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java index fecd39129c..196c08cbb2 100644 --- a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java @@ -3,6 +3,7 @@ package com.fr.design.file; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.FineJOptionPane; import com.fr.design.event.StateChangeListener; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icontainer.UIScrollPane; @@ -14,19 +15,14 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; import com.fr.general.ComparatorUtils; + import com.fr.log.FineLoggerFactory; import org.jetbrains.annotations.Nullable; -import javax.swing.AbstractListModel; -import javax.swing.BorderFactory; -import javax.swing.DefaultListCellRenderer; -import javax.swing.JList; -import javax.swing.JPanel; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Window; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; +import java.awt.event.*; import java.util.ArrayList; /** From 7e37eff8a81ec70012d065fa22746b734b4ed149 Mon Sep 17 00:00:00 2001 From: Carlson Date: Mon, 24 Jul 2023 13:57:34 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E5=8F=AA=E6=9C=89=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=BD=93=E5=89=8D=E5=88=86=E7=B1=BB=E5=85=B6?= =?UTF-8?q?=E5=AE=83=E6=A8=A1=E6=9D=BF=E6=97=B6=E6=89=8D=E5=81=9A=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=AF=94=E8=BE=83=20#REPORT-99959?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/file/MultiTemplateTabPane.java | 2 +- .../fr/design/file/SaveSomeTemplatePane.java | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index 6658fc6638..be7c8c1953 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -419,7 +419,7 @@ public class MultiTemplateTabPane extends JComponent { public void closeOtherByOperatorType(String operatorType){ JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(false); - if (saveSomeTempaltePane.showSavePane()) { + if (saveSomeTempaltePane.showSavePane(null, false, true)) { List> openedTemplate = HistoryTemplateListCache.getInstance().getHistoryList(); JTemplate[] templates = new JTemplate[openedTemplate.size()]; diff --git a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java index 196c08cbb2..1517309ef1 100644 --- a/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/file/SaveSomeTemplatePane.java @@ -183,7 +183,19 @@ public class SaveSomeTemplatePane extends BasicPane { * @return */ public boolean showSavePane(@Nullable MultiTemplateTabPane.CloseCondition option, boolean judgeJTemplateMustSave) { - initAndPopulate(option, judgeJTemplateMustSave); + return showSavePane(option, judgeJTemplateMustSave, false); + } + + /** + * 显示保存模板提醒面板 + * + * @param option 具体关闭操作 + * @param judgeJTemplateMustSave 模板是否必须保存 + * @param judgeSameTabType 是否只包含当前编辑的模板类型 + * @return + */ + public boolean showSavePane(@Nullable MultiTemplateTabPane.CloseCondition option, boolean judgeJTemplateMustSave, boolean judgeSameTabType) { + initAndPopulate(option, judgeJTemplateMustSave, judgeSameTabType); //如果有未保存的文件 ,则跳出保存对话框,选择要存储的项目 if (!unSavedTemplate.isEmpty()) { dialog.setVisible(true); @@ -197,14 +209,16 @@ public class SaveSomeTemplatePane extends BasicPane { return HistoryTemplateListPane.getInstance().getHistoryList(); } - private void initAndPopulate(@Nullable MultiTemplateTabPane.CloseCondition option, boolean judgeJTemplateMustSave) { + private void initAndPopulate(@Nullable MultiTemplateTabPane.CloseCondition option, boolean judgeJTemplateMustSave, boolean judgeSameTabType) { java.util.List> opendedTemplate = getOpenedTemplatesToProcess(); JTemplate currentTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); int currentIndex = opendedTemplate.indexOf(currentTemplate); for (int i = 0; i < opendedTemplate.size(); i++) { //满足关闭条件的才继续判断文件是否发生了改动 boolean needClose = option == null || option.shouldClose(opendedTemplate.get(i), currentIndex, i); - needClose &= ComparatorUtils.equals(opendedTemplate.get(i).getTemplateTabOperatorType(), currentTemplate.getTemplateTabOperatorType()); + if (judgeSameTabType) { + needClose &= ComparatorUtils.equals(opendedTemplate.get(i).getTemplateTabOperatorType(), currentTemplate.getTemplateTabOperatorType()); + } if (needClose && isneedToAdd(opendedTemplate.get(i), currentTemplate)) { unSavedTemplate.add(opendedTemplate.get(i)); }