From 9daf000d59be72c07c6431d800079dbe0def7925 Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 25 Nov 2019 17:06:40 +0800 Subject: [PATCH] fix --- .../design/data/DesignTableDataManager.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index 6cf3d9062..44ec26127 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -73,7 +73,7 @@ public abstract class DesignTableDataManager { */ private static java.util.Map globalDsCache = new java.util.HashMap(); private static java.util.Map dsNameChangedMap = new HashMap(); -// private static List dsListeners = new ArrayList(); + private static List globalDsListeners = new ArrayList<>(); private static Map> dsListenersMap = new HashMap>(); @@ -95,15 +95,19 @@ public abstract class DesignTableDataManager { * 响应数据集改变. */ private static void fireDsChanged() { + fireDsChanged(globalDsListeners); for (Entry> listenerEntry : dsListenersMap.entrySet()) { List dsListeners = listenerEntry.getValue(); - for (int i = 0; i < dsListeners.size(); i++) { - //增强for循环用的iterator实现的, 如果中间哪个listener修改或删除了(如ChartEditPane.dsChangeListener), - // 由于dsListeners是arraylist, 此时会ConcurrentModifyException -// for (ChangeListener l : dsListeners) { - ChangeEvent e = null; - dsListeners.get(i).stateChanged(e); - } + fireDsChanged(dsListeners); + } + } + + private static void fireDsChanged(List dsListeners) { + for (int i = 0; i < dsListeners.size(); i++) { + //增强for循环用的iterator实现的, 如果中间哪个listener修改或删除了(如ChartEditPane.dsChangeListener), + // 由于dsListeners是arraylist, 此时会ConcurrentModifyException + ChangeEvent e = null; + dsListeners.get(i).stateChanged(e); } } @@ -160,12 +164,8 @@ public abstract class DesignTableDataManager { } } - public static void addDsChangeListener(ChangeListener l) { - addDsChangeListener(l, HistoryTemplateListCache.getInstance().getCurrentEditingTemplate()); - } - public static void addGlobalDsChangeListener(ChangeListener l) { - addDsChangeListener(l, null); + globalDsListeners.add(l); } /** @@ -173,7 +173,8 @@ public abstract class DesignTableDataManager { * * @param l ChangeListener监听器 */ - private static void addDsChangeListener(ChangeListener l, JTemplate template) { + public static void addDsChangeListener(ChangeListener l) { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); String key = StringUtils.EMPTY; if (template != null) { key = template.getPath();