From b9d9b8960f07075319e6cb1d88bd4cef80a6e380 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 15 Jun 2022 18:01:39 +0800 Subject: [PATCH 1/7] =?UTF-8?q?REPORT-73670=20=E6=96=B0=E5=BB=BA=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E8=83=8C=E6=99=AF=E6=B2=A1=E6=9C=89=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 对于新建模板,给Form/WorkBook应用主题的时机太晚了,导致根据数据模型 创建出来的XCreator里没有主题样式信息。 因此需要将这种场景下处理主题的时机提前到创建XCreator之前. 【改动思路】 同上 【review建议】 --- .../src/main/java/com/fr/design/mainframe/JTemplate.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index d6ceb34177..defd21444b 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -190,6 +190,10 @@ public abstract class JTemplate> public JTemplate(T t, FILE file, boolean isNewFile, Parameter[] parameters) { super(t); + if (isNewFile) { + // REPORT-58486: 必须在初始的UndoState创建前设置主题,使得初始的UndoState就包含了主题效果 + setUpTheme4NewTemplate(); + } beforeInit(); // 判断是否切换设计器状态到禁止拷贝剪切 if (t.getAttrMark(DesignBanCopyAttrMark.XML_TAG) != null) { @@ -1894,10 +1898,10 @@ public abstract class JTemplate> protected void setUpTheme4NewTemplate() { TemplateTheme theme = getUsingTemplateThemeConfig().cachedFetchTheme4NewTemplate(); - TemplateThemeAttrMark themeAttrMark = template.getAttrMark(TemplateThemeAttrMark.XML_TAG); + TemplateThemeAttrMark themeAttrMark = getTarget().getAttrMark(TemplateThemeAttrMark.XML_TAG); if (themeAttrMark == null) { themeAttrMark = new TemplateThemeAttrMark(); - template.addAttrMark(themeAttrMark); + getTarget().addAttrMark(themeAttrMark); } themeAttrMark.setName(theme.getName()); themeAttrMark.setDark(theme.isDark()); From 52f28dd0bf4befb0d0e573806942f74c3a0b3e87 Mon Sep 17 00:00:00 2001 From: roger Date: Thu, 16 Jun 2022 16:10:28 +0800 Subject: [PATCH 2/7] =?UTF-8?q?REPORT-73741=20fix:=20=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF=E4=B8=AD?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=BD=8D=E7=BD=AE=E4=BB=8E1?= =?UTF-8?q?=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/formula/FormulaPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index 2c5db9a314..d4737f084a 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -886,9 +886,9 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { if (checkResult.isValid()) { showMessageDialog(checkResult.getTips(), checkResult.isValid(), false); } else { - int columns = checkResult.getFormulaCoordinates().getColumns(); + int columns = checkResult.getFormulaCoordinates().getColumns() + 1; String position = StringUtils.EMPTY; - if (columns >= 0) { + if (columns > 0) { position = Toolkit.i18nText("Fine-Design_Basic_Formula_The") + columns + Toolkit.i18nText("Fine-Design_Basic_Formula_Error_Position") + " "; } From 9f514db78987209976b1e83ab1c3daa3eec5b6c3 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 15 Jun 2022 18:17:29 +0800 Subject: [PATCH 3/7] =?UTF-8?q?REPORT-70647=20=E8=BF=9C=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E5=9C=BA=E6=99=AF=E4=B8=8B=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=86=85=E8=BE=B9=E6=A1=86=E9=85=8D=E7=BD=AE=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 远程设计场景下,无法通过RPC接口实现类的类型来判断是否可用,实际返回的都是 proxy类型对象,因此需要添加接口方法。 【改动思路】 同上 【review建议】 --- .../com/fr/design/mainframe/theme/ThemedFeatureController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/ThemedFeatureController.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/ThemedFeatureController.java index 2e0fc5c387..47cf1bcdda 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/ThemedFeatureController.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/ThemedFeatureController.java @@ -1,7 +1,6 @@ package com.fr.design.mainframe.theme; import com.fr.workspace.WorkContext; -import com.fr.workspace.server.theme.SupportThemedCellInnerBorderFeature; import com.fr.workspace.server.theme.ThemedCellBorderFeature; /** @@ -12,6 +11,6 @@ import com.fr.workspace.server.theme.ThemedCellBorderFeature; public class ThemedFeatureController { public static boolean isCellStyleSupportInnerBorder() { ThemedCellBorderFeature controller = WorkContext.getCurrent().get(ThemedCellBorderFeature.class); - return controller instanceof SupportThemedCellInnerBorderFeature; + return controller.isSupport(); } } From b151ee81b6b2cf22a991ba33d41a39ad0d8541d8 Mon Sep 17 00:00:00 2001 From: Harrison Date: Thu, 16 Jun 2022 18:00:57 +0800 Subject: [PATCH 4/7] =?UTF-8?q?REPORT-73775=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=8E=AF=E5=A2=83=E7=9B=91=E6=B5=8B=E3=80=91=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=8A=A5=E9=94=99finedb=E5=8D=A0=E7=94=A8=EF=BC=8C?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=BC=B9=E7=AA=97=E6=98=BE=E7=A4=BA=E8=84=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=20=E5=9B=BD=E9=99=85=E5=8C=96=20KEY=20?= =?UTF-8?q?=E5=80=BC=E5=86=99=E9=94=99=E4=BA=86=EF=BC=8C=20=E6=94=B9?= =?UTF-8?q?=E4=B8=80=E4=B8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/start/LifecycleFatalErrorHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java b/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java index 92b8ac6c6f..ba0c5e03da 100644 --- a/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java +++ b/designer-realize/src/main/java/com/fr/start/LifecycleFatalErrorHandler.java @@ -80,7 +80,7 @@ public class LifecycleFatalErrorHandler { final EnumMap solutionMap = new EnumMap<>(DetectorType.class); { - solutionMap.put(DetectorType.FINE_DB_LOCKED, "Fine-Design_Error_Finedb_Dirty_Backup_Reset"); + solutionMap.put(DetectorType.FINE_DB_LOCKED, "Fine-Design_Error_Finedb_Locked_Backup_Reset"); solutionMap.put(DetectorType.FINE_DB_PERMISSION, "Fine-Design_Error_Finedb_Permission_Backup_Reset"); solutionMap.put(DetectorType.FINE_DB_DIRTY, "Fine-Design_Error_Finedb_Dirty_Backup_Reset"); } From 455d06000b0469d4673f83bceed950fff3cc83d5 Mon Sep 17 00:00:00 2001 From: Harrison Date: Thu, 16 Jun 2022 19:25:46 +0800 Subject: [PATCH 5/7] =?UTF-8?q?REPORT-73800=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=8E=AF=E5=A2=83=E7=9B=91=E6=B5=8B=E3=80=91windows?= =?UTF-8?q?=E4=B8=8B=E6=B2=A1=E6=9C=89finedb=E6=9D=83=E9=99=90=EF=BC=8C?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=8A=A5=E9=94=99=E8=84=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=20=E6=8A=8A=E8=84=8F=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=E5=90=8E=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=8D=B3=E4=BE=BF=E5=8F=AA=E6=98=AF=E9=94=81=E4=BD=8F?= =?UTF-8?q?=E3=80=81=E6=B2=A1=E6=9D=83=E9=99=90=E4=B9=9F=E4=BC=9A=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E8=BF=99=E4=B8=AA=E9=97=AE=E9=A2=98=E3=80=82=20?= =?UTF-8?q?=E6=89=80=E4=BB=A5=EF=BC=8C=E8=BF=99=E9=87=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=A3=80=E6=B5=8B=E9=93=BE=EF=BC=8C=E5=89=8D?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=A3=80=E6=B5=8B=E5=90=8E=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=89=8D=E8=83=BD=E7=BB=A7=E7=BB=AD=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E3=80=82=20=E5=B9=B6=E5=9C=A8=E5=AF=B9=E5=85=B7?= =?UTF-8?q?=E4=BD=93=E7=9A=84=E7=B1=BB=E5=9E=8B=E6=A3=80=E6=B5=8B=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BF=9D=E6=8C=81=E5=8E=9F=E6=9D=A5=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/env/detect/base/DetectorBridge.java | 11 +++-- .../fr/env/detect/base/DetectorManager.java | 33 ++++++++++++- .../com/fr/env/detect/impl/DetectorChain.java | 46 +++++++++++++++++++ .../impl/converter/FineDbLockedConverter.java | 12 ++++- .../converter/FineDbPermissionConverter.java | 45 ++++++++++++++---- 5 files changed, 132 insertions(+), 15 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/env/detect/impl/DetectorChain.java diff --git a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java index 798e0ae047..d5291bb7f6 100644 --- a/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java +++ b/designer-base/src/main/java/com/fr/env/detect/base/DetectorBridge.java @@ -2,6 +2,7 @@ package com.fr.env.detect.base; import com.fr.env.detect.bean.DetectorResult; import com.fr.env.detect.bean.DetectorType; +import com.fr.env.detect.impl.DetectorChain; import com.fr.env.detect.impl.FineDbDirtyDetector; import com.fr.env.detect.impl.FineDbLockedDetector; import com.fr.env.detect.impl.FineDbPermissionDetector; @@ -41,10 +42,12 @@ public class DetectorBridge { protected @NotNull DetectorManager compute() { DetectorManager manager = new DetectorManager(); - - manager.register(new FineDbDirtyDetector()); - manager.register(new FineDbPermissionDetector()); - manager.register(new FineDbLockedDetector()); + + // 按照顺序构造检测链 + manager.register(DetectorChain.construct( + new FineDbLockedDetector(), + new FineDbPermissionDetector(), + new FineDbDirtyDetector())); manager.register(new JarInconsistentDetector()); manager.register(new JarLackDetector()); diff --git a/designer-base/src/main/java/com/fr/env/detect/base/DetectorManager.java b/designer-base/src/main/java/com/fr/env/detect/base/DetectorManager.java index bc65870da7..2ebbf331ea 100644 --- a/designer-base/src/main/java/com/fr/env/detect/base/DetectorManager.java +++ b/designer-base/src/main/java/com/fr/env/detect/base/DetectorManager.java @@ -2,8 +2,10 @@ package com.fr.env.detect.base; import com.fr.env.detect.bean.DetectorResult; import com.fr.env.detect.bean.DetectorType; +import com.fr.env.detect.impl.DetectorChain; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -17,8 +19,23 @@ import java.util.stream.Stream; **/ class DetectorManager { + /** + * 检测链的列表 + */ + private List chains = new ArrayList<>(); + + /** + * 单纯的检测器的列表 + */ private List detectors = new ArrayList<>(); + public void register(DetectorChain chain) { + + if (chain != null) { + chains.add(chain); + } + } + public void register(ExceptionDetector detector) { if (detector != null) { @@ -32,7 +49,13 @@ class DetectorManager { .map(ExceptionDetector::detect) .filter(Objects::nonNull); - List resultList = results.collect(Collectors.toList()); + Stream chainResults = chains.stream() + .map(DetectorChain::detect) + .filter(Objects::nonNull); + + List resultList = Stream.concat(results, chainResults) + .collect(Collectors.toList()); + resultList.forEach(DetectorResult::log); return resultList.stream(); @@ -40,7 +63,13 @@ class DetectorManager { public DetectorResult detect(DetectorType type) { - Optional result = detectors.stream() + Stream chainDetectors = chains.stream() + .map(DetectorChain::getDetectors) + .flatMap(Collection::stream); + + Stream allDetectors = Stream.concat(detectors.stream(), chainDetectors); + + Optional result = allDetectors .filter((detector -> type == detector.type())) .findFirst() .map(ExceptionDetector::detect); diff --git a/designer-base/src/main/java/com/fr/env/detect/impl/DetectorChain.java b/designer-base/src/main/java/com/fr/env/detect/impl/DetectorChain.java new file mode 100644 index 0000000000..352e72c6b8 --- /dev/null +++ b/designer-base/src/main/java/com/fr/env/detect/impl/DetectorChain.java @@ -0,0 +1,46 @@ +package com.fr.env.detect.impl; + +import com.fr.env.detect.base.ExceptionDetector; +import com.fr.env.detect.bean.DetectorResult; +import com.fr.env.detect.bean.DetectorStatus; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 检测链 + * 责任链模式, 有先后顺序,哪一个先获得,哪一个先终止。 + * + * created by Harrison on 2022/06/16 + **/ +public class DetectorChain { + + private List detectors = new ArrayList<>(); + + public static DetectorChain construct(ExceptionDetector... detectors) { + + DetectorChain detectorChain = new DetectorChain(); + detectorChain.detectors = Arrays.stream(detectors).collect(Collectors.toList()); + return detectorChain; + } + + @Nullable + public DetectorResult detect() { + + for (ExceptionDetector detector : detectors) { + DetectorResult result = detector.detect(); + if (result != null && result.getStatus() == DetectorStatus.EXCEPTION) { + return result; + } + } + return null; + } + + public List getDetectors() { + + return this.detectors; + } +} diff --git a/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbLockedConverter.java b/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbLockedConverter.java index 8a5e74f0b5..2b627a7b22 100644 --- a/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbLockedConverter.java +++ b/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbLockedConverter.java @@ -7,6 +7,7 @@ import com.fr.env.detect.bean.DetectorType; import com.fr.env.detect.thowable.ThrowableConverter; import com.fr.third.org.apache.commons.lang3.StringUtils; import com.fr.third.org.hsqldb.HsqlException; +import com.fr.workspace.WorkContext; /** * created by Harrison on 2022/05/24 @@ -36,12 +37,21 @@ public class FineDbLockedConverter implements ThrowableConverter { */ @Override public DetectorResult convert(Throwable throwable) { + + // 远程不执行 + if (!WorkContext.getCurrent().isLocal()) { + return null; + } Throwable sign = throwable; - while (sign.getClass() != HsqlException.class) { + while (sign != null && sign.getClass() != HsqlException.class) { sign = sign.getCause(); } + if (sign == null) { + return null; + } + DetectorType type = DetectorType.FINE_DB_LOCKED; String message = sign.getMessage(); diff --git a/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbPermissionConverter.java b/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbPermissionConverter.java index dd350abdf4..d34e7c245d 100644 --- a/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbPermissionConverter.java +++ b/designer-base/src/main/java/com/fr/env/detect/impl/converter/FineDbPermissionConverter.java @@ -5,17 +5,24 @@ import com.fr.env.detect.base.DetectorConstants; import com.fr.env.detect.bean.DetectorResult; import com.fr.env.detect.bean.DetectorType; import com.fr.env.detect.thowable.ThrowableConverter; -import com.fr.third.org.apache.commons.lang3.StringUtils; +import com.fr.stable.project.ProjectConstants; +import com.fr.third.org.apache.commons.io.FileUtils; import com.fr.third.org.hsqldb.HsqlException; +import com.fr.workspace.WorkContext; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.RandomAccessFile; +import java.util.Collection; /** * HSQL 下的权限检测 - * + *

* created by Harrison on 2022/05/24 **/ public class FineDbPermissionConverter implements ThrowableConverter { - public static final String PERMISSION = "permission"; + public static final String EMBED_DB_NAME = "finedb"; @Override public boolean accept(Throwable throwable) { @@ -33,15 +40,37 @@ public class FineDbPermissionConverter implements ThrowableConverter { @Override public DetectorResult convert(Throwable throwable) { + // 远程不执行 + if (!WorkContext.getCurrent().isLocal()) { + return null; + } + Throwable sign = throwable; - while (sign.getClass() != HsqlException.class) { + while (sign != null && sign.getClass() != HsqlException.class) { sign = sign.getCause(); } + + if (sign == null) { + return null; + } - DetectorType type = DetectorType.FINE_DB_PERMISSION; - String message = sign.getMessage(); - if (StringUtils.containsIgnoreCase(message, PERMISSION)) { - + String fineDbDirectory = WorkContext.getCurrent().getPath() + File.separator + ProjectConstants.EMBED_DB_DIRECTORY + File.separator + EMBED_DB_NAME; + Collection files = FileUtils.listFiles(new File(fineDbDirectory), null, true); + Boolean isPermitted = files.stream() + .map((file -> { + try { + // 进行权限判断 + new RandomAccessFile(file, "rw"); + return true; + } catch (FileNotFoundException e) { + return false; + } + })) + .reduce((a, b) -> a & b) + .orElse(Boolean.FALSE); + + if (!isPermitted) { + DetectorType type = DetectorType.FINE_DB_PERMISSION; return DetectorResult.builder() .withType(type) .withTips(Toolkit.i18nText(type.getTipsLocale())) From 6866b496a0e1849f81df836718faee64ea600933 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 16 Jun 2022 19:58:32 +0800 Subject: [PATCH 6/7] =?UTF-8?q?REPORT-72851=20TitlePlaceProcessor=2011.0.2?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E7=89=88=E6=9C=AC=E4=B8=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/NorthRegionContainerPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java index 544dc392a6..4856b1c703 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java @@ -11,6 +11,7 @@ import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.MenuManager; import com.fr.design.os.impl.SupportOSImpl; +import com.fr.event.EventDispatcher; import com.fr.general.GeneralContext; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule; @@ -100,8 +101,7 @@ public class NorthRegionContainerPane extends JPanel { //优先级为-1,保证最后全面刷新一次 GeneralContext.listenPluginRunningChanged(pluginOnRunOrStopListener, pluginFilter); // 在设计器启动时仅在最后一个插件启用时候进行刷新一次 如果插件启用过程中存在实现了设计器接口的插件 - boolean needRefresh = DesignerContext.getDesignerFrame() != null && DesignerContext.getDesignerFrame().isVisible() && existDesignExtraPlugin; - if (needRefresh) { + if (existDesignExtraPlugin) { refreshAll(northEastPane, ad); } } From 893cccac135e508278c71ee0a1b4f4a1a96d43a9 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 16 Jun 2022 20:00:19 +0800 Subject: [PATCH 7/7] =?UTF-8?q?REPORT-72851=20=E5=8E=BB=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/NorthRegionContainerPane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java index 4856b1c703..fcfa4292fa 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/NorthRegionContainerPane.java @@ -11,7 +11,6 @@ import com.fr.design.mainframe.toolbar.ToolBarMenuDock; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.MenuManager; import com.fr.design.os.impl.SupportOSImpl; -import com.fr.event.EventDispatcher; import com.fr.general.GeneralContext; import com.fr.plugin.context.PluginContext; import com.fr.plugin.injectable.PluginModule;