Browse Source

CHART-10247 图表选择界面不去chart对象里面拿图片 直接去ChartTypeUIProvider拿

research/11.0
zheng 5 years ago
parent
commit
b63c2b1f12
  1. 203
      designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java
  2. 45
      designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java
  3. 81
      designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java
  4. 66
      designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java
  5. 23
      designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java
  6. 27
      designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java
  7. 5
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
  8. 19
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java
  9. 19
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartUIProvider.java
  10. 3
      designer-chart/src/main/java/com/fr/extended/chart/ExtendedTypePane.java
  11. 27
      designer-chart/src/main/java/com/fr/van/chart/area/AreaIndependentVanChartInterface.java
  12. 28
      designer-chart/src/main/java/com/fr/van/chart/bar/BarIndependentVanChartInterface.java
  13. 17
      designer-chart/src/main/java/com/fr/van/chart/bubble/BubbleIndependentVanChartInterface.java
  14. 34
      designer-chart/src/main/java/com/fr/van/chart/column/ColumnIndependentVanChartInterface.java
  15. 20
      designer-chart/src/main/java/com/fr/van/chart/custom/CustomIndependentVanChartInterface.java
  16. 18
      designer-chart/src/main/java/com/fr/van/chart/drillmap/DrillMapIndependentVanChartInterface.java
  17. 9
      designer-chart/src/main/java/com/fr/van/chart/funnel/designer/FunnelIndependentVanChartInterface.java
  18. 11
      designer-chart/src/main/java/com/fr/van/chart/gantt/designer/GanttIndependentVanChartInterface.java
  19. 21
      designer-chart/src/main/java/com/fr/van/chart/gauge/GaugeIndependentVanChartInterface.java
  20. 10
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/HeatMapIndependentVanChartInterface.java
  21. 19
      designer-chart/src/main/java/com/fr/van/chart/line/LineIndependentVanChartInterface.java
  22. 20
      designer-chart/src/main/java/com/fr/van/chart/map/MapIndependentVanChartInterface.java
  23. 19
      designer-chart/src/main/java/com/fr/van/chart/multilayer/MultiPieIndependentVanChartInterface.java
  24. 19
      designer-chart/src/main/java/com/fr/van/chart/pie/PieIndependentVanChartInterface.java
  25. 18
      designer-chart/src/main/java/com/fr/van/chart/radar/RadarIndependentVanChartInterface.java
  26. 10
      designer-chart/src/main/java/com/fr/van/chart/scatter/ScatterIndependentVanChartInterface.java
  27. 16
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/StructureIndependentVanChartInterface.java
  28. 9
      designer-chart/src/main/java/com/fr/van/chart/treemap/TreeMapIndependentVanChartInterface.java
  29. 19
      designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java
  30. 11
      designer-realize/src/main/java/com/fr/poly/PolyComponentsBar.java

203
designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java

