diff --git a/designer/src/com/fr/quickeditor/ChartQuickEditor.java b/designer/src/com/fr/quickeditor/ChartQuickEditor.java index f0f68a9a7..48033aa23 100644 --- a/designer/src/com/fr/quickeditor/ChartQuickEditor.java +++ b/designer/src/com/fr/quickeditor/ChartQuickEditor.java @@ -1,24 +1,24 @@ package com.fr.quickeditor; import com.fr.base.chart.BaseChartCollection; +import com.fr.chart.chartattr.ChartCollection; import com.fr.design.designer.TargetComponent; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.module.DesignModuleFactory; +import com.fr.design.selection.QuickEditor; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.poly.PolyDesigner; import com.fr.poly.creator.ChartBlockEditor; import com.fr.report.cell.Elem; -import com.fr.design.selection.QuickEditor; import java.awt.*; public class ChartQuickEditor extends QuickEditor{ // kunsnat: editingPropertyPane初始化 避开设计器启动, 在用到的时候再初始化. //private BaseChartPropertyPane editingPropertyPane = null; - public ChartQuickEditor() { setLayout(new BorderLayout()); setBorder(null); @@ -45,8 +45,9 @@ public class ChartQuickEditor extends QuickEditor{ element = ((ElementCasePane)tc).getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); } collection = (BaseChartCollection) element.getValue(); - + String plotID=((ChartCollection)collection).getSelectedChart().getPlot().getPlotID(); add(editingPropertyPane = DesignModuleFactory.getChartPropertyPane(), BorderLayout.CENTER); + editingPropertyPane.addChartEditPane(plotID); editingPropertyPane.setSupportCellData(true); } editingPropertyPane.populateChartPropertyPane(collection, tc); diff --git a/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java b/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java index c5b58ae26..327c44468 100644 --- a/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java +++ b/designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java @@ -2,7 +2,6 @@ package com.fr.design.gui.chart; import com.fr.base.chart.BaseChartCollection; import com.fr.design.designer.TargetComponent; -import com.fr.design.mainframe.BaseWidgetPropertyPane; import com.fr.design.mainframe.DockingView; /** @@ -23,5 +22,7 @@ public abstract class BaseChartPropertyPane extends DockingView { public abstract ChartEditPaneProvider getChartEditPane(); + public abstract void addChartEditPane(String plotID); + //public abstract void clear(); } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/module/DesignModuleFactory.java b/designer_base/src/com/fr/design/module/DesignModuleFactory.java index 77233e4db..5b9dcb762 100644 --- a/designer_base/src/com/fr/design/module/DesignModuleFactory.java +++ b/designer_base/src/com/fr/design/module/DesignModuleFactory.java @@ -1 +1,256 @@ -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 chartEditorClass; private Class chartComponentClass; private Class chartDialogClass; private Class chartPropertyPaneClass; private Class newFormAction; private Class formParaDesigner; private Class paraPropertyPane; private Class formHierarchyPaneCls; private Class widgetPropertyPane; private Class buttonDetailPaneClass; private java.util.List 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 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 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 fClass) { instance.formHierarchyPaneCls = fClass; } public static HierarchyTreePane getFormHierarchyPane() { return StableUtils.getInstance(instance.formHierarchyPaneCls); } public static void registerWidgetPropertyPaneClass(Class 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 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(); } 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()]); } } \ No newline at end of file +package com.fr.design.module; + +import com.fr.base.FRContext; +import com.fr.base.chart.BaseChartCollection; +import com.fr.chart.chartattr.ChartCollection; +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 static ChartCollection chartCollection; + + public static ChartCollection getChartCollection() { + return chartCollection; + } + + public static void setChartCollection(ChartCollection chartCollection) { + DesignModuleFactory.chartCollection = chartCollection; + } + + private DesignModuleFactory() { + + } + + private HyperlinkGroupType hyperlinkGroupType = new BaseHyperlinkGroup(); + private NameableCreator[] creators4Hyperlink; + private WidgetOption[] extraOptions; + private Class chartEditorClass; + private Class chartComponentClass; + private Class chartDialogClass; + private Class chartPropertyPaneClass; + private Class newFormAction; + private Class formParaDesigner; + private Class paraPropertyPane; + private Class formHierarchyPaneCls; + private Class widgetPropertyPane; + private Class buttonDetailPaneClass; + private java.util.List 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 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 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 fClass) { + instance.formHierarchyPaneCls = fClass; + } + + public static HierarchyTreePane getFormHierarchyPane() { + return StableUtils.getInstance(instance.formHierarchyPaneCls); + } + + public static void registerWidgetPropertyPaneClass(Class 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 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(); + } + 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()]); + } +} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index c67a6aea5..67a04c19f 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -11,9 +11,11 @@ import com.fr.design.chart.fun.IndependentChartUIProvider; import com.fr.design.chart.gui.ChartWidgetOption; import com.fr.design.chartinterface.*; import com.fr.design.condition.ConditionAttributesPane; +import com.fr.design.extra.ChartTypeInterfaceCloseableHandler; import com.fr.design.gui.core.WidgetOption; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; @@ -21,11 +23,13 @@ import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane import com.fr.design.module.DesignModuleFactory; import com.fr.file.XMLFileManager; import com.fr.form.ui.ChartEditor; -import com.fr.general.*; +import com.fr.general.FRLogger; +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; import com.fr.plugin.PluginCollector; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginMessage; -import com.fr.design.extra.ChartTypeInterfaceCloseableHandler; import com.fr.plugin.proxy.PluginInstanceProxyFactory; import com.fr.plugin.proxy.PluginInvocationHandler; import com.fr.stable.ArrayUtils; @@ -410,6 +414,23 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getTableDataSourcePane(plot, parent); } + //获取指定图表的编辑面板 + public ChartEditPane getChartConfigPane(String plotID) { + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String priority = (String) entry.getKey(); + if (plotInChart(plotID, priority)) { + return getChartConfigPane(priority, plotID); + } + } + return getChartConfigPane(ChartTypeManager.CHART_PRIORITY, plotID); + } + + private ChartEditPane getChartConfigPane(String priority, String plotID) { + return chartTypeInterfaces.get(priority).get(plotID).getChartConfigPane(plotID); + } + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { Iterator iterator = chartTypeInterfaces.entrySet().iterator(); diff --git a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java index 1b90382d6..fa581301e 100644 --- a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java +++ b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java @@ -5,6 +5,7 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; @@ -89,5 +90,6 @@ public interface IndependentChartUIProvider extends Level { */ String getPlotTypeTitle4PopupWindow(); + ChartEditPane getChartConfigPane(String plotID); } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java index a44efb38c..8af87fb9d 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java @@ -7,9 +7,11 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; +import com.fr.stable.StableUtils; /** @@ -30,6 +32,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr public ChartDataPane getChartDataPane(AttributeChangeListener listener){ return new ChartDataPane(listener); } + /** * 是否使用默认的界面,为了避免界面来回切换 * @return 是否使用默认的界面 @@ -53,4 +56,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr public ConditionAttributesPane getPlotConditionPane(Plot plot){ return new DataSeriesConditionPane(); } + + public ChartEditPane getChartConfigPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} + } \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI4Custom.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI4Custom.java new file mode 100644 index 000000000..76dcefa32 --- /dev/null +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI4Custom.java @@ -0,0 +1,85 @@ +package com.fr.design.chart.fun.impl; + +import com.fr.chart.chartattr.Plot; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.chart.fun.IndependentChartUIProvider; +import com.fr.design.condition.ConditionAttributesPane; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.gui.ChartDataPane; +import com.fr.design.mainframe.chart.gui.ChartStylePane; +import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; +import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; +import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.design.mainframe.chart.gui.type.PiePlotPane; +import com.fr.general.ComparatorUtils; + +/** + * Created by mengao on 2017/4/24. + * 用户使用第三方图表需要继承的面板抽象类 + */ +public abstract class AbstractIndependentChartUI4Custom implements IndependentChartUIProvider { + + @Override + public AbstractChartTypePane getPlotTypePane() { + return new PiePlotPane(); + } + + @Override + public ChartDataPane getChartDataPane(AttributeChangeListener listener) { + return null; + } + + @Override + public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { + return null; + } + + @Override + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { + return null; + } + + public BasicBeanPane getPlotSeriesPane(ChartStylePane parent, Plot plot){ + return null; + } + + public BasicBeanPane getPlotSeriesPane(){ + return null; + } + + public boolean equals(Object obj) { + return obj != null && ComparatorUtils.equals(obj.getClass(), this.getClass()); + } + + public ConditionAttributesPane getPlotConditionPane(Plot plot){ + return null; + } + + @Override + public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){ + return new AbstractChartAttrPane[]{}; + } + + @Override + public boolean isUseDefaultPane(){ + return false; + } + + + @Override + public String getIconPath() { + return "com/fr/design/images/form/toolbar/ChartF-Column.png"; + } + + @Override + + /** + * plot面板的标题 + * 插件兼容 + */ + public String getPlotTypeTitle4PopupWindow(){ + return getPlotTypePane().title4PopupWindow(); + } + +} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java index ff0eaa81d..001c510dc 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java @@ -7,9 +7,11 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane; import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.mainframe.chart.AbstractChartAttrPane; +import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.ChartStylePane; import com.fr.general.ComparatorUtils; +import com.fr.stable.StableUtils; /** * Created by Mitisky on 16/3/7. @@ -65,4 +67,6 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ public String getPlotTypeTitle4PopupWindow(){ return getPlotTypePane().title4PopupWindow(); } + + public ChartEditPane getChartConfigPane(String plotID){ return StableUtils.construct(ChartEditPane.class);} } diff --git a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java index 1c04543d6..f29efe7af 100644 --- a/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java @@ -3,26 +3,20 @@ */ package com.fr.design.mainframe; -import java.awt.BorderLayout; -import java.awt.Dimension; - -import javax.swing.BorderFactory; -import javax.swing.JComponent; -import javax.swing.SwingConstants; - import com.fr.design.gui.ilable.UILabel; +import javax.swing.*; +import java.awt.*; + public class ChartPropertyPane extends MiddleChartPropertyPane{ /** * 创建图表属性表实例. */ private synchronized static ChartPropertyPane getInstance() { - if(singleton == null) { - singleton = new ChartPropertyPane(); - } - - singleton.setSureProperty(); + //todo + //创建新图表时,创建属性表配置面板 + singleton = new ChartPropertyPane(); return singleton; } diff --git a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java index 0b86c5a12..68eb0da0c 100644 --- a/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java +++ b/designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java @@ -3,14 +3,10 @@ */ package com.fr.design.mainframe; -import java.awt.BorderLayout; - -import javax.swing.Icon; -import javax.swing.JComponent; - import com.fr.base.BaseUtils; import com.fr.base.chart.BaseChartCollection; import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.designer.TargetComponent; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.ChartEditPaneProvider; @@ -19,7 +15,9 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itabpane.TitleChangeListener; import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.general.Inter; -import com.fr.stable.StableUtils; + +import javax.swing.*; +import java.awt.*; public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ @@ -38,10 +36,13 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{ createNameLabel(); this.add(createNorthComponent(), BorderLayout.NORTH); - - chartEditPane = StableUtils.construct(ChartEditPane.class); + } + + public void addChartEditPane(String plotID){ + chartEditPane = ChartTypeInterfaceManager.getInstance().getChartConfigPane(plotID); chartEditPane.setSupportCellData(true); this.createMainPane(); + setSureProperty(); } protected abstract void createNameLabel(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 92177a8e3..fc3b70108 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -51,7 +51,6 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 protected JPanel center; private TargetComponentContainer container = null; private TitleChangeListener titleChangeListener = null; - private Calendar lastTime; protected ChartEditPane() { @@ -108,6 +107,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } AbstractChartAttrPane selectedPane = paneList.get(tabsHeaderIconPane.getSelectedIndex()); selectedPane.update(collection); + if (!ComparatorUtils.equals(collection, lastCollection)) { //此处画图 diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ThirdChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ThirdChartEditPane.java new file mode 100644 index 000000000..d1f97a15c --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/ThirdChartEditPane.java @@ -0,0 +1,46 @@ +package com.fr.design.mainframe.chart; + +import com.fr.chart.chartattr.ChartCollection; + +/** + * Created by mengao on 2017/5/3. + */ +public abstract class ThirdChartEditPane extends ChartEditPane { + + protected void createTabsPane() {} + + public String getSelectedTabName() { + return paneList.get(1).title4PopupWindow(); + } + + public void populate(ChartCollection collection) { + populateBean(collection.getSelectedChart()); + } + + protected void dealWithStyleChange(){ + populateBean(collection.getSelectedChart()); + } + + /** + * 图表设计器,显示选中的面板 + */ + public void populateSelectedTabPane() { + populateBean(collection.getSelectedChart()); + } + + /** + * 数据集改变的事件监听 + */ + public void registerDSChangeListener() { + } + + @Override + protected String title4PopupWindow() { + return "CustomChart"; + } + + protected abstract void populateBean(Object ob); + + protected abstract void updateBean(Object ob); + +} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java index 9e03f4ec0..ccccdc3cc 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java @@ -28,7 +28,7 @@ public class ChartDataPane extends AbstractChartAttrPane { super(); this.listener = listener; } - + @Override protected JPanel createContentPane() { contentsPane = new NormalChartDataPane(listener, ChartDataPane.this); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java index 721e7432a..382ca853d 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java @@ -22,7 +22,7 @@ public class TableDataPane extends FurtherBasicBeanPane{ private static final int TOP = -5; private DatabaseTableDataPane tableDataPane; private AbstractTableDataContentPane dataContentPane; - + private ChartDataPane parent; protected AbstractTableDataContentPane getDataContentPane() { @@ -33,10 +33,10 @@ public class TableDataPane extends FurtherBasicBeanPane{ this.parent = parent; initDataPane(); } - + private void initDataPane() { - UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ; - label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT)); + UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ; + label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT)); tableDataPane = new DatabaseTableDataPane(label) { @Override protected void userEvent() { @@ -46,18 +46,18 @@ public class TableDataPane extends FurtherBasicBeanPane{ }; tableDataPane.setBorder(BorderFactory.createMatteBorder(0,6,0, 0, getBackground())); - tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1)); + tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1)); tableDataPane.setPreferredSize(new Dimension(205 , 20)); - this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0)); + this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0)); this.add(tableDataPane, BorderLayout.NORTH); } - + /** * 检查box是否可用. */ public void checkBoxUse() { TableDataWrapper dataWrap = tableDataPane.getTableDataWrapper(); - + if(dataContentPane != null) { dataContentPane.checkBoxUse(dataWrap != null); } @@ -140,7 +140,7 @@ public class TableDataPane extends FurtherBasicBeanPane{ } onSelectTableData(); checkBoxUse(); - + tableDataPane.populateBean(tableData); }