diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 2dfb2b8cd..534c0ed2d 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -55,12 +55,17 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh private static ChartTypeInterfaceManager classManager = null; + //所有图表存储器 private static LinkedHashMap chartTypeInterfaces = new LinkedHashMap(); + //插件图表存储器 + private static LinkedHashMap vanChartTypeInterfaces = new LinkedHashMap(); + public synchronized static ChartTypeInterfaceManager getInstance() { if (classManager == null) { classManager = new ChartTypeInterfaceManager(); chartTypeInterfaces.clear(); + vanChartTypeInterfaces.clear(); } return classManager; } @@ -149,6 +154,9 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh if (chartTypeInterfaces != null && !chartTypeInterfaces.containsKey(plotID)) { chartTypeInterfaces.put(plotID, provider); } + if (vanChartTypeInterfaces != null && !vanChartTypeInterfaces.containsKey(plotID)) { + vanChartTypeInterfaces.put(plotID, provider); + } } /** diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 0d6891050..69e67b9c0 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe.chart.gui; import com.fr.base.BaseUtils; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.SwitchState; import com.fr.chart.charttypes.ColumnIndependentChart; import com.fr.design.beans.BasicBeanPane; import com.fr.design.event.UIObserver; @@ -11,6 +12,7 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.mainframe.chart.AbstractChartAttrPane; import com.fr.design.mainframe.chart.gui.ChartTypePane.ComboBoxPane; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; @@ -34,6 +36,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private static final int B_H = 20; private static final int COL_COUNT = 3; + private AbstractChartAttrPane parent; private UIButton addButton; private ArrayList indexList = new ArrayList(); @@ -89,6 +92,11 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK); } + public ChartTypeButtonPane(AbstractChartAttrPane parent){ + this(); + this.parent = parent; + } + ActionListener addListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -101,6 +109,13 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen indexList.add(button); if (editingCollection != null) { + //判断当前编辑的图表类型 + if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ + editingCollection.setState(SwitchState.NEW); + }else { + editingCollection.setState(SwitchState.DEFAULT); + } + Chart[] barChart = ColumnIndependentChart.columnChartTypes; try { Chart newChart = (Chart) barChart[0].clone(); @@ -112,6 +127,10 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } layoutPane(buttonPane); + + if (parent != null){ + parent.populate(editingCollection); + } } }; diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 2203f4963..8112866fd 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -4,15 +4,19 @@ import com.fr.base.FRContext; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; +import com.fr.chart.chartattr.SwitchState; import com.fr.chart.charttypes.ChartTypeManager; import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.frpane.UIComboBoxPane; +import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.mainframe.chart.AbstractChartAttrPane; import com.fr.design.mainframe.chart.ChartEditPane; import com.fr.design.mainframe.chart.PaneTitleConstants; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; import javax.swing.*; import java.awt.*; @@ -34,7 +38,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ protected JPanel createContentPane() { JPanel content = new JPanel(new BorderLayout()); - buttonPane = new ChartTypeButtonPane(); + buttonPane = new ChartTypeButtonPane(this); content.add(buttonPane, BorderLayout.NORTH); chartTypePane = new ComboBoxPane(); @@ -130,14 +134,72 @@ public class ChartTypePane extends AbstractChartAttrPane{ } } } + + public void populateBean(ChartCollection collection) { + Chart chart = collection.getSelectedChart(); + switch (collection.getState()){ + case NEW:{ + reactorComboBoxItem(chart, true); + break; + } + case DEFAULT:{ + reactorComboBoxItem(chart, false); + break; + } + case NONE:{ + populateBean(chart); + break; + } + default:{ + populateBean(chart); + } + } + } + + private void reactorComboBoxItem(Chart chart, boolean isVanChart){ + //重构下拉选项 + if (jcb != null) { + jcb.removeAllItems(); + } + //重构下拉框选项 + for (int i = 0; i < this.cards.size(); i++) { + String name = cards.get(i).title4PopupWindow(); + if (name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && isVanChart){ + jcb.addItem(cards.get(i).title4PopupWindow()); + }else if (!name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && !isVanChart) { + jcb.addItem(cards.get(i).title4PopupWindow()); + } + } + + for (int i = 0; i < this.cards.size(); i++) { + FurtherBasicBeanPane pane = cards.get(i); + if (pane.accept(chart)) { + pane.populateBean(chart); + int index = getJcbIndex(pane, jcb); + jcb.setSelectedIndex(index); + return; + } + } + } + + private int getJcbIndex(FurtherBasicBeanPane pane, UIComboBox jcb) { + String name = pane.title4PopupWindow(); + for (int i = 0; i < jcb.getItemCount(); i++){ + if (ComparatorUtils.equals(name, jcb.getItemAt(i))){ + return i; + } + } + return 0; + } } + /** * 更新界面属性 用于展示 */ public void populate(ChartCollection collection) { Chart chart = collection.getSelectedChart(); - chartTypePane.populateBean(chart); + chartTypePane.populateBean(collection); buttonPane.populateBean(collection); }