@ -1,13 +1,14 @@
package com.fr.design;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.base.ChartInternationalNameContentBean;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.chart.fun.IndependentChartUIProvider;
import com.fr.design.chart.fun.ChartTypeUIProvider;
import com.fr.design.chart.fun.impl.AbstractIndependentChartsUI;
import com.fr.design.chart.gui.ChartWidgetOption;
import com.fr.design.chartinterface.AreaIndependentChartInterface;
import com.fr.design.chartinterface.BarIndependentChartInterface;
@ -38,10 +39,11 @@ import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPa
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.design.module.DesignModuleFactory;
import com.fr.extended.chart.AbstractExtendedChartUIProvider;
import com.fr.form.ui.ChartEditor;
import com.fr.general.GeneralContext;
import com.fr.general.IOUtils;
import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.PiePlot4VanChart;
import com.fr.plugin.chart.area.VanChartAreaPlot;
import com.fr.plugin.chart.bubble.VanChartBubblePlot;
@ -111,9 +113,9 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
private static ChartTypeInterfaceManager classManager = new ChartTypeInterfaceManager();
private static LinkedHashMap<String, CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>> chartTypeInterfaces =
new LinkedHashMap<String, CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>>();
private static LinkedHashMap<String, CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>> chartTypeInterfaces =
new LinkedHashMap<String, CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>>();
private static Map<String, String> idAndPriorityMap = new HashMap<String, String>();
@ -156,18 +158,18 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public static WidgetOption[] initWidgetOption() {
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames();
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length];
String[] chartIDs = ChartTypeManager.getInstance().getAllChartIDs();
ChartWidgetOption[] child = new ChartWidgetOption[chartIDs.length];
int index = 0;
for (ChartInternationalNameContentBean bean : typeName) {
String plotID = bean.getChartID();
ChartProvider[] rowChart = ChartTypeManager.getInstance().getChartTypes(plotID);
if (ArrayUtils.isEmpty(rowChart) && !ChartTypeManager.innerChart(plotID)) {
for (String chartID : chartIDs) {
ChartProvider[] rowChart = ChartTypeManager.getInstance().getChartTypes(chartID);
if (ArrayUtils.isEmpty(rowChart) && !ChartTypeManager.innerChart(chartID)) {
continue;
}
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID);
String name = ChartTypeInterfaceManager.getInstance().getName(chartID);
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(chartID);
Icon icon = IOUtils.readIcon(iconPath);
child[index] = new ChartWidgetOption(InterProviderFactory.getProvider().getLocText(bean.getName()), icon, ChartEditor.class, plotID);
child[index] = new ChartWidgetOption(name, icon, ChartEditor.class, chartID);
index++;
}
@ -218,18 +220,18 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.GIS_CHAER, new GisMapIndependentChartInterface());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.FUNNEL_CHART, new FunnelIndependentChartInterface());
}
private static void addChartTypeInterface(String priority, String plotID, IndependentChartUIProvider provider) {
private static void addChartTypeInterface(String priority, String plotID, ChartTypeUIProvider provider) {
if (chartTypeInterfaces != null) {
if (!chartTypeInterfaces.containsKey(priority)) {
//新建一个具体图表列表
CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap> chartUIList
= new CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>(LinkedHashMap.class);
CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap> chartUIList
= new CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>(LinkedHashMap.class);
chartUIList.put(plotID, provider);
chartTypeInterfaces.put(priority, chartUIList);
} else {
Map<String, IndependentChartUIProvider> chartUIList = chartTypeInterfaces.get(priority);
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
if (!chartUIList.containsKey(plotID)) {
chartUIList.put(plotID, provider);
}
@ -238,7 +240,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
}
}
private IndependentChartUIProvider getChartTypeInterface(String plotID) {
private ChartTypeUIProvider getChartTypeInterface(String plotID) {
if (idAndPriorityMap.containsKey(plotID)) {
String priority = idAndPriorityMap.get(plotID);
if (chartTypeInterfaces.containsKey(priority)) {
@ -267,66 +269,30 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(priority)) {
Map<String, IndependentChartUIProvider> chartUIList = chartTypeInterfaces.get(priority);
Iterator<Map.Entry<String, IndependentChartUIProvider>> iterator = chartUIList.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, IndependentChartUIProvider> entry = iterator.next();
String plotID = entry.getKey();
AbstractChartTypePane pane = entry.getValue().getPlotTypePane();
if (AssistUtils.equals(pane.title4PopupWindow(), TYPE_PANE_DEFAULT_TITLE)) {
continue;
}
pane.setPlotID(plotID);
paneList.add(pane);
if (allChartTypePane.get(priority) == null) {
allChartTypePane.put(priority, new LinkedHashMap<String, FurtherBasicBeanPane<? extends ChartProvider>>());
}
allChartTypePane.get(priority).put(plotID, pane);
}
}
}
private String getChartName(String plotID, IndependentChartUIProvider provider) {
String name = provider.getPlotTypeTitle4PopupWindow();
if (StringUtils.isEmpty(name)) {
name = ChartTypeManager.getInstance().getChartName(plotID);
}
return name;
}
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
public String getTitle4PopupWindow(String plotID) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getPlotTypeTitle4PopupWindow();
}
return StringUtils.EMPTY;
}
/**
* 获取指定图表的标题
*/
public String getTitle4PopupWindow(String priority, String plotID) {
if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(priority) && chartTypeInterfaces.get(priority).containsKey(plotID)) {
IndependentChartUIProvider provider = chartTypeInterfaces.get(priority).get(plotID);
return getChartName(plotID, provider);
}
//兼容老的插件
if (chartTypeInterfaces != null) {
Iterator iterator = chartTypeInterfaces.entrySet().iterator();
Iterator<Map.Entry<String, ChartTypeUIProvider>> iterator = chartUIList.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
String defaultPriority = (String) entry.getKey();
if (chartTypeInterfaces.get(defaultPriority).containsKey(plotID)) {
return getChartName(plotID, chartTypeInterfaces.get(defaultPriority).get(plotID));
try {
Map.Entry<String, ChartTypeUIProvider> entry = iterator.next();
String plotID = entry.getKey();
AbstractChartTypePane pane = entry.getValue().getPlotTypePane();
if (AssistUtils.equals(pane.title4PopupWindow(), TYPE_PANE_DEFAULT_TITLE)) {
continue;
}
pane.setPlotID(plotID);
paneList.add(pane);
if (allChartTypePane.get(priority) == null) {
allChartTypePane.put(priority, new LinkedHashMap<String, FurtherBasicBeanPane<? extends ChartProvider>>());
}
allChartTypePane.get(priority).put(plotID, pane);
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
}
return StringUtils.EMPTY;
}
private List<Integer> getPriorityInOrder() {
@ -346,16 +312,53 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public String getIconPath(String plotID) {
if (chartTypeInterfaces != null) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getIconPath();
}
}
return StringUtils.EMPTY;
}
public String[] getSubName(String id) {
if (chartTypeInterfaces != null) {
ChartTypeUIProvider provider = getChartTypeInterface(id);
if (provider != null) {
String[] subNames = provider.getSubName();
return ArrayUtils.isEmpty(subNames) ? new String[]{getName(id)} : subNames;
}
}
return new String[0];
}
public String getName(String id) {
if (chartTypeInterfaces != null) {
ChartTypeUIProvider provider = getChartTypeInterface(id);
if (provider != null) {
String name = provider.getName();
return StringUtils.isEmpty(name) ? getCompatibleName(id, provider) : name;
}
}
return StringUtils.EMPTY;
}
//兼容
private static String getCompatibleName(String id, ChartTypeUIProvider provider) {
if (provider instanceof AbstractIndependentChartsUI) {
return provider.getPlotTypePane().title4PopupWindow();
}
if (provider instanceof AbstractExtendedChartUIProvider) {
ChartProvider chartProvider = ChartTypeManager.getInstanceWithCheck().getChartTypes(id)[0];
if (chartProvider instanceof Chart) {
return ((Chart) chartProvider).getChartName();
}
}
return StringUtils.EMPTY;
}
public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getChartDataPane(listener);
}
@ -363,20 +366,8 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
return new ChartDataPane(listener);
}
/**
* 获取对应ID的图表数量
*
*/
private int getChartSize(String key) {
if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(key)) {
return chartTypeInterfaces.get(key).size();
}
return 0;
}
public AbstractChartAttrPane[] getAttrPaneArray(String plotID, AttributeChangeListener listener) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getAttrPaneArray(listener);
}
@ -387,7 +378,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) {
IndependentChartUIProvider provider = getChartTypeInterface(plot.getPlotID());
ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID());
if (provider != null) {
return provider.getTableDataSourcePane(plot, parent);
}
@ -397,7 +388,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) {
IndependentChartUIProvider provider = getChartTypeInterface(plot.getPlotID());
ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID());
if (provider != null) {
return provider.getReportDataSourcePane(plot, parent);
}
@ -405,17 +396,9 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
return null;
}
private boolean plotInChart(String plotID, String priority) {
return chartTypeInterfaces != null
&& chartTypeInterfaces.containsKey(priority)
&& chartTypeInterfaces.get(priority).containsKey(plotID);
}
public ConditionAttributesPane getPlotConditionPane(Plot plot) {
IndependentChartUIProvider provider = getChartTypeInterface(plot.getPlotID());
ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID());
if (provider != null) {
return provider.getPlotConditionPane(plot);
}
@ -425,7 +408,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot) {
IndependentChartUIProvider provider = getChartTypeInterface(plot.getPlotID());
ChartTypeUIProvider provider = getChartTypeInterface(plot.getPlotID());
if (provider != null) {
return provider.getPlotSeriesPane(parent, plot);
}
@ -441,7 +424,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
*/
public boolean isUseDefaultPane(String plotID) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.isUseDefaultPane();
}
@ -452,7 +435,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public boolean needChartChangePane(ChartProvider chart) {
if (chart != null) {
String chartID = chart.getID();
IndependentChartUIProvider provider = getChartTypeInterface(chartID);
ChartTypeUIProvider provider = getChartTypeInterface(chartID);
if (provider != null) {
return provider.needChartChangePane();
}
@ -467,7 +450,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
if (isIndependentChartUIProvider(injection)) {
String priority = injection.getAttribute("priority", DEFAULT_PRIORITY);
String plotID = injection.getAttribute("plotID");
IndependentChartUIProvider instance = (IndependentChartUIProvider) injection.getObject();
ChartTypeUIProvider instance = (ChartTypeUIProvider) injection.getObject();
addChartTypeInterface(priority, plotID, instance);
}
}
@ -487,7 +470,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
if (chartTypeInterfaces != null) {
if (chartTypeInterfaces.containsKey(priority)) {
Map<String, IndependentChartUIProvider> chartUIList = chartTypeInterfaces.get(priority);
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
chartUIList.remove(plotID);
}
}
@ -495,13 +478,13 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
private boolean isIndependentChartUIProvider(PluginSingleInjection injection) {
return !(injection == null || injection.getObject() == null) && IndependentChartUIProvider.XML_TAG.equals(injection.getName()) && injection.getObject() instanceof IndependentChartUIProvider;
return !(injection == null || injection.getObject() == null) && ChartTypeUIProvider.XML_TAG.equals(injection.getName()) && injection.getObject() instanceof ChartTypeUIProvider;
}
public ChartEditPane getChartEditPane(String plotID) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getChartEditPane(plotID);
}
@ -509,7 +492,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
}
public ChartsConfigPane getChartConfigPane(String plotID) {
IndependentChartUIProvider provider = getChartTypeInterface(plotID);
ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) {
return provider.getChartConfigPane(plotID);
}

