|
|
|
@ -19,26 +19,17 @@ 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.module.DesignModuleFactory; |
|
|
|
|
import com.fr.file.XMLFileManager; |
|
|
|
|
import com.fr.form.ui.ChartEditor; |
|
|
|
|
import com.fr.general.*; |
|
|
|
|
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.general.GeneralContext; |
|
|
|
|
import com.fr.general.IOUtils; |
|
|
|
|
import com.fr.general.Inter; |
|
|
|
|
import com.fr.plugin.injectable.PluginSingleInjection; |
|
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
|
import com.fr.stable.EnvChangedListener; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.fr.stable.bridge.StableFactory; |
|
|
|
|
import com.fr.stable.collections.map.CloseableContainedMap; |
|
|
|
|
import com.fr.stable.fun.Authorize; |
|
|
|
|
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; |
|
|
|
|
import com.fr.stable.plugin.PluginReadListener; |
|
|
|
|
import com.fr.stable.plugin.PluginSimplify; |
|
|
|
|
import com.fr.stable.plugin.closeable.Closeable; |
|
|
|
|
import com.fr.stable.xml.XMLPrintWriter; |
|
|
|
|
import com.fr.stable.xml.XMLableReader; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
|
import java.util.*; |
|
|
|
@ -46,43 +37,37 @@ import java.util.*;
|
|
|
|
|
/** |
|
|
|
|
* Created by eason on 14/12/29. |
|
|
|
|
*/ |
|
|
|
|
public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraChartDesignClassManagerProvider { |
|
|
|
|
public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerProvider { |
|
|
|
|
|
|
|
|
|
private static ClassLoader loader = Thread.currentThread().getContextClassLoader(); |
|
|
|
|
|
|
|
|
|
private static ChartTypeInterfaceManager classManager = null; |
|
|
|
|
private static ChartTypeInterfaceManager classManager = new ChartTypeInterfaceManager(); |
|
|
|
|
|
|
|
|
|
private static LinkedHashMap<String, CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>> chartTypeInterfaces = |
|
|
|
|
new LinkedHashMap<>(); |
|
|
|
|
new LinkedHashMap<String, CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>>(); |
|
|
|
|
|
|
|
|
|
public synchronized static ChartTypeInterfaceManager getInstance() { |
|
|
|
|
if (classManager == null) { |
|
|
|
|
classManager = new ChartTypeInterfaceManager(); |
|
|
|
|
chartTypeInterfaces.clear(); |
|
|
|
|
classManager.readDefault(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return classManager; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static { |
|
|
|
|
GeneralContext.addEnvChangedListener(new EnvChangedListener() { |
|
|
|
|
public void envChanged() { |
|
|
|
|
ChartTypeInterfaceManager.envChanged(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
readDefault(); |
|
|
|
|
StableFactory.registerMarkedObject(XML_TAG, classManager); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO: 2017/3/8
|
|
|
|
|
static { |
|
|
|
|
GeneralContext.addPluginReadListener(new PluginReadListener() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void success(Status status) { |
|
|
|
|
public void success() { |
|
|
|
|
//重新注册designModuleFactory
|
|
|
|
|
DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static WidgetOption[] initWidgetOption(){ |
|
|
|
|
private static WidgetOption[] initWidgetOption() { |
|
|
|
|
|
|
|
|
|
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames(); |
|
|
|
|
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length]; |
|
|
|
@ -102,8 +87,10 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
|
|
|
|
|
//异步加载图片
|
|
|
|
|
new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
|
|
initAllChartsDemoImage(allCharts); |
|
|
|
|
} |
|
|
|
|
}).start(); |
|
|
|
@ -113,8 +100,8 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
|
|
|
|
|
//加载所有图表图片
|
|
|
|
|
private static void initAllChartsDemoImage(Chart[][] allCharts) { |
|
|
|
|
for (int i = 0; i < allCharts.length; i++) { |
|
|
|
|
Chart[] rowChart = allCharts[i]; |
|
|
|
|
|
|
|
|
|
for (Chart[] rowChart : allCharts) { |
|
|
|
|
if (rowChart == null) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
@ -124,23 +111,21 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static void initChartsDemoImage(Chart[] rowChart) { |
|
|
|
|
int rowChartsCount = rowChart.length; |
|
|
|
|
for (int j = 0; j < rowChartsCount; j++) { |
|
|
|
|
|
|
|
|
|
for (Chart aRowChart : rowChart) { |
|
|
|
|
//此时,为图片生成模型数据
|
|
|
|
|
rowChart[j].createSlotImage(); |
|
|
|
|
aRowChart.createSlotImage(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private synchronized static void envChanged() { |
|
|
|
|
classManager = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static void readDefault() { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces.containsKey(ChartTypeManager.CHART_PRIORITY)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap> chartUIList = |
|
|
|
|
new CloseableContainedMap<>(LinkedHashMap.class); |
|
|
|
|
new CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>(LinkedHashMap.class); |
|
|
|
|
chartUIList.put(ChartConstants.COLUMN_CHART, new ColumnIndependentChartInterface()); |
|
|
|
|
chartUIList.put(ChartConstants.LINE_CHART, new LineIndependentChartInterface()); |
|
|
|
|
chartUIList.put(ChartConstants.BAR_CHART, new BarIndependentChartInterface()); |
|
|
|
@ -162,12 +147,12 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
chartTypeInterfaces.put(ChartTypeManager.CHART_PRIORITY, chartUIList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getIconPath(String plotID) { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces != null) { |
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
|
String priority = (String) entry.getKey(); |
|
|
|
|
for (Map.Entry<String, CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>> entry : chartTypeInterfaces.entrySet()) { |
|
|
|
|
String priority = entry.getKey(); |
|
|
|
|
String imagePath = getIconPath(priority, plotID); |
|
|
|
|
if (StringUtils.isNotEmpty(imagePath)) { |
|
|
|
|
return imagePath; |
|
|
|
@ -186,12 +171,13 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static void addChartTypeInterface(IndependentChartUIProvider provider, String priority, String plotID) { |
|
|
|
|
private static void addChartTypeInterface(IndependentChartUIProvider provider, String priority, String plotID) { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces != null) { |
|
|
|
|
if (!chartTypeInterfaces.containsKey(priority)) { |
|
|
|
|
//新建一个具体图表列表
|
|
|
|
|
CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap> chartUIList |
|
|
|
|
= new CloseableContainedMap<>(LinkedHashMap.class); |
|
|
|
|
= new CloseableContainedMap<String, IndependentChartUIProvider, LinkedHashMap>(LinkedHashMap.class); |
|
|
|
|
chartUIList.put(plotID, provider); |
|
|
|
|
chartTypeInterfaces.put(priority, chartUIList); |
|
|
|
|
} else { |
|
|
|
@ -203,43 +189,6 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 增加界面接口定义 |
|
|
|
|
* |
|
|
|
|
* @param className 类名 |
|
|
|
|
* @param plotID 标志ID |
|
|
|
|
*/ |
|
|
|
|
public void addChartInterface(String className, String priority, String plotID, PluginSimplify simplify) { |
|
|
|
|
if (StringUtils.isNotBlank(className)) { |
|
|
|
|
try { |
|
|
|
|
Class<?> clazz = Class.forName(className); |
|
|
|
|
Authorize authorize = clazz.getAnnotation(Authorize.class); |
|
|
|
|
if (authorize != null) { |
|
|
|
|
PluginLicenseManager.getInstance().registerPaid(authorize, simplify); |
|
|
|
|
} |
|
|
|
|
IndependentChartUIProvider provider = getProxyObj(plotID, simplify, clazz); |
|
|
|
|
if (PluginCollector.getCollector().isError(provider, IndependentChartUIProvider.CURRENT_API_LEVEL, simplify.getPluginName())) { |
|
|
|
|
PluginMessage.remindUpdate(className); |
|
|
|
|
} else { |
|
|
|
|
addChartTypeInterface(provider, priority, plotID); |
|
|
|
|
} |
|
|
|
|
} catch (ClassNotFoundException e) { |
|
|
|
|
FRLogger.getLogger().error("class not found:" + e.getMessage()); |
|
|
|
|
} catch (IllegalAccessException | InstantiationException e) { |
|
|
|
|
FRLogger.getLogger().error("object create error:" + e.getMessage()); |
|
|
|
|
} catch (NoSuchMethodException e) { |
|
|
|
|
FRLogger.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private IndependentChartUIProvider getProxyObj(String plotID, PluginSimplify simplify, Class<?> clazz) throws IllegalAccessException, InstantiationException, NoSuchMethodException { |
|
|
|
|
|
|
|
|
|
PluginInstanceProxyFactory factory = new PluginInstanceProxyFactory(clazz, simplify); |
|
|
|
|
PluginInvocationHandler handler = new ChartTypeInterfaceCloseableHandler(plotID); |
|
|
|
|
return (IndependentChartUIProvider) factory.addProxy(Closeable.class, handler).getProxyObj(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 把所有的pane加到list里 |
|
|
|
@ -247,9 +196,10 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
* @param paneList pane容器 |
|
|
|
|
*/ |
|
|
|
|
public void addPlotTypePaneList(List<FurtherBasicBeanPane<? extends Chart>> paneList) { |
|
|
|
|
|
|
|
|
|
List<Integer> priorityList = getPriorityInOrder(); |
|
|
|
|
for (int i = 0; i < priorityList.size(); i++){ |
|
|
|
|
String priority = String.valueOf(priorityList.get(i)); |
|
|
|
|
for (Integer aPriorityList : priorityList) { |
|
|
|
|
String priority = String.valueOf(aPriorityList); |
|
|
|
|
Iterator chartUIIterator = chartTypeInterfaces.get(priority).entrySet().iterator(); |
|
|
|
|
while (chartUIIterator.hasNext()) { |
|
|
|
|
Map.Entry chartUIEntry = (Map.Entry) chartUIIterator.next(); |
|
|
|
@ -260,6 +210,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String[] getTitle4PopupWindow(String priority) { |
|
|
|
|
|
|
|
|
|
if (priority.isEmpty()) { |
|
|
|
|
return getTitle4PopupWindow(); |
|
|
|
|
} |
|
|
|
@ -280,8 +231,6 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取指定图表的标题 |
|
|
|
|
* @param priority |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public String getTitle4PopupWindow(String priority, String plotID) { |
|
|
|
|
|
|
|
|
@ -301,10 +250,11 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return new String(); |
|
|
|
|
return StringUtils.EMPTY; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String[] getTitle4PopupWindow() { |
|
|
|
|
|
|
|
|
|
List<Integer> priorityList = getPriorityInOrder(); |
|
|
|
|
|
|
|
|
|
if (priorityList.size() == 0) { |
|
|
|
@ -313,14 +263,14 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
|
|
|
|
|
int size = 0; |
|
|
|
|
//获取总得图表格式
|
|
|
|
|
for (int i = 0; i < priorityList.size(); i++) { |
|
|
|
|
size += getChartSize(String.valueOf(priorityList.get(i))); |
|
|
|
|
for (Integer aPriorityList : priorityList) { |
|
|
|
|
size += getChartSize(String.valueOf(aPriorityList)); |
|
|
|
|
} |
|
|
|
|
String[] names = new String[size]; |
|
|
|
|
|
|
|
|
|
int index = 0; |
|
|
|
|
for (int i = 0; i < priorityList.size(); i++){ |
|
|
|
|
String priority = String.valueOf(priorityList.get(i)); |
|
|
|
|
for (Integer aPriorityList : priorityList) { |
|
|
|
|
String priority = String.valueOf(aPriorityList); |
|
|
|
|
Iterator chartUI = chartTypeInterfaces.get(priority).entrySet().iterator(); |
|
|
|
|
index = fetchNames(chartUI, names, index); |
|
|
|
|
} |
|
|
|
@ -329,6 +279,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<Integer> getPriorityInOrder() { |
|
|
|
|
|
|
|
|
|
List<Integer> priorityList = new ArrayList<Integer>(); |
|
|
|
|
if (chartTypeInterfaces != null) { |
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
@ -342,6 +293,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private int fetchNames(Iterator chartUI, String[] names, int index) { |
|
|
|
|
|
|
|
|
|
while (chartUI.hasNext()) { |
|
|
|
|
Map.Entry chartUIEntry = (Map.Entry) chartUI.next(); |
|
|
|
|
IndependentChartUIProvider provider = (IndependentChartUIProvider) chartUIEntry.getValue(); |
|
|
|
@ -351,6 +303,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -363,15 +316,16 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private ChartDataPane getChartDataPane(String priority, String plotID, AttributeChangeListener listener) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plotID).getChartDataPane(listener); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取对应ID的图表数量 |
|
|
|
|
* @param key |
|
|
|
|
* @return |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
private int getChartSize(String key) { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(key)) { |
|
|
|
|
return chartTypeInterfaces.get(key).size(); |
|
|
|
|
} |
|
|
|
@ -379,6 +333,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public AbstractChartAttrPane[] getAttrPaneArray(String plotID, AttributeChangeListener listener) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -391,10 +346,12 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private AbstractChartAttrPane[] getAttrPaneArray(String priority, String plotID, AttributeChangeListener listener) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plotID).getAttrPaneArray(listener); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -407,11 +364,13 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private AbstractTableDataContentPane getTableDataSourcePane(String priority, Plot plot, ChartDataPane parent) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getTableDataSourcePane(plot, parent); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -425,17 +384,20 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean plotInChart(String plotID, String priority) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces != null |
|
|
|
|
&& chartTypeInterfaces.containsKey(priority) |
|
|
|
|
&& chartTypeInterfaces.get(priority).containsKey(plotID); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private AbstractReportDataContentPane getReportDataSourcePane(String priority, Plot plot, ChartDataPane parent) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getReportDataSourcePane(plot, parent); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ConditionAttributesPane getPlotConditionPane(Plot plot) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -448,11 +410,13 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private ConditionAttributesPane getPlotConditionPane(String priority, Plot plot) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getPlotConditionPane(plot); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -465,6 +429,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private BasicBeanPane<Plot> getPlotSeriesPane(String priority, ChartStylePane parent, Plot plot) { |
|
|
|
|
|
|
|
|
|
return chartTypeInterfaces.get(priority).get(plot.getPlotID()).getPlotSeriesPane(parent, plot); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -475,6 +440,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
* @return 是否使用默认的界面 |
|
|
|
|
*/ |
|
|
|
|
public boolean isUseDefaultPane(String plotID) { |
|
|
|
|
|
|
|
|
|
Iterator iterator = chartTypeInterfaces.entrySet().iterator(); |
|
|
|
|
while (iterator.hasNext()) { |
|
|
|
|
Map.Entry entry = (Map.Entry) iterator.next(); |
|
|
|
@ -489,41 +455,45 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh
|
|
|
|
|
|
|
|
|
|
private boolean isUseDefaultPane(String priority, String plotID) { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces.containsKey(priority) && chartTypeInterfaces.get(priority).containsKey(plotID)) { |
|
|
|
|
return chartTypeInterfaces.get(priority).get(plotID).isUseDefaultPane(); |
|
|
|
|
} |
|
|
|
|
return !(chartTypeInterfaces.containsKey(priority) && chartTypeInterfaces.get(priority).containsKey(plotID)) || chartTypeInterfaces.get(priority).get(plotID).isUseDefaultPane(); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void readXML(XMLableReader reader) { |
|
|
|
|
readXML(reader, null, PluginSimplify.NULL); |
|
|
|
|
@Override |
|
|
|
|
public void mount(PluginSingleInjection injection) { |
|
|
|
|
|
|
|
|
|
if (isIndependentChartUIProvider(injection)) { |
|
|
|
|
String priority = injection.getAttribute("priority"); |
|
|
|
|
String plotID = injection.getAttribute("plotID"); |
|
|
|
|
IndependentChartUIProvider instance = (IndependentChartUIProvider) injection.getObject(); |
|
|
|
|
addChartTypeInterface(instance, priority, plotID); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void readXML(XMLableReader reader, List<String> extraChartDesignInterfaceList, PluginSimplify simplify) { |
|
|
|
|
if (reader.isChildNode()) { |
|
|
|
|
String tagName = reader.getTagName(); |
|
|
|
|
if (extraChartDesignInterfaceList != null) { |
|
|
|
|
extraChartDesignInterfaceList.add(tagName); |
|
|
|
|
public void demount(PluginSingleInjection injection) { |
|
|
|
|
|
|
|
|
|
if (isIndependentChartUIProvider(injection)) { |
|
|
|
|
String priority = injection.getAttribute("priority"); |
|
|
|
|
String plotID = injection.getAttribute("plotID"); |
|
|
|
|
removeChartTypeInterface(priority, plotID); |
|
|
|
|
} |
|
|
|
|
if (IndependentChartUIProvider.XML_TAG.equals(tagName)) { |
|
|
|
|
addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("priority", ChartTypeManager.CHART_PRIORITY),reader.getAttrAsString("plotID", ""), simplify); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void removeChartTypeInterface(String priority, String plotID) { |
|
|
|
|
|
|
|
|
|
if (chartTypeInterfaces != null) { |
|
|
|
|
if (chartTypeInterfaces.containsKey(priority)) { |
|
|
|
|
Map<String, IndependentChartUIProvider> chartUIList = chartTypeInterfaces.get(priority); |
|
|
|
|
chartUIList.remove(plotID); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 文件名 |
|
|
|
|
* |
|
|
|
|
* @return 文件名 |
|
|
|
|
*/ |
|
|
|
|
public String fileName() { |
|
|
|
|
return "chart.xml"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void writeXML(XMLPrintWriter writer) { |
|
|
|
|
|
|
|
|
|
private boolean isIndependentChartUIProvider(PluginSingleInjection injection) { |
|
|
|
|
|
|
|
|
|
return !(injection == null || injection.getObject() == null) && IndependentChartUIProvider.XML_TAG.equals(injection.getName()) && injection.getObject() instanceof IndependentChartUIProvider; |
|
|
|
|
} |
|
|
|
|
} |