From 96896d5f36d4f146d3b8fb0007bdd7c90784634d Mon Sep 17 00:00:00 2001 From: lucian Date: Wed, 24 Feb 2021 10:33:28 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-47901=20=E5=A1=AB=E6=8A=A5-=E5=AF=BC?= =?UTF-8?q?=E5=85=A5excel-=E5=8F=8C=E5=90=91=E6=89=A9=E5=B1=95=E6=98=AF?= =?UTF-8?q?=EF=BC=8C=E8=A1=A8=E5=A4=B4=E9=83=A8=E5=88=86=E6=89=A9=E5=B1=95?= =?UTF-8?q?=EF=BC=8C=E5=A4=9A=E8=A1=8C=E5=AF=BC=E5=85=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fun/PluginErrorRemindHandleProvider.java | 19 ----------- .../fr/design/fun/PluginManagerProvider.java | 20 +++++++++++ ...ava => AbstractPluginManagerProvider.java} | 6 ++-- .../mainframe/toolbar/ToolBarMenuDock.java | 16 ++++++++- .../com/fr/env/PluginErrorRemindDialog.java | 33 +++++++++++-------- 5 files changed, 58 insertions(+), 36 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/fun/PluginErrorRemindHandleProvider.java create mode 100644 designer-base/src/main/java/com/fr/design/fun/PluginManagerProvider.java rename designer-base/src/main/java/com/fr/design/fun/impl/{AbstractPluginErrorRemindHandleProvider.java => AbstractPluginManagerProvider.java} (66%) diff --git a/designer-base/src/main/java/com/fr/design/fun/PluginErrorRemindHandleProvider.java b/designer-base/src/main/java/com/fr/design/fun/PluginErrorRemindHandleProvider.java deleted file mode 100644 index 4e1eb44c2..000000000 --- a/designer-base/src/main/java/com/fr/design/fun/PluginErrorRemindHandleProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.fr.design.fun; - -import com.fr.stable.fun.mark.Selectable; - -/** - * 插件不匹配时设计器提示框的“立即处理”事件 - * @author Lucian.Chen - * @version 10.0 - * Created by Lucian.Chen on 2021/2/20 - */ -public interface PluginErrorRemindHandleProvider extends Selectable { - - String MARK_STRING = "PluginErrorRemindHandleProvider"; - - int CURRENT_LEVEL = 1; - - // 打开插件管理 - void openPluginManager(); -} diff --git a/designer-base/src/main/java/com/fr/design/fun/PluginManagerProvider.java b/designer-base/src/main/java/com/fr/design/fun/PluginManagerProvider.java new file mode 100644 index 000000000..11fcecc2c --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/fun/PluginManagerProvider.java @@ -0,0 +1,20 @@ +package com.fr.design.fun; + +import com.fr.design.actions.UpdateAction; +import com.fr.stable.fun.mark.Selectable; + +/** + * 替换插件管理入口 + * @author Lucian.Chen + * @version 10.0 + * Created by Lucian.Chen on 2021/2/20 + */ +public interface PluginManagerProvider extends Selectable { + + String MARK_STRING = "PluginManagerProvider"; + + int CURRENT_LEVEL = 1; + + // 插件管理 + UpdateAction pluginManagerAction(); +} diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginErrorRemindHandleProvider.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginManagerProvider.java similarity index 66% rename from designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginErrorRemindHandleProvider.java rename to designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginManagerProvider.java index e8f24a753..cfffd66f4 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginErrorRemindHandleProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractPluginManagerProvider.java @@ -1,6 +1,6 @@ package com.fr.design.fun.impl; -import com.fr.design.fun.PluginErrorRemindHandleProvider; +import com.fr.design.fun.PluginManagerProvider; import com.fr.stable.fun.assist.Selector; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -10,8 +10,8 @@ import com.fr.stable.fun.mark.API; * @version 10.0 * Created by Lucian.Chen on 2021/2/20 */ -@API(level = PluginErrorRemindHandleProvider.CURRENT_LEVEL) -public abstract class AbstractPluginErrorRemindHandleProvider extends AbstractProvider implements PluginErrorRemindHandleProvider { +@API(level = PluginManagerProvider.CURRENT_LEVEL) +public abstract class AbstractPluginManagerProvider extends AbstractProvider implements PluginManagerProvider { public int currentAPILevel() { return CURRENT_LEVEL; 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 d1abb908b..d9a7ecf3c 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 @@ -41,6 +41,7 @@ import com.fr.design.actions.server.PluginManagerAction; import com.fr.design.file.NewTemplatePane; import com.fr.design.fun.MenuHandler; import com.fr.design.fun.OemProcessor; +import com.fr.design.fun.PluginManagerProvider; import com.fr.design.fun.TableDataPaneProcessor; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; @@ -72,6 +73,7 @@ import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventType; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import com.fr.stable.bridge.ObjectHolder; import com.fr.stable.os.support.OSBasedAction; import com.fr.stable.os.support.OSSupportCenter; import com.fr.start.OemHandler; @@ -489,7 +491,7 @@ public abstract class ToolBarMenuDock { if (!DesignerMode.isAuthorityEditing()) { if (shouldShowPlugin()) { menuDef.addShortCut( - new PluginManagerAction() + createPluginManagerAction() ); } menuDef.addShortCut( @@ -502,6 +504,18 @@ public abstract class ToolBarMenuDock { return menuDef; } + private ShortCut createPluginManagerAction() { + Set providers = ExtraDesignClassManager.getInstance().getArray(PluginManagerProvider.MARK_STRING); + if (providers != null) { + for (PluginManagerProvider provider : providers) { + if (provider.selector().accept(new ObjectHolder())) { + return provider.pluginManagerAction(); + } + } + } + return new PluginManagerAction(); + } + private ShortCut createGlobalTDAction() { TableDataPaneProcessor processor = ExtraDesignClassManager.getInstance().getSingle(TableDataPaneProcessor.XML_TAG); return processor == null ? new GlobalTableDataAction() : processor.createServerTDAction(); diff --git a/designer-base/src/main/java/com/fr/env/PluginErrorRemindDialog.java b/designer-base/src/main/java/com/fr/env/PluginErrorRemindDialog.java index dbdb21826..1558d72e9 100644 --- a/designer-base/src/main/java/com/fr/env/PluginErrorRemindDialog.java +++ b/designer-base/src/main/java/com/fr/env/PluginErrorRemindDialog.java @@ -1,8 +1,9 @@ package com.fr.env; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.actions.UpdateAction; import com.fr.design.actions.server.PluginManagerAction; -import com.fr.design.fun.PluginErrorRemindHandleProvider; +import com.fr.design.fun.PluginManagerProvider; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; @@ -81,7 +82,7 @@ public class PluginErrorRemindDialog extends JDialog implements ActionListener { UIButton okButton = new UIButton(Toolkit.i18nText("Fine-Design_Plugin_Error_Remind_Deal_With")); cancelButton.addActionListener(this); - okButton.addActionListener(new PluginManagerActionAdapter(this)); + okButton.addActionListener(new PluginManagerHandleAction(this)); // 按钮 JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); @@ -106,28 +107,34 @@ public class PluginErrorRemindDialog extends JDialog implements ActionListener { this.dispose(); } - private static class PluginManagerActionAdapter extends PluginManagerAction { + private static class PluginManagerHandleAction extends UpdateAction { private JDialog jDialog; + private UpdateAction pluginManagerAction; - public PluginManagerActionAdapter(JDialog jDialog) { + public PluginManagerHandleAction(JDialog jDialog) { this.jDialog = jDialog; + initPluginManagerAction(); } - @Override - public void actionPerformed(ActionEvent e) { - this.jDialog.dispose(); - // 先从插件找 - Set providers = ExtraDesignClassManager.getInstance().getArray(PluginErrorRemindHandleProvider.MARK_STRING); + private void initPluginManagerAction() { + Set providers = ExtraDesignClassManager.getInstance().getArray(PluginManagerProvider.MARK_STRING); if (providers != null) { - for (PluginErrorRemindHandleProvider provider : providers) { + for (PluginManagerProvider provider : providers) { if (provider.selector().accept(new ObjectHolder())) { - provider.openPluginManager(); - return; + this.pluginManagerAction = provider.pluginManagerAction(); } } } - super.actionPerformed(e); + if (this.pluginManagerAction == null) { + this.pluginManagerAction = new PluginManagerAction(); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + this.jDialog.dispose(); + this.pluginManagerAction.actionPerformed(e); } }