帆软报表设计器源代码。
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.
 
 
 
 

245 lines
7.9 KiB

package com.fr.design.module;
import com.fr.base.FRContext;
import com.fr.base.chart.BaseChartCollection;
import com.fr.design.gui.chart.BaseChartPropertyPane;
import com.fr.design.gui.chart.MiddleChartComponent;
import com.fr.design.gui.chart.MiddleChartDialog;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.core.WidgetOption;
import com.fr.design.gui.frpane.BaseHyperlinkGroup;
import com.fr.design.gui.frpane.HyperlinkGroupType;
import com.fr.design.mainframe.BaseFormDesigner;
import com.fr.design.mainframe.BaseWidgetPropertyPane;
import com.fr.design.parameter.HierarchyTreePane;
import com.fr.design.parameter.ParameterDesignerProvider;
import com.fr.design.parameter.ParameterReader;
import com.fr.form.ui.Widget;
import com.fr.stable.StableUtils;
import java.awt.*;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 7.0.3
* Date: 13-7-8
* Time: 下午1:57
*/
public class DesignModuleFactory {
private static DesignModuleFactory instance = new DesignModuleFactory();
private DesignModuleFactory() {
}
private HyperlinkGroupType hyperlinkGroupType = new BaseHyperlinkGroup();
private NameableCreator[] creators4Hyperlink;
private WidgetOption[] extraOptions;
private Class<Widget> chartEditorClass;
private Class<MiddleChartComponent> chartComponentClass;
private Class<MiddleChartDialog> chartDialogClass;
private Class<? extends BaseChartPropertyPane> chartPropertyPaneClass;
private Class newFormAction;
private Class formParaDesigner;
private Class paraPropertyPane;
private Class<? extends HierarchyTreePane> formHierarchyPaneCls;
private Class<? extends BaseWidgetPropertyPane> widgetPropertyPane;
private Class buttonDetailPaneClass;
private java.util.List<ParameterReader> parameterReaderList;
public static void registerHyperlinkGroupType(HyperlinkGroupType hyperlinkGroupType) {
instance.hyperlinkGroupType = hyperlinkGroupType;
}
public static HyperlinkGroupType getHyperlinkGroupType() {
return instance.hyperlinkGroupType;
}
public static void registerCreators4Hyperlink(NameableCreator[] nameableCreators) {
instance.creators4Hyperlink = nameableCreators;
}
public static NameableCreator[] getCreators4Hyperlink() {
return instance.creators4Hyperlink;
}
public static void registerExtraWidgetOptions(WidgetOption[] options) {
instance.extraOptions = options;
}
public static WidgetOption[] getExtraWidgetOptions() {
if (instance.extraOptions == null) {
instance.extraOptions = new WidgetOption[0];
}
return instance.extraOptions;
}
public static void registerChartEditorClass(Class cls) {
instance.chartEditorClass = cls;
}
public static Class<Widget> getChartEditorClass() {
return instance.chartEditorClass;
}
public static void registerChartComponentClass(Class bcc) {
instance.chartComponentClass = bcc;
}
public static void registerChartDialogClass(Class cd) {
instance.chartDialogClass = cd;
}
public static void registerChartPropertyPaneClass(Class<? extends BaseChartPropertyPane> p) {
instance.chartPropertyPaneClass = p;
}
public static void registerNewFormActionClass(Class f) {
instance.newFormAction = f;
}
public static Class getNewFormAction() {
return instance.newFormAction;
}
public static void registerParaPropertyPaneClass(Class p) {
instance.paraPropertyPane = p;
}
/**
* 获取参数属性界面
*
* @return 参数属性界面.
*/
public static Object getParaPropertyPane() {
if (instance.paraPropertyPane != null) {
try {
return instance.paraPropertyPane.newInstance();
} catch (Exception e) {
FRContext.getLogger().error("Error in Para PropertyPane");
}
}
return null;
}
public static void registerFormParaDesignerClass(Class f) {
instance.formParaDesigner = f;
}
public static ParameterDesignerProvider getFormParaDesigner() {
if (instance.formParaDesigner != null) {
try {
return (ParameterDesignerProvider) instance.formParaDesigner.newInstance();
} catch (Exception e) {
FRContext.getLogger().error("error in form para designer");
}
}
return null;
}
public static void registerFormHierarchyPaneClass(Class<? extends HierarchyTreePane> fClass) {
instance.formHierarchyPaneCls = fClass;
}
public static HierarchyTreePane getFormHierarchyPane() {
return StableUtils.getInstance(instance.formHierarchyPaneCls);
}
public static void registerWidgetPropertyPaneClass(Class<? extends BaseWidgetPropertyPane> wp) {
instance.widgetPropertyPane = wp;
}
public static BaseWidgetPropertyPane getWidgetPropertyPane(BaseFormDesigner fd) {
BaseWidgetPropertyPane wp = null;
if (instance.widgetPropertyPane != null) {
wp = StableUtils.getInstance(instance.widgetPropertyPane);
wp.setEditingFormDesigner(fd);
wp.refreshDockingView();
}
return wp;
}
public static MiddleChartComponent getChartComponent(BaseChartCollection collection) {
MiddleChartComponent bcc = null;
if (instance.chartComponentClass != null) {
try {
bcc = instance.chartComponentClass.newInstance();
bcc.populate(collection);
} catch (InstantiationException e) {
FRContext.getLogger().error("Error in ChartComponent instant", e);
} catch (IllegalAccessException e) {
FRContext.getLogger().error("Error in Access", e);
}
}
return bcc;
}
/**
* kunsnat: 初始化图表向导对话框, 调用静态方法showWindow, 参数window.
*
* @return 返回调出的ChartDailog
*/
public static MiddleChartDialog getChartDialog(Window window) {
try {
Constructor<MiddleChartDialog> c;
if (window instanceof Frame) {
c = instance.chartDialogClass.getConstructor(Frame.class);
} else {
c = instance.chartDialogClass.getConstructor(Dialog.class);
}
return c.newInstance(window);
} catch (Exception e) {
FRContext.getLogger().error(e.getMessage(), e);
}
return null;
}
/**
* kunsnat: 获取图表属性界面
*
* @return 返回界面.
*/
public static BaseChartPropertyPane getChartPropertyPane() {
BaseChartPropertyPane bp = null;
if (instance.chartPropertyPaneClass != null) {
bp = StableUtils.getInstance(instance.chartPropertyPaneClass);
}
return bp;
}
public static void clearChartPropertyPane() {
if (instance.chartPropertyPaneClass != null) {
StableUtils.clearInstance(instance.chartPropertyPaneClass);
}
}
public static void registerButtonDetailPaneClass(Class clazz) {
instance.buttonDetailPaneClass = clazz;
}
public static Class getButtonDetailPaneClass() {
return instance.buttonDetailPaneClass;
}
public static void registerParameterReader(ParameterReader reader) {
if (instance.parameterReaderList == null) {
instance.parameterReaderList = new ArrayList<ParameterReader>();
}
instance.parameterReaderList.add(reader);
}
public static ParameterReader[] getParameterReaders() {
if (instance.parameterReaderList == null) {
return new ParameterReader[0];
}
return instance.parameterReaderList.toArray(new ParameterReader[instance.parameterReaderList.size()]);
}
}