【仅供内部供应商使用,不提供对外解答和培训】

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

(1)IndependentChartProvider

 

package com.fr.chart.fun;

import com.fr.chart.chartattr.Chart;
import com.fr.stable.fun.Level;

/**
* Created by eason on 15/4/21.
* 图表接口
*/
public interface IndependentChartProvider extends Level {


String XML_TAG = "IndependentChartProvider";

int CURRENT_API_LEVEL = 3;

 /**
* 图表的国际化的名字的key
*
* @return 图表国际化的名字的key
*/
 String getChartName();

 /**
* 该种图表所有的图表类型,比如柱形图就有堆积柱形图,百分比堆积柱形图等等
*
* @return 所有的图表类型
*/
 Chart[] getChartTypes();

 /**
* 图表在web端展现时需要的JS文件
*
* @return JS文件数组
*/
 String[] getRequiredJS();

 /**
* JS对象名,该对象一般是一个函数,执行后会在给定的dom中绘制图表
*
* @return JS对象名
*/
 String getWrapperName();

 /**
* 定义在设计器里展现的图的路径
*
* @return 图的路径
*/
 String getChartImagePath();

}

 

 

(2)IndependentChartUIProvider
此接口用户不必实现 ,只需要继承 AbstractIndependentChartUI4Custom 类,并实现如下方法即可

 



package com.fr.design.chart.fun;

import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.chart.ChartEditPaneProvider;
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.stable.fun.Level;

/**
* Created by eason on 14/12/29.
*
* @since 8.0
* 自定义图表类型设设计界面接口
*/
public interface IndependentChartUIProvider extends Level {


String XML_TAG = "IndependentChartUIProvider";

int CURRENT_API_LEVEL = 3;

/**
* 当前接口的API等级,用于判断是否需要升级插件
*
* @return API等级
*/
int currentAPILevel();
 /**
* 图表配置面板
*
* @return图表配置面板
 */
 ChartEditPaneProvider getChartConfigPane(String plotID);

......(其他方法不用实现)
}

 

关键抽象类

(1)IndependentChartProvider

(1)ThirdChartEditPane

用户的图表配置面板ChartConfigPane类需要继承此抽象类,并实现

void populateBean(Object ob);

void updateBean(Object ob);
方法。

 

 

package com.fr.design.chart.fun;
import com.fr.chart.chartattr.Plot

package com.fr.design.mainframe.chart.fun;

import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Chart.ChartCollection;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.gui.chart.ChartEditPaneProvider;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.ibutton.UIHeadGroup;
import com.fr.design.mainframe.TargetComponentContainer;
import com.fr.stable.fun.Level.design.mainframe.chart.gui.ChartDataPane;

import javax.swing.*;
import java.awt.*;

/**
* Created by easonmengao on 152017/45/213.
* 图表接口
*/
public abstract interfaceclass IndependentChartProviderThirdChartEditPane extends LevelChartEditPane {

implements String XML_TAG = "IndependentChartProvider";
int CURRENT_API_LEVEL = 3;
 /**
* 图表的国际化的名字的key
*
* @return 图表国际化的名字的key
*/
 String getChartName();
 /**
* 该种图表所有的图表类型,比如柱形图就有堆积柱形图,百分比堆积柱形图等等
*
* @return 所有的图表类型
*/
 Chart[] getChartTypes();
 /**
* 图表在web端展现时需要的JS文件
*
* @return JS文件数组
*/
 String[] getRequiredJS();
 /**
* JS对象名,该对象一般是一个函数,执行后会在给定的dom中绘制图表
*
* @return JS对象名
*/
 String getWrapperName();
 /**
* 定义在设计器里展现的图的路径
*
* @return 图的路径
*/
 String getChartImagePath();
}

 

 

(2)IndependentChartUIProvider
此接口用户不必实现 ,只需要继承 AbstractIndependentChartUI4Custom 类,并实现如下方法即可
ChartEditPaneProvider, ThirdChartInterface {

......

}
 

 

(2)ThirdChart

用户的图表配置面板ChartConfig类需要继承此抽象类,并实现

 

String getChartID()(此ID要和配置文件中对应图表的plotID一致)
void writeXML(XMLPrintWriter xmlPrintWriter)
void readXML(XMLableReader xmLableReader)
JSONObject toJSONObject(Repository repository) throws JSONException
Image toImage(int i, int i1, int i2)
Image toImage(int i, int i1, int i2, CallbackEvent callbackEvent, ChartDataParam chartDataParam)
方法。

 


package com.fr.chart.chartattr;

import com.fr.designbase.beanschart.BasicBeanPaneBaseChartGlyph;
import com.fr.designbase.conditionchart.ConditionAttributesPaneBaseChartPainter;
import com.fr.designbase.gui.chart.ChartEditPaneProviderChangeConfigProvider;
import com.fr.designbase.guichart.frpanechartdata.AttributeChangeListenerChartData;
import com.fr.designchart.mainframechartglyph.chart.AbstractChartAttrPaneChartGlyph;
import com.fr.design.mainframe.chart.guichartglyph.ChartDataPanePlotGlyph;
import com.fr.designstable.mainframe.chart.gui.ChartStylePaneweb.Repository;

import comjava.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPaneawt.*;
import comjava.frawt.design.mainframe.chart.gui.data.table.AbstractTableDataContentPanegeom.RectangularShape;
import comjava.fr.design.mainframe.chart.gui.type.AbstractChartTypePaneutil.Iterator;
import comjava.fr.stable.fun.Levelutil.Map;

/**
* Created by easonmengao on 142017/125/293.
*
* @since 8.0
* 自定义图表类型设设计界面接口 用户使用第三方图表需要继承chart父类
*/
public abstract interfaceclass IndependentChartUIProviderThirdChart extends LevelChart {
implements String XML_TAG = "IndependentChartUIProvider";
int CURRENT_API_LEVEL = 3;
/**
* 当前接口的API等级,用于判断是否需要升级插件
*
* @return API等级
*/
int currentAPILevel();
 /**
* 图表配置面板
*
* @return图表配置面板
*/
 ChartEditPaneProvider getChartConfigPane(String plotID);
}

 

 

 

实际示例

绿色主题

 

package com.fr.solution.theme.green;
 
import com.fr.fs.fun.impl.AbstractThemeVariousProvider;
 
public class ThemeGreen extends AbstractThemeVariousProvider {
 
    @Override
    public String name() {
        return "AcrossGreen";
    }
 
    @Override
    public String text() {
        return "横向目录";
    }
 
    @Override
    public String coverPath() {
        return "/com/fr/solution/theme/green/files/cover.png";
    }
 
    @Override
    public String scriptPath() {
        return "/com/fr/solution/theme/green/files/theme.js";
    }
 
    @Override
    public String stylePath() {
        return "/com/fr/solution/theme/green/files/style.css";
    }
}
BaseChartGlyph {
 ......
}