45
designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java

@ -3,14 +3,13 @@ package com.fr.design.chart;
* the Pane of the Chart
*/
import com.fr.chart.base.ChartInternationalNameContentBean;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import javax.swing.BorderFactory;
@ -28,29 +27,7 @@ import java.awt.Component;
public class ChartTypePane extends ChartCommonWizardPane {
private static final long serialVersionUID = -1175602484968520546L;
private ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstanceWithCheck().getAllChartBaseNames();
private ChartProvider[][] charts4Icon = null;
{
charts4Icon = new ChartProvider[this.typeName.length][];
for (int i = 0; i < this.typeName.length; i++) {
ChartProvider[] rowCharts = ChartTypeManager.getInstanceWithCheck().getChartTypes(this.typeName[i].getChartID());
int rowChartsCount = rowCharts.length;
charts4Icon[i] = new ChartProvider[rowChartsCount];
for (int j = 0; j < rowChartsCount; j++) {
try {
charts4Icon[i][j] = (ChartProvider) rowCharts[j].clone();
//todo@shinerefactor 老图表也是提供一张图片 这边就不用setTitle(null) 然后实时去画
// charts4Icon[i][j].setTitle(null);
// if(charts4Icon[i][j].getPlot() != null){
// charts4Icon[i][j].getPlot().setLegend(null);
// }
} catch (CloneNotSupportedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
}
}
private String[] chartIDs = ChartTypeManager.getInstanceWithCheck().getAllChartIDs();
private JList mainTypeList = null;
private JList iconViewList = null;
@ -61,8 +38,8 @@ public class ChartTypePane extends ChartCommonWizardPane {
DefaultListModel defaultListModel = new DefaultListModel();
mainTypeList = new JList(defaultListModel);
for (int i = 0; i < typeName.length; i++) {
defaultListModel.insertElementAt(InterProviderFactory.getProvider().getLocText(typeName[i].getName()), i);
for (int i = 0; i < chartIDs.length; i++) {
defaultListModel.insertElementAt(ChartTypeInterfaceManager.getInstance().getName(chartIDs[i]), i);
}
mainTypeList.addListSelectionListener(listSelectionListener);
@ -115,11 +92,15 @@ public class ChartTypePane extends ChartCommonWizardPane {
protected ListSelectionListener listSelectionListener = new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
int main_index = mainTypeList.getSelectedIndex();
ChartProvider[] sub_charts = ChartTypePane.this.charts4Icon[main_index];
String id = ChartTypePane.this.chartIDs[main_index];
String[] demoImagePath = ChartTypeManager.getInstanceWithCheck().getDemoImagePath(id);
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(id);
ChartTypePane.this.iconListModel.clear();
for (int i = 0; i < sub_charts.length; i++) {
String ImagePath = sub_charts[i].demoImagePath();
String chartName = sub_charts[i].getChartName();
for (int i = 0, len = demoImagePath.length; i < len; i++) {
String ImagePath = demoImagePath[i];
String chartName = subName[i];
ChartTypePane.this.iconListModel.addElement(new ChartIcon(ImagePath, chartName));
}
iconViewList.setSelectedIndex(0);
@ -143,7 +124,7 @@ public class ChartTypePane extends ChartCommonWizardPane {
ChartProvider chart4Update = cc.getSelectedChartProvider();
if (chart4Update == null) {
String plotID = typeName[mainTypeList.getSelectedIndex()].getChartID();
String plotID = this.chartIDs[mainTypeList.getSelectedIndex()];
ChartProvider chart = ChartTypeManager.getInstance().getChartTypes(plotID)[iconViewList.getSelectedIndex()];
try {
chart4Update = (ChartProvider) chart.clone();

81
designer-chart/src/main/java/com/fr/design/chart/fun/IndependentChartUIProvider.java → designer-chart/src/main/java/com/fr/design/chart/fun/ChartTypeUIProvider.java

@ -21,26 +21,70 @@ import com.fr.stable.fun.Level;
* @since 8.0
* 自定义图表类型设设计界面接口
*/
public interface IndependentChartUIProvider extends Level {
public interface ChartTypeUIProvider extends Level {
String XML_TAG = SpecialLevel.IndependentChartUIProvider.getTagName();
int CURRENT_API_LEVEL = 3;
boolean needChartChangePane();
/**
* 图表的类型定义界面类型就是属性表的第一个界面
* 图表 类型定义界面类型就是属性表的第一个界面
* 可以返回null 代表没有 图表类型切换界面
*
* @return 图表的类型定义界面类型
*/
AbstractChartTypePane getPlotTypePane();
/**
* 图表 数据配置界面 即属性表的第二个界面
* 可以返回null 代表没有数据配置界面
*/
ChartDataPane getChartDataPane(AttributeChangeListener listener);
/**
* 图表 属性界面数组 其他样式界面数组
* 可以返回空数组 代表没有其他样式界面
*
* @return 属性界面
*/
AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener);
/**
* 图表 名称
* eg:柱形图
*
* @return 图表 名称
*/
String getName();
/**
* 图表 名称
* 柱形图 堆积柱形图
*
* @return 图表 名称
*/
String[] getSubName();
/**
* 图标路径
* 表单 工具栏 拖拽图表小图标
* 16*16
*
* @return 图标路径
*/
String getIconPath();
//todo:把下面这些接口删除
@Deprecated
boolean needChartChangePane();
/**
* 数据集数据源的界面
*
* @return 数据集数据源的界面
*/
@Deprecated
AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent);
@ -49,6 +93,7 @@ public interface IndependentChartUIProvider extends Level {
*
* @return 单元格数据源的界面
*/
@Deprecated
AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent);
/**
@ -56,6 +101,7 @@ public interface IndependentChartUIProvider extends Level {
*
* @return 条件属性界面
*/
@Deprecated
ConditionAttributesPane getPlotConditionPane(Plot plot);
/**
@ -63,40 +109,21 @@ public interface IndependentChartUIProvider extends Level {
*
* @return 系列界面
*/
@Deprecated
BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot);
/**
* 图表的属性界面数组
*
* @return 属性界面
*/
AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener);
ChartDataPane getChartDataPane(AttributeChangeListener listener);
/**
* 是否使用默认的界面为了避免界面来回切换
*
* @return 是否使用默认的界面
*/
@Deprecated
boolean isUseDefaultPane();
/**
* 图标路径
*
* @return 图标路径
*/
String getIconPath();
/**
* plot面板的标题
*/
String getPlotTypeTitle4PopupWindow();
@Deprecated
ChartEditPane getChartEditPane(String plotID);
@Deprecated
ChartsConfigPane getChartConfigPane(String plotID);
}

66
designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java

@ -1,66 +0,0 @@
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.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.ChartsConfigPane;
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 eason on 15/4/23.
*/
@Deprecated
public abstract class AbstractIndependentChartUI implements IndependentChartUIProvider {
@Override
public int currentAPILevel() {
return -1;
}
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){
return new AbstractChartAttrPane[0];
}
public ChartDataPane getChartDataPane(AttributeChangeListener listener){
return new ChartDataPane(listener);
}
/**
* 是否使用默认的界面为了避免界面来回切换
* @return 是否使用默认的界面
*/
public boolean isUseDefaultPane(){
return true;
}
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot){
return getPlotSeriesPane();
}
public BasicBeanPane<Plot> getPlotSeriesPane(){
return null;
}
public boolean equals(Object obj) {
return obj != null && ComparatorUtils.equals(obj.getClass(), this.getClass());
}
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new DataSeriesConditionPane();
}
public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);}
public ChartsConfigPane getChartConfigPane(String plotID){return null;}
}

23
designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java

@ -2,7 +2,7 @@ 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.chart.fun.ChartTypeUIProvider;
import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
@ -17,7 +17,7 @@ import com.fr.stable.StableUtils;
/**
* Created by Mitisky on 16/3/7.
*/
public abstract class AbstractIndependentChartUIWithAPILevel implements IndependentChartUIProvider {
public abstract class AbstractIndependentChartUIWithAPILevel implements ChartTypeUIProvider {
//这个不能改,是做兼容用的
//2016.10.14-11.24号的8.0jar因为改了这个为3,不会提示5.26号之前的插件更新
private static final int OLD_PLUGIN_LEVEL = -2;
@ -37,6 +37,17 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ
return new ChartDataPane(listener);
}
//todo@bjornrefactor 适配旧版本图表后 删掉下面两个方法
@Override
public String getName() {
return null;
}
@Override
public String[] getSubName() {
return new String[0];
}
/**
* 是否使用默认的界面为了避免界面来回切换
* @return 是否使用默认的界面
@ -66,14 +77,6 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ
return new DataSeriesConditionPane();
}
/**
* plot面板的标题
* 插件兼容
*/
public String getPlotTypeTitle4PopupWindow(){
return getPlotTypePane().title4PopupWindow();
}
public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);}
public ChartsConfigPane getChartConfigPane(String plotID){return null;}

27
designer-chart/src/main/java/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java

@ -3,7 +3,7 @@ package com.fr.design.chart.fun.impl;
import com.fr.chart.chartattr.Plot;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chart.fun.IndependentChartUIProvider;
import com.fr.design.chart.fun.ChartTypeUIProvider;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
@ -26,8 +26,19 @@ import com.fr.stable.fun.mark.API;
* 用户使用第三方图表需要继承的面板抽象类
*/
@API(level = IndependentChartUIProvider.CURRENT_API_LEVEL)
public abstract class AbstractIndependentChartsUI extends AbstractProvider implements IndependentChartUIProvider {
@Deprecated
@API(level = ChartTypeUIProvider.CURRENT_API_LEVEL)
public abstract class AbstractIndependentChartsUI extends AbstractProvider implements ChartTypeUIProvider {
@Override
public String getName() {
return null;
}
@Override
public String[] getSubName() {
return new String[0];
}
public String mark4Provider() {
return getClass().getName();
@ -96,16 +107,6 @@ public abstract class AbstractIndependentChartsUI extends AbstractProvider imple
return "com/fr/design/images/form/toolbar/ChartF-Column.png";
}
@Override
/**
* plot面板的标题
* 插件兼容
*/
public String getPlotTypeTitle4PopupWindow(){
return getPlotTypePane().title4PopupWindow();
}
@Override
public ChartEditPane getChartEditPane(String plotID) {
return new ChartsEditPane();

5
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java

@ -178,9 +178,8 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
*/
public ChartProvider getChangeStateNewChart() {
ChartProvider chart = editingCollection.getSelectedChartProvider();
String priority = ChartTypeManager.VAN_CHART_PRIORITY;
//todo@shinerefactor
// chart.getPriority();
String chartID = chart.getID();
String priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID);
return ChartTypeManager.getInstanceWithCheck().getFirstChart(priority);
}

19
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java

@ -1,6 +1,5 @@
package com.fr.design.mainframe.chart.gui;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.SwitchState;
import com.fr.chart.charttypes.ChartTypeManager;
@ -146,12 +145,6 @@ public class ChartTypePane extends AbstractChartAttrPane{
//chartID改变的话图表类型就算改变了
if (StringUtils.isNotEmpty(chartID)) {
if (chart instanceof Chart) {
//todo@shinerefactor: 这边看下是否可以删除
((Chart) chart).setWrapperName(ChartTypeManager.getInstanceWithCheck().getWrapperName(chartID));
((Chart) chart).setChartImagePath(ChartTypeManager.getInstanceWithCheck().getChartImagePath(chartID));
}
boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(chartID);
if (editPane.isDefaultPane() != isUseDefault || (!isUseDefault && !ComparatorUtils.equals(lastPlotID, chartID))) {
@ -217,12 +210,10 @@ public class ChartTypePane extends AbstractChartAttrPane{
private void relayout(ChartCollection collection){
//重构需要重构下拉框选项和cardNames
ChartProvider chart = collection.getSelectedChartProvider();
String priority = ChartTypeManager.VAN_CHART_PRIORITY;
//TODO@shinerefactor
// chart.getPriority();
String plotID = chart.getID();
boolean enabledChart = ChartTypeManager.enabledChart(plotID);
String item = ChartTypeInterfaceManager.getInstance().getTitle4PopupWindow(priority, plotID);
String chartID = chart.getID();
String priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID);
boolean enabledChart = ChartTypeManager.enabledChart(chartID);
String item = ChartTypeInterfaceManager.getInstance().getName(chartID);
//第一步就是重构cards
cards.clear();
@ -233,7 +224,7 @@ public class ChartTypePane extends AbstractChartAttrPane{
addOnePriorityCards(priority);
}
} else {
addOnePlotIDCards(priority, plotID);
addOnePlotIDCards(priority, chartID);
}
//下拉框重构开始。为了防止重构是触发update

19
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartUIProvider.java

@ -2,7 +2,7 @@ package com.fr.extended.chart;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chart.fun.IndependentChartUIProvider;
import com.fr.design.chart.fun.ChartTypeUIProvider;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
@ -13,18 +13,27 @@ 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.StringUtils;
import com.fr.stable.fun.impl.AbstractProvider;
/**
* Created by shine on 2018/3/2.
*/
public abstract class AbstractExtendedChartUIProvider extends AbstractProvider implements IndependentChartUIProvider {
public abstract class AbstractExtendedChartUIProvider extends AbstractProvider implements ChartTypeUIProvider {
protected abstract AbstractExtendedChartTableDataPane getTableDataSourcePane();
protected abstract AbstractReportDataContentPane getReportDataSourcePane();
@Override
public String getName() {
return null;
}
@Override
public String[] getSubName() {
return new String[0];
}
@Override
public boolean needChartChangePane() {
return false;
@ -85,10 +94,6 @@ public abstract class AbstractExtendedChartUIProvider extends AbstractProvider i
return null;
}
public String getPlotTypeTitle4PopupWindow(){
return StringUtils.EMPTY;
}
@Override
public ChartsConfigPane getChartConfigPane(String plotID) {
return null;

3
designer-chart/src/main/java/com/fr/extended/chart/ExtendedTypePane.java

@ -2,6 +2,7 @@ package com.fr.extended.chart;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.design.mainframe.chart.gui.type.ChartImagePane;
@ -71,7 +72,7 @@ public class ExtendedTypePane<T extends AbstractChart> extends AbstractChartType
@Override
public String title4PopupWindow() {
return ChartTypeManager.getInstance().getChartName(getPlotID());
return ChartTypeInterfaceManager.getInstance().getName(getPlotID());
}
@Override

27
designer-chart/src/main/java/com/fr/van/chart/area/AreaIndependentVanChartInterface.java

@ -3,6 +3,7 @@ package com.fr.van.chart.area;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.van.chart.vanchart.AbstractMultiCategoryVanChartUI;
@ -16,6 +17,24 @@ public class AreaIndependentVanChartInterface extends AbstractMultiCategoryVanCh
return "com/fr/design/images/form/toolbar/area.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Area");
}
@Override
public String[] getSubName() {
String area = Toolkit.i18nText("Fine-Design_Chart_New_Area");
String stack = Toolkit.i18nText("Fine-Design_Chart_Stacked");
String percent = Toolkit.i18nText("Fine-Design_Chart_Use_Percent");
return new String[]{
area,
stack + area,
percent + stack + area,
Toolkit.i18nText("Fine-Design_Chart_Mode_Custom")
};
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartAreaPlotPane();
@ -29,12 +48,4 @@ public class AreaIndependentVanChartInterface extends AbstractMultiCategoryVanCh
return new VanChartAreaSeriesPane(parent, plot);
}
/**
* plot面板的标题
* 插件兼容
*/
public String getPlotTypeTitle4PopupWindow(){
return VanChartAreaPlotPane.TITLE;
}
}

28
designer-chart/src/main/java/com/fr/van/chart/bar/BarIndependentVanChartInterface.java

@ -4,6 +4,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
@ -17,6 +18,25 @@ import com.fr.van.chart.vanchart.AbstractMultiCategoryVanChartUI;
* Created by Mitisky on 15/10/20.
*/
public class BarIndependentVanChartInterface extends AbstractMultiCategoryVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Bar");
}
@Override
public String[] getSubName() {
String bar = Toolkit.i18nText("Fine-Design_Chart_New_Bar");
String stack = Toolkit.i18nText("Fine-Design_Chart_Stacked");
String percent = Toolkit.i18nText("Fine-Design_Chart_Use_Percent");
return new String[]{
bar,
stack + bar,
percent + stack + bar,
Toolkit.i18nText("Fine-Design_Chart_Mode_Custom")
};
}
@Override
public String getIconPath() {
return "com/fr/design/images/form/toolbar/bar.png";
@ -45,12 +65,4 @@ public class BarIndependentVanChartInterface extends AbstractMultiCategoryVanCha
return new AbstractChartAttrPane[]{stylePane, otherPane};
}
/**
* plot面板的标题
* 插件兼容
*/
public String getPlotTypeTitle4PopupWindow(){
return VanChartBarPlotPane.TITLE;
}
}

17
designer-chart/src/main/java/com/fr/van/chart/bubble/BubbleIndependentVanChartInterface.java

@ -5,6 +5,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -22,6 +23,18 @@ import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
* Created by Mitisky on 16/3/31.
*/
public class BubbleIndependentVanChartInterface extends AbstractIndependentVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Bubble");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Bubble_Chart"),
Toolkit.i18nText("Fine-Design_Chart_New_Force_Bubble")
};
}
/**
* 图表的类型定义界面类型就是属性表的第一个界面
*
@ -79,8 +92,4 @@ public class BubbleIndependentVanChartInterface extends AbstractIndependentVanCh
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new VanChartBubbleConditionPane(plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartBubblePlotPane.TITLE;
}
}

34
designer-chart/src/main/java/com/fr/van/chart/column/ColumnIndependentVanChartInterface.java

@ -2,10 +2,8 @@ package com.fr.van.chart.column;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chartx.MultiCategoryChartDataPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.van.chart.vanchart.AbstractMultiCategoryVanChartUI;
@ -14,6 +12,25 @@ import com.fr.van.chart.vanchart.AbstractMultiCategoryVanChartUI;
* Created by Mitisky on 15/9/24.
*/
public class ColumnIndependentVanChartInterface extends AbstractMultiCategoryVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Column");
}
@Override
public String[] getSubName() {
String column = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_New_Column");
String stack = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Stacked");
String percent = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Use_Percent");
return new String[]{
column,
stack + column,
percent + stack + column,
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Mode_Custom")
};
}
@Override
public String getIconPath() {
return "com/fr/design/images/form/toolbar/column.png";
@ -33,12 +50,13 @@ public class ColumnIndependentVanChartInterface extends AbstractMultiCategoryVan
return new VanChartColumnSeriesPane(parent, plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartColumnPlotPane.TITLE;
}
// @Override
// public ChartDataPane getChartDataPane(AttributeChangeListener listener) {
// return new MultiCategoryChartDataPane(listener);
// return new AbstractDataPane(listener) {
// @Override
// protected SingleDataPane createSingleDataPane() {
// return new SingleDataPane(new MultiCategoryDataSetFieldsPane(), new MultiCategoryCellDataFieldsPane());
// }
// };
// }
}

