From a70193f6fa45c4afce86299ffeeacaeff24a5cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 10 Aug 2020 16:05:02 +0800 Subject: [PATCH] CHART-15034 && CHART-14688 && CHART-15019 bugfix --- .../java/com/fr/design/chart/ChartIcon.java | 6 +- .../chart/gui/data/ChartDataFilterPane.java | 8 +- .../range/component/LegendGradientBar.java | 159 ++++++++---------- .../design/cell/editor/ChartCellEditor.java | 16 +- .../design/cell/editor/ChartFloatEditor.java | 17 +- 5 files changed, 78 insertions(+), 128 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java b/designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java index 4d4a6ed43..16e13db70 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java +++ b/designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java @@ -3,8 +3,8 @@ package com.fr.design.chart; import com.fr.base.chart.BaseChartPainter; import com.fr.base.chart.chartdata.CallbackEvent; import com.fr.base.chart.result.WebChartIDInfo; -import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chartx.attr.ChartProvider; import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.file.HistoryTemplateListCache; import com.fr.script.Calculator; @@ -57,8 +57,8 @@ public class ChartIcon implements Icon, XMLable { } private void initChartName() { - Chart chart = chartCollection.getSelectedChart(Chart.class); - String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getPlot().getPlotID()); + ChartProvider chart = chartCollection.getSelectedChartProvider(ChartProvider.class); + String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getID()); chartName = subName[0]; } diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java index fcd101fb1..c24a19244 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ChartDataFilterPane.java @@ -7,9 +7,9 @@ import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.TopDefinition; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.i18n.Toolkit; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.style.AbstractChartTabPane; @@ -21,12 +21,12 @@ import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import java.util.ArrayList; +import java.util.List; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; -import java.util.ArrayList; -import java.util.List; /** * 图表数据 分类 系列 过滤界面. @@ -37,7 +37,7 @@ import java.util.List; public class ChartDataFilterPane extends ThirdTabPane { private static final long serialVersionUID = 3650522989381790194L; private static final int PAN_WIDTH = 246; - private static final int FIL_HEIGHT = 150; + private static final int FIL_HEIGHT = 200; private CategoryFilterPane categoryPane; private SeriesFilterPane seriesPane; diff --git a/designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java b/designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java index 6b09d4e1b..8401f86a9 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java +++ b/designer-chart/src/main/java/com/fr/van/chart/range/component/LegendGradientBar.java @@ -7,7 +7,6 @@ import com.fr.design.event.UIObserverListener; import com.fr.design.mainframe.DesignerContext; import com.fr.design.style.background.gradient.SelectColorPointBtn; import com.fr.design.style.color.ColorCell; -import com.fr.design.style.color.ColorSelectConfigManager; import com.fr.design.style.color.ColorSelectDetailPane; import com.fr.design.style.color.ColorSelectDialog; import com.fr.design.style.color.ColorSelectable; @@ -18,6 +17,9 @@ import com.fr.stable.AssistUtils; import javax.swing.JComponent; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; @@ -27,9 +29,6 @@ import java.awt.LinearGradientPaint; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; public class LegendGradientBar extends JComponent implements ColorSelectable, UIObserver { @@ -75,11 +74,11 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI private List changeListenerList = new ArrayList(); - public LegendGradientBar(){ + public LegendGradientBar() { startPos = 4; endPos = max; - setSubColor(new Color(36,167,255)); + setSubColor(new Color(36, 167, 255)); setColorSelectionBtnNum(2 + 1); @@ -117,10 +116,10 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI private float[] initDist(int colorSelectionBtnNum) { float[] dist = new float[colorSelectionBtnNum]; dist[0] = 0f; - for (int i = 0; i < colorSelectionBtnNum-2; i++) { - dist[i+1] = (float) ((selectColorPointBtnList.get(i).getX() - 4) / (max - 4)); + for (int i = 0; i < colorSelectionBtnNum - 2; i++) { + dist[i + 1] = (float) ((selectColorPointBtnList.get(i).getX() - 4) / (max - 4)); } - dist[colorSelectionBtnNum-1] = 1f; + dist[colorSelectionBtnNum - 1] = 1f; return dist; } @@ -141,8 +140,8 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI private Color[] initColors(Color subColor, int colorSelectionBtnNum) { Color[] converseColors = getColorArray(subColor, colorSelectionBtnNum); Color[] colors = new Color[colorSelectionBtnNum]; - for (int i = 0; i < colorSelectionBtnNum; i++){ - colors[i] = converseColors[colorSelectionBtnNum-1 - i]; + for (int i = 0; i < colorSelectionBtnNum; i++) { + colors[i] = converseColors[colorSelectionBtnNum - 1 - i]; } return colors; } @@ -150,30 +149,32 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI private void initColorSelectBtn(Color[] colors, int colorSelectionBtnNum) { //获取按钮颜色数组 Color startSlotColor = colors[0]; - Color endSlotColor = colors[colorSelectionBtnNum-1]; + Color endSlotColor = colors[colorSelectionBtnNum - 1]; Color[] pColors = new Color[colorSelectionBtnNum - 2]; - for (int i = 0; i < pColors.length; i++){ + for (int i = 0; i < pColors.length; i++) { pColors[i] = colors[i + 1]; } - selectColorSlotBtnStart = new SelectColorPointBtn(startPos, REC_HEIGHT, startSlotColor, new Color(138,138,138)); - selectColorSlotBtnEnd = new SelectColorPointBtn(endPos, REC_HEIGHT, endSlotColor, new Color(138,138,138)); + selectColorSlotBtnStart = new SelectColorPointBtn(startPos, REC_HEIGHT, startSlotColor, new Color(138, 138, 138)); + selectColorSlotBtnEnd = new SelectColorPointBtn(endPos, REC_HEIGHT, endSlotColor, new Color(138, 138, 138)); //初始化list selectColorPointBtnList = new ArrayList(); //加入可滑动颜色选择器 - for (int i = 0; i < pColors.length; i++){ - SelectColorPointBtn pi = new SelectColorPointBtn(((startPos+endPos)/(pColors.length+1))*(i+1), REC_HEIGHT, pColors[i]); + for (int i = 0; i < pColors.length; i++) { + SelectColorPointBtn pi = new SelectColorPointBtn(((startPos + endPos) / (pColors.length + 1)) * (i + 1), REC_HEIGHT, pColors[i]); selectColorPointBtnList.add(pi); } + refreshColorsAndDist(selectColorPointBtnList); this.repaint(); } /** * 添加事件 + * * @param changeListener 事件 */ public void addChangeListener(ChangeListener changeListener) { @@ -216,7 +217,7 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI //如果该位置已经有滑块占领,则做跨越偏移 selectColorPointBtnList.get(index).setX(LegendGradientBar.this.setOffset(e.getX(), index, OFFSETSTEP)); } - + refreshColorsAndDist(selectColorPointBtnList); LegendGradientBar.this.repaint(); } }); @@ -224,25 +225,23 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI //防止位置重复,设置偏移 private int setOffset(int x, int index, int offset) { - for (int i = 0; i < selectColorPointBtnList.size(); i++){ + for (int i = 0; i < selectColorPointBtnList.size(); i++) { if (i != index && AssistUtils.equals(x, selectColorPointBtnList.get(i).getX())) { - if (x >= (min+max)/2) { + if (x >= (min + max) / 2) { x -= offset; - x = setOffset(x, index, offset+OFFSETSTEP); - } - else{ + x = setOffset(x, index, offset + OFFSETSTEP); + } else { x += offset; - x = setOffset(x, index, offset+OFFSETSTEP); + x = setOffset(x, index, offset + OFFSETSTEP); } } } //边界情况 - if (x <= min){ - x = min + (index+1)*OFFSETSTEP; - } - else if (x >= max){ - x = max - (index+1)*OFFSETSTEP; + if (x <= min) { + x = min + (index + 1) * OFFSETSTEP; + } else if (x >= max) { + x = max - (index + 1) * OFFSETSTEP; } return x; } @@ -259,50 +258,33 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI break; } } - if (select >= 0) { - ColorSelectDetailPane pane = new ColorSelectDetailPane(Color.WHITE); - ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, LegendGradientBar.this); - Color color = LegendGradientBar.this.getColor(); - if (color != null) { - DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color); - selectColorPointBtnList.get(select).setColorInner(color); - - LegendGradientBar.this.repaint(); - } - } - - //是否选中颜色编辑槽 - else if (selectColorSlotBtnStart.contains(e.getX(), e.getY())) { - ColorSelectDetailPane pane = new ColorSelectDetailPane(Color.WHITE); - ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, LegendGradientBar.this); - Color color = LegendGradientBar.this.getColor(); - if (color != null) { - DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color); - selectColorSlotBtnStart.setColorInner(color); - //stateChanged(); - LegendGradientBar.this.repaint(); - } + dealClick(selectColorPointBtnList.get(select)); + } else if (selectColorSlotBtnStart.contains(e.getX(), e.getY())) { + dealClick(selectColorSlotBtnStart); } else if (selectColorSlotBtnEnd.contains(e.getX(), e.getY())) { - ColorSelectDetailPane pane = new ColorSelectDetailPane(Color.WHITE); - ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, LegendGradientBar.this); - Color color = LegendGradientBar.this.getColor(); - if (color != null) { - DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color); - selectColorSlotBtnEnd.setColorInner(color); - //stateChanged(); - LegendGradientBar.this.repaint(); - } + dealClick(selectColorSlotBtnEnd); } - - LegendGradientBar.this.repaint(); } } }); } - private void addMouseReleasedListener(){ + private void dealClick(SelectColorPointBtn selectColorPointBtn) { + ColorSelectDetailPane pane = new ColorSelectDetailPane(Color.WHITE); + this.setColor(selectColorPointBtn.getColorInner()); + ColorSelectDialog.showDialog(DesignerContext.getDesignerFrame(), pane, Color.WHITE, LegendGradientBar.this); + Color color = this.getColor(); + if (color != null) { + DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color); + selectColorPointBtn.setColorInner(color); + refreshColorsAndDist(selectColorPointBtnList); + LegendGradientBar.this.repaint(); + } + } + + private void addMouseReleasedListener() { this.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { @@ -318,14 +300,11 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI Point2D start = new Point2D.Float(4, 0); Point2D end = new Point2D.Float(max, 0); - //获取排序后的颜色数组和位置数组 - refreshColorsAndDist(selectColorPointBtnList); - LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, colors); g2.setPaint(paint); g2.fillRect(4, 0, max - 4, 30); - g2.setColor(new Color(138,138,138)); + g2.setColor(new Color(138, 138, 138)); g2.drawRect(4, 0, max - 4, 30); //开始和结束位置颜色选择槽位 @@ -343,22 +322,22 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI Collections.sort(select); colors[0] = selectColorSlotBtnStart.getColorInner(); - for (int i = 0; i < colorSelectionBtnNum-2; i++) { - colors[i+1] = select.get(i).getColorInner(); + for (int i = 0; i < colorSelectionBtnNum - 2; i++) { + colors[i + 1] = select.get(i).getColorInner(); } - colors[colorSelectionBtnNum-1] = selectColorSlotBtnEnd.getColorInner(); + colors[colorSelectionBtnNum - 1] = selectColorSlotBtnEnd.getColorInner(); dist = new float[colorSelectionBtnNum]; dist[0] = 0f; - for (int i = 0; i < colorSelectionBtnNum-2; i++) { - dist[i+1] = (float) ((select.get(i).getX() - 4) / (max - 4)); + for (int i = 0; i < colorSelectionBtnNum - 2; i++) { + dist[i + 1] = (float) ((select.get(i).getX() - 4) / (max - 4)); } - dist[colorSelectionBtnNum-1] = 1f; + dist[colorSelectionBtnNum - 1] = 1f; fireColorAndDistChangeListener(); } - public void refreshSubColor(Color subColor){ + public void refreshSubColor(Color subColor) { //设置主题色 setSubColor(subColor); @@ -370,9 +349,9 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI } - public void refreshColorSelectionBtnNum(int num){ + public void refreshColorSelectionBtnNum(int num) { //设置主题色 - colorSelectionBtnNum = num+1; + colorSelectionBtnNum = num + 1; //计算colors数组 colors = initColors(subColor, colorSelectionBtnNum); @@ -418,14 +397,14 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI } - public void populate(GradualIntervalConfig intervalConfig){ - if(intervalConfig == null) { + public void populate(GradualIntervalConfig intervalConfig) { + if (intervalConfig == null) { return; } setSubColor(intervalConfig.getSubColor()); - setColorSelectionBtnNum((int)(intervalConfig.getDivStage() + 1)); + setColorSelectionBtnNum((int) (intervalConfig.getDivStage() + 1)); populateColorAndDist(intervalConfig.getGradualColorDistList()); @@ -436,15 +415,15 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI int num = gradualColorDistList.size(); this.colors = new Color[num]; this.dist = new float[num]; - for (int i = 0; i < num; i++){ + for (int i = 0; i < num; i++) { this.colors[i] = gradualColorDistList.get(i).getColor(); this.dist[i] = gradualColorDistList.get(i).getPosition(); } } - public void update(GradualIntervalConfig intervalConfig){ + public void update(GradualIntervalConfig intervalConfig) { ArrayList colorDistList = new ArrayList(); - for (int i = 0; i < getColorSelectionBtnNum(); i++){ + for (int i = 0; i < getColorSelectionBtnNum(); i++) { colorDistList.add(new GradualColorDist(this.dist[i], this.colors[i])); } intervalConfig.setGradualColorDistList(colorDistList); @@ -453,26 +432,26 @@ public class LegendGradientBar extends JComponent implements ColorSelectable, UI private void refreshColorSelectBtn(Color[] colors, float[] dist) { //获取按钮颜色数组 Color startSlotColor = colors[0]; - Color endSlotColor = colors[colors.length-1]; + Color endSlotColor = colors[colors.length - 1]; Color[] pColors = new Color[colors.length - 2]; - for (int i = 0; i < pColors.length; i++){ + for (int i = 0; i < pColors.length; i++) { pColors[i] = colors[i + 1]; } float[] position = new float[dist.length - 2]; - for (int i = 0; i < position.length; i++){ - position[i] = dist[i+1]*(max-4) + 4; + for (int i = 0; i < position.length; i++) { + position[i] = dist[i + 1] * (max - 4) + 4; } - selectColorSlotBtnStart = new SelectColorPointBtn(startPos, REC_HEIGHT, startSlotColor, new Color(138,138,138)); - selectColorSlotBtnEnd = new SelectColorPointBtn(endPos, REC_HEIGHT, endSlotColor, new Color(138,138,138)); + selectColorSlotBtnStart = new SelectColorPointBtn(startPos, REC_HEIGHT, startSlotColor, new Color(138, 138, 138)); + selectColorSlotBtnEnd = new SelectColorPointBtn(endPos, REC_HEIGHT, endSlotColor, new Color(138, 138, 138)); //刷新可移动按钮的位置 selectColorPointBtnList = new ArrayList(); //加入可滑动颜色选择器 - for (int i = 0; i < pColors.length; i++){ + for (int i = 0; i < pColors.length; i++) { SelectColorPointBtn pi = new SelectColorPointBtn(position[i], REC_HEIGHT, pColors[i]); selectColorPointBtnList.add(pi); } diff --git a/designer-realize/src/main/java/com/fr/design/cell/editor/ChartCellEditor.java b/designer-realize/src/main/java/com/fr/design/cell/editor/ChartCellEditor.java index 67ccc4876..f9600d72b 100644 --- a/designer-realize/src/main/java/com/fr/design/cell/editor/ChartCellEditor.java +++ b/designer-realize/src/main/java/com/fr/design/cell/editor/ChartCellEditor.java @@ -10,7 +10,6 @@ import com.fr.grid.Grid; import com.fr.report.cell.TemplateCellElement; import com.fr.report.elementcase.TemplateElementCase; import com.fr.stable.bridge.StableFactory; -import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.SwingUtilities; import java.awt.Component; @@ -52,20 +51,7 @@ public class ChartCellEditor extends AbstractCellEditor implements DialogActionL public Component getCellEditorComponent(final Grid grid, TemplateCellElement cellElement, int resolution) { Object valueCell = cellElement.getValue(); if (valueCell instanceof BaseChartCollection) { - if (glyphComponent == null) { - glyphComponent = DesignModuleFactory.getChartComponent((BaseChartCollection)valueCell); - glyphComponent.addStopEditingListener(new PropertyChangeAdapter() { - @Override - public void propertyChange() { - stopCellEditing(); - grid.requestFocus();// kunsnat: 补充, 编辑图表reset之后, Grid也算停止编辑 重获焦点 bug20443SS - } - }); - } else { - glyphComponent.populate((BaseChartCollection) valueCell); - } - this.chartCellEditorDialog = null; - return glyphComponent; + return null; } this.chartCellEditorDialog = getMiddleChartDialog(SwingUtilities.getWindowAncestor(grid)); this.chartCellEditorDialog.addDialogActionListener(this); diff --git a/designer-realize/src/main/java/com/fr/design/cell/editor/ChartFloatEditor.java b/designer-realize/src/main/java/com/fr/design/cell/editor/ChartFloatEditor.java index 5087ad4ae..d9d17f4c0 100644 --- a/designer-realize/src/main/java/com/fr/design/cell/editor/ChartFloatEditor.java +++ b/designer-realize/src/main/java/com/fr/design/cell/editor/ChartFloatEditor.java @@ -9,7 +9,6 @@ import com.fr.grid.Grid; import com.fr.report.cell.FloatElement; import com.fr.stable.StringUtils; import com.fr.stable.bridge.StableFactory; -import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.SwingUtilities; import java.awt.Component; @@ -49,21 +48,7 @@ public class ChartFloatEditor extends AbstractFloatEditor implements DialogActio public Component getFloatEditorComponent(final Grid grid, FloatElement floatElement, int resolution) { Object valueCell = floatElement.getValue(); if (valueCell instanceof BaseChartCollection) { - this.chartFloatEditorDialog = null; - if (glyphComponent == null) { - glyphComponent = DesignModuleFactory.getChartComponent((BaseChartCollection)valueCell); - glyphComponent.addStopEditingListener(new PropertyChangeAdapter() { - @Override - public void propertyChange() { - stopFloatEditing(); - grid.requestFocus();// kunsnat: 补充, 编辑图表reset之后, Grid也算停止编辑 重获焦点 bug20443 - } - }); - - } else { - glyphComponent.populate((BaseChartCollection) valueCell); - } - return glyphComponent; + return null; } this.chartFloatEditorDialog = getMiddleChartDialog(SwingUtilities.getWindowAncestor(grid)); this.chartFloatEditorDialog.addDialogActionListener(this);