Browse Source

first

master
Joe.Jiang 4 years ago
commit
a7d30f84d8
  1. 18
      plugin.xml
  2. 18
      pom.xml
  3. 47
      src/main/java/com/fr/plugin/event/manager/EventManager.java
  4. 51
      src/main/java/com/fr/plugin/event/manager/FormEventManager.java
  5. 28
      src/main/java/com/fr/plugin/event/manager/KeySetUtils.java
  6. 274
      src/main/java/com/fr/plugin/event/manager/TemplateWorkBookDecorator.java
  7. 116
      src/main/java/com/fr/plugin/event/manager/WorkbookEventManager.java

18
plugin.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugin>
<id>com.fr.plugin.event.manager</id>
<name><![CDATA[Event Manager Demo]]></name>
<active>yes</active>
<version>1.0</version>
<env-version>10.0</env-version>
<jartime>2020-02-28</jartime>
<vendor>finereport-joe</vendor>
<description><![CDATA[Event Manager Demo]]></description>
<change-notes><![CDATA[]]></change-notes>
<main-package>com.fr.plugin.event.manager</main-package>
<extra-designer>
<MenuHandler class="com.fr.plugin.event.manager.EventManager"/>
</extra-designer>
<function-recorder class="com.fr.plugin.event.manager.WorkbookEventManager"/>
</plugin>

18
pom.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>starter</artifactId>
<groupId>com.fr.plugin</groupId>
<version>10.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>plugin-event-manager</artifactId>
<build>
<outputDirectory>${project.basedir}/../../webroot/WEB-INF/plugins/plugin-com.fr.plugin.event.manager-1.0/classes</outputDirectory>
</build>
</project>

47
src/main/java/com/fr/plugin/event/manager/EventManager.java

@ -0,0 +1,47 @@
package com.fr.plugin.event.manager;
import com.fr.design.fun.MenuHandler;
import com.fr.design.fun.impl.AbstractMenuHandler;
import com.fr.design.mainframe.JForm;
import com.fr.design.mainframe.JWorkBook;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.ShortCut;
/**
* @author Joe
* @version 10.0
* Created by Joe on 9/3/2020
*/
public class EventManager extends AbstractMenuHandler {
@Override
public int insertPosition(int i) {
return -1;
}
@Override
public boolean insertSeparatorBefore() {
return true;
}
@Override
public boolean insertSeparatorAfter() {
return false;
}
@Override
public String category() {
return MenuHandler.TEMPLATE;
}
@Override
public ShortCut shortcut(ToolBarMenuDockPlus plus) {
if (plus instanceof JWorkBook) {
return new WorkbookEventManager((JWorkBook) plus);
} else if (plus instanceof JForm) {
return new FormEventManager((JForm) plus);
}
// ParameterDefinitePane pane = new ParameterDefinitePane();
// pane.getParaDesigner().getParaTarget().getAllWidgets()
return null;
}
}

51
src/main/java/com/fr/plugin/event/manager/FormEventManager.java

