From 2dec51c51e3f55f3b997d23264e55ca87b667710 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 26 Sep 2016 19:12:25 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 6aff74d7ca..5b5d233c47 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2098,7 +2098,7 @@ public class RemoteEnv implements Env { * @param serviceID */ @Override - public void pluginServiceStart(String serviceID){ + public void pluginServiceStart(String serviceID, String customAttr){ } @Override From bd35dadab75a84e0404ada00419dfa29c9924c9a Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 27 Sep 2016 10:59:33 +0800 Subject: [PATCH 02/15] update --- .../src/com/fr/design/extra/PluginHelper.java | 33 +++++++++++++++++++ designer_base/src/com/fr/env/RemoteEnv.java | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 5d0c9fa1a9..b258d495d2 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -140,6 +140,14 @@ public class PluginHelper { List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit dependenceUnit = list.get(i); + //覆盖型依赖,立即下载安装 + if (dependenceUnit.isCover()){ + try { + installCoverDependence(dependenceUnit); + } catch (Exception e) { + throw new PluginDependenceException(); + } + } if (!dependenceUnit.checkFileEnv()){ needInstallDependence.add(dependenceUnit); } @@ -153,6 +161,31 @@ public class PluginHelper { installDependenceOnline(currentID, needInstallDependence); } + public static void installCoverDependence(PluginDependenceUnit dependenceUnit) throws Exception { + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginHelper.DEPENDENCE_DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + while ((bytesRead = reader.read(buffer)) > 0) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + } + reader.close(); + writer.flush(); + writer.close(); + + + //安装文件 + IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); + }else { + throw new PluginDependenceException(); + } + } + /** * 构造一个下载UI diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 5b5d233c47..6aff74d7ca 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2098,7 +2098,7 @@ public class RemoteEnv implements Env { * @param serviceID */ @Override - public void pluginServiceStart(String serviceID, String customAttr){ + public void pluginServiceStart(String serviceID){ } @Override From cd7e2f1b5d27621f01b1f13a69f3c29e7a58b937 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 10 Oct 2016 20:27:04 +0800 Subject: [PATCH 03/15] uu --- .../fr/design/ChartTypeInterfaceManager.java | 8 +++ .../chart/gui/ChartTypeButtonPane.java | 19 ++++++ .../mainframe/chart/gui/ChartTypePane.java | 66 ++++++++++++++++++- 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 2dfb2b8cdd..534c0ed2d7 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 0d6891050f..69e67b9c0f 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 2203f4963b..8112866fdb 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); } From 583ce08dc9e13d9a7dd0d46c3cdd6ec81df965c1 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 13 Oct 2016 13:32:35 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=88=87=E6=8D=A2-?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/frpane/UIComboBoxPane.java | 14 +- .../fr/design/gui/icombobox/UIComboBox.java | 6 +- .../chart/gui/ChartTypeButtonPane.java | 31 ++-- .../mainframe/chart/gui/ChartTypePane.java | 139 ++++++++++++------ .../chart/gui/item/FlexibleComboBox.java | 95 ++++++++++++ .../chart/gui/item/ItemEvenType.java | 37 +++++ 6 files changed, 254 insertions(+), 68 deletions(-) create mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java create mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java diff --git a/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java b/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java index 9d31cd4f35..73b065f069 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java @@ -25,7 +25,7 @@ public abstract class UIComboBoxPane extends BasicBeanPane { protected JPanel cardPane; protected List> cards; - private String[] cardNames; + protected String[] cardNames; public UIComboBoxPane() { cards = initPaneList(); @@ -49,6 +49,14 @@ public abstract class UIComboBoxPane extends BasicBeanPane { addComboBoxItem(cards, i); } + addItemChangeEvent(); + + initLayout(); + + jcb.setSelectedIndex(0); + } + + protected void addItemChangeEvent() { jcb.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { @@ -57,10 +65,6 @@ public abstract class UIComboBoxPane extends BasicBeanPane { cl.show(cardPane, cardNames[jcb.getSelectedIndex()]); } }); - - initLayout(); - - jcb.setSelectedIndex(0); } protected UIComboBox createComboBox() { diff --git a/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java b/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java index 90944c4496..d6d1496746 100644 --- a/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java +++ b/designer_base/src/com/fr/design/gui/icombobox/UIComboBox.java @@ -37,7 +37,7 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser private static final int SIZE5 = 5; - private UIObserverListener uiObserverListener; + protected UIObserverListener uiObserverListener; private String comboBoxName = ""; @@ -71,7 +71,7 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser initListener(); } - private void initListener() { + protected void initListener() { if (shouldResponseChangeListener()) { this.addFocusListener(new FocusAdapter() { @Override @@ -94,7 +94,7 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser } } - private void fireSetGlobalName() { + protected void fireSetGlobalName() { if (globalNameListener != null && shouldResponseNameListener()) { globalNameListener.setGlobalName(comboBoxName); } 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 69e67b9c0f..c25f031a2a 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 @@ -12,7 +12,6 @@ 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; @@ -36,7 +35,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 ChartTypePane parent; private UIButton addButton; private ArrayList indexList = new ArrayList(); @@ -92,7 +91,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK); } - public ChartTypeButtonPane(AbstractChartAttrPane parent){ + public ChartTypeButtonPane(ChartTypePane parent){ this(); this.parent = parent; } @@ -109,13 +108,6 @@ 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(); @@ -128,12 +120,22 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } layoutPane(buttonPane); - if (parent != null){ - parent.populate(editingCollection); - } + //刷新下拉框 + refreshChangeMode(); } + + }; + private void refreshChangeMode() { + //判断当前编辑的图表,对否开启多图表切换模式 + boolean stateChange = editingCollection.setMultiChartMode(); + //只有状态切换了才会重构下拉选项 + if (parent != null && stateChange){ + parent.fireReactor(editingCollection); + } + } + MouseListener mouseListener = new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { @@ -391,8 +393,9 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } } } - relayoutPane(); + + refreshChangeMode(); } private void relayoutPane() { 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 8112866fdb..7d43b91256 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,22 +4,24 @@ 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.mainframe.chart.gui.item.FlexibleComboBox; 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.item.ItemEvenType; 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.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; @@ -33,7 +35,6 @@ public class ChartTypePane extends AbstractChartAttrPane{ private ChartTypeButtonPane buttonPane; private ChartEditPane editPane; private ChartCollection editingCollection; - @Override protected JPanel createContentPane() { JPanel content = new JPanel(new BorderLayout()); @@ -84,7 +85,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ public String title4PopupWindow() { return PaneTitleConstants.CHART_TYPE_TITLE; } - + class ComboBoxPane extends UIComboBoxPane{ @Override protected List> initPaneList() { @@ -100,9 +101,10 @@ public class ChartTypePane extends AbstractChartAttrPane{ public void updateBean(Chart chart) { int lastSelectIndex = editPane.getSelectedChartIndex(chart); + FlexibleComboBox fcb = (FlexibleComboBox)jcb; try{ - Chart newDefaultChart = (Chart)((AbstractChartTypePane)cards.get(jcb.getSelectedIndex())).getDefaultChart().clone(); + Chart newDefaultChart = (Chart)((AbstractChartTypePane)cards.get(fcb.getRelatedSelectedIndex())).getDefaultChart().clone(); if(!chart.accept(newDefaultChart.getClass())){ //vanChart 和 chart 之间切换 editingCollection.removeNameObject(editingCollection.getSelectedIndex()); @@ -114,7 +116,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ } //这一步会替换plot - ((AbstractChartTypePane) cards.get(jcb.getSelectedIndex())).updateBean(chart); + ((AbstractChartTypePane) cards.get(fcb.getRelatedSelectedIndex())).updateBean(chart); Plot plot = chart.getPlot(); @@ -129,77 +131,122 @@ public class ChartTypePane extends AbstractChartAttrPane{ boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); - if(editPane.isDefaultPane() != isUseDefault || (!isUseDefault && lastSelectIndex != jcb.getSelectedIndex())){ + if(editPane.isDefaultPane() != isUseDefault || (!isUseDefault && lastSelectIndex != fcb.getRelatedSelectedIndex())){ editPane.reLayout(chart); } } } - 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; + @Override + public void populateBean(Chart ob) { + for (int i = 0; i < this.cards.size(); i++) { + FurtherBasicBeanPane pane = cards.get(i); + if (pane.accept(ob)) { + pane.populateBean(ob); + ((FlexibleComboBox)jcb).setRelatedSelectedIndex(i); + return; } - default:{ - populateBean(chart); + } + } + + @Override + protected UIComboBox createComboBox() { + FlexibleComboBox comboBox = new FlexibleComboBox(); + //初始化分界线 + int partition = 0; + for (int i = 0; i < this.cards.size(); i++) { + String name = cards.get(i).title4PopupWindow(); + if (name.contains(Inter.getLocText("Plugin-ChartF_NewChart"))) { + partition++; } } + comboBox.setPartition(partition); + return comboBox; } - private void reactorComboBoxItem(Chart chart, boolean isVanChart){ - //重构下拉选项 - if (jcb != null) { - jcb.removeAllItems(); + + /** + * 下拉框重构条件 + * 1、从None->Default(multiMode) + * 2、从None->New(multiMode) + * 3、从Default->None(singleMode) + * 4、从New->None(singleMode) + * @param is2MultiMode + * @param isVanChart + */ + private void reactorComboBoxItem(boolean is2MultiMode, boolean isVanChart){ + if (jcb == null){ + return; } + //重构下拉选项 + FlexibleComboBox fcb = (FlexibleComboBox)jcb; + //重构前,保存相对下标 + int relativeIndex = is2MultiMode ? fcb.getSelectedIndex() : fcb.getRelatedSelectedIndex(); + //多图表切换模式 + fcb.setMultiMode(is2MultiMode); + //设置当前切换是新图表还是老图表 + fcb.setBottom(!isVanChart); //重构下拉框选项 + fcb.setItemEvenType(ItemEvenType.REACTOR); + 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){ + if (is2MultiMode && (name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && isVanChart)) { jcb.addItem(cards.get(i).title4PopupWindow()); - }else if (!name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && !isVanChart) { + } else if (is2MultiMode && (!name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && !isVanChart)) { + jcb.addItem(cards.get(i).title4PopupWindow()); + }else if (!is2MultiMode){ jcb.addItem(cards.get(i).title4PopupWindow()); } } + //重构完成 + fcb.setItemEvenType(ItemEvenType.DEFAULT); + //重置选择项 + fcb.setRelatedSelectedIndex(relativeIndex); + } - 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; + @Override + protected void addItemChangeEvent() { + jcb.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + //如果是在进行重构,则不触发状态改变事件 + FlexibleComboBox fcb = (FlexibleComboBox)jcb; + if (fcb.isReactor()){ + return; + } + comboBoxItemStateChanged(); + CardLayout cl = (CardLayout)cardPane.getLayout(); + cl.show(cardPane, cardNames[((FlexibleComboBox)jcb).getRelatedSelectedIndex()]); } - } + }); } + } - 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; - } + public void fireReactor(ChartCollection collection) { + switch (collection.getState()){ + case NEW:{ + this.chartTypePane.reactorComboBoxItem(true, true); + break; } - return 0; + case DEFAULT:{ + this.chartTypePane.reactorComboBoxItem(true, false); + break; + } + case NONE:{ + this.chartTypePane.reactorComboBoxItem(false, false); + break; + } + default:this.chartTypePane.reactorComboBoxItem(false, false); } } - /** * 更新界面属性 用于展示 */ public void populate(ChartCollection collection) { Chart chart = collection.getSelectedChart(); - chartTypePane.populateBean(collection); + chartTypePane.populateBean(chart); buttonPane.populateBean(collection); } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java new file mode 100644 index 0000000000..0bec554f4f --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java @@ -0,0 +1,95 @@ +package com.fr.design.mainframe.chart.gui.item; + +import com.fr.design.gui.icombobox.UIComboBox; + +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * Created by hufan on 2016/10/11. + */ +public class FlexibleComboBox extends UIComboBox { + //新旧分界线 + private int partition = 0; + //分界线上还是分界线下 + private boolean bottom = true; + //图表是否开启切换模式 + private boolean multiMode = false; + //当前下拉框处理的事件类型 + private ItemEvenType itemEvenType = ItemEvenType.DEFAULT; + + public boolean isReactor(){ + return itemEvenType == ItemEvenType.REACTOR; + } + + public int getPartition() { + return partition; + } + + public void setPartition(int partition) { + this.partition = partition; + } + + public boolean isBottom() { + return bottom; + } + + public void setBottom(boolean bottom) { + this.bottom = bottom; + } + + public boolean isMultiMode() { + return multiMode; + } + + public void setMultiMode(boolean multiMode) { + this.multiMode = multiMode; + } + + public ItemEvenType getItemEvenType() { + return itemEvenType; + } + + public void setItemEvenType(ItemEvenType itemEvenType) { + this.itemEvenType = itemEvenType; + } + + public int getRelatedSelectedIndex(){ + return isMultiMode() && isBottom() ? (super.getSelectedIndex() + partition) : super.getSelectedIndex(); + } + + public void setRelatedSelectedIndex(int index){ + if (isMultiMode() && isBottom()){ + super.setSelectedIndex(index - partition); + }else { + super.setSelectedIndex(index); + } + } + + @Override + protected void initListener() { + if (shouldResponseChangeListener()) { + this.addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + fireSetGlobalName(); + } + }); + this.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (uiObserverListener == null) { + return; + } + fireSetGlobalName(); + //只有不在重构状态才会触发下拉框选择时的改变事件 + if (e.getStateChange() == ItemEvent.SELECTED && !isReactor()) { + uiObserverListener.doChange(); + } + } + }); + } + } +} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java new file mode 100644 index 0000000000..5ef941a69c --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java @@ -0,0 +1,37 @@ +package com.fr.design.mainframe.chart.gui.item; + +import com.fr.general.ComparatorUtils; + +/** + * Created by hufan on 2016/10/11. + */ +public enum ItemEvenType { + REACTOR("reactor"),//重构选项 + DEFAULT("default")//默认选项操作 + ; + + //这个String会存起来的,不能随意更改。 + private String type; + + private ItemEvenType(String type){ + this.type = type; + } + + public String getType() { + return this.type; + } + + private static ItemEvenType[] types; + + public static ItemEvenType parse(String type){ + if(types == null){ + types = ItemEvenType.values(); + } + for(ItemEvenType itemEvenType : types){ + if(ComparatorUtils.equals(itemEvenType.getType(), type)){ + return itemEvenType; + } + } + return DEFAULT; + } +} From ef5d820b000220a6ccf8af674d3f4e1eeec3c741 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 13 Oct 2016 13:45:05 +0800 Subject: [PATCH 05/15] update --- .../src/com/fr/design/ChartTypeInterfaceManager.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 534c0ed2d7..e92a6156e3 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -58,14 +58,10 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh //所有图表存储器 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; } @@ -154,9 +150,6 @@ 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); - } } /** From 586625a568d2270653d028b10a8258cf807b924d Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 13 Oct 2016 13:45:50 +0800 Subject: [PATCH 06/15] update --- designer_base/src/com/fr/design/extra/PluginHelper.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index b258d495d2..302b6df8e3 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -140,14 +140,6 @@ public class PluginHelper { List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit dependenceUnit = list.get(i); - //覆盖型依赖,立即下载安装 - if (dependenceUnit.isCover()){ - try { - installCoverDependence(dependenceUnit); - } catch (Exception e) { - throw new PluginDependenceException(); - } - } if (!dependenceUnit.checkFileEnv()){ needInstallDependence.add(dependenceUnit); } From 239c32b85e68a055428648f07aa81e6e252dadf4 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 13 Oct 2016 13:46:36 +0800 Subject: [PATCH 07/15] update --- .../src/com/fr/design/extra/PluginHelper.java | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 302b6df8e3..f510646f84 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -153,32 +153,6 @@ public class PluginHelper { installDependenceOnline(currentID, needInstallDependence); } - public static void installCoverDependence(PluginDependenceUnit dependenceUnit) throws Exception { - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(PluginHelper.DEPENDENCE_DOWNLOAD_PATH, PluginHelper.TEMP_FILE); - StableUtils.makesureFileExist(new File(temp)); - FileOutputStream writer = new FileOutputStream(temp); - byte[] buffer = new byte[PluginConstants.BYTES_NUM]; - int bytesRead = 0; - while ((bytesRead = reader.read(buffer)) > 0) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[PluginConstants.BYTES_NUM]; - } - reader.close(); - writer.flush(); - writer.close(); - - - //安装文件 - IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); - }else { - throw new PluginDependenceException(); - } - } - - /** * 构造一个下载UI * @param currentID From fb7c74f2d78250cae6d93c81c95ea1f6c1603e2e Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 14 Oct 2016 09:13:44 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E9=87=8D=E7=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/chart/gui/ChartComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java index d898640feb..9dd851c340 100644 --- a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java +++ b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java @@ -312,7 +312,7 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene // chartGlyph.draw(g2d, ScreenResolution.getScreenResolution()); //不直接画chartGlyph而画image的原因是表单的柱形图会溢出表单 //其他图都ok,其实感觉应该是柱形图画的不对,应该也可以改那边 - Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution()); + Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution(), this); g2d.drawImage(chartImage, 0, 0, null); } } From 3a52b254013f156df3c9ae33e58784eb125b5ac9 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 14 Oct 2016 14:12:54 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/ChartTypeInterfaceManager.java | 4 +++- .../mainframe/chart/gui/ChartTypeButtonPane.java | 14 ++++++++++---- .../design/mainframe/chart/gui/ChartTypePane.java | 7 +++++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index e92a6156e3..d11f3cd464 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -78,7 +78,9 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh GeneralContext.addPluginReadListener(new PluginReadListener() { @Override public void success() { - ChartTypeInterfaceManager.getInstance().readDefault(); + if (chartTypeInterfaces.size() == 0) { + ChartTypeInterfaceManager.getInstance().readDefault(); + } //重新注册designModuleFactory DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption()); } 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 c25f031a2a..8326966065 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 @@ -108,9 +108,15 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen indexList.add(button); if (editingCollection != null) { - Chart[] barChart = ColumnIndependentChart.columnChartTypes; + //这个地方应该判断是clone VanChart还是clone Chart + Chart[] clonedChart = null; + if (editingCollection.getState() == SwitchState.NEW) { + + }else { + clonedChart = ColumnIndependentChart.columnChartTypes; + } try { - Chart newChart = (Chart) barChart[0].clone(); + Chart newChart = (Chart) clonedChart[0].clone(); editingCollection.addNamedChart(name, newChart); editingCollection.addFunctionRecord(newChart); } catch (CloneNotSupportedException e1) { @@ -275,9 +281,9 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen //新建一个collection if(editingCollection != null && editingCollection.getChartCount() == 1){ //vanChart 不支持图表切换 目前 - if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ + /*if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ addButton.setVisible(false); - } + }*/ } } 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 7d43b91256..df0e4858c2 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 @@ -118,6 +118,8 @@ public class ChartTypePane extends AbstractChartAttrPane{ //这一步会替换plot ((AbstractChartTypePane) cards.get(fcb.getRelatedSelectedIndex())).updateBean(chart); + String chartID = chart.getChartID(); + Plot plot = chart.getPlot(); if(plot != null){ @@ -199,10 +201,11 @@ public class ChartTypePane extends AbstractChartAttrPane{ jcb.addItem(cards.get(i).title4PopupWindow()); } } - //重构完成 - fcb.setItemEvenType(ItemEvenType.DEFAULT); //重置选择项 fcb.setRelatedSelectedIndex(relativeIndex); + //重构完成 + fcb.setItemEvenType(ItemEvenType.DEFAULT); + } @Override From 5df5d10bf29d5fb0d7aa0df613716002c58a7503 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 14 Oct 2016 16:04:55 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E6=8F=90=E5=8D=87=E5=B0=B1=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E7=BA=A7=E5=88=AB=EF=BC=8C=E5=BD=93=E5=81=9A=E6=96=B0?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java | 2 +- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java index ffe91cd0d0..6c7ba66d80 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java @@ -15,7 +15,7 @@ import com.fr.general.ComparatorUtils; * Created by Mitisky on 16/3/7. */ public abstract class AbstractIndependentChartUIWithAPILevel implements IndependentChartUIProvider { - private static final int OLD_PLUGIN_LEVEL = -2; + private static final int OLD_PLUGIN_LEVEL = 3; @Override //以前的插件没有覆写这个方法,所以始终获取到-2,比当前level低,提示更新. 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 df0e4858c2..0604d32663 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 @@ -118,8 +118,6 @@ public class ChartTypePane extends AbstractChartAttrPane{ //这一步会替换plot ((AbstractChartTypePane) cards.get(fcb.getRelatedSelectedIndex())).updateBean(chart); - String chartID = chart.getChartID(); - Plot plot = chart.getPlot(); if(plot != null){ From 29cbdf4b560b132380cabb8ba82fa775a996bf28 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 17 Oct 2016 09:14:10 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E6=96=B0=E8=80=81=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E9=83=BD=E5=81=9A=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/ChartTypeInterfaceManager.java | 18 +++ .../chart/gui/ChartTypeButtonPane.java | 50 +++---- .../mainframe/chart/gui/ChartTypePane.java | 132 +++--------------- .../chart/gui/item/FlexibleComboBox.java | 95 ------------- .../chart/gui/item/ItemEvenType.java | 37 ----- 5 files changed, 52 insertions(+), 280 deletions(-) delete mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java delete mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index d11f3cd464..00487318dd 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -203,6 +203,24 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh } + /** + * 把chartID的pane加到list里 + * + * @param chartID 图表类型 + * @param paneList pane容器 + */ + public void addPlotTypePaneList(List> paneList, String chartID) { + ///////////////////////////待更改/////////////////////////////// + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + IndependentChartUIProvider creator = (IndependentChartUIProvider) entry.getValue(); + paneList.add(creator.getPlotTypePane()); + } + + } + + public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) { return chartTypeInterfaces.get(plotID).getChartDataPane(listener); } 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 8326966065..a5f96b1ee8 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 @@ -35,7 +35,6 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private static final int B_H = 20; private static final int COL_COUNT = 3; - private ChartTypePane parent; private UIButton addButton; private ArrayList indexList = new ArrayList(); @@ -45,6 +44,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private ComboBoxPane editChartType; private UITextField currentEditingEditor = null; + private ChartTypePane parent = null; + private boolean mouseOnChartTypeButtonPane = false; /** @@ -70,6 +71,11 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } }; + public ChartTypeButtonPane(ChartTypePane chartTypePane){ + this(); + parent = chartTypePane; + } + public ChartTypeButtonPane() { this.setLayout(new BorderLayout()); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); @@ -91,11 +97,6 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK); } - public ChartTypeButtonPane(ChartTypePane parent){ - this(); - this.parent = parent; - } - ActionListener addListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -108,40 +109,26 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen indexList.add(button); if (editingCollection != null) { - //这个地方应该判断是clone VanChart还是clone Chart - Chart[] clonedChart = null; - if (editingCollection.getState() == SwitchState.NEW) { - - }else { - clonedChart = ColumnIndependentChart.columnChartTypes; - } + //点击添加按钮,则会触发切换状态 + Chart chart = editingCollection.getChangeStateNewChart(); try { - Chart newChart = (Chart) clonedChart[0].clone(); + Chart newChart = (Chart) chart.clone(); editingCollection.addNamedChart(name, newChart); editingCollection.addFunctionRecord(newChart); } catch (CloneNotSupportedException e1) { FRLogger.getLogger().error("Error in Clone"); } + //获取图表收集器的状态 + SwitchState state = editingCollection.calculateMultiChartMode(); + if (SwitchState.isDynamicState(state) && parent != null){ + parent.reactorChartTypePane(state, editingCollection); + } } layoutPane(buttonPane); - - //刷新下拉框 - refreshChangeMode(); } - - }; - private void refreshChangeMode() { - //判断当前编辑的图表,对否开启多图表切换模式 - boolean stateChange = editingCollection.setMultiChartMode(); - //只有状态切换了才会重构下拉选项 - if (parent != null && stateChange){ - parent.fireReactor(editingCollection); - } - } - MouseListener mouseListener = new MouseAdapter() { @Override public void mouseExited(MouseEvent e) { @@ -281,9 +268,9 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen //新建一个collection if(editingCollection != null && editingCollection.getChartCount() == 1){ //vanChart 不支持图表切换 目前 - /*if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ + if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ addButton.setVisible(false); - }*/ + } } } @@ -399,9 +386,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } } } - relayoutPane(); - refreshChangeMode(); + relayoutPane(); } private void relayoutPane() { 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 0604d32663..e7271a77a5 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,24 +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.mainframe.chart.gui.item.FlexibleComboBox; -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.item.ItemEvenType; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; -import com.fr.general.Inter; import javax.swing.*; import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; @@ -35,6 +30,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ private ChartTypeButtonPane buttonPane; private ChartEditPane editPane; private ChartCollection editingCollection; + @Override protected JPanel createContentPane() { JPanel content = new JPanel(new BorderLayout()); @@ -71,6 +67,10 @@ public class ChartTypePane extends AbstractChartAttrPane{ return content; } + public void reactorChartTypePane(SwitchState state, ChartCollection collection){ + + } + /** * 界面做为按钮时的图片位置. design_base */ @@ -85,12 +85,17 @@ public class ChartTypePane extends AbstractChartAttrPane{ public String title4PopupWindow() { return PaneTitleConstants.CHART_TYPE_TITLE; } - + class ComboBoxPane extends UIComboBoxPane{ @Override protected List> initPaneList() { List> paneList = new ArrayList>(); - ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList); + if (editingCollection.getState() == SwitchState.DEFAULT) { + ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList); + }else { + Chart chart = editingCollection.getSelectedChart(); + ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList, chart.getChartID()); + } return paneList; } @@ -101,10 +106,9 @@ public class ChartTypePane extends AbstractChartAttrPane{ public void updateBean(Chart chart) { int lastSelectIndex = editPane.getSelectedChartIndex(chart); - FlexibleComboBox fcb = (FlexibleComboBox)jcb; try{ - Chart newDefaultChart = (Chart)((AbstractChartTypePane)cards.get(fcb.getRelatedSelectedIndex())).getDefaultChart().clone(); + Chart newDefaultChart = (Chart)((AbstractChartTypePane)cards.get(jcb.getSelectedIndex())).getDefaultChart().clone(); if(!chart.accept(newDefaultChart.getClass())){ //vanChart 和 chart 之间切换 editingCollection.removeNameObject(editingCollection.getSelectedIndex()); @@ -116,7 +120,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ } //这一步会替换plot - ((AbstractChartTypePane) cards.get(fcb.getRelatedSelectedIndex())).updateBean(chart); + ((AbstractChartTypePane) cards.get(jcb.getSelectedIndex())).updateBean(chart); Plot plot = chart.getPlot(); @@ -131,115 +135,11 @@ public class ChartTypePane extends AbstractChartAttrPane{ boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); - if(editPane.isDefaultPane() != isUseDefault || (!isUseDefault && lastSelectIndex != fcb.getRelatedSelectedIndex())){ + if(editPane.isDefaultPane() != isUseDefault || (!isUseDefault && lastSelectIndex != jcb.getSelectedIndex())){ editPane.reLayout(chart); } } } - - @Override - public void populateBean(Chart ob) { - for (int i = 0; i < this.cards.size(); i++) { - FurtherBasicBeanPane pane = cards.get(i); - if (pane.accept(ob)) { - pane.populateBean(ob); - ((FlexibleComboBox)jcb).setRelatedSelectedIndex(i); - return; - } - } - } - - @Override - protected UIComboBox createComboBox() { - FlexibleComboBox comboBox = new FlexibleComboBox(); - //初始化分界线 - int partition = 0; - for (int i = 0; i < this.cards.size(); i++) { - String name = cards.get(i).title4PopupWindow(); - if (name.contains(Inter.getLocText("Plugin-ChartF_NewChart"))) { - partition++; - } - } - comboBox.setPartition(partition); - return comboBox; - } - - - /** - * 下拉框重构条件 - * 1、从None->Default(multiMode) - * 2、从None->New(multiMode) - * 3、从Default->None(singleMode) - * 4、从New->None(singleMode) - * @param is2MultiMode - * @param isVanChart - */ - private void reactorComboBoxItem(boolean is2MultiMode, boolean isVanChart){ - if (jcb == null){ - return; - } - //重构下拉选项 - FlexibleComboBox fcb = (FlexibleComboBox)jcb; - //重构前,保存相对下标 - int relativeIndex = is2MultiMode ? fcb.getSelectedIndex() : fcb.getRelatedSelectedIndex(); - //多图表切换模式 - fcb.setMultiMode(is2MultiMode); - //设置当前切换是新图表还是老图表 - fcb.setBottom(!isVanChart); - //重构下拉框选项 - fcb.setItemEvenType(ItemEvenType.REACTOR); - jcb.removeAllItems(); - for (int i = 0; i < this.cards.size(); i++) { - String name = cards.get(i).title4PopupWindow(); - if (is2MultiMode && (name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && isVanChart)) { - jcb.addItem(cards.get(i).title4PopupWindow()); - } else if (is2MultiMode && (!name.contains(Inter.getLocText("Plugin-ChartF_NewChart")) && !isVanChart)) { - jcb.addItem(cards.get(i).title4PopupWindow()); - }else if (!is2MultiMode){ - jcb.addItem(cards.get(i).title4PopupWindow()); - } - } - //重置选择项 - fcb.setRelatedSelectedIndex(relativeIndex); - //重构完成 - fcb.setItemEvenType(ItemEvenType.DEFAULT); - - } - - @Override - protected void addItemChangeEvent() { - jcb.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - //如果是在进行重构,则不触发状态改变事件 - FlexibleComboBox fcb = (FlexibleComboBox)jcb; - if (fcb.isReactor()){ - return; - } - comboBoxItemStateChanged(); - CardLayout cl = (CardLayout)cardPane.getLayout(); - cl.show(cardPane, cardNames[((FlexibleComboBox)jcb).getRelatedSelectedIndex()]); - } - }); - } - } - - public void fireReactor(ChartCollection collection) { - switch (collection.getState()){ - case NEW:{ - this.chartTypePane.reactorComboBoxItem(true, true); - break; - } - case DEFAULT:{ - this.chartTypePane.reactorComboBoxItem(true, false); - break; - } - case NONE:{ - this.chartTypePane.reactorComboBoxItem(false, false); - break; - } - default:this.chartTypePane.reactorComboBoxItem(false, false); - } } /** diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java deleted file mode 100644 index 0bec554f4f..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.fr.design.mainframe.chart.gui.item; - -import com.fr.design.gui.icombobox.UIComboBox; - -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -/** - * Created by hufan on 2016/10/11. - */ -public class FlexibleComboBox extends UIComboBox { - //新旧分界线 - private int partition = 0; - //分界线上还是分界线下 - private boolean bottom = true; - //图表是否开启切换模式 - private boolean multiMode = false; - //当前下拉框处理的事件类型 - private ItemEvenType itemEvenType = ItemEvenType.DEFAULT; - - public boolean isReactor(){ - return itemEvenType == ItemEvenType.REACTOR; - } - - public int getPartition() { - return partition; - } - - public void setPartition(int partition) { - this.partition = partition; - } - - public boolean isBottom() { - return bottom; - } - - public void setBottom(boolean bottom) { - this.bottom = bottom; - } - - public boolean isMultiMode() { - return multiMode; - } - - public void setMultiMode(boolean multiMode) { - this.multiMode = multiMode; - } - - public ItemEvenType getItemEvenType() { - return itemEvenType; - } - - public void setItemEvenType(ItemEvenType itemEvenType) { - this.itemEvenType = itemEvenType; - } - - public int getRelatedSelectedIndex(){ - return isMultiMode() && isBottom() ? (super.getSelectedIndex() + partition) : super.getSelectedIndex(); - } - - public void setRelatedSelectedIndex(int index){ - if (isMultiMode() && isBottom()){ - super.setSelectedIndex(index - partition); - }else { - super.setSelectedIndex(index); - } - } - - @Override - protected void initListener() { - if (shouldResponseChangeListener()) { - this.addFocusListener(new FocusAdapter() { - @Override - public void focusGained(FocusEvent e) { - fireSetGlobalName(); - } - }); - this.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (uiObserverListener == null) { - return; - } - fireSetGlobalName(); - //只有不在重构状态才会触发下拉框选择时的改变事件 - if (e.getStateChange() == ItemEvent.SELECTED && !isReactor()) { - uiObserverListener.doChange(); - } - } - }); - } - } -} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java deleted file mode 100644 index 5ef941a69c..0000000000 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEvenType.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.fr.design.mainframe.chart.gui.item; - -import com.fr.general.ComparatorUtils; - -/** - * Created by hufan on 2016/10/11. - */ -public enum ItemEvenType { - REACTOR("reactor"),//重构选项 - DEFAULT("default")//默认选项操作 - ; - - //这个String会存起来的,不能随意更改。 - private String type; - - private ItemEvenType(String type){ - this.type = type; - } - - public String getType() { - return this.type; - } - - private static ItemEvenType[] types; - - public static ItemEvenType parse(String type){ - if(types == null){ - types = ItemEvenType.values(); - } - for(ItemEvenType itemEvenType : types){ - if(ComparatorUtils.equals(itemEvenType.getType(), type)){ - return itemEvenType; - } - } - return DEFAULT; - } -} From e80e9ea05fdfd638d5b9c77ebbfc17113e965fe1 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 17 Oct 2016 16:52:30 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=88=87=E6=8D=A2-?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/frpane/UIComboBoxPane.java | 7 + .../fr/design/images/buttonicon/config.png | Bin 0 -> 404 bytes .../fr/design/ChartTypeInterfaceManager.java | 258 ++++++++++++++---- .../design/mainframe/chart/ChartEditPane.java | 1 + .../chart/gui/ChartTypeButtonPane.java | 35 ++- .../mainframe/chart/gui/ChartTypePane.java | 105 ++++++- .../chart/gui/item/FlexibleComboBox.java | 54 ++++ .../chart/gui/item/ItemEventType.java | 37 +++ 8 files changed, 419 insertions(+), 78 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/buttonicon/config.png create mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java create mode 100644 designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEventType.java diff --git a/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java b/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java index 73b065f069..e903aa95a0 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UIComboBoxPane.java @@ -56,6 +56,11 @@ public abstract class UIComboBoxPane extends BasicBeanPane { jcb.setSelectedIndex(0); } + public FurtherBasicBeanPane getSelectedPane(){ + return cards.get(jcb.getSelectedIndex()); + } + + protected void addItemChangeEvent() { jcb.addItemListener(new ItemListener() { @Override @@ -121,6 +126,8 @@ public abstract class UIComboBoxPane extends BasicBeanPane { } } + + @Override public T updateBean() { return cards.get(jcb.getSelectedIndex()).updateBean(); diff --git a/designer_base/src/com/fr/design/images/buttonicon/config.png b/designer_base/src/com/fr/design/images/buttonicon/config.png new file mode 100644 index 0000000000000000000000000000000000000000..377bb9247d466886360c511aa848210fd880493b GIT binary patch literal 404 zcmV;F0c-w=P) zBN4;xEg*ax*G>O%DVzf$(};{>_bEodGW-d%Dc0&&g&E5MHSHs5azse@Sb zgp)xAXVEk~r_7WCiat}GVJ*mT70L~yEumO chartTypeInterfaces = new LinkedHashMap(); + private static LinkedHashMap> chartTypeInterfaces = new LinkedHashMap>(); + //private static LinkedHashMap chartTypeInterfaces = new LinkedHashMap(); public synchronized static ChartTypeInterfaceManager getInstance() { if (classManager == null) { @@ -121,36 +117,64 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh } private static void readDefault() { - chartTypeInterfaces.put(ChartConstants.COLUMN_CHART, new ColumnIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.LINE_CHART, new LineIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.BAR_CHART, new BarIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.PIE_CHART, new PieIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.AREA_CHART, new AreaIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.SCATTER_CHART, new XYScatterIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.BUBBLE_CHART, new BubbleIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.RADAR_CHART, new RadarIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.STOCK_CHART, new StockIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.METER_CHART, new MeterIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.RANGE_CHART, new RangeIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.CUSTOM_CHART, new CustomIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.GANTT_CHART, new GanttIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.DONUT_CHART, new DonutIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.MAP_CHART, new MapIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.GIS_CHAER, new GisMapIndependentChartInterface()); - chartTypeInterfaces.put(ChartConstants.FUNNEL_CHART, new FunnelIndependentChartInterface()); + LinkedHashMap chartUIList = new LinkedHashMap(); + chartUIList.put(ChartConstants.COLUMN_CHART, new ColumnIndependentChartInterface()); + chartUIList.put(ChartConstants.LINE_CHART, new LineIndependentChartInterface()); + chartUIList.put(ChartConstants.BAR_CHART, new BarIndependentChartInterface()); + chartUIList.put(ChartConstants.PIE_CHART, new PieIndependentChartInterface()); + chartUIList.put(ChartConstants.AREA_CHART, new AreaIndependentChartInterface()); + chartUIList.put(ChartConstants.SCATTER_CHART, new XYScatterIndependentChartInterface()); + chartUIList.put(ChartConstants.BUBBLE_CHART, new BubbleIndependentChartInterface()); + chartUIList.put(ChartConstants.RADAR_CHART, new RadarIndependentChartInterface()); + chartUIList.put(ChartConstants.STOCK_CHART, new StockIndependentChartInterface()); + chartUIList.put(ChartConstants.METER_CHART, new MeterIndependentChartInterface()); + chartUIList.put(ChartConstants.RANGE_CHART, new RangeIndependentChartInterface()); + chartUIList.put(ChartConstants.CUSTOM_CHART, new CustomIndependentChartInterface()); + chartUIList.put(ChartConstants.GANTT_CHART, new GanttIndependentChartInterface()); + chartUIList.put(ChartConstants.DONUT_CHART, new DonutIndependentChartInterface()); + chartUIList.put(ChartConstants.MAP_CHART, new MapIndependentChartInterface()); + chartUIList.put(ChartConstants.GIS_CHAER, new GisMapIndependentChartInterface()); + chartUIList.put(ChartConstants.FUNNEL_CHART, new FunnelIndependentChartInterface()); + + chartTypeInterfaces.put(ChartConstants.CHART_ID, chartUIList); } public String getIconPath(String plotID) { - if (chartTypeInterfaces.get(plotID) != null) { - return chartTypeInterfaces.get(plotID).getIconPath(); + if (chartTypeInterfaces != null) { + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + String imagePath = getIconPath(chartID, plotID); + if (!StringUtils.isEmpty(imagePath)) { + return imagePath; + } + } + } + return StringUtils.EMPTY; + } + + private String getIconPath(String chartID, String plotID) { + if (chartTypeInterfaces.get(chartID) != null && chartTypeInterfaces.get(chartID).get(plotID) != null) { + return chartTypeInterfaces.get(chartID).get(plotID).getIconPath(); }else { return StringUtils.EMPTY; } } - public static void addChartTypeInterface(IndependentChartUIProvider provider, String plotID) { - if (chartTypeInterfaces != null && !chartTypeInterfaces.containsKey(plotID)) { - chartTypeInterfaces.put(plotID, provider); + public static void addChartTypeInterface(IndependentChartUIProvider provider, String chartID, String plotID) { + if (chartTypeInterfaces != null){ + if (!chartTypeInterfaces.containsKey(chartID)){ + //新建一个具体图表列表 + LinkedHashMap chartUIList = new LinkedHashMap(); + chartUIList.put(plotID, provider); + chartTypeInterfaces.put(chartID, chartUIList); + }else { + LinkedHashMap chartUIList = chartTypeInterfaces.get(chartID); + if (!chartUIList.containsKey(plotID)) { + chartUIList.put(plotID, provider); + } + } } } @@ -160,7 +184,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh * @param className 类名 * @param plotID 标志ID */ - public void addChartInterface(String className, String plotID, PluginSimplify simplify) { + public void addChartInterface(String className, String chartID, String plotID, PluginSimplify simplify) { if (StringUtils.isNotBlank(className)) { try { Class clazz = Class.forName(className); @@ -172,7 +196,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh if (PluginCollector.getCollector().isError(provider, IndependentChartUIProvider.CURRENT_API_LEVEL, simplify.getPluginName()) || !containsChart(plotID)) { PluginMessage.remindUpdate(className); } else { - ChartTypeInterfaceManager.getInstance().addChartTypeInterface(provider, plotID); + ChartTypeInterfaceManager.getInstance().addChartTypeInterface(provider, chartID, plotID); } } catch (ClassNotFoundException e) { FRLogger.getLogger().error("class not found:" + e.getMessage()); @@ -193,56 +217,165 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh * @param paneList pane容器 */ public void addPlotTypePaneList(List> paneList) { - Iterator iterator = chartTypeInterfaces.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); - IndependentChartUIProvider creator = (IndependentChartUIProvider) entry.getValue(); - paneList.add(creator.getPlotTypePane()); + String chartID = (String) entry.getKey(); + Iterator chartUIIterator = chartTypeInterfaces.get(chartID).entrySet().iterator(); + while (chartUIIterator.hasNext()) { + Map.Entry chartUIEntry = (Map.Entry) chartUIIterator.next(); + IndependentChartUIProvider provider = (IndependentChartUIProvider) chartUIEntry.getValue(); + paneList.add(provider.getPlotTypePane()); + } } + } + public String[] getTitle4PopupWindow(String chartID){ + if (chartID.isEmpty()){ + return getTitle4PopupWindow(); + } + String[] names = new String[getChartSize(chartID)]; + if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(chartID)){ + HashMap chartUIList = chartTypeInterfaces.get(chartID); + Iterator iterator = chartUIList.entrySet().iterator(); + int i = 0; + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + IndependentChartUIProvider provider = (IndependentChartUIProvider) entry.getValue(); + names[i++] = provider.getPlotTypePane().title4PopupWindow(); + } + return names; + } + return new String[0]; } - /** - * 把chartID的pane加到list里 - * - * @param chartID 图表类型 - * @param paneList pane容器 - */ - public void addPlotTypePaneList(List> paneList, String chartID) { - ///////////////////////////待更改/////////////////////////////// + private String[] getTitle4PopupWindow(){ + int size = 0; + if (chartTypeInterfaces != null){ + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + size += getChartSize(chartID); + } + String[] names = new String[size]; + + int index = 0; + + Iterator i = chartTypeInterfaces.entrySet().iterator(); + while (i.hasNext()){ + Map.Entry entry = (Map.Entry) i.next(); + String chartID = (String) entry.getKey(); + Iterator chartUI = chartTypeInterfaces.get(chartID).entrySet().iterator(); + while (chartUI.hasNext()){ + Map.Entry chartUIEntry = (Map.Entry) chartUI.next(); + IndependentChartUIProvider provider = (IndependentChartUIProvider) chartUIEntry.getValue(); + names[index++] = provider.getPlotTypePane().title4PopupWindow(); + } + } + return names; + } + + return new String[0]; + } + + public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) { Iterator iterator = chartTypeInterfaces.entrySet().iterator(); - while (iterator.hasNext()) { + while (iterator.hasNext()){ Map.Entry entry = (Map.Entry) iterator.next(); - IndependentChartUIProvider creator = (IndependentChartUIProvider) entry.getValue(); - paneList.add(creator.getPlotTypePane()); + String chartID = (String) entry.getKey(); + return getChartDataPane(chartID, plotID, listener); } - + return getChartDataPane(ChartConstants.DEFAULT_CHART_ID, plotID, listener); } + private ChartDataPane getChartDataPane(String chartID, String plotID, AttributeChangeListener listener) { + return chartTypeInterfaces.get(chartID).get(plotID).getChartDataPane(listener); + } - public ChartDataPane getChartDataPane(String plotID, AttributeChangeListener listener) { - return chartTypeInterfaces.get(plotID).getChartDataPane(listener); + /** + * 获取对应ID的图表数量 + * @param chartID + * @return + */ + private int getChartSize(String chartID){ + if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(chartID)){ + return chartTypeInterfaces.get(chartID).size(); + } + return 0; } public AbstractChartAttrPane[] getAttrPaneArray(String plotID, AttributeChangeListener listener) { - return chartTypeInterfaces.get(plotID).getAttrPaneArray(listener); + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + return getAttrPaneArray(chartID, plotID, listener); + } + return getAttrPaneArray(ChartConstants.DEFAULT_CHART_ID, plotID, listener); + } + + private AbstractChartAttrPane[] getAttrPaneArray(String chartID, String plotID, AttributeChangeListener listener) { + return chartTypeInterfaces.get(chartID).get(plotID).getAttrPaneArray(listener); } public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) { - return chartTypeInterfaces.get(plot.getPlotID()).getTableDataSourcePane(plot, parent); + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + return getTableDataSourcePane(chartID, plot, parent); + } + return getTableDataSourcePane(ChartConstants.DEFAULT_CHART_ID, plot, parent); + } + + private AbstractTableDataContentPane getTableDataSourcePane(String chartID, Plot plot, ChartDataPane parent) { + return chartTypeInterfaces.get(chartID).get(plot.getPlotID()).getTableDataSourcePane(plot, parent); } + public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) { - return chartTypeInterfaces.get(plot.getPlotID()).getReportDataSourcePane(plot, parent); + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + return getReportDataSourcePane(chartID, plot, parent); + } + return getReportDataSourcePane(ChartConstants.DEFAULT_CHART_ID, plot, parent); + } + + private AbstractReportDataContentPane getReportDataSourcePane(String chartID, Plot plot, ChartDataPane parent) { + return chartTypeInterfaces.get(chartID).get(plot.getPlotID()).getReportDataSourcePane(plot, parent); } + public ConditionAttributesPane getPlotConditionPane(Plot plot) { - return chartTypeInterfaces.get(plot.getPlotID()).getPlotConditionPane(plot); + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + return getPlotConditionPane(chartID, plot); + } + return getPlotConditionPane(ChartConstants.DEFAULT_CHART_ID, plot); + } + + private ConditionAttributesPane getPlotConditionPane(String chartID, Plot plot) { + return chartTypeInterfaces.get(chartID).get(plot.getPlotID()).getPlotConditionPane(plot); } + public BasicBeanPane getPlotSeriesPane(ChartStylePane parent, Plot plot) { - return chartTypeInterfaces.get(plot.getPlotID()).getPlotSeriesPane(parent, plot); + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()){ + Map.Entry entry = (Map.Entry) iterator.next(); + String chartID = (String) entry.getKey(); + return getPlotSeriesPane(chartID, parent, plot); + } + return getPlotSeriesPane(ChartConstants.DEFAULT_CHART_ID, parent, plot); + } + + private BasicBeanPane getPlotSeriesPane(String chartID, ChartStylePane parent, Plot plot) { + return chartTypeInterfaces.get(chartID).get(plot.getPlotID()).getPlotSeriesPane(parent, plot); } /** @@ -252,9 +385,22 @@ 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(); + String chartID = (String) entry.getKey(); + if (chartTypeInterfaces.get(chartID).containsKey(plotID)){ + return isUseDefaultPane(chartID, plotID); + } + } + + return true; + } + + private boolean isUseDefaultPane(String chartID, String plotID){ - if (chartTypeInterfaces.containsKey(plotID)) { - return chartTypeInterfaces.get(plotID).isUseDefaultPane(); + if (chartTypeInterfaces.containsKey(chartID) && chartTypeInterfaces.get(chartID).containsKey(plotID)) { + return chartTypeInterfaces.get(chartID).get(plotID).isUseDefaultPane(); } return true; @@ -272,7 +418,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh extraChartDesignInterfaceList.add(tagName); } if (IndependentChartUIProvider.XML_TAG.equals(tagName)) { - addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("plotID", ""), simplify); + addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("chartID", ChartConstants.DEFAULT_CHART_ID),reader.getAttrAsString("plotID", ""), simplify); } } } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index c3a2e1d502..57b57380d9 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -4,6 +4,7 @@ package com.fr.design.mainframe.chart; 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.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.data.DesignTableDataManager; 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 a5f96b1ee8..461c5501e7 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 @@ -36,6 +36,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private static final int COL_COUNT = 3; private UIButton addButton; + private UIButton configButton; private ArrayList indexList = new ArrayList(); private JPanel buttonPane; @@ -79,6 +80,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen public ChartTypeButtonPane() { this.setLayout(new BorderLayout()); addButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + configButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/config.png")); buttonPane = new JPanel(); this.add(buttonPane, BorderLayout.CENTER); @@ -88,8 +90,13 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen eastPane.setLayout(new BorderLayout()); - eastPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 20)); - eastPane.add(addButton, BorderLayout.NORTH); + eastPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 15)); + JPanel button = new JPanel(); + button.setPreferredSize(new Dimension(45, 20)); + button.setLayout(new GridLayout(1, 2, 5, 0)); + button.add(addButton); + button.add(configButton); + eastPane.add(button, BorderLayout.NORTH); addButton.setPreferredSize(new Dimension(20, 20)); addButton.addActionListener(addListener); @@ -121,7 +128,7 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen //获取图表收集器的状态 SwitchState state = editingCollection.calculateMultiChartMode(); if (SwitchState.isDynamicState(state) && parent != null){ - parent.reactorChartTypePane(state, editingCollection); + parent.reactorChartTypePane(editingCollection); } } @@ -260,17 +267,16 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } layoutPane(buttonPane); - checkAddButtonVisible(); + checkConfigButtonVisible(); } - private void checkAddButtonVisible() { + private void checkConfigButtonVisible() { addButton.setVisible(true); + configButton.setVisible(true); //新建一个collection - if(editingCollection != null && editingCollection.getChartCount() == 1){ - //vanChart 不支持图表切换 目前 - if(!ComparatorUtils.equals(editingCollection.getSelectedChart().getClass(), Chart.class)){ - addButton.setVisible(false); - } + if(editingCollection.getState() == SwitchState.CHANGE){ + //Chart 不支持图表切换 + configButton.setVisible(editingCollection.getSelectedChart().supportChange()); } } @@ -381,12 +387,21 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(getButtonName(), editingCollection.getChartName(i))) { editingCollection.removeNameObject(i); + if (i <= editingCollection.getSelectedIndex()){ + editingCollection.setSelectedIndex(editingCollection.getSelectedIndex()-1); + } break; } } } } + //获取图表收集器的状态 + SwitchState state = editingCollection.calculateMultiChartMode(); + if (SwitchState.isDynamicState(state) && parent != null){ + parent.reactorChartTypePane(editingCollection); + } + relayoutPane(); } 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 e7271a77a5..84cfbd52ba 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 @@ -10,13 +10,20 @@ 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.item.FlexibleComboBox; +import com.fr.design.mainframe.chart.gui.item.ItemEventType; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; +import com.fr.general.ComparatorUtils; +import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; @@ -47,6 +54,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ @Override protected void layoutContentPane() { + leftcontentPane = createContentPane(); this.add(leftcontentPane); } @@ -67,10 +75,6 @@ public class ChartTypePane extends AbstractChartAttrPane{ return content; } - public void reactorChartTypePane(SwitchState state, ChartCollection collection){ - - } - /** * 界面做为按钮时的图片位置. design_base */ @@ -90,12 +94,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ @Override protected List> initPaneList() { List> paneList = new ArrayList>(); - if (editingCollection.getState() == SwitchState.DEFAULT) { - ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList); - }else { - Chart chart = editingCollection.getSelectedChart(); - ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList, chart.getChartID()); - } + ChartTypeInterfaceManager.getInstance().addPlotTypePaneList(paneList); return paneList; } @@ -108,7 +107,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ int lastSelectIndex = editPane.getSelectedChartIndex(chart); try{ - Chart newDefaultChart = (Chart)((AbstractChartTypePane)cards.get(jcb.getSelectedIndex())).getDefaultChart().clone(); + Chart newDefaultChart = (Chart)((AbstractChartTypePane)getSelectedPane()).getDefaultChart().clone(); if(!chart.accept(newDefaultChart.getClass())){ //vanChart 和 chart 之间切换 editingCollection.removeNameObject(editingCollection.getSelectedIndex()); @@ -120,7 +119,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ } //这一步会替换plot - ((AbstractChartTypePane) cards.get(jcb.getSelectedIndex())).updateBean(chart); + ((AbstractChartTypePane)getSelectedPane()).updateBean(chart); Plot plot = chart.getPlot(); @@ -140,6 +139,88 @@ public class ChartTypePane extends AbstractChartAttrPane{ } } } + + protected UIComboBox createComboBox() { + return new FlexibleComboBox(); + } + + @Override + protected void addItemChangeEvent() { + jcb.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + FlexibleComboBox fcb = (FlexibleComboBox)jcb; + if (fcb.isReactor()){ + return; + } + comboBoxItemStateChanged(); + CardLayout cl = (CardLayout)cardPane.getLayout(); + cl.show(cardPane, cardNames[jcb.getSelectedIndex()]); + } + }); + } + + public void reactor(ChartCollection collection){ + //重构前存储所选择的下拉选项 + Object item = jcb.getSelectedItem(); + //重构需要重构下拉框选项和cardNames + Chart chart = collection.getSelectedChart(); + String chartID = chart.getChartID(); + if (collection.getState() == SwitchState.DEFAULT){ + chartID = StringUtils.EMPTY; + } + //第一步就是重构cardNames + cardNames = ChartTypeInterfaceManager.getInstance().getTitle4PopupWindow(chartID); + //重构下拉框选项 + FlexibleComboBox fcb = (FlexibleComboBox)jcb; + fcb.setItemEvenType(ItemEventType.REACTOR); + fcb.removeAllItems(); + for (int i = 0; i < this.cardNames.length; i++) { + fcb.addItem(cardNames[i]); + } + //重新选择选中的下拉项 + jcb.setSelectedItem(item); + fcb.setItemEvenType(ItemEventType.DEFAULT); + } + + @Override + public void populateBean(Chart ob) { + for (int i = 0; i < this.cards.size(); i++) { + FurtherBasicBeanPane pane = cards.get(i); + if (pane.accept(ob)) { + pane.populateBean(ob); + Object item = pane.title4PopupWindow(); + for (int j = 0; j < cardNames.length; j++) { + if (ComparatorUtils.equals(item, cardNames[j])) { + jcb.setSelectedIndex(j); + } + } + return; + } + } + } + + @Override + public Chart updateBean() { + return getSelectedPane().updateBean(); + } + + @Override + public FurtherBasicBeanPane getSelectedPane(){ + Object item = jcb.getSelectedItem(); + for (int i = 0; i < cards.size(); i++){ + if (ComparatorUtils.equals(item, cards.get(i).title4PopupWindow())){ + return cards.get(i); + } + } + return cards.get(0); + } + + } + + + public void reactorChartTypePane(ChartCollection collection){ + chartTypePane.reactor(collection); } /** diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java new file mode 100644 index 0000000000..991858a9a5 --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/FlexibleComboBox.java @@ -0,0 +1,54 @@ +package com.fr.design.mainframe.chart.gui.item; + +import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.gui.icombobox.UIComboBox; + +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * Created by hufan on 2016/10/11. + */ +public class FlexibleComboBox extends UIComboBox { + //当前下拉框处理的事件类型 + private ItemEventType itemEvenType = ItemEventType.DEFAULT; + + public boolean isReactor(){ + return itemEvenType == ItemEventType.REACTOR; + } + + public ItemEventType getItemEvenType() { + return itemEvenType; + } + + public void setItemEvenType(ItemEventType itemEvenType) { + this.itemEvenType = itemEvenType; + } + + @Override + protected void initListener() { + if (shouldResponseChangeListener()) { + this.addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + fireSetGlobalName(); + } + }); + this.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (uiObserverListener == null) { + return; + } + fireSetGlobalName(); + //只有不在重构状态才会触发下拉框选择时的改变事件 + if (e.getStateChange() == ItemEvent.SELECTED && !isReactor()) { + uiObserverListener.doChange(); + } + } + }); + } + } +} \ No newline at end of file diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEventType.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEventType.java new file mode 100644 index 0000000000..4a7332d537 --- /dev/null +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/item/ItemEventType.java @@ -0,0 +1,37 @@ +package com.fr.design.mainframe.chart.gui.item; + +import com.fr.general.ComparatorUtils; + +/** + * Created by hufan on 2016/10/11. + */ +public enum ItemEventType { + REACTOR("reactor"),//重构选项 + DEFAULT("default")//默认选项操作 + ; + + //这个String会存起来的,不能随意更改。 + private String type; + + private ItemEventType(String type){ + this.type = type; + } + + public String getType() { + return this.type; + } + + private static ItemEventType[] types; + + public static ItemEventType parse(String type){ + if(types == null){ + types = ItemEventType.values(); + } + for(ItemEventType itemEventType : types){ + if(ComparatorUtils.equals(itemEventType.getType(), type)){ + return itemEventType; + } + } + return DEFAULT; + } +} \ No newline at end of file From bee93e7613f84cc1ef10ef8a7006f6469f45e674 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 17 Oct 2016 17:35:50 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/ChartEditPane.java | 1 - .../com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 57b57380d9..c3a2e1d502 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -4,7 +4,6 @@ package com.fr.design.mainframe.chart; 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.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.data.DesignTableDataManager; 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 461c5501e7..8833e5269d 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 @@ -272,9 +272,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private void checkConfigButtonVisible() { addButton.setVisible(true); - configButton.setVisible(true); //新建一个collection - if(editingCollection.getState() == SwitchState.CHANGE){ + if(editingCollection.getState() == SwitchState.DEFAULT){ //Chart 不支持图表切换 configButton.setVisible(editingCollection.getSelectedChart().supportChange()); } From 131ffac75bdb5e237224d23dfbf6bf17b84726c0 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 17 Oct 2016 20:14:06 +0800 Subject: [PATCH 14/15] updae --- .../fr/design/chart/gui/ChartComponent.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java index 9dd851c340..99b97df989 100644 --- a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java +++ b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java @@ -5,6 +5,7 @@ import com.fr.base.ScreenResolution; import com.fr.base.chart.BaseChart; import com.fr.base.chart.BaseChartCollection; import com.fr.base.chart.BaseChartGlyph; +import com.fr.base.chart.chartdata.ChartDataEvent; import com.fr.chart.base.ChartConstants; import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Chart; @@ -31,7 +32,7 @@ import java.util.List; * 类说明: 事件说明: 工具栏编辑--> 是刷新ChartComponent 然后响应整个设计块的改变事件 右键编辑 ---> 刷新ChartCompment 刷新对应的工具栏(加入事件) 然后响应整个设计块的改变事件 */ -public class ChartComponent extends MiddleChartComponent implements MouseListener, MouseMotionListener { +public class ChartComponent extends MiddleChartComponent implements MouseListener, MouseMotionListener, ChartDataEvent { private static final long serialVersionUID = 744164838619052097L; private final List listeners = new ArrayList(); private ChartCollection chartCollection4Design; @@ -309,13 +310,24 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene } else { chartGlyph.setBounds(new Rectangle2D.Double(0, 0, chartWidth, chartHeight)); } - // chartGlyph.draw(g2d, ScreenResolution.getScreenResolution()); + //不直接画chartGlyph而画image的原因是表单的柱形图会溢出表单 //其他图都ok,其实感觉应该是柱形图画的不对,应该也可以改那边 - Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution(), this); + //注册获取图片后续事件 + registerChartDataEvent(chartGlyph); + Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution()); g2d.drawImage(chartImage, 0, 0, null); } } + @Override + public void registerChartDataEvent(BaseChartGlyph glyph) { + glyph.registerChartDataEvent(this); + } + + @Override + public void fire() { + this.repaint(); + } } \ No newline at end of file From 4c273165e5e329e379ceff9f718849c6f3f55ad7 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 18 Oct 2016 09:09:27 +0800 Subject: [PATCH 15/15] update --- designer_chart/src/com/fr/design/chart/gui/ChartComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java index 99b97df989..6aa05925e4 100644 --- a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java +++ b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java @@ -323,7 +323,7 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene @Override public void registerChartDataEvent(BaseChartGlyph glyph) { - glyph.registerChartDataEvent(this); + glyph.addChartDataEvent(this); } @Override