package com.fr.design.widgettheme.processor; import com.fr.design.beans.BasicBeanPane; import com.fr.design.widgettheme.common.ButtonSettingPane; import com.fr.design.widgettheme.common.EditorSettingPane; import com.fr.design.widgettheme.common.NormalButtonSettingPane; import com.fr.design.widgettheme.common.SelectEditorSettingPane; import com.fr.design.widgettheme.common.TreeEditorSettingPane; import com.fr.form.parameter.FormSubmitButton; import com.fr.form.ui.Button; import com.fr.form.ui.CheckBox; import com.fr.form.ui.CheckBoxGroup; import com.fr.form.ui.ComboBox; import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DateEditor; import com.fr.form.ui.FreeButton; import com.fr.form.ui.NumberEditor; import com.fr.form.ui.Password; import com.fr.form.ui.RadioGroup; import com.fr.form.ui.TextArea; import com.fr.form.ui.TextEditor; import com.fr.form.ui.TreeComboBoxEditor; import com.fr.form.ui.TreeEditor; import com.fr.report.web.button.form.TreeNodeToggleButton; import com.fr.report.web.button.write.AppendRowButton; import com.fr.report.web.button.write.DeleteRowButton; import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import com.fr.widgettheme.utils.WidgetThemeServerUtils; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 控件主题窗口创建处理类 * 当前类型被接受时,添加对应pane到extraPaneList * * @author obo * @since 11.0 * Created on 2023/11/13 */ public class WidgetThemeCreatorPaneAdder { private WidgetThemeCreatorPaneAdder() {} /** * editor相关处理类 */ private static final Set> EDITOR_SET = new HashSet<>(Arrays.asList( TextArea.class, TextEditor.class, NumberEditor.class, Password.class )); /** * normal相关处理类 */ private static final Set> NORMAL_SET = new HashSet<>(Arrays.asList( AppendRowButton.class, FreeButton.class, DeleteRowButton.class, FormSubmitButton.class, TreeNodeToggleButton.class, Button.class )); /** * 下拉框相关控件类 */ private static final Set> SELECT_SET = new HashSet<>(Arrays.asList( DateEditor.class, TreeComboBoxEditor.class, ComboBox.class, ComboCheckBox.class )); /** * 遍历判断当前控件creator类型,将符合条件的窗口添加到extraPaneList中 * * @param creator 控件creator * @param extraPaneList 列表 */ public static void add(Class creator, List> extraPaneList) { if(WidgetThemeDesignerUtils.enableWidgetEnhance()) { acceptEditor(creator, extraPaneList); acceptTree(creator, extraPaneList); acceptNormal(creator, extraPaneList); acceptButton(creator, extraPaneList); acceptSelect(creator, extraPaneList); } } private static void insertShortCut(List> extraPaneList, BasicBeanPane pane) { extraPaneList.add(0, pane); } private static void acceptEditor(Class creator, List> extraPaneList) { boolean accept = EDITOR_SET.contains(creator); if (accept) { insertShortCut(extraPaneList, new EditorSettingPane<>()); } } private static void acceptTree(Class creator, List> extraPaneList) { boolean accept = creator == TreeEditor.class; if (accept) { insertShortCut(extraPaneList, new TreeEditorSettingPane<>()); } } private static void acceptNormal(Class creator, List> extraPaneList) { boolean accept = NORMAL_SET.contains(creator); if (accept) { insertShortCut(extraPaneList, new NormalButtonSettingPane<>()); } } private static void acceptButton(Class creator, List> extraPaneList) { boolean accept = creator == CheckBox.class || creator == RadioGroup.class || creator == CheckBoxGroup.class; if (accept) { insertShortCut(extraPaneList, new ButtonSettingPane<>()); } } private static void acceptSelect(Class creator, List> extraPaneList) { boolean accept = WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator) || SELECT_SET.contains(creator); if (accept) { insertShortCut(extraPaneList, new SelectEditorSettingPane<>()); } } }