Browse Source

CHART-18787 design refactor:图表类型信息

feature/big-screen
shine 3 years ago
parent
commit
db03f46adf
  1. 213
      designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java
  2. 10
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
  3. 58
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java

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

@ -8,7 +8,6 @@ import com.fr.chart.fun.ChartTypeProvider;
import com.fr.chartx.attr.ChartProvider; import com.fr.chartx.attr.ChartProvider;
import com.fr.common.annotations.Compatible; import com.fr.common.annotations.Compatible;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.chart.fun.ChartTypeUIProvider; import com.fr.design.chart.fun.ChartTypeUIProvider;
import com.fr.design.chart.gui.ChartWidgetOption; import com.fr.design.chart.gui.ChartWidgetOption;
import com.fr.design.condition.ConditionAttributesPane; import com.fr.design.condition.ConditionAttributesPane;
@ -46,7 +45,6 @@ import com.fr.general.GeneralContext;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
import com.fr.invoke.Reflect; import com.fr.invoke.Reflect;
import com.fr.locale.InterProviderFactory; import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.PiePlot4VanChart; import com.fr.plugin.chart.PiePlot4VanChart;
import com.fr.plugin.chart.area.VanChartAreaPlot; import com.fr.plugin.chart.area.VanChartAreaPlot;
import com.fr.plugin.chart.box.VanChartBoxPlot; import com.fr.plugin.chart.box.VanChartBoxPlot;
@ -75,7 +73,6 @@ import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.plugin.solution.closeable.CloseableContainedMap; import com.fr.plugin.solution.closeable.CloseableContainedMap;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.AssistUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider;
import com.fr.van.chart.area.AreaIndependentVanChartInterface; import com.fr.van.chart.area.AreaIndependentVanChartInterface;
@ -100,17 +97,7 @@ import com.fr.van.chart.treemap.TreeMapIndependentVanChartInterface;
import com.fr.van.chart.wordcloud.designer.WordCloudIndependentVanChartInterface; import com.fr.van.chart.wordcloud.designer.WordCloudIndependentVanChartInterface;
import javax.swing.Icon; import javax.swing.Icon;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.awt.event.ActionListener;
import static com.fr.chart.charttypes.ChartTypeManager.DEFAULT_PRIORITY;
import static com.fr.chart.charttypes.ChartTypeManager.DEPRECATED_CHART_PRIORITY;
import static com.fr.chart.charttypes.ChartTypeManager.VAN_CHART_PRIORITY;
/** /**
* Created by eason on 14/12/29. * Created by eason on 14/12/29.
@ -120,10 +107,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
private static ChartTypeInterfaceManager classManager = new ChartTypeInterfaceManager(); private static ChartTypeInterfaceManager classManager = new ChartTypeInterfaceManager();
private static LinkedHashMap<String, CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>> chartTypeInterfaces = private static CloseableContainedMap<String, ChartTypeUIProvider, HashMap> chartTypeUIs = new CloseableContainedMap<>(HashMap.class);
new LinkedHashMap<String, CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>>();
private static Map<String, String> idAndPriorityMap = new HashMap<String, String>();
public static final String TYPE_PANE_DEFAULT_TITLE = "DEFAULT_NAME"; public static final String TYPE_PANE_DEFAULT_TITLE = "DEFAULT_NAME";
@ -185,127 +169,69 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
private static void readVanChart() { private static void readVanChart() {
addChartTypeInterface(VAN_CHART_PRIORITY, PiePlot4VanChart.VAN_CHART_PIE_PLOT, new PieIndependentVanChartInterface()); addChartTypeInterface(PiePlot4VanChart.VAN_CHART_PIE_PLOT, new PieIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartColumnPlot.VAN_CHART_COLUMN_PLOT_ID, new VanColumnChartTypeUI()); addChartTypeInterface(VanChartColumnPlot.VAN_CHART_COLUMN_PLOT_ID, new VanColumnChartTypeUI());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartColumnPlot.VAN_CHART_BAR_PLOT_ID, new BarIndependentVanChartInterface()); addChartTypeInterface(VanChartColumnPlot.VAN_CHART_BAR_PLOT_ID, new BarIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartLinePlot.VAN_CHART_LINE_PLOT, new LineIndependentVanChartInterface()); addChartTypeInterface(VanChartLinePlot.VAN_CHART_LINE_PLOT, new LineIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartAreaPlot.VAN_CHART_AREA_PLOT_ID, new AreaIndependentVanChartInterface()); addChartTypeInterface(VanChartAreaPlot.VAN_CHART_AREA_PLOT_ID, new AreaIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartGaugePlot.VAN_CHART_GAUGE_PLOT, new GaugeIndependentVanChartInterface()); addChartTypeInterface(VanChartGaugePlot.VAN_CHART_GAUGE_PLOT, new GaugeIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartRadarPlot.VAN_CHART_RADAR_PLOT, new RadarIndependentVanChartInterface()); addChartTypeInterface(VanChartRadarPlot.VAN_CHART_RADAR_PLOT, new RadarIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartScatterPlot.VAN_CHART_SCATTER_PLOT_ID, new ScatterIndependentVanChartInterface()); addChartTypeInterface(VanChartScatterPlot.VAN_CHART_SCATTER_PLOT_ID, new ScatterIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartBubblePlot.VAN_CHART_BUBBLE_PLOT_ID, new BubbleIndependentVanChartInterface()); addChartTypeInterface(VanChartBubblePlot.VAN_CHART_BUBBLE_PLOT_ID, new BubbleIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartCustomPlot.VAN_CHART_CUSTOM_PLOT_ID, new CustomIndependentVanChartInterface()); addChartTypeInterface(VanChartCustomPlot.VAN_CHART_CUSTOM_PLOT_ID, new CustomIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartMultiPiePlot.VAN_CHART_MULTILAYER_PLOT_ID, new MultiPieIndependentVanChartInterface()); addChartTypeInterface(VanChartMultiPiePlot.VAN_CHART_MULTILAYER_PLOT_ID, new MultiPieIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartMapPlot.VAN_CHART_MAP_ID, new VanMapChartTypeUI()); addChartTypeInterface(VanChartMapPlot.VAN_CHART_MAP_ID, new VanMapChartTypeUI());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartDrillMapPlot.VAN_CHART_DRILL_MAP_ID, new VanDrillMapChartTypeUI()); addChartTypeInterface(VanChartDrillMapPlot.VAN_CHART_DRILL_MAP_ID, new VanDrillMapChartTypeUI());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartTreeMapPlot.VAN_CHART_TREE_MAP_PLOT_ID, new TreeMapIndependentVanChartInterface()); addChartTypeInterface(VanChartTreeMapPlot.VAN_CHART_TREE_MAP_PLOT_ID, new TreeMapIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartFunnelPlot.VAN_CHART_FUNNEL_PLOT_ID, new FunnelIndependentVanChartInterface()); addChartTypeInterface(VanChartFunnelPlot.VAN_CHART_FUNNEL_PLOT_ID, new FunnelIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartHeatMapPlot.VAN_CHART_HEAT_MAP_ID, new VanHeatMapChartTypeUI()); addChartTypeInterface(VanChartHeatMapPlot.VAN_CHART_HEAT_MAP_ID, new VanHeatMapChartTypeUI());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartWordCloudPlot.WORD_CLOUD_PLOT_ID, new WordCloudIndependentVanChartInterface()); addChartTypeInterface(VanChartWordCloudPlot.WORD_CLOUD_PLOT_ID, new WordCloudIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartGanttPlot.VAN_CHART_GANTT_PLOT_ID, new GanttIndependentVanChartInterface()); addChartTypeInterface(VanChartGanttPlot.VAN_CHART_GANTT_PLOT_ID, new GanttIndependentVanChartInterface());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartStructurePlot.STRUCTURE_PLOT_ID, new VanStructureChartTypeUI()); addChartTypeInterface(VanChartStructurePlot.STRUCTURE_PLOT_ID, new VanStructureChartTypeUI());
addChartTypeInterface(VAN_CHART_PRIORITY, VanChartBoxPlot.VAN_CHART_BOX_PLOT_ID, new BoxIndependentVanChartInterface()); addChartTypeInterface(VanChartBoxPlot.VAN_CHART_BOX_PLOT_ID, new BoxIndependentVanChartInterface());
} }
private static void readDefault() { private static void readDefault() {
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.COLUMN_CHART, new ColumnChartTypeUI()); addChartTypeInterface(ChartConstants.COLUMN_CHART, new ColumnChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.LINE_CHART, new LineChartTypeUI()); addChartTypeInterface(ChartConstants.LINE_CHART, new LineChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.BAR_CHART, new BarChartTypeUI()); addChartTypeInterface(ChartConstants.BAR_CHART, new BarChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.PIE_CHART, new PieChartTypeUI()); addChartTypeInterface(ChartConstants.PIE_CHART, new PieChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.AREA_CHART, new AreaChartTypeUI()); addChartTypeInterface(ChartConstants.AREA_CHART, new AreaChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.SCATTER_CHART, new XYScatterChartTypeUI()); addChartTypeInterface(ChartConstants.SCATTER_CHART, new XYScatterChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.BUBBLE_CHART, new BubbleChartTypeUI()); addChartTypeInterface(ChartConstants.BUBBLE_CHART, new BubbleChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.RADAR_CHART, new RadarChartTypeUI()); addChartTypeInterface(ChartConstants.RADAR_CHART, new RadarChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.STOCK_CHART, new StockChartTypeUI()); addChartTypeInterface(ChartConstants.STOCK_CHART, new StockChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.METER_CHART, new MeterChartTypeUI()); addChartTypeInterface(ChartConstants.METER_CHART, new MeterChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.RANGE_CHART, new RangeChartTypeUI()); addChartTypeInterface(ChartConstants.RANGE_CHART, new RangeChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.CUSTOM_CHART, new CustomChartTypeUI()); addChartTypeInterface(ChartConstants.CUSTOM_CHART, new CustomChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.GANTT_CHART, new GanttChartTypeUI()); addChartTypeInterface(ChartConstants.GANTT_CHART, new GanttChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.DONUT_CHART, new DonutChartTypeUI()); addChartTypeInterface(ChartConstants.DONUT_CHART, new DonutChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.MAP_CHART, new MapChartTypeUI()); addChartTypeInterface(ChartConstants.MAP_CHART, new MapChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.GIS_CHAER, new GisMapChartTypeUI()); addChartTypeInterface(ChartConstants.GIS_CHAER, new GisMapChartTypeUI());
addChartTypeInterface(DEPRECATED_CHART_PRIORITY, ChartConstants.FUNNEL_CHART, new FunnelChartTypeUI()); addChartTypeInterface(ChartConstants.FUNNEL_CHART, new FunnelChartTypeUI());
} }
private static void addChartTypeInterface(String priority, String plotID, ChartTypeUIProvider provider) { private static void addChartTypeInterface(String id, ChartTypeUIProvider provider) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
if (!chartTypeInterfaces.containsKey(priority)) { chartTypeUIs.put(id, provider);
//新建一个具体图表列表
CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap> chartUIList
= new CloseableContainedMap<String, ChartTypeUIProvider, LinkedHashMap>(LinkedHashMap.class);
chartUIList.put(plotID, provider);
chartTypeInterfaces.put(priority, chartUIList);
} else {
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
if (!chartUIList.containsKey(plotID)) {
chartUIList.put(plotID, provider);
}
}
idAndPriorityMap.put(plotID, priority);
} }
} }
private ChartTypeUIProvider getChartTypeInterface(String plotID) { private ChartTypeUIProvider getChartTypeInterface(String id) {
if (idAndPriorityMap.containsKey(plotID)) { if (chartTypeUIs.containsKey(id)) {
String priority = idAndPriorityMap.get(plotID); return chartTypeUIs.get(id);
if (chartTypeInterfaces.containsKey(priority)) {
return chartTypeInterfaces.get(priority).get(plotID);
}
} }
return null; return null;
} }
/** public AbstractChartTypePane getPlotTypePane(String id) {
* 把所有的pane加到list里 if (chartTypeUIs.containsKey(id)) {
* return chartTypeUIs.get(id).getPlotTypePane();
* @param paneList pane容器
*/
public void addPlotTypePaneList(List<FurtherBasicBeanPane<? extends ChartProvider>> paneList,
Map<String, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>> allChartTypePane,
ActionListener autoButtonListener) {
List<Integer> priorityList = getPriorityInOrder();
for (Integer aPriorityList : priorityList) {
String priority = String.valueOf(aPriorityList);
addPlotTypePaneList(priority, paneList, allChartTypePane, autoButtonListener);
}
}
public void addPlotTypePaneList(String priority, List<FurtherBasicBeanPane<? extends ChartProvider>> paneList,
Map<String, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>> allChartTypePane,
ActionListener autoButtonListener) {
if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(priority)) {
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
Iterator<Map.Entry<String, ChartTypeUIProvider>> iterator = chartUIList.entrySet().iterator();
while (iterator.hasNext()) {
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.reLayout(plotID);
pane.registerButtonListener(autoButtonListener);
paneList.add(pane);
if (allChartTypePane.get(priority) == null) {
allChartTypePane.put(priority, new LinkedHashMap<String, FurtherBasicBeanPane<? extends ChartProvider>>());
}
allChartTypePane.get(priority).put(plotID, pane);
} catch (Throwable e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}
} }
return null;
} }
@Compatible @Compatible
@ -313,23 +239,9 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
return getName(plotID); return getName(plotID);
} }
private List<Integer> getPriorityInOrder() {
List<Integer> priorityList = new ArrayList<Integer>();
if (chartTypeInterfaces != null) {
Iterator iterator = chartTypeInterfaces.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
String priority = (String) entry.getKey();
priorityList.add(Integer.valueOf(priority));
}
}
return ChartTypeManager.orderInPriority(priorityList);
}
public String getIconPath(String plotID) { public String getIconPath(String plotID) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
ChartTypeUIProvider provider = getChartTypeInterface(plotID); ChartTypeUIProvider provider = getChartTypeInterface(plotID);
if (provider != null) { if (provider != null) {
return provider.getIconPath(); return provider.getIconPath();
@ -340,7 +252,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public String[] getDemoImagePath(String chartID) { public String[] getDemoImagePath(String chartID) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
ChartTypeUIProvider provider = getChartTypeInterface(chartID); ChartTypeUIProvider provider = getChartTypeInterface(chartID);
if (provider != null) { if (provider != null) {
String[] result = null; String[] result = null;
@ -396,7 +308,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
} }
public String[] getSubName(String chartID) { public String[] getSubName(String chartID) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
ChartTypeUIProvider provider = getChartTypeInterface(chartID); ChartTypeUIProvider provider = getChartTypeInterface(chartID);
if (provider != null) { if (provider != null) {
String[] subNames = null; String[] subNames = null;
@ -429,7 +341,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
} }
public String getName(String chartID) { public String getName(String chartID) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
ChartTypeUIProvider provider = getChartTypeInterface(chartID); ChartTypeUIProvider provider = getChartTypeInterface(chartID);
if (provider != null) { if (provider != null) {
String name = null; String name = null;
@ -574,9 +486,8 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
id = injection.getAttribute("plotID"); id = injection.getAttribute("plotID");
} }
String priority = injection.getAttribute("priority", DEFAULT_PRIORITY);
ChartTypeUIProvider instance = (ChartTypeUIProvider) injection.getObject(); ChartTypeUIProvider instance = (ChartTypeUIProvider) injection.getObject();
addChartTypeInterface(priority, id, instance); addChartTypeInterface(id, instance);
} }
} }
@ -585,22 +496,18 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
public void demount(PluginSingleInjection injection) { public void demount(PluginSingleInjection injection) {
if (isChartTypeUIProvider(injection)) { if (isChartTypeUIProvider(injection)) {
String priority = injection.getAttribute("priority", DEFAULT_PRIORITY);
String id = injection.getAttribute("chartID"); String id = injection.getAttribute("chartID");
if (StringUtils.isEmpty(id)) { if (StringUtils.isEmpty(id)) {
id = injection.getAttribute("plotID"); id = injection.getAttribute("plotID");
} }
removeChartTypeInterface(priority, id); removeChartTypeInterface(id);
} }
} }
private void removeChartTypeInterface(String priority, String plotID) { private void removeChartTypeInterface(String id) {
if (chartTypeInterfaces != null) { if (chartTypeUIs != null) {
if (chartTypeInterfaces.containsKey(priority)) { chartTypeUIs.remove(id);
Map<String, ChartTypeUIProvider> chartUIList = chartTypeInterfaces.get(priority);
chartUIList.remove(plotID);
}
} }
} }

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

@ -6,7 +6,6 @@ import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager; import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider; import com.fr.chartx.attr.ChartProvider;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.mainframe.chart.info.ChartInfoCollector;
import com.fr.design.dialog.DialogActionListener; import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserver;
@ -17,6 +16,7 @@ import com.fr.design.gui.ibutton.UIToggleButton;
import com.fr.design.gui.imenutable.UIMenuNameableCreator; import com.fr.design.gui.imenutable.UIMenuNameableCreator;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.chart.gui.ChartTypePane.ComboBoxPane; import com.fr.design.mainframe.chart.gui.ChartTypePane.ComboBoxPane;
import com.fr.design.mainframe.chart.info.ChartInfoCollector;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.vanchart.VanChart; import com.fr.plugin.chart.vanchart.VanChart;
@ -26,9 +26,6 @@ import javax.swing.BorderFactory;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.FlowLayout; import java.awt.FlowLayout;
@ -45,6 +42,9 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
/** /**
* 图表 类型 增删 控制按钮界面. * 图表 类型 增删 控制按钮界面.
@ -180,7 +180,7 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
public ChartProvider getChangeStateNewChart() { public ChartProvider getChangeStateNewChart() {
ChartProvider chart = editingCollection.getSelectedChartProvider(ChartProvider.class); ChartProvider chart = editingCollection.getSelectedChartProvider(ChartProvider.class);
String chartID = chart.getID(); String chartID = chart.getID();
String priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID); int priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID);
return ChartTypeManager.getInstanceWithCheck().getFirstChart(priority); return ChartTypeManager.getInstanceWithCheck().getFirstChart(priority);
} }

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

@ -20,20 +20,21 @@ import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignModuleFactory;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.AssistUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** /**
* 图表 属性表, 类型选择 界面. * 图表 属性表, 类型选择 界面.
@ -138,14 +139,45 @@ public class ChartTypePane extends AbstractChartAttrPane {
} }
} }
/**
* 把所有的pane加到list里
*
* @param paneList pane容器
*/
private static void addPlotTypePaneList(List<FurtherBasicBeanPane<? extends ChartProvider>> paneList,
Map<Integer, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>> allChartTypePane,
ActionListener autoButtonListener) {
String[] chartIDs = ChartTypeManager.getInstance().getAllChartIDs();
for (String id : chartIDs) {
AbstractChartTypePane pane = ChartTypeInterfaceManager.getInstance().getPlotTypePane(id);
if (AssistUtils.equals(pane.title4PopupWindow(), ChartTypeInterfaceManager.TYPE_PANE_DEFAULT_TITLE)) {
continue;
}
pane.reLayout(id);
pane.registerButtonListener(autoButtonListener);
paneList.add(pane);
Integer priority = ChartTypeManager.getInstance().getPriority(id);
if (allChartTypePane.get(priority) == null) {
allChartTypePane.put(priority, new LinkedHashMap<String, FurtherBasicBeanPane<? extends ChartProvider>>());
}
allChartTypePane.get(priority).put(id, pane);
}
}
class ComboBoxPane extends UIComboBoxPane<ChartProvider> { class ComboBoxPane extends UIComboBoxPane<ChartProvider> {
private Map<String, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>> allChartTypePane; //todo:refactor 图表切换过滤不应该根据优先级priority,应该给旧版本图表和新特性图表的图表类型信息分别增加一个switchID之类的
private Map<Integer, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>> allChartTypePane;
@Override @Override
protected List<FurtherBasicBeanPane<? extends ChartProvider>> initPaneList() { protected List<FurtherBasicBeanPane<? extends ChartProvider>> initPaneList() {
List<FurtherBasicBeanPane<? extends ChartProvider>> paneList = new ArrayList<FurtherBasicBeanPane<? extends ChartProvider>>(); List<FurtherBasicBeanPane<? extends ChartProvider>> paneList = new ArrayList<FurtherBasicBeanPane<? extends ChartProvider>>();
allChartTypePane = new LinkedHashMap<String, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>>(); allChartTypePane = new LinkedHashMap<Integer, Map<String, FurtherBasicBeanPane<? extends ChartProvider>>>();
ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList, allChartTypePane, autoButtonListener); addPlotTypePaneList(paneList, allChartTypePane, autoButtonListener);
return paneList; return paneList;
} }
@ -205,18 +237,18 @@ public class ChartTypePane extends AbstractChartAttrPane {
} }
private void addAllCards() { private void addAllCards() {
Iterator<String> iterator = allChartTypePane.keySet().iterator(); Iterator<Integer> iterator = allChartTypePane.keySet().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
addOnePriorityCards(iterator.next(), false); addOnePriorityCards(iterator.next(), false);
} }
} }
private void addOnePriorityCards(String priority) { private void addOnePriorityCards(int priority) {
addOnePriorityCards(priority, true); addOnePriorityCards(priority, true);
} }
private void addOnePriorityCards(String priority, boolean ignore) { private void addOnePriorityCards(int priority, boolean ignore) {
Map<String, FurtherBasicBeanPane<? extends ChartProvider>> map = allChartTypePane.get(priority); Map<String, FurtherBasicBeanPane<? extends ChartProvider>> map = allChartTypePane.get(priority);
@ -232,7 +264,7 @@ public class ChartTypePane extends AbstractChartAttrPane {
} }
private void addOnePlotIDCards(String priority, String plotID) { private void addOnePlotIDCards(int priority, String plotID) {
cards.add(allChartTypePane.get(priority).get(plotID)); cards.add(allChartTypePane.get(priority).get(plotID));
} }
@ -242,7 +274,7 @@ public class ChartTypePane extends AbstractChartAttrPane {
//重构需要重构下拉框选项和cardNames //重构需要重构下拉框选项和cardNames
ChartProvider chart = collection.getSelectedChartProvider(ChartProvider.class); ChartProvider chart = collection.getSelectedChartProvider(ChartProvider.class);
String chartID = chart.getID(); String chartID = chart.getID();
String priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID); int priority = ChartTypeManager.getInstanceWithCheck().getPriority(chartID);
boolean enabledChart = ChartTypeManager.enabledChart(chartID); boolean enabledChart = ChartTypeManager.enabledChart(chartID);
String item = ChartTypeInterfaceManager.getInstance().getName(chartID); String item = ChartTypeInterfaceManager.getInstance().getName(chartID);

Loading…
Cancel
Save