@ -0,0 +1,51 @@
package com.fr.plugin.event.manager;
import com.fr.base.BaseUtils;
import com.fr.design.actions.JTemplateAction;
import com.fr.design.mainframe.JForm;
import com.fr.form.main.Form;
import com.fr.form.ui.FormWidgetHelper;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WLayout;
import java.awt.event.ActionEvent;
import java.util.Map;
/**
* @author Joe
* Created by Joe on 9/3/2020
*/
public class FormEventManager extends JTemplateAction<JForm> {
public FormEventManager(JForm jForm) {
super(jForm);
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
public void actionPerformed(ActionEvent e) {
final JForm jwb = getEditingComponent();
if (jwb == null) {
return;
}
final Form wbTpl = jwb.getTarget();
// 获取最底层的表单容器
WLayout container = wbTpl.getContainer();
// 获取参数面板容器
WLayout parameterContainer = wbTpl.getParaContainer();
if (parameterContainer != null) {
System.out.println("表单参数面板控件数:" + parameterContainer.getWidgetCount());
System.out.println("根据Index获取控件:" + parameterContainer.getWidget(0));
System.out.println("根据名称获取控件:" + parameterContainer.getWidget("textEditor0"));
}
// 获取表单中指定名字的控件
Widget report = wbTpl.getWidgetByName("report0");
// 获取表单中指定名字的控件(不对WTitleLayout和WScaleLayout进一步处理)
Widget chart = wbTpl.getWidgetWithBound("chart0");
}
}

28
src/main/java/com/fr/plugin/event/manager/KeySetUtils.java

@ -0,0 +1,28 @@
package com.fr.plugin.event.manager;
import com.fr.design.menu.MenuKeySet;
import javax.swing.KeyStroke;
/**
* @author Joe
* Created by Joe on 9/3/2020
*/
public class KeySetUtils {
public static final MenuKeySet EVENT_MANAGER = new MenuKeySet() {
@Override
public char getMnemonic() {
return 'E';
}
@Override
public String getMenuName() {
return "事件管理器";
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}

274
src/main/java/com/fr/plugin/event/manager/TemplateWorkBookDecorator.java

@ -0,0 +1,274 @@
package com.fr.plugin.event.manager;
import com.fr.base.Parameter;
import com.fr.base.TableData;
import com.fr.form.ui.Widget;
import com.fr.io.attr.ReportExportAttr;
import com.fr.main.TemplateWorkBook;
import com.fr.main.parameter.ReportParameterAttr;
import com.fr.main.workbook.ResultWorkBook;
import com.fr.report.fit.ReportFitAttr;
import com.fr.report.mobile.ElementCaseMobileAttr;
import com.fr.report.report.ECReport;
import com.fr.report.report.Report;
import com.fr.report.report.TemplateReport;
import com.fr.report.stable.fun.Actor;
import com.fr.report.worksheet.WorkSheet;
import com.fr.stable.fun.IOFileAttrMark;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
import com.fr.web.attr.ReportWebAttr;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* 装饰器模式
* @author Joe
* Created by Joe on 9/24/2020
*/
public class TemplateWorkBookDecorator implements TemplateWorkBook {
protected TemplateWorkBook decoratedTemplateWorkBook;
private List<Widget> widgetList;
public TemplateWorkBookDecorator(TemplateWorkBook templateWorkBook) {
decoratedTemplateWorkBook = templateWorkBook;
widgetList = new ArrayList<>();
}
@Override
public void addReport(TemplateReport templateReport) {
decoratedTemplateWorkBook.addReport(templateReport);
}
@Override
public void addReport(String s, TemplateReport templateReport) {
decoratedTemplateWorkBook.addReport(s, templateReport);
}
@Override
public void setReport(int i, TemplateReport templateReport) {
decoratedTemplateWorkBook.setReport(i, templateReport);
}
@Override
public void setReport(int i, String s, TemplateReport templateReport) {
decoratedTemplateWorkBook.setReport(i, s, templateReport);
}
@Override
public TemplateReport getTemplateReport(int i) {
return decoratedTemplateWorkBook.getTemplateReport(i);
}
@Override
public WorkSheet getTemplateElementCaseReport(int i) {
return decoratedTemplateWorkBook.getTemplateElementCaseReport(i);
}
@Override
public int getReportIndex(TemplateReport templateReport) {
return decoratedTemplateWorkBook.getReportIndex(templateReport);
}
@Override
public void apply4Parameters(Map<String, Object> map) {
decoratedTemplateWorkBook.apply4Parameters(map);
}
@Override
public ResultWorkBook execute(Map<String, Object> map, Actor actor) {
return decoratedTemplateWorkBook.execute(map, actor);
}
@Override
public ResultWorkBook execute(Map<String, Object> map, Actor actor, int i) {
return decoratedTemplateWorkBook.execute(map, actor, i);
}
@Override
public ReportParameterAttr getReportParameterAttr() {
return decoratedTemplateWorkBook.getReportParameterAttr();
}
@Override
public void setReportParameterAttr(ReportParameterAttr reportParameterAttr) {
decoratedTemplateWorkBook.setReportParameterAttr(reportParameterAttr);
}
@Override
public Parameter[] getParameters() {
return decoratedTemplateWorkBook.getParameters();
}
@Override
public String getReportName(int i) {
return decoratedTemplateWorkBook.getReportName(i);
}
@Override
public void setReportName(int i, String s) {
decoratedTemplateWorkBook.setReportName(i, s);
}
@Override
public void removeReport(String s) {
decoratedTemplateWorkBook.removeReport(s);
}
@Override
public void removeReport(int i) {
decoratedTemplateWorkBook.removeReport(i);
}
@Override
public void removeReports() {
decoratedTemplateWorkBook.removeReports();
}
@Override
public Report getReport(int i) {
return decoratedTemplateWorkBook.getReport(i);
}
@Override
public boolean isElementCaseBook() {
return decoratedTemplateWorkBook.isElementCaseBook();
}
@Override
public boolean isElementCaseBook(int i) {
return decoratedTemplateWorkBook.isElementCaseBook(i);
}
@Override
public ECReport getElementCaseReport(int i) {
return decoratedTemplateWorkBook.getElementCaseReport(i);
}
@Override
public int getReportCount() {
return decoratedTemplateWorkBook.getReportCount();
}
@Override
public ReportWebAttr getReportWebAttr() {
return decoratedTemplateWorkBook.getReportWebAttr();
}
@Override
public void setReportWebAttr(ReportWebAttr reportWebAttr) {
decoratedTemplateWorkBook.setReportWebAttr(reportWebAttr);
}
@Override
public ReportExportAttr getReportExportAttr() {
return decoratedTemplateWorkBook.getReportExportAttr();
}
@Override
public void setReportExportAttr(ReportExportAttr reportExportAttr) {
decoratedTemplateWorkBook.setReportExportAttr(reportExportAttr);
}
@Override
public ElementCaseMobileAttr getReportMobileAttr() {
return decoratedTemplateWorkBook.getReportMobileAttr();
}
@Override
public void setReportMobileAttr(ElementCaseMobileAttr elementCaseMobileAttr) {
decoratedTemplateWorkBook.setReportMobileAttr(elementCaseMobileAttr);
}
@Override
public void addAttrMark(IOFileAttrMark ioFileAttrMark) {
decoratedTemplateWorkBook.addAttrMark(ioFileAttrMark);
}
@Override
public <T extends IOFileAttrMark> T getAttrMark(String s) {
return decoratedTemplateWorkBook.getAttrMark(s);
}
@Override
public Iterator<String> getAllMarkName() {
return decoratedTemplateWorkBook.getAllMarkName();
}
@Override
public Iterator<String> getTableDataNameIterator() {
return decoratedTemplateWorkBook.getTableDataNameIterator();
}
@Override
public TableData getTableData(String s) {
return decoratedTemplateWorkBook.getTableData(s);
}
@Override
public void putTableData(String s, TableData tableData) {
decoratedTemplateWorkBook.putTableData(s, tableData);
}
@Override
public boolean renameTableData(String s, String s1) {
return decoratedTemplateWorkBook.renameTableData(s, s1);
}
@Override
public void removeTableData(String s) {
decoratedTemplateWorkBook.removeTableData(s);
}
@Override
public void clearAllTableData() {
decoratedTemplateWorkBook.clearAllTableData();
}
@Override
public ReportFitAttr getReportFitAttr() {
return decoratedTemplateWorkBook.getReportFitAttr();
}
@Override
public void setReportFitAttr(ReportFitAttr reportFitAttr) {
decoratedTemplateWorkBook.setReportFitAttr(reportFitAttr);
}
@Override
public void readXML(XMLableReader xmLableReader) {
decoratedTemplateWorkBook.readXML(xmLableReader);
}
@Override
public void writeXML(XMLPrintWriter xmlPrintWriter) {
decoratedTemplateWorkBook.writeXML(xmlPrintWriter);
}
@Override
public String[] getJSImport() {
return decoratedTemplateWorkBook.getJSImport();
}
@Override
public String[] getCSSImport() {
return decoratedTemplateWorkBook.getCSSImport();
}
@Override
public Object clone() throws CloneNotSupportedException {
return decoratedTemplateWorkBook.clone();
}
public List<Widget> getWidgetList() {
return widgetList;
}
public void addWidget(Widget widget) {
this.widgetList.add(widget);
}
}

116
src/main/java/com/fr/plugin/event/manager/WorkbookEventManager.java

@ -0,0 +1,116 @@
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);
}*/
}
}
}
Loading…
Cancel
Save