package com.fr.plugin.event.manager.core; import com.fr.base.BaseUtils; import com.fr.design.DesignModelAdapter; import com.fr.design.actions.JTemplateAction; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JForm; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.main.Form; import com.fr.plugin.event.manager.ui.EventManagerDialog; import com.fr.plugin.event.manager.ui.EventManagerPane; import com.fr.plugin.event.manager.ui.FormEventManagerPane; import com.fr.plugin.event.manager.utils.KeySetUtils; import com.fr.plugin.transform.ExecuteFunctionRecord; 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 */ public class FormEventManager extends JTemplateAction { public FormEventManager(JForm form) { super(form); 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) { JForm jf = getEditingComponent(); if (jf == 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 Form form = jf.getTarget(); final EventManagerPane eventManagerPane = initEventManagerPane(form); UIDialog dialog = new EventManagerDialog(DesignerContext.getDesignerFrame(), eventManagerPane); dialog.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { eventManagerPane.update(); // 触发正在编辑的模板改变事件 DesignModelAdapter.getCurrentModelAdapter().fireTargetModified(); // 刷新一下右侧面板,避免事件显示不同步 WidgetPropertyPane.getInstance().refreshDockingView(); super.windowClosed(e); } }); dialog.setVisible(true); } /** * 初始化事件管理器面板 * @param form 当前表单对象 * @return */ private EventManagerPane initEventManagerPane(Form form) { FormEventManagerPane eventManagerPane = new FormEventManagerPane(); eventManagerPane.setTarget(form); return eventManagerPane; } }