From 81f37d29d19153c26e25f745ae4867c8f8d8b78f Mon Sep 17 00:00:00 2001 From: kerry Date: Sun, 23 Apr 2023 14:09:43 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-94391=20&&=20REPORT-94374=E3=80=90FVS?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E5=BC=80=E3=80=91=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E9=97=AE=E9=A2=98-=E6=96=B0jar+=E6=97=A7=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=96=87=E4=BB=B6=E9=80=89=E9=A1=B9=E6=9C=89=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E5=85=B3=E9=97=AD=E6=8C=89=E9=92=AE=EF=BC=9B=E3=80=90?= =?UTF-8?q?FVS=E6=94=AF=E6=8C=81=E5=A4=9A=E5=BC=80=E3=80=91frm=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=85=B6=E4=BB=96=E6=A8=A1=E6=9D=BF=E6=8C=89=E9=92=AE?= =?UTF-8?q?=EF=BC=8C=E6=8A=8A=E6=89=80=E6=9C=89=E6=89=93=E5=BC=80=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=83=BD=E5=85=B3=E9=97=AD=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/MultiTemplateTabMenuFactory.java | 3 +-- .../fr/design/file/MultiTemplateTabPane.java | 19 +++++++++---------- .../mainframe/toolbar/ToolBarMenuDock.java | 4 +++- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabMenuFactory.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabMenuFactory.java index 6b5f9e324..64e28eabf 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabMenuFactory.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabMenuFactory.java @@ -100,8 +100,7 @@ public class MultiTemplateTabMenuFactory { closeOther.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - - MultiTemplateTabPane.getInstance().closeAllByOperatorType(currentOperator); + MultiTemplateTabPane.getInstance().closeOtherByOperatorType(currentOperator); } }); if (MultiTemplateTabPane.getInstance().getOpenedJTemplatesByOperator(currentOperator).size() <= 1) { 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 4f292ecfe..901a12154 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 @@ -384,7 +384,8 @@ public class MultiTemplateTabPane extends JComponent { * 关闭所有指定模板tab操作类型的模板 * @param operatorType */ - public void closeAllByOperatorType(String operatorType){ + public void closeOtherByOperatorType(String operatorType){ + JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(false); if (saveSomeTempaltePane.showSavePane()) { List> openedTemplate = HistoryTemplateListCache.getInstance().getHistoryList(); @@ -393,26 +394,24 @@ public class MultiTemplateTabPane extends JComponent { for (int i = 0; i < openedTemplate.size(); i++) { templates[i] = openedTemplate.get(i); } - closeTemplate(templates, operatorType); + closeTemplate(templates, currentEditingTemplate, operatorType); - if (openedTemplate.size() == 0) { - DesignerContext.getDesignerFrame().addAndActivateJTemplate(); - } else { - DesignerContext.getDesignerFrame().activateJTemplate(openedTemplate.get(0)); - } + DesignerContext.getDesignerFrame().activateJTemplate(currentEditingTemplate); MultiTemplateTabPane.getInstance().repaint(); } } /** - * 关闭指定模板 + * 关闭指定的非当前编辑模板 * @param templates * @param operatorType */ - private static void closeTemplate(JTemplate[] templates, String operatorType) { + private static void closeTemplate(JTemplate[] templates, JTemplate currentEditingTemplate, String operatorType) { for (int i = 0; i < templates.length; i++) { JTemplate jTemplate = templates[i]; - if (!ComparatorUtils.equals(operatorType, jTemplate.getTemplateTabOperatorType())){ + boolean needClose = ComparatorUtils.equals(operatorType, jTemplate.getTemplateTabOperatorType()) + && jTemplate != currentEditingTemplate; + if (!needClose) { continue; } MultiTemplateTabPane.getInstance().closeFormat(jTemplate); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 37812c106..3372e2ad1 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -416,7 +416,9 @@ public abstract class ToolBarMenuDock { menuDef.addShortCut(new OpenRecentReportMenuDef()); - addCloseCurrentTemplateAction(menuDef); + if (!DesignModeContext.isDuchampMode()) { + addCloseCurrentTemplateAction(menuDef); + } scs = plus.shortcut4FileMenu(); if (!ArrayUtils.isEmpty(scs)) {