20
designer-chart/src/main/java/com/fr/van/chart/custom/CustomIndependentVanChartInterface.java

@ -1,6 +1,7 @@
package com.fr.van.chart.custom;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
@ -14,6 +15,21 @@ import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
* Created by Mitisky on 16/2/16.
*/
public class CustomIndependentVanChartInterface extends AbstractIndependentVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Combine");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_New_Column_Line"),
Toolkit.i18nText("Fine-Design_Chart_New_Column_Area"),
Toolkit.i18nText("Fine-Design_Chart_New_StackColumn_Line"),
Toolkit.i18nText("Fine-Design_Chart_New_Custom_Combine")
};
}
/**
* 图表的类型定义界面类型就是属性表的第一个界面
*
@ -49,8 +65,4 @@ public class CustomIndependentVanChartInterface extends AbstractIndependentVanCh
public ChartDataPane getChartDataPane(AttributeChangeListener listener){
return new VanChartCustomDataPane(listener);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartCustomPlotPane.TITLE;
}
}

18
designer-chart/src/main/java/com/fr/van/chart/drillmap/DrillMapIndependentVanChartInterface.java

@ -1,6 +1,7 @@
package com.fr.van.chart.drillmap;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
@ -16,6 +17,19 @@ import com.fr.van.chart.map.designer.style.VanChartMapStylePane;
* Created by Mitisky on 16/6/20.
*/
public class DrillMapIndependentVanChartInterface extends MapIndependentVanChartInterface {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_Drill_Map");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Region_Map"),
Toolkit.i18nText("Fine-Design_Chart_PointMap"),
Toolkit.i18nText("Fine-Design_Chart_Custom_Map")
};
}
/**
* 图标路径
@ -50,8 +64,4 @@ public class DrillMapIndependentVanChartInterface extends MapIndependentVanChart
VanChartOtherPane otherPane = new VanChartDrillMapOtherPane();
return new AbstractChartAttrPane[]{stylePane, otherPane};
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartDrillMapPlotPane.TITLE;
}
}

9
designer-chart/src/main/java/com/fr/van/chart/funnel/designer/FunnelIndependentVanChartInterface.java

@ -5,6 +5,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -25,6 +26,11 @@ import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
* Created by Mitisky on 16/10/10.
*/
public class FunnelIndependentVanChartInterface extends AbstractIndependentVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Funnel");
}
/**
* 图表的类型定义界面类型就是属性表的第一个界面
*
@ -77,7 +83,4 @@ public class FunnelIndependentVanChartInterface extends AbstractIndependentVanCh
return "com/fr/design/images/form/toolbar/funnel.png";
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartFunnelTypePane.TITLE;
}
}

11
designer-chart/src/main/java/com/fr/van/chart/gantt/designer/GanttIndependentVanChartInterface.java

@ -5,6 +5,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -27,6 +28,11 @@ import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
* Created by hufan on 2017/1/9.
*/
public class GanttIndependentVanChartInterface extends AbstractIndependentVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Gantt");
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartGanttPlotPane();
@ -59,11 +65,6 @@ public class GanttIndependentVanChartInterface extends AbstractIndependentVanCha
return "com/fr/design/images/form/toolbar/gantt.png";
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartGanttPlotPane.TITLE;
}
/**
* 图表的属性界面数组
* @return 属性界面

21
designer-chart/src/main/java/com/fr/van/chart/gauge/GaugeIndependentVanChartInterface.java

@ -3,6 +3,7 @@ package com.fr.van.chart.gauge;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -31,6 +32,22 @@ public class GaugeIndependentVanChartInterface extends AbstractIndependentVanCha
return "com/fr/design/images/form/toolbar/gauge.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Gauge");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Gauge_Pointer"),
Toolkit.i18nText("Fine-Design_Chart_Gauge_Pointer180"),
Toolkit.i18nText("Fine-Design_Chart_Gauge_Ring"),
Toolkit.i18nText("Fine-Design_Chart_Gauge_Slot"),
Toolkit.i18nText("Fine-Design_Chart_Gauge_Cuvette")
};
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartGaugePlotPane();
@ -79,8 +96,4 @@ public class GaugeIndependentVanChartInterface extends AbstractIndependentVanCha
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot){
return new VanChartGaugeSeriesPane(parent, plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartGaugePlotPane.TITLE;
}
}

10
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/HeatMapIndependentVanChartInterface.java

@ -5,6 +5,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
@ -32,6 +33,11 @@ public class HeatMapIndependentVanChartInterface extends MapIndependentVanChartI
return "com/fr/design/images/form/toolbar/heatmap.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_HeatMap");
}
public AbstractChartTypePane getPlotTypePane() {
return new VanChartHeatMapTypePane();
}
@ -62,8 +68,4 @@ public class HeatMapIndependentVanChartInterface extends MapIndependentVanChartI
};
return new AbstractChartAttrPane[]{stylePane, otherPane};
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartHeatMapTypePane.TITLE;
}
}

19
designer-chart/src/main/java/com/fr/van/chart/line/LineIndependentVanChartInterface.java

@ -3,6 +3,7 @@ package com.fr.van.chart.line;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.van.chart.vanchart.AbstractMultiCategoryVanChartUI;
@ -16,6 +17,20 @@ public class LineIndependentVanChartInterface extends AbstractMultiCategoryVanCh
return "com/fr/design/images/form/toolbar/line.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Line");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Line_Chart"),
Toolkit.i18nText("Fine-Design_Chart_Stacked_Line"),
Toolkit.i18nText("Fine-Design_Chart_Mode_Custom")
};
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartLinePlotPane();
@ -29,8 +44,4 @@ public class LineIndependentVanChartInterface extends AbstractMultiCategoryVanCh
return new VanChartLineSeriesPane(parent, plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartLinePlotPane.TITLE;
}
}

20
designer-chart/src/main/java/com/fr/van/chart/map/MapIndependentVanChartInterface.java

@ -4,6 +4,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -32,6 +33,21 @@ import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
*/
public class MapIndependentVanChartInterface extends AbstractIndependentVanChartUI {
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Map");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Region_Map"),
Toolkit.i18nText("Fine-Design_Chart_PointMap"),
Toolkit.i18nText("Fine-Design_Chart_LineMap"),
Toolkit.i18nText("Fine-Design_Chart_Combine_Map")
};
}
/**
* 图表的类型定义界面类型就是属性表的第一个界面
*
@ -93,8 +109,4 @@ public class MapIndependentVanChartInterface extends AbstractIndependentVanChart
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new VanChartMapConditionPane(plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartMapPlotPane.TITLE;
}
}

19
designer-chart/src/main/java/com/fr/van/chart/multilayer/MultiPieIndependentVanChartInterface.java

@ -2,10 +2,8 @@ package com.fr.van.chart.multilayer;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chartx.MultiPieChartDataPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.van.chart.multilayer.other.VanChartMultiPieConditionPane;
@ -26,9 +24,19 @@ public class MultiPieIndependentVanChartInterface extends AbstractIndependentVan
return "com/fr/design/images/form/toolbar/multiPie.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_MultiPie");
}
// @Override
// public ChartDataPane getChartDataPane(AttributeChangeListener listener) {
// return new MultiPieChartDataPane(listener);
// return new AbstractDataPane(listener) {
// @Override
// protected SingleDataPane createSingleDataPane() {
// return new SingleDataPane(new MultiPieDataSetFieldsPane(), new MultiPieCellDataFieldsPane());
// }
// };
// }
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot){
@ -39,7 +47,4 @@ public class MultiPieIndependentVanChartInterface extends AbstractIndependentVan
return new VanChartMultiPieConditionPane(plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartMultiPiePlotPane.TITLE;
}
}

19
designer-chart/src/main/java/com/fr/van/chart/pie/PieIndependentVanChartInterface.java

@ -3,6 +3,7 @@ package com.fr.van.chart.pie;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
@ -23,6 +24,20 @@ public class PieIndependentVanChartInterface extends AbstractIndependentVanChart
return "com/fr/design/images/form/toolbar/pie.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Pie");
}
@Override
public String[] getSubName() {
return new String[]{
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_New_Pie"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_SameArc_Pie"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_DifferArc_Pie")
};
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartPiePlotPane();
@ -48,8 +63,4 @@ public class PieIndependentVanChartInterface extends AbstractIndependentVanChart
public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent){
return (parent instanceof VanChartDataPane) ? new CategoryCustomPlotTableDataContentPane(parent) : new CategoryPlotTableDataContentPane(parent);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartPiePlotPane.TITLE;
}
}

18
designer-chart/src/main/java/com/fr/van/chart/radar/RadarIndependentVanChartInterface.java

@ -3,6 +3,7 @@ package com.fr.van.chart.radar;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.van.chart.vanchart.AbstractIndependentVanChartUI;
@ -16,6 +17,19 @@ public class RadarIndependentVanChartInterface extends AbstractIndependentVanCha
return "com/fr/design/images/form/toolbar/radar.png";
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Radar");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Radar_Chart"),
Toolkit.i18nText("Fine-Design_Chart_StackColumn_Radar")
};
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new VanChartRadarPlotPane();
@ -28,8 +42,4 @@ public class RadarIndependentVanChartInterface extends AbstractIndependentVanCha
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new VanChartRadarConditionPane(plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartRadarPlotPane.TITLE;
}
}

10
designer-chart/src/main/java/com/fr/van/chart/scatter/ScatterIndependentVanChartInterface.java

@ -6,6 +6,7 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -34,6 +35,11 @@ public class ScatterIndependentVanChartInterface extends AbstractIndependentVanC
return new VanChartScatterPlotPane();
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Scatter");
}
/**
* 图标路径
*
@ -78,8 +84,4 @@ public class ScatterIndependentVanChartInterface extends AbstractIndependentVanC
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new VanChartScatterConditionPane(plot);
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartScatterPlotPane.TITLE;
}
}

16
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/StructureIndependentVanChartInterface.java

@ -5,13 +5,13 @@ import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
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.plugin.chart.base.VanChartConstants;
import com.fr.van.chart.designer.other.VanChartInteractivePaneWithOutSort;
import com.fr.van.chart.designer.other.VanChartOtherPane;
@ -32,6 +32,20 @@ public class StructureIndependentVanChartInterface extends AbstractIndependentVa
return new VanChartStructureTypePane();
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_Structure");
}
@Override
public String[] getSubName() {
return new String[]{
Toolkit.i18nText("Fine-Design_Chart_Vertical_Structure"),
Toolkit.i18nText("Fine-Design_Chart_Horizontal_Structure"),
Toolkit.i18nText("Fine-Design_Chart_Radial_Structure")
};
}
@Override
public String getIconPath() {
return "com/fr/design/images/form/toolbar/structure.png";

9
designer-chart/src/main/java/com/fr/van/chart/treemap/TreeMapIndependentVanChartInterface.java

@ -4,6 +4,7 @@ import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
@ -22,6 +23,11 @@ public class TreeMapIndependentVanChartInterface extends MultiPieIndependentVanC
return new VanChartTreeMapPlotPane();
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_New_TreeMap");
}
@Override
public String getIconPath() {
return "com/fr/design/images/form/toolbar/treeMap.png";
@ -43,7 +49,4 @@ public class TreeMapIndependentVanChartInterface extends MultiPieIndependentVanC
return new AbstractChartAttrPane[]{stylePane, otherPane};
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartTreeMapPlotPane.TITLE;
}
}

19
designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/WordCloudIndependentVanChartInterface.java

@ -3,12 +3,11 @@ package com.fr.van.chart.wordcloud.designer;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chartx.WordCloudChartDataPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.i18n.Toolkit;
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.type.AbstractChartTypePane;
import com.fr.plugin.chart.base.VanChartConstants;
@ -36,6 +35,11 @@ public class WordCloudIndependentVanChartInterface extends AbstractIndependentVa
return new VanChartWordCloudTypePane();
}
@Override
public String getName() {
return Toolkit.i18nText("Fine-Design_Chart_Word_Cloud");
}
/**
* 图标路径
*
@ -87,12 +91,13 @@ public class WordCloudIndependentVanChartInterface extends AbstractIndependentVa
return new AbstractChartAttrPane[]{stylePane, otherPane};
}
public String getPlotTypeTitle4PopupWindow(){
return VanChartWordCloudTypePane.TITLE;
}
// @Override
// public ChartDataPane getChartDataPane(AttributeChangeListener listener) {
// return new WordCloudChartDataPane(listener);
// return new AbstractDataPane(listener) {
// @Override
// protected SingleDataPane createSingleDataPane() {
// return new SingleDataPane(new WordCloudDataSetFieldsPane(), new WordCloudCellDataFieldsPane());
// }
// };
// }
}

11
designer-realize/src/main/java/com/fr/poly/PolyComponentsBar.java

@ -3,8 +3,8 @@ package com.fr.poly;
import com.fr.base.BaseUtils;
import com.fr.base.chart.BaseChartCollection;
import com.fr.base.chart.BaseChartGetter;
import com.fr.base.chart.BaseChartNameID;
import com.fr.base.vcs.DesignerMode;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton;
@ -12,7 +12,6 @@ import com.fr.design.gui.itooltip.MultiLineToolTip;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.dnd.SerializableTransferable;
import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.report.poly.PolyECBlock;
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
@ -54,8 +53,8 @@ public class PolyComponentsBar extends JToolBar {
setFloatable(false);
setBackground(UIConstants.TOOLBARUI_BACKGROUND);
setLayout(FRGUIPaneFactory.create1ColumnGridLayout());
BaseChartNameID[] typeName = BaseChartGetter.getStaticAllChartBaseNames();
int typeLen = typeName.length < MAX_BAR_NUM ? typeName.length : MAX_BAR_NUM;
String[] iDs = ChartTypeManager.getInstance().getAllChartIDs();
int typeLen = iDs.length < MAX_BAR_NUM ? iDs.length : MAX_BAR_NUM;
serIcons = new SerIcon[typeLen + 1];
serIcons[0] = new SerIcon(
PolyECBlock.class,
@ -64,10 +63,10 @@ public class PolyComponentsBar extends JToolBar {
);
this.add(serIcons[0]);
for (int i = 0; i < typeLen; i++) {
String chartID = typeName[i].getChartID();
String chartID = iDs[i];
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(chartID);
BaseChartCollection chartCollection = BaseChartGetter.createChartCollection(chartID);
serIcons[i + 1] = new SerIcon(chartCollection, InterProviderFactory.getProvider().getLocText(typeName[i].getName()), iconPath);
serIcons[i + 1] = new SerIcon(chartCollection, ChartTypeInterfaceManager.getInstance().getName(chartID), iconPath);
this.add(serIcons[i + 1]);
}

Loading…
Cancel
Save