From 65e07d5e0e2f023ec985fb5b45110a8138801eb6 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 29 Jul 2019 15:44:46 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=A4=A9=E7=94=9F?= =?UTF-8?q?=E5=8F=AF=E6=8B=94=E6=8F=92=EF=BC=8C=E8=BF=99=E9=87=8C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E7=94=A8static=EF=BC=8C=E5=BA=94=E6=AF=8F=E6=AC=A1?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E6=97=B6=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/itree/filetree/FileNodeConstants.java | 7 ++++--- .../com/fr/design/gui/itree/filetree/TemplateFileTree.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java index 3bde026a25..b997b21d09 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java @@ -13,15 +13,16 @@ import java.util.Set; * Created by alex sung on 2019/7/23. */ public class FileNodeConstants { - public static String[] SUPPORT_FILE_TYPES; - static { + private FileNodeConstants(){} + + public static String[] getSupportFileTypes(){ List supportFileType = new ArrayList<>(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); //通过插件扩展的 Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); for(App app: apps){ supportFileType.addAll(Arrays.asList(app.defaultExtensions())); } - SUPPORT_FILE_TYPES = supportFileType.toArray(new String[0]); + return supportFileType.toArray(new String[0]); } } diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java index b722cd44a4..b1f641b3b6 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java @@ -228,7 +228,7 @@ public class TemplateFileTree extends EnvFileTree { if (fileNodes == null) { fileNodes = new FileNode[0]; } - Arrays.sort(fileNodes, new FileNodeComparator(FileNodeConstants.SUPPORT_FILE_TYPES)); + Arrays.sort(fileNodes, new FileNodeComparator(FileNodeConstants.getSupportFileTypes())); return fileNodes; } From ea59aee64ebcaac751b0e2cd9dc9cc230d00a4da Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 29 Jul 2019 17:28:22 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=9B=91=E5=90=AC?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itree/filetree/FileNodeConstants.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java index b997b21d09..a6757ee2b5 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java @@ -3,6 +3,12 @@ package com.fr.design.gui.itree.filetree; import com.fr.base.FRContext; import com.fr.design.ExtraDesignClassManager; import com.fr.design.mainframe.App; +import com.fr.general.GeneralContext; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.injectable.PluginModule; +import com.fr.plugin.manage.PluginFilter; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import java.util.ArrayList; import java.util.Arrays; @@ -14,15 +20,36 @@ import java.util.Set; */ public class FileNodeConstants { - private FileNodeConstants(){} + private static List supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); - public static String[] getSupportFileTypes(){ - List supportFileType = new ArrayList<>(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); - //通过插件扩展的 - Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); - for(App app: apps){ - supportFileType.addAll(Arrays.asList(app.defaultExtensions())); + static { + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + @Override + public void on(PluginEvent pluginEvent) { + supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); + //通过插件扩展的 + Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); + for (App app : apps) { + addAppExtensions(app.defaultExtensions()); + } + } + }, new PluginFilter() { + @Override + public boolean accept(PluginContext pluginContext) { + return pluginContext.contain(PluginModule.ExtraDesign); + } + }); + } + + private static void addAppExtensions(String[] extensions) { + for (int i = 0, size = extensions.length; i < size; i++) { + if (!supportFileType.contains(extensions[i])) { + supportFileType.add(extensions[i]); + } } + } + + public static String[] getSupportFileTypes() { return supportFileType.toArray(new String[0]); } } From 58eea3a9e866b8027d158fb001068f22851fd75a Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 29 Jul 2019 18:11:47 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6?= =?UTF-8?q?=E4=BB=8E=E6=8F=92=E4=BB=B6=E9=87=8C=E6=8D=9E=E4=B8=80=E6=8A=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itree/filetree/FileNodeConstants.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java index a6757ee2b5..f9870e3c35 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java @@ -20,9 +20,13 @@ import java.util.Set; */ public class FileNodeConstants { - private static List supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); + private static List supportFileType; + + private FileNodeConstants(){} static { + initSupportedTypes(); + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { @Override public void on(PluginEvent pluginEvent) { @@ -49,6 +53,15 @@ public class FileNodeConstants { } } + private static void initSupportedTypes() { + supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); + //通过插件扩展的 + Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); + for (App app : apps) { + addAppExtensions(app.defaultExtensions()); + } + } + public static String[] getSupportFileTypes() { return supportFileType.toArray(new String[0]); } From 60303b727245db6017172cc80dfdb8f6f762531e Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 29 Jul 2019 19:53:23 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=8A=A0=E8=AF=BB=E5=86=99=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itree/filetree/FileNodeConstants.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java index f9870e3c35..88a4634403 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java @@ -14,6 +14,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; /** * Created by alex sung on 2019/7/23. @@ -21,8 +23,10 @@ import java.util.Set; public class FileNodeConstants { private static List supportFileType; + private static ReadWriteLock rwl = new ReentrantReadWriteLock(); - private FileNodeConstants(){} + private FileNodeConstants() { + } static { initSupportedTypes(); @@ -30,12 +34,7 @@ public class FileNodeConstants { GeneralContext.listenPluginRunningChanged(new PluginEventListener() { @Override public void on(PluginEvent pluginEvent) { - supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); - //通过插件扩展的 - Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); - for (App app : apps) { - addAppExtensions(app.defaultExtensions()); - } + initSupportedTypes(); } }, new PluginFilter() { @Override @@ -54,15 +53,30 @@ public class FileNodeConstants { } private static void initSupportedTypes() { - supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); - //通过插件扩展的 - Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); - for (App app : apps) { - addAppExtensions(app.defaultExtensions()); + try { + rwl.writeLock().lock(); + supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); + //通过插件扩展的 + Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); + for (App app : apps) { + addAppExtensions(app.defaultExtensions()); + } + } catch (Exception ignored) { + //ignored + } finally { + rwl.writeLock().unlock(); } } public static String[] getSupportFileTypes() { - return supportFileType.toArray(new String[0]); + try { + rwl.readLock().lock(); + return supportFileType.toArray(new String[0]); + } catch (Exception ignored) { + //ignored + } finally { + rwl.readLock().unlock(); + } + return null; } } From ac63ec1c6e8fe573b0eaae38d6e7bc710083b673 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Mon, 29 Jul 2019 20:33:38 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=B8=8Dignored=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/itree/filetree/FileNodeConstants.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java index 88a4634403..8c5f0e154a 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileNodeConstants.java @@ -55,14 +55,12 @@ public class FileNodeConstants { private static void initSupportedTypes() { try { rwl.writeLock().lock(); - supportFileType = new ArrayList(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); + supportFileType = new ArrayList<>(Arrays.asList(FRContext.getFileNodes().getSupportedTypes())); //通过插件扩展的 Set apps = ExtraDesignClassManager.getInstance().getArray(App.MARK_STRING); for (App app : apps) { addAppExtensions(app.defaultExtensions()); } - } catch (Exception ignored) { - //ignored } finally { rwl.writeLock().unlock(); } @@ -72,11 +70,8 @@ public class FileNodeConstants { try { rwl.readLock().lock(); return supportFileType.toArray(new String[0]); - } catch (Exception ignored) { - //ignored } finally { rwl.readLock().unlock(); } - return null; } }