diff --git a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java index 047420294a..08fb3a8689 100644 --- a/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MutilTempalteTabPane.java @@ -766,8 +766,8 @@ public class MutilTempalteTabPane extends JComponent { // 如果关闭的模板是当前选中的模板,则重新激活当前 selectIndex 的模板; // selectIndex 没有变化,但是对应的模板已经变成了前一张模板 if (closeIconIndex == selectedIndex || isCloseCurrent) { - // 如果 closeIconIndex 是最后一个被渲染画出的,那么预览上一个,防止数组越界 - if (closeIconIndex >= maxPaintIndex) { + // 如果当前关闭的模板在最右侧,那么预览上一个,防止数组越界 + if (selectedIndex >= maxPaintIndex) { // selectIndex 不会 <0 因为如果关闭的是打开的最后一个模板,那么关闭之后 openedTemplate.isEmpty() = true selectedIndex--; } @@ -953,6 +953,10 @@ public class MutilTempalteTabPane extends JComponent { return; } } + //参考CloseCurrentTemplateAction,在closeFormat与closeSpecifiedTemplate之前要先设定isCloseCurrent,这样关闭之后才会自动切换tab + if (checkCurrentClose(template)) { + setIsCloseCurrent(true); + } closeFormat(template); closeSpecifiedTemplate(template); DesignerContext.getDesignerFrame().getContentFrame().repaint(); @@ -985,6 +989,12 @@ public class MutilTempalteTabPane extends JComponent { } + private boolean checkCurrentClose(JTemplate template) { + JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + //10.0无JTemplate.isValid + return currentTemplate != null && ComparatorUtils.equals(template.getPath(), currentTemplate.getPath()); + } + private class MultiTemplateTabMouseMotionListener implements MouseMotionListener { /** diff --git a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java new file mode 100644 index 0000000000..6b7a2f5fbd --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java @@ -0,0 +1,37 @@ +package com.fr.design.locale.impl; + +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.locale.LocaleMark; + +import java.awt.image.BufferedImage; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * 根据本地化信息设置服务器图表空数据提示图标 + * + * @author obo + * @version 11.0 + * Created by obo on 2023/3/22 + */ +public class EmptyDataMark implements LocaleMark { + + private Map map = new HashMap<>(); + + private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("com/fr/design/images/zh_emptydata.png"); + private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png"); + private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png"); + + public EmptyDataMark() { + map.put(Locale.CHINA, ZH_EMPTY_DATA); + map.put(Locale.US, US_EMPTY_DATA); + map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA); + } + @Override + public BufferedImage getValue() { + BufferedImage result = map.get(GeneralContext.getLocale()); + return result == null ? US_EMPTY_DATA : result; + } +} diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 31718fda82..e73bae010e 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -10,12 +10,13 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.locale.impl.EmptyDataMark; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; +import com.fr.general.locale.LocaleCenter; +import com.fr.general.locale.LocaleMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; @@ -26,7 +27,6 @@ import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingWorker; -import java.io.File; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; @@ -35,6 +35,8 @@ import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.image.BufferedImage; +import java.io.File; /** * Created by mengao on 2017/11/23. @@ -63,8 +65,8 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { - DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") - : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + LocaleMark localeMark = LocaleCenter.getMark(EmptyDataMark.class); + DEFAULT_EMPTY_DATA_IMAGE = localeMark.getValue(); } @Override diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png new file mode 100644 index 0000000000..738fa685ad Binary files /dev/null and b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png differ