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.

79 lines
3.0 KiB

package com.fr.plugin.event.manager.core;
import com.fr.base.BaseUtils;
import com.fr.design.DesignModelAdapter;
import com.fr.design.actions.JWorkBookAction;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.dialog.UIDialog;
import com.fr.design.mainframe.CellWidgetPropertyPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JWorkBook;
import com.fr.main.TemplateWorkBook;
import com.fr.plugin.event.manager.ui.EventManagerDialog;
import com.fr.plugin.event.manager.ui.EventManagerPane;
import com.fr.plugin.event.manager.ui.WorkbookEventManagerPane;
import com.fr.plugin.event.manager.utils.KeySetUtils;
import com.fr.plugin.transform.ExecuteFunctionRecord;
import com.fr.plugin.transform.FunctionRecorder;
import javax.swing.JOptionPane;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* 普通报表下的事件管理器
* @author Joe
* Created by Joe on 9/3/2020
*/
@FunctionRecorder
public class WorkbookEventManager extends JWorkBookAction {
public WorkbookEventManager(JWorkBook jwb) {
super(jwb);
this.setMenuKeySet(KeySetUtils.EVENT_MANAGER);
this.setName(getMenuKeySet().getMenuKeySetName() + "...");
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/plugin/event/manager/images/icon_event_manager.png"));
}
@Override
@ExecuteFunctionRecord
public void actionPerformed(ActionEvent e) {
final JWorkBook jwb = getEditingComponent();
if (jwb == null) {
FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Plugin_Event_Manager_Alert_No_Target"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Alert"), JOptionPane.ERROR_MESSAGE);
return;
}
final TemplateWorkBook workBook = jwb.getTarget();
final EventManagerPane eventManagerPane = initEventManagerPane(workBook);
UIDialog dialog = new EventManagerDialog(DesignerContext.getDesignerFrame(), eventManagerPane);
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
eventManagerPane.update();
// 触发正在编辑的模板改变事件
DesignModelAdapter.getCurrentModelAdapter().fireTargetModified();
// 刷新一下右侧面板,避免事件显示不同步
jwb.refreshEastPropertiesPane();
super.windowClosed(e);
}
});
dialog.setVisible(true);
}
/**
* 初始化事件管理器面板,返回tab pane
* @param workBook 当前表单对象
* @return
*/
private EventManagerPane initEventManagerPane(TemplateWorkBook workBook) {
WorkbookEventManagerPane eventManagerPane = new WorkbookEventManagerPane();
eventManagerPane.setTarget(workBook);
return eventManagerPane;
}
}