From f82eb21d59c4124b37bfb5c697ea8f991438648a Mon Sep 17 00:00:00 2001 From: zheng Date: Wed, 18 Jul 2018 10:15:54 +0800 Subject: [PATCH] =?UTF-8?q?CHART-2521=20=E5=9B=BE=E8=A1=A8=E9=85=8D?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/gui/style/ChartFillStylePane.java | 9 +- .../gui/style/ChartPreFillStylePane.java | 187 ++++++++++++------ .../chart/gui/type/AbstractChartTypePane.java | 5 +- .../fr/design/module/ChartPreStyleAction.java | 4 - .../module/ChartPreStyleManagerPane.java | 31 ++- .../fr/design/module/ChartPreStylePane.java | 28 +-- 6 files changed, 174 insertions(+), 90 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java index f3a9b8a86..7ddd89d52 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartFillStylePane.java @@ -1,10 +1,11 @@ package com.fr.design.mainframe.chart.gui.style; +import com.fr.base.ChartColorMatching; import com.fr.base.ChartPreStyleConfig; import com.fr.base.Utils; import com.fr.chart.base.AttrFillStyle; import com.fr.chart.base.ChartConstants; -import com.fr.chart.base.ChartPreStyle; +import com.fr.chart.base.ChartUtils; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombobox.UIComboBox; @@ -199,9 +200,9 @@ public class ChartFillStylePane extends BasicBeanPane{ } else if(styleSelectBox.getSelectedIndex() < styleSelectBox.getItemCount() - 1){ ChartPreStyleConfig manager = ChartPreStyleConfig.getInstance(); Object preStyle = manager.getPreStyle(styleSelectBox.getSelectedItem()); - if(preStyle instanceof ChartPreStyle) { - AttrFillStyle def = ((ChartPreStyle) preStyle).getAttrFillStyle(); - def.setFillStyleName(Utils.objectToString(styleSelectBox.getSelectedItem())); + if (preStyle instanceof ChartColorMatching) { + AttrFillStyle def = ChartUtils.chartColorMatching2AttrFillStyle((ChartColorMatching) preStyle); + def.setFillStyleName(Utils.objectToString(styleSelectBox.getSelectedItem())); return def; }else{ condition.setColorStyle(ChartConstants.COLOR_DEFAULT); diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartPreFillStylePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartPreFillStylePane.java index 3e7fc1be0..3d29a56da 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartPreFillStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/ChartPreFillStylePane.java @@ -1,97 +1,170 @@ package com.fr.design.mainframe.chart.gui.style; -import java.awt.*; - -import com.fr.chart.base.AttrFillStyle; +import com.fr.base.ChartColorMatching; import com.fr.chart.base.ChartConstants; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.style.background.gradient.FixedGradientBar; import com.fr.general.Inter; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + + /** - * 预定义的图表配色界面, 其中和属性表中ChartFillStylePane 主要的不同就是标签的位置. + * 预定义的图表配色界面. * @author kunsnat E-mail:kunsnat@gmail.com * @version 创建时间:2013-8-21 下午03:16:27 */ -public class ChartPreFillStylePane extends ChartFillStylePane { - - public ChartPreFillStylePane() { - - } - - protected void initLayout() {// 仅仅是服务器预定 风格界面布局, 和属性表 有所不同. - customPane.setPreferredSize(new Dimension(200, 200)); - colorGradient.setPreferredSize(new Dimension(120, 30)); - - double p = TableLayout.PREFERRED; - double[] columnSize = {p, p }; - double[] rowSize = { p, p, p}; +public class ChartPreFillStylePane extends BasicBeanPane { + + private JPanel changeColorSetPane; + private CardLayout cardLayout; + + private UIButton accButton; + private UIButton gradientButton; + + private ChartAccColorPane colorAcc; + private FixedGradientBar colorGradient; + + private ChartColorMatching chartColorMatching; + + public ChartPreFillStylePane() { + + initComponents(); + + initListener(); + } + + private void initComponents() { + + JPanel customPane = new JPanel(FRGUIPaneFactory.createBorderLayout()); + + JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.LEFT)); + buttonPane.add(accButton = new UIButton(Inter.getLocText("FR-Designer_Chart_Acc_Set"))); + buttonPane.add(gradientButton = new UIButton(Inter.getLocText("FR-Designer_Gradient-Color"))); + customPane.add(buttonPane, BorderLayout.NORTH); + + changeColorSetPane = new JPanel(cardLayout = new CardLayout()); + changeColorSetPane.add(colorGradient = new FixedGradientBar(4, 130), "gradient"); + changeColorSetPane.add(colorAcc = new ChartAccColorPane(), "acc"); + cardLayout.show(changeColorSetPane, "acc"); + customPane.add(changeColorSetPane, BorderLayout.CENTER); + + accButton.setSelected(true); + + customPane.setPreferredSize(new Dimension(200, 200)); + colorGradient.setPreferredSize(new Dimension(120, 30)); + + double p = TableLayout.PREFERRED; + double[] columnSize = {p, p}; + double[] rowSize = {p, p, p}; Component[][] components = new Component[][]{ new Component[]{new UILabel(" " + Inter.getLocText("ColorMatch")), null}, new Component[]{null, customPane}, }; - - this.add(TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize), BorderLayout.WEST); - } - public void populateBean(AttrFillStyle condition) { - styleSelectBox.setSelectedIndex(styleSelectBox.getItemCount()-1); + this.setLayout(new BorderLayout()); + this.add(TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize), BorderLayout.WEST); + } - if(condition == null || condition.getColorStyle() == ChartConstants.COLOR_DEFAULT) { - colorAcc.populateBean(ChartConstants.CHART_COLOR_ARRAY);// 新建时 保持默认样式 - accButton.setSelected(true); - gradientButton.setSelected(false); - cardLayout.show(changeColorSetPane, "acc"); + private void initListener() { - colorGradient.getSelectColorPointBtnP1().setColorInner(Color.WHITE); - colorGradient.getSelectColorPointBtnP2().setColorInner(Color.black);// 控件中的位置无效. - } else { - int colorStyle = condition.getColorStyle(); - gradientButton.setSelected(colorStyle == ChartConstants.COLOR_GRADIENT); - accButton.setSelected(colorStyle == ChartConstants.COLOR_ACC); + accButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + accButton.setSelected(true); + gradientButton.setSelected(false); + cardLayout.show(changeColorSetPane, "acc"); + } + }); - int colorSize = condition.getColorSize(); - if(colorSize == 2 && gradientButton.isSelected() ) { + gradientButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + gradientButton.setSelected(true); + accButton.setSelected(false); cardLayout.show(changeColorSetPane, "gradient"); + } + }); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("ServerM-Predefined_Styles"); + } + + public void populateBean(ChartColorMatching condition) { + chartColorMatching = condition; + + colorGradient.getSelectColorPointBtnP1().setColorInner(Color.WHITE); + colorGradient.getSelectColorPointBtnP2().setColorInner(Color.black); + colorAcc.populateBean(ChartConstants.CHART_COLOR_ARRAY); + + if (condition == null) { + return; + } - Color endColor = condition.getColorIndex(1); - Color startColor = condition.getColorIndex(0); - colorGradient.getSelectColorPointBtnP1().setColorInner(startColor); - colorGradient.getSelectColorPointBtnP2().setColorInner(endColor); + boolean isGradient = condition.getGradient(); + List colorList = condition.getColorList(); + if (isGradient) { + gradientButton.setSelected(true); + accButton.setSelected(false); + cardLayout.show(changeColorSetPane, "gradient"); + + if (colorList.size() == 2) { + colorGradient.getSelectColorPointBtnP1().setColorInner(colorList.get(0)); + colorGradient.getSelectColorPointBtnP2().setColorInner(colorList.get(1)); colorGradient.repaint(); - } else if(colorSize > 2 && accButton.isSelected()){ - cardLayout.show(changeColorSetPane, "acc"); + } + } else { + accButton.setSelected(true); + gradientButton.setSelected(false); + cardLayout.show(changeColorSetPane, "acc"); - Color[] colors = new Color[colorSize]; - for(int i = 0; i < colorSize; i++) { - colors[i] = condition.getColorIndex(i); - } - colorAcc.populateBean(colors); + if (colorList.size() > 0) { + colorAcc.populateBean(colorList.toArray(new Color[colorList.size()])); } } } @Override - public AttrFillStyle updateBean() { - AttrFillStyle condition = new AttrFillStyle(); - condition.clearColors(); + public ChartColorMatching updateBean() { + chartColorMatching = chartColorMatching == null ? new ChartColorMatching() : chartColorMatching; + + List colorList = new ArrayList(); if(gradientButton.isSelected()) { - condition.setColorStyle(ChartConstants.COLOR_GRADIENT); + chartColorMatching.setGradient(true); + Color start = colorGradient.getSelectColorPointBtnP1().getColorInner(); Color end = colorGradient.getSelectColorPointBtnP2().getColorInner(); - condition.addFillColor(start); - condition.addFillColor(end); + colorList.add(start); + colorList.add(end); } else { - condition.setColorStyle(ChartConstants.COLOR_ACC); + chartColorMatching.setGradient(false); Color[] colors = colorAcc.updateBean(); - for(int i = 0, length = colors.length; i < length; i++) { - condition.addFillColor(colors[i]); - } + colorList = Arrays.asList(colors); } - return condition; + chartColorMatching.setColorList(colorList); + + return chartColorMatching; } } \ No newline at end of file diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index 590190762..57a9dd143 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -1,12 +1,13 @@ package com.fr.design.mainframe.chart.gui.type; +import com.fr.base.ChartColorMatching; import com.fr.base.ChartPreStyleConfig; import com.fr.base.FRContext; import com.fr.base.background.ColorBackground; import com.fr.chart.base.AttrContents; import com.fr.chart.base.AttrFillStyle; import com.fr.chart.base.ChartConstants; -import com.fr.chart.base.ChartPreStyle; +import com.fr.chart.base.ChartUtils; import com.fr.chart.base.DataSeriesCondition; import com.fr.chart.base.TextAttr; import com.fr.chart.chartattr.Axis; @@ -243,7 +244,7 @@ public abstract class AbstractChartTypePane extends FurtherBasicBeanPane{ if(preStyle == null){ plot.getPlotFillStyle().setColorStyle(ChartConstants.COLOR_DEFAULT); }else{ - AttrFillStyle fillStyle = ((ChartPreStyle)preStyle).getAttrFillStyle(); + AttrFillStyle fillStyle = ChartUtils.chartColorMatching2AttrFillStyle((ChartColorMatching) preStyle); fillStyle.setFillStyleName(name); plot.setPlotFillStyle(fillStyle); } diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleAction.java b/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleAction.java index 70571338f..f964c4534 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleAction.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleAction.java @@ -39,14 +39,10 @@ public class ChartPreStyleAction extends UpdateAction { @Override public void doOk() { pane.updateBean(); -// ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance(); -// manager.setStyleEditing(null); } @Override public void doCancel() { -// ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance(); -// manager.setStyleEditing(null); } }); diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleManagerPane.java b/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleManagerPane.java index c25782c4e..573420983 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleManagerPane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartPreStyleManagerPane.java @@ -1,8 +1,8 @@ package com.fr.design.module; +import com.fr.base.ChartColorMatching; import com.fr.base.ChartPreStyleConfig; import com.fr.base.Utils; -import com.fr.chart.base.ChartPreStyle; import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; @@ -10,11 +10,11 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.general.Inter; import com.fr.general.NameObject; -import com.fr.stable.ListMap; import com.fr.stable.Nameable; import java.util.ArrayList; import java.util.Iterator; +import java.util.LinkedHashMap; /** @@ -32,10 +32,18 @@ public class ChartPreStyleManagerPane extends JListControlPane { public NameableCreator[] createNameableCreators() { return new NameableCreator[]{ new NameObjectCreator(Inter.getLocText("FR-Designer_PreStyle"), - ChartPreStyle.class, ChartPreStylePane.class) + ChartColorMatching.class, ChartPreStylePane.class) }; } + @Override + public void addNameable(Nameable nameable, int index) { + super.addNameable(nameable, index); + if (!ChartPreStyleConfig.getInstance().containsName(nameable.getName())) { + ChartPreStyleConfig.getInstance().putPreStyle(nameable.getName(), ((NameObject) nameable).getObject()); + } + } + @Override protected String title4PopupWindow() { return Inter.getLocText("FR-Designer_Chart-PreStyle"); @@ -49,8 +57,8 @@ public class ChartPreStyleManagerPane extends JListControlPane { Iterator keys = config.names(); while(keys.hasNext()) { Object key = keys.next(); - ChartPreStyle value = (ChartPreStyle)config.getPreStyle(key); - + ChartColorMatching value = (ChartColorMatching) config.getPreStyle(key); + list.add(new NameObject(Utils.objectToString(key), value)); } @@ -65,15 +73,20 @@ public class ChartPreStyleManagerPane extends JListControlPane { public void updateBean() { ChartPreStyleConfig config = ChartPreStyleConfig.getInstance(); - config.setPreStyleMap(new ListMap()); + config.setCurrentStyle(getSelectedName()); Nameable[] values = this.update(); + config.setPreStyleMap(new LinkedHashMap()); - config.setCurrentStyle(getSelectedName()); - for(int i = 0; i < values.length; i++) { Nameable value = values[i]; - config.putPreStyle(value.getName(), ((NameObject)value).getObject()); + ChartColorMatching chartColorMatching = (ChartColorMatching) ((NameObject) value).getObject(); + try { + chartColorMatching = (ChartColorMatching) chartColorMatching.clone(); + } catch (CloneNotSupportedException e) { + //do nothing + } + config.putPreStyle(value.getName(), chartColorMatching); } // 通知报表整个刷新. diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartPreStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartPreStylePane.java index d0f4d3136..e7f9111d5 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartPreStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartPreStylePane.java @@ -1,9 +1,11 @@ package com.fr.design.module; -import com.fr.chart.base.ChartPreStyle; +import com.fr.base.ChartColorMatching; +import com.fr.chart.base.ChartUtils; import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.gui.ChartComponent; import com.fr.design.event.UIObserver; @@ -25,8 +27,8 @@ import java.awt.FlowLayout; * @author kunsnat E-mail:kunsnat@gmail.com * @version 创建时间:2013-8-20 下午05:02:00 */ -public class ChartPreStylePane extends BasicBeanPane{ - +public class ChartPreStylePane extends BasicBeanPane { + private ChartPreFillStylePane fillStylePane; private ChartComponent chartComponent; @@ -78,28 +80,26 @@ public class ChartPreStylePane extends BasicBeanPane{ } } } - - private void refreshWhenStyleChange(ChartPreStyle preStyle) { -// ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance(); -// manager.setStyleEditing(preStyle); + + private void refreshWhenStyleChange(ChartColorMatching preStyle) { if(chartComponent != null) { + Plot plot = (Plot) chartComponent.getEditingChart().getBasePlot(); + plot.setPlotFillStyle(ChartUtils.chartColorMatching2AttrFillStyle(preStyle)); chartComponent.reset(); } } @Override - public void populateBean(ChartPreStyle preStyle) { + public void populateBean(ChartColorMatching preStyle) { + + fillStylePane.populateBean(preStyle); - fillStylePane.populateBean(preStyle.getAttrFillStyle()); - refreshWhenStyleChange(preStyle); } @Override - public ChartPreStyle updateBean() { - ChartPreStyle preStyle = new ChartPreStyle(); - preStyle.setAttrFillStyle(fillStylePane.updateBean()); - return preStyle; + public ChartColorMatching updateBean() { + return fillStylePane.updateBean(); } @Override