From 23d2e69bb44f55828f7476dc1b529c18b8a709d5 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 16 Sep 2019 22:15:21 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-19557=20ToolbarItemProvider=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ExtraDesignClassManager.java | 19 ++++++++++++++++--- .../fr/design/fun/ToolbarItemProvider.java | 6 ++++++ .../design/fun/impl/AbstractToolbarItem.java | 10 ++++++++++ .../AccessibleElementCaseToolBarEditor.java | 3 +++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java index beb62c06e..acc59fcd4 100644 --- a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java +++ b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java @@ -43,7 +43,7 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement private static ExtraDesignClassManager classManager = new ExtraDesignClassManager(); private Set shortCuts = new CloseableContainedSet<>(HashSet.class); - + public static ExtraDesignClassManager getInstance() { return classManager; } @@ -114,13 +114,28 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } + /** + * 获取插件注册的工具栏按钮(严格区分决策报表与普通模板) + * @return + */ + public WidgetOption[] getStrictWebWidgetOptions() { + return createWebWidgetOptions(true); + } + public WidgetOption[] getWebWidgetOptions() { + return createWebWidgetOptions(false); + } + + private WidgetOption[] createWebWidgetOptions(boolean filterByTemplateType) { Set set = getArray(ToolbarItemProvider.XML_TAG); if (set.isEmpty()) { return new WidgetOption[0]; } List list = new ArrayList<>(); for (ToolbarItemProvider provider : set) { + if (filterByTemplateType && !provider.accept()) { + continue; + } WidgetOption option = WidgetOptionFactory.createByWidgetClass( provider.nameForWidget(), IOUtils.readIcon(provider.iconPathForWidget()), @@ -132,7 +147,6 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } - public Map, Class> getFormWidgetOptionsMap() { Set set = getArray(FormWidgetOptionProvider.XML_TAG); Map, Class> map = new HashMap<>(); @@ -170,7 +184,6 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement } - public WidgetOption[] getCellWidgetOptions() { Set set = getArray(CellWidgetOptionProvider.XML_TAG); if (set.isEmpty()) { diff --git a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java index f4add0333..c04bcba2b 100644 --- a/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/ToolbarItemProvider.java @@ -36,4 +36,10 @@ public interface ToolbarItemProvider extends Mutable { */ String nameForWidget(); + /** + * 当前编辑的模板类型(决策报表 or cpt)是否支持 + * @return 支持返回true,否则false + */ + boolean accept(); + } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java index ec3c47bc1..0284c2810 100644 --- a/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java +++ b/designer-base/src/main/java/com/fr/design/fun/impl/AbstractToolbarItem.java @@ -1,6 +1,9 @@ package com.fr.design.fun.impl; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.fun.ToolbarItemProvider; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JVirtualTemplate; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -10,6 +13,7 @@ import com.fr.stable.fun.mark.API; @API(level = ToolbarItemProvider.CURRENT_LEVEL) public abstract class AbstractToolbarItem extends AbstractProvider implements ToolbarItemProvider { + @Override public int currentAPILevel() { return CURRENT_LEVEL; } @@ -18,4 +22,10 @@ public abstract class AbstractToolbarItem extends AbstractProvider implements To public String mark4Provider() { return getClass().getName(); } + + @Override + public boolean accept() { + JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + return currentTemplate.isJWorkBook() || currentTemplate instanceof JVirtualTemplate; + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java index 0fcf1e25b..5f266e025 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleElementCaseToolBarEditor.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.widget.accessibles; +import com.fr.design.ExtraDesignClassManager; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.core.WidgetOption; @@ -52,6 +53,8 @@ public class AccessibleElementCaseToolBarEditor extends UneditableAccessibleEdit List defaultOptions = Arrays.asList(FormWebWidgetConstants.getFormElementCaseToolBarInstance()); List options = new ArrayList(); options.addAll(defaultOptions); + WidgetOption[] widgetOptions = ExtraDesignClassManager.getInstance().getStrictWebWidgetOptions(); + options.addAll(Arrays.asList(widgetOptions)); return options.toArray(new WidgetOption[options.size()]); }