forked from FR-Global/plugin-event-manager
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.
117 lines
4.5 KiB
117 lines
4.5 KiB
4 years ago
|
package com.fr.plugin.event.manager;
|
||
|
|
||
|
import com.fr.base.BaseUtils;
|
||
|
import com.fr.base.parameter.ParameterUI;
|
||
|
import com.fr.design.actions.JWorkBookAction;
|
||
|
import com.fr.design.mainframe.JWorkBook;
|
||
|
import com.fr.design.menu.MenuKeySet;
|
||
|
import com.fr.form.event.Listener;
|
||
|
import com.fr.form.ui.Widget;
|
||
|
import com.fr.js.JavaScript;
|
||
|
import com.fr.js.JavaScriptImpl;
|
||
|
import com.fr.main.TemplateWorkBook;
|
||
|
import com.fr.main.parameter.ReportParameterAttr;
|
||
|
import com.fr.plugin.transform.ExecuteFunctionRecord;
|
||
|
import com.fr.plugin.transform.FunctionRecorder;
|
||
|
import com.fr.privilege.finegrain.CellPrivilegeControl;
|
||
|
import com.fr.privilege.finegrain.WorkSheetPrivilegeControl;
|
||
|
import com.fr.report.cell.AbstractWidgetCellElement;
|
||
|
import com.fr.report.cell.CellElement;
|
||
|
import com.fr.report.cell.TemplateCellElement;
|
||
|
import com.fr.report.cell.WidgetAttrElem;
|
||
|
import com.fr.report.cell.cellattr.highlight.DefaultHighlight;
|
||
|
import com.fr.report.cell.cellattr.highlight.WidgetHighlightAction;
|
||
|
import com.fr.report.elementcase.ElementCase;
|
||
|
import com.fr.report.elementcase.TemplateElementCase;
|
||
|
import com.fr.report.report.Report;
|
||
|
import com.fr.report.report.TemplateReport;
|
||
|
|
||
|
import javax.swing.KeyStroke;
|
||
|
import java.awt.event.ActionEvent;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.Iterator;
|
||
|
import java.util.List;
|
||
|
|
||
|
import static com.fr.plugin.event.manager.KeySetUtils.EVENT_MANAGER;
|
||
|
|
||
|
/**
|
||
|
* @author Joe
|
||
|
* Created by Joe on 9/3/2020
|
||
|
*/
|
||
|
@FunctionRecorder
|
||
|
public class WorkbookEventManager extends JWorkBookAction {
|
||
|
private List<Widget> widgetList = new ArrayList<>();
|
||
|
|
||
|
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/design/images/m_report/p.png"));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
@ExecuteFunctionRecord
|
||
|
public void actionPerformed(ActionEvent e) {
|
||
|
JWorkBook jwb = getEditingComponent();
|
||
|
if (jwb == null) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
final TemplateWorkBook wbTpl = jwb.getTarget();
|
||
|
ReportParameterAttr reportParameterAttr = wbTpl.getReportParameterAttr();
|
||
|
// 参数面板获取控件
|
||
|
ParameterUI parameterUI = reportParameterAttr.getParameterUI();
|
||
|
Widget[] widgets = parameterUI.getAllWidgets();
|
||
|
for (Widget widget : widgets) {
|
||
|
if (widget.getListenerSize() > 0) {
|
||
|
// 有事件的控件
|
||
|
widgetList.add(widget);
|
||
|
}
|
||
|
|
||
|
// 获取单元格控件
|
||
|
for (int i = 0; i < wbTpl.getReportCount(); i++) {
|
||
|
Report report = wbTpl.getReport(i);
|
||
|
if (report != null) {
|
||
|
Iterator it = report.iteratorOfElementCase();
|
||
|
while (it.hasNext()) {
|
||
|
ElementCase elementCase = (ElementCase) it.next();
|
||
|
Iterator cellIterator = elementCase.cellIterator();
|
||
|
while (cellIterator.hasNext()) {
|
||
|
CellElement cell = (CellElement) cellIterator.next();
|
||
|
//单元格内有控件
|
||
|
if (cell instanceof TemplateCellElement && ((TemplateCellElement) cell).getWidget() != null) {
|
||
|
Widget widget0 = ((TemplateCellElement) cell).getWidget();
|
||
|
if (widget0.getListenerSize() > 0) {
|
||
|
widgetList.add(widget0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (Widget widget1 : widgetList) {
|
||
|
for (int i = 0; i < widget1.getListenerSize(); i++) {
|
||
|
Listener listener = widget1.getListener(i);
|
||
|
JavaScript javaScript = listener.getAction();
|
||
|
System.out.println("控件名:" + widget1.getWidgetName());
|
||
|
System.out.println("事件名:" + listener.getEventName());
|
||
|
System.out.println("事件类型:" + javaScript.getClass().getName());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* // 测试修改控件事件
|
||
|
if("test".equals(widget.getWidgetName())) {
|
||
|
Listener listener = new Listener();
|
||
|
listener.setEventName("afterinit");
|
||
|
JavaScriptImpl javaScript = new JavaScriptImpl();
|
||
|
javaScript.setContent("this is a test");
|
||
|
listener.setAction(javaScript);
|
||
|
widget.addListener(listener);
|
||
|
}*/
|
||
|
}
|
||
|
}
|
||
|
}
|