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
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<>()); |
|
} |
|
} |
|
}
|
|
|