帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

134 lines
4.5 KiB

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<Class<?>> EDITOR_SET = new HashSet<>(Arrays.asList(
TextArea.class,
TextEditor.class,
NumberEditor.class,
Password.class
));
/**
* normal相关处理类
*/
private static final Set<Class<?>> NORMAL_SET = new HashSet<>(Arrays.asList(
AppendRowButton.class,
FreeButton.class,
DeleteRowButton.class,
FormSubmitButton.class,
TreeNodeToggleButton.class,
Button.class
));
/**
* 下拉框相关控件类
*/
private static final Set<Class<?>> SELECT_SET = new HashSet<>(Arrays.asList(
DateEditor.class,
TreeComboBoxEditor.class,
ComboBox.class,
ComboCheckBox.class
));
/**
* 遍历判断当前控件creator类型,将符合条件的窗口添加到extraPaneList中
*
* @param creator 控件creator
* @param extraPaneList 列表
*/
public static <T> void add(Class<T> creator, List<BasicBeanPane<T>> extraPaneList) {
if(WidgetThemeDesignerUtils.enableWidgetEnhance()) {
acceptEditor(creator, extraPaneList);
acceptTree(creator, extraPaneList);
acceptNormal(creator, extraPaneList);
acceptButton(creator, extraPaneList);
acceptSelect(creator, extraPaneList);
}
}
private static <T> void insertShortCut(List<BasicBeanPane<T>> extraPaneList, BasicBeanPane pane) {
extraPaneList.add(0, pane);
}
private static <T> void acceptEditor(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = EDITOR_SET.contains(creator);
if (accept) {
insertShortCut(extraPaneList, new EditorSettingPane<>());
}
}
private static <T> void acceptTree(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = creator == TreeEditor.class;
if (accept) {
insertShortCut(extraPaneList, new TreeEditorSettingPane<>());
}
}
private static <T> void acceptNormal(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = NORMAL_SET.contains(creator);
if (accept) {
insertShortCut(extraPaneList, new NormalButtonSettingPane<>());
}
}
private static <T> void acceptButton(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = creator == CheckBox.class || creator == RadioGroup.class || creator == CheckBoxGroup.class;
if (accept) {
insertShortCut(extraPaneList, new ButtonSettingPane<>());
}
}
private static <T> void acceptSelect(Class<?> creator, List<BasicBeanPane<T>> extraPaneList) {
boolean accept = WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator) || SELECT_SET.contains(creator);
if (accept) {
insertShortCut(extraPaneList, new SelectEditorSettingPane<>());
}
}
}