ExtraButtonToolBarProvider

属性
接口类型 provider
所属模块 extra-designer
完整类名 com.fr.design.fun.ExtraButtonToolBarProvider
官方文档 查看文档

简介

在报表设计器端扩展工具栏按钮控件的额外属性配置面板,用于为工具栏按钮增加自定义属性设置界面。

接口定义

/**
 * 报表工具栏设计器端拓展,用于配置按钮额外属性
 */
public interface ExtraButtonToolBarProvider extends Mutable {

    String XML_TAG = "ExtraButtonToolBarProvider";

    int CURRENT_LEVEL = 1;

    /**
     * 添加属性面板内容
     *
     * @param centerPane 属性面板容器
     */
    void updateCenterPane(JPanel centerPane);

    /**
     * 用控件数据更新(填充)属性面板界面
     *
     * @param widget     控件数据对象
     * @param card       卡片布局管理器
     * @param centerPane 属性面板容器
     */
    void populate(Widget widget, CardLayout card, JPanel centerPane);

    /**
     * 将属性面板的设置保存回控件
     *
     * @param widget 控件数据对象
     */
    void update(Widget widget);
}

使用方式

在插件的 plugin.xml 中,通过 extra-designer 标签注册实现类:

<extra-designer>
    <ExtraButtonToolBarProvider class="com.fr.plugin.xxx.YourClassName"/>
</extra-designer>

示例代码

public class MyExtraButtonToolBarProvider implements ExtraButtonToolBarProvider {

    private JCheckBox myCheckBox;

    @Override
    public void updateCenterPane(JPanel centerPane) {
        // 向属性面板添加自定义 UI 组件
        myCheckBox = new JCheckBox("启用自定义功能");
        centerPane.add(myCheckBox);
    }

    @Override
    public void populate(Widget widget, CardLayout card, JPanel centerPane) {
        // 从控件中读取属性值并刷新 UI
        if (widget instanceof MyButtonWidget) {
            myCheckBox.setSelected(((MyButtonWidget) widget).isCustomEnabled());
        }
    }

    @Override
    public void update(Widget widget) {
        // 将 UI 上的设置写回控件对象
        if (widget instanceof MyButtonWidget) {
            ((MyButtonWidget) widget).setCustomEnabled(myCheckBox.isSelected());
        }
    }
}

注意事项

  • 三个方法对应属性面板的生命周期:updateCenterPane() 初始化面板布局,populate() 填充数据,update() 保存数据。
  • populate()update() 中操作的 Widget 对象应做类型检查,避免处理非目标控件时抛出异常。

results matching ""

    No results matching ""