Browse Source

Merge branch 'release/10.0' of https://code.fineres.com/scm/~hades/design into release/10.0

feature/big-screen
hades 4 years ago
parent
commit
07b1cfadad
  1. 6
      designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java
  2. 28
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java
  3. 2
      designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java
  4. 73
      designer-base/src/main/java/com/fr/design/formula/FormulaTextField.java
  5. 23
      designer-base/src/main/java/com/fr/design/formula/SortFormulaPane.java
  6. 45
      designer-base/src/main/java/com/fr/design/gui/itextfield/DictionaryTextField.java
  7. 16
      designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java
  8. 31
      designer-base/src/main/java/com/fr/design/layout/VerticalFlowLayout.java
  9. 66
      designer-chart/src/main/java/com/fr/design/chart/AutoChartIcon.java
  10. 89
      designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java
  11. 22
      designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java
  12. 1
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java
  13. 18
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java
  14. 83
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxBorderPane.java
  15. 19
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxConditionPane.java
  16. 6
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxPlotPane.java
  17. 30
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxSeriesPane.java
  18. 2
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java
  19. 49
      designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxBorderConditionPane.java
  20. 51
      designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxNormalMarkerConditionPane.java
  21. 51
      designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxOutlierMarkerConditionPane.java
  22. 6
      designer-chart/src/main/java/com/fr/van/chart/bubble/VanChartBubbleSeriesPane.java
  23. 74
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHeatValueColorPane.java
  24. 8
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartMarkerPane.java
  25. 153
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartValueColorPane.java
  26. 53
      designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java
  27. 131
      designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartRangeLegendPane.java
  28. 173
      designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartColorValueSeriesPane.java
  29. 22
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java
  30. 15
      designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java
  31. 21
      designer-chart/src/main/java/com/fr/van/chart/range/component/GradualLegendPane.java
  32. 12
      designer-chart/src/main/java/com/fr/van/chart/range/component/LegendLabelFormatPane.java
  33. 11
      designer-chart/src/main/java/com/fr/van/chart/range/component/SectionIntervalConfigPaneWithOutNum.java
  34. 45
      designer-chart/src/main/java/com/fr/van/chart/range/component/SectionLegendPane.java
  35. 4
      designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterSeriesPane.java
  36. 10
      designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java
  37. 39
      designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java
  38. 87
      designer-realize/src/main/java/com/fr/design/dscolumn/DSColumnAdvancedPane.java
  39. 4
      designer-realize/src/main/java/com/fr/design/parameter/ParameterDefinitePane.java
  40. 72
      designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

6
designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java

@ -256,7 +256,7 @@ public class PreferencePane extends BasicPane {
}
private void createVcsSettingPane(JPanel generalPane) {
JPanel vcsPane = FRGUIPaneFactory.createVerticalTitledBorderPane(i18nText("Fine-Design_Vcs_Title"));
JPanel vcsPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane(i18nText("Fine-Design_Vcs_Title"));
generalPane.add(vcsPane);
remindVcsLabel = new UILabel(i18nText("Fine-Design_Vcs_Remind"));
remindVcsLabel.setVisible(!VcsHelper.getInstance().needInit());
@ -449,10 +449,6 @@ public class PreferencePane extends BasicPane {
JPanel colorSettingPane = FRGUIPaneFactory.createTitledBorderPane(i18nText("Fine-Design_Basic_Preference_Setting_Colors"));
generalPane.add(colorSettingPane);
new UILabel(i18nText("Fine-Design_Basic_Preference_Grid_Line_Color"));
new UILabel(i18nText("Fine-Design_Basic_Preference_Pagination_Line_Color"));
gridLineColorTBButton = new UIColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png"));
gridLineColorTBButton.setEnabled(this.isEnabled());

28
designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java

@ -71,28 +71,42 @@ public class TableDataCreatorProducer {
}
public TableDataNameObjectCreator[] createServerTableDataCreator() {
TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), "/com/fr/design/images/data/dock/serverdatabase.png", DBTableData.class,
TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"),
"ds",
"/com/fr/design/images/data/dock/serverdatabase.png", DBTableData.class,
DBTableDataPane.class);
TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"), "/com/fr/design/images/data/dock/serverclasstabledata.png", ClassTableData.class,
TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"),
"Class",
"/com/fr/design/images/data/dock/serverclasstabledata.png", ClassTableData.class,
ClassTableDataPane.class);
TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), "/com/fr/design/images/data/dock/serverdatatable.png", EmbeddedTableData.class,
TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"),
"Embedded",
"/com/fr/design/images/data/dock/serverdatatable.png", EmbeddedTableData.class,
EmbeddedTableDataPane.class);
TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), "/com/fr/design/images/data/file.png", FileTableData.class,
TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"),
"File",
"/com/fr/design/images/data/file.png", FileTableData.class,
FileTableDataSmallPane.class);
TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), "/com/fr/design/images/data/tree.png",
TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"),
"Tree",
"/com/fr/design/images/data/tree.png",
RecursionTableData.class, GlobalTreeTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() {
return true;
}
};
TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), "/com/fr/design/images/data/multi.png",
TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"),
"Multi",
"/com/fr/design/images/data/multi.png",
ConditionTableData.class, GlobalMultiTDTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() {
return true;
}
};
TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"), "/com/fr/design/images/data/store_procedure.png",
TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"),
"Proc",
"/com/fr/design/images/data/store_procedure.png",
StoreProcedure.class, ProcedureDataPane.class) {
@Override
public boolean shouldInsertSeparator() {

2
designer-base/src/main/java/com/fr/design/env/RemoteWorkspace.java vendored

@ -1,6 +1,6 @@
package com.fr.design.env;
import com.fr.cluster.engine.remote.ClusterOperator;
import com.fr.cluster.engine.rpc.remote.ClusterOperator;
import com.fr.design.i18n.Toolkit;
import com.fr.base.operator.common.CommonOperator;
import com.fr.rpc.ExceptionHandler;

73
designer-base/src/main/java/com/fr/design/formula/FormulaTextField.java

@ -0,0 +1,73 @@
package com.fr.design.formula;
import com.fr.base.BaseFormula;
import com.fr.design.gui.itextfield.DictionaryTextField;
import com.fr.stable.StringUtils;
import javax.swing.text.Document;
/**
* 公式展示时使用
* 展示 String.
* 但实际保存的是 BaseFormula
* 从而保留公式的形态
*
* created by Harrison on 2020/08/03
**/
public class FormulaTextField extends DictionaryTextField<BaseFormula> {
private static final BaseFormula EMPTY_FORMULA = BaseFormula.createFormulaBuilder().build("=");
public FormulaTextField() {
}
public FormulaTextField(int columns) {
super(columns);
}
public FormulaTextField(String text, int columns, BaseFormula value) {
super(text, columns, value);
}
public FormulaTextField(String text, BaseFormula value) {
super(text, value);
}
public FormulaTextField(Document doc, String text, int columns, BaseFormula value) {
super(doc, text, columns, value);
}
@Override
public BaseFormula getValue() {
if (this.value == null) {
this.value = createDefault();
}
return this.value;
}
/**
* 设置值时会将展示的公式值一同设置进去
*
* @param value 公式值
*/
@Override
public void setValue(BaseFormula value) {
this.value = value;
if (this.value == null) {
this.value = createDefault();
}
setText(this.value.getPureContent());
}
private BaseFormula createDefault() {
String text = getText();
if (StringUtils.isNotEmpty(text)) {
return BaseFormula.createFormulaBuilder().build(text);
} else {
return EMPTY_FORMULA;
}
}
}

23
designer-base/src/main/java/com/fr/design/formula/SortFormulaPane.java

@ -7,12 +7,13 @@ import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.SortOrderComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*;
import java.awt.*;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -20,7 +21,7 @@ public abstract class SortFormulaPane extends JPanel {
protected static final String InsetText = " ";
protected SortOrderComboBox sortOrderComboBox;
protected UITextField sortFormulaTextField;
protected FormulaTextField sortFormulaTextField;
// 屏蔽掉“自定义比较规则”和“选择”按钮,只显示公式输入文本和公式按钮
protected UIButton sortFormulaTextFieldButton;
@ -35,7 +36,7 @@ public abstract class SortFormulaPane extends JPanel {
}
});
sortFormulaTextField = new UITextField(16);
sortFormulaTextField = new FormulaTextField(16);
//Lance:添加一公式编辑器按钮
sortFormulaTextFieldButton = new UIButton("...");
sortFormulaTextFieldButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Formula") + "...");
@ -55,17 +56,15 @@ public abstract class SortFormulaPane extends JPanel {
public abstract void formulaAction();
public void showFormulaDialog(String[] displayNames) {
String text = sortFormulaTextField.getText();
BaseFormula value = sortFormulaTextField.getValue();
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
formulaPane.populate(BaseFormula.createFormulaBuilder().build(text), new CustomVariableResolver(displayNames, true));
formulaPane.populate(value, new CustomVariableResolver(displayNames, true));
formulaPane.showLargeWindow(SwingUtilities.getWindowAncestor(SortFormulaPane.this),
new DialogActionAdapter() {
public void doOk() {
BaseFormula fm = formulaPane.update();
if (fm.getContent().length() <= 1) {
sortFormulaTextField.setText("");
} else {
sortFormulaTextField.setText(fm.getContent().substring(1));
if (fm != null) {
sortFormulaTextField.setValue(fm);
}
}
}).setVisible(true);

45
designer-base/src/main/java/com/fr/design/gui/itextfield/DictionaryTextField.java

@ -0,0 +1,45 @@
package com.fr.design.gui.itextfield;
import javax.swing.text.Document;
/**
* 文字 ui.
* 保存实际值展示值
* 允许实际值和展示值不同
*
* created by Harrison on 2020/08/03
**/
public class DictionaryTextField<T> extends UITextField {
protected T value;
public DictionaryTextField() {
}
public DictionaryTextField(int columns) {
super(columns);
}
public DictionaryTextField(String text, int columns, T value) {
super(text, columns);
this.value = value;
}
public DictionaryTextField(String text, T value) {
super(text);
this.value = value;
}
public DictionaryTextField(Document doc, String text, int columns, T value) {
super(doc, text, columns);
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}

16
designer-base/src/main/java/com/fr/design/layout/FRGUIPaneFactory.java

@ -168,6 +168,22 @@ public class FRGUIPaneFactory {
return jp;
}
/**
* 创建一个带标题边框面板垂直居左布局组件顶对齐
*
* @param string 边框标题
* @return JPanel对象
*/
public static JPanel createTopVerticalTitledBorderPane(String string) {
JPanel jp = new JPanel();
UITitledBorder explainBorder = UITitledBorder.createBorderWithTitle(string);
jp.setBorder(explainBorder);
VerticalFlowLayout layout = new VerticalFlowLayout(VerticalFlowLayout.TOP);
layout.setAlignLeft(true);
jp.setLayout(layout);
return jp;
}
/**
* 创建一个带标题边框面板并且居中显示
*

31
designer-base/src/main/java/com/fr/design/layout/VerticalFlowLayout.java

@ -16,20 +16,17 @@ import java.awt.LayoutManager;
public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
/**
* This value indicates that each row of components
* should be left-justified.
* 竖直方向上将子组件设置为顶对齐方式
*/
public static final int TOP = 0;
/**
* This value indicates that each row of components
* should be centered.
* 竖直方向上将子组件设置为居中对齐方式
*/
public static final int CENTER = 1;
/**
* This value indicates that each row of components
* should be right-justified.
* 竖直方向上将子组件设置为底对齐方式
*/
public static final int BOTTOM = 2;
@ -71,7 +68,9 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
*/
int newAlign; // This is the one we actually use
// 当列宽不一致时,是否需要左对齐(默认居中对齐)
/**
* 当列宽不一致时是否需要将水平方向设置成左对齐默认水平方向为居中对齐
*/
boolean isAlignLeft = false;
/**
@ -220,6 +219,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
* @param name the name of the component
* @param comp the component to be added
*/
@Override
public void addLayoutComponent(String name, Component comp) {
}
@ -230,6 +230,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
* @param comp the component to remove
* @see java.awt.Container#removeAll
*/
@Override
public void removeLayoutComponent(Component comp) {
}
@ -244,6 +245,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
* @see #minimumLayoutSize
* @see java.awt.Container#getPreferredSize
*/
@Override
public Dimension preferredLayoutSize(Container target) {
synchronized (target.getTreeLock()) {
Dimension dim = new Dimension(0, 0);
@ -255,7 +257,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
if (m.isVisible()) {
Dimension d = m.getPreferredSize();
firstVisibleComponent = dialWithDim4PreferredLayoutSize(dim, d, firstVisibleComponent);
firstVisibleComponent = dealWithDim4PreferredLayoutSize(dim, d, firstVisibleComponent);
}
}
Insets insets = target.getInsets();
@ -265,7 +267,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
}
}
protected boolean dialWithDim4PreferredLayoutSize(Dimension dim, Dimension d, boolean firstVisibleComponent) {
protected boolean dealWithDim4PreferredLayoutSize(Dimension dim, Dimension d, boolean firstVisibleComponent) {
dim.width = Math.max(dim.width, d.width);
if (firstVisibleComponent) {
firstVisibleComponent = false;
@ -289,6 +291,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
* @see java.awt.Container
* @see java.awt.Container#doLayout
*/
@Override
public Dimension minimumLayoutSize(Container target) {
synchronized (target.getTreeLock()) {
Dimension dim = new Dimension(0, 0);
@ -300,7 +303,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
if (m.isVisible()) {
Dimension d = m.getMinimumSize();
firstVisibleComponent = dialWithDim4MinimumLayoutSize(dim, d, i, firstVisibleComponent);
firstVisibleComponent = dealWithDim4MinimumLayoutSize(dim, d, i, firstVisibleComponent);
}
}
Insets insets = target.getInsets();
@ -310,7 +313,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
}
}
protected boolean dialWithDim4MinimumLayoutSize(Dimension dim, Dimension d, int i, boolean firstVisibleComponent) {
protected boolean dealWithDim4MinimumLayoutSize(Dimension dim, Dimension d, int i, boolean firstVisibleComponent) {
dim.width = Math.max(dim.width, d.width);
if (i > 0) {
dim.height += vgap;
@ -370,6 +373,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
* @see java.awt.Container
* @see java.awt.Container#doLayout
*/
@Override
public void layoutContainer(Container target) {
synchronized (target.getTreeLock()) {
Insets insets = target.getInsets();
@ -410,7 +414,9 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
protected int[] dealWithDim4LayoutContainer(Container target, Insets insets, Dimension d, int x, int y, int roww, int start, int maxlen, int i, boolean ltr) {
if ((y == 0) || ((y + d.height) <= maxlen)) {
if (y > 0) y += vgap;
if (y > 0) {
y += vgap;
}
y += d.height;
roww = Math.max(roww, d.width);
} else {
@ -449,6 +455,7 @@ public class VerticalFlowLayout implements LayoutManager, java.io.Serializable {
*
* @return a string representation of this layout
*/
@Override
public String toString() {
String str = "";
switch (this.newAlign) {

66
designer-chart/src/main/java/com/fr/design/chart/AutoChartIcon.java

@ -1,85 +1,29 @@
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.design.ChartTypeInterfaceManager;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.script.Calculator;
import javax.swing.Icon;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-05-29
*/
public class AutoChartIcon implements Icon {
public class AutoChartIcon extends ChartIcon {
private static final int WIDTH = 500;
private static final int HEIGHT = 281;
private ChartCollection chartCollection;
private CallbackEvent callbackEvent;
private String chartName;
public AutoChartIcon(ChartCollection chartCollection) {
this.chartCollection = chartCollection;
initChartName();
}
public ChartCollection getChartCollection() {
return chartCollection;
super(chartCollection);
}
public String getChartName() {
return chartName;
}
private void initChartName() {
Chart chart = chartCollection.getSelectedChart(Chart.class);
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getPlot().getPlotID());
chartName = subName[0];
}
public void registerCallBackEvent(CallbackEvent callbackEvent) {
this.callbackEvent = callbackEvent;
}
/**
* 画出缩略图Icon
*
* @param g 图形的上下文
* @param c 所在的Component
* @param x 缩略图的起始坐标x
* @param y 缩略图的起始坐标y
*/
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
BaseChartPainter painter = chartCollection.createResultChartPainterWithOutDealFormula(Calculator.createCalculator(),
protected BaseChartPainter getChartPainter() {
BaseChartPainter painter = getChartCollection().createResultChartPainterWithOutDealFormula(Calculator.createCalculator(),
WebChartIDInfo.createAutoTypeInfo(), getIconWidth(), getIconHeight());
int resolution = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getJTemplateResolution();
Graphics2D g2d = (Graphics2D) g;
Paint oldPaint = g2d.getPaint();
g.translate(x, y);
g2d.setPaint(Color.white);
g2d.fillRect(0, 0, getIconWidth(), getIconHeight());
painter.paint(g2d, getIconWidth(), getIconHeight(), resolution, null, callbackEvent);
g.translate(-x, -y);
g2d.setPaint(oldPaint);
return painter;
}
/**

89
designer-chart/src/main/java/com/fr/design/chart/ChartIcon.java

@ -1,8 +1,13 @@
package com.fr.design.chart;
import com.fr.base.GraphHelper;
import com.fr.general.IOUtils;
import com.fr.stable.Constants;
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.design.ChartTypeInterfaceManager;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.script.Calculator;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLable;
import com.fr.stable.xml.XMLableReader;
@ -13,7 +18,6 @@ import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.image.BufferedImage;
/**
* 图表的缩略图Icon, 在选择图表类型界面 用到.
@ -21,21 +25,47 @@ import java.awt.image.BufferedImage;
public class ChartIcon implements Icon, XMLable {
private static final int WIDTH = 400;
private static final int HEIGHT = 225;
/**
* 缩略图中的图片路径
*/
private String imagePath;
private ChartCollection chartCollection;
private CallbackEvent callbackEvent;
private String chartName;
/**
* 构造Chart的缩略图Icon
*/
public ChartIcon(String imagePath, String chartName) {
this.imagePath = imagePath;
public ChartIcon(ChartCollection chartCollection) {
this.chartCollection = chartCollection;
initChartName();
}
public ChartCollection getChartCollection() {
return chartCollection;
}
public String getChartName() {
return chartName;
}
public void setChartCollection(ChartCollection chartCollection) {
this.chartCollection = chartCollection;
}
public void setChartName(String chartName) {
this.chartName = chartName;
}
private void initChartName() {
Chart chart = chartCollection.getSelectedChart(Chart.class);
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getPlot().getPlotID());
chartName = subName[0];
}
public void registerCallBackEvent(CallbackEvent callbackEvent) {
this.callbackEvent = callbackEvent;
}
/**
* 画出缩略图Icon
*
@ -47,21 +77,29 @@ public class ChartIcon implements Icon, XMLable {
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2d = (Graphics2D) g;
BaseChartPainter chartPainter = getChartPainter();
Paint oldPaint = g2d.getPaint();
int resolution = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getJTemplateResolution();
Graphics2D g2d = (Graphics2D) g;
Paint oldPaint = g2d.getPaint();
g.translate(x, y);
g2d.setPaint(Color.white);
g2d.fillRect(0, 0, getIconWidth(), getIconHeight());
BufferedImage demoImage = IOUtils.readImageWithCache(imagePath);
GraphHelper.paintImage(g, getIconWidth(), getIconHeight(), demoImage, Constants.IMAGE_ADJUST, Constants.NULL, Constants.NULL, -1, -1);
chartPainter.paint(g2d, getIconWidth(), getIconHeight(), resolution, null, callbackEvent);
g.translate(-x, -y);
g2d.setPaint(oldPaint);
}
protected BaseChartPainter getChartPainter() {
BaseChartPainter painter = chartCollection.createResultChartPainterWithOutDealFormula(Calculator.createCalculator(),
WebChartIDInfo.createEmptyDesignerInfo(), getIconWidth(), getIconHeight());
return painter;
}
/**
* 返回缩略图的宽度
*
@ -83,20 +121,6 @@ public class ChartIcon implements Icon, XMLable {
}
/**
* 返回缩略图中的图片路径
*
* @return 缩略图中的图片路径
*/
public String getImagePath() {
return imagePath;
}
public String getChartName() {
return chartName;
}
@Override
public void readXML(XMLableReader reader) {
//do nothing
@ -114,8 +138,11 @@ public class ChartIcon implements Icon, XMLable {
@Override
public Object clone() throws CloneNotSupportedException {
ChartIcon cloned = (ChartIcon) super.clone();
cloned.imagePath = this.imagePath;
cloned.chartName = this.chartName;
if (getChartCollection() != null) {
cloned.setChartCollection(this.getChartCollection());
}
cloned.setChartName(this.getChartName());
;
return cloned;
}

22
designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java

@ -3,6 +3,7 @@ package com.fr.design.chart;
* the Pane of the Chart
*/
import com.fr.base.chart.chartdata.CallbackEvent;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider;
@ -12,7 +13,6 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.chart.info.ChartInfoCollector;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
@ -26,7 +26,7 @@ import javax.swing.event.ListSelectionListener;
import java.awt.Color;
import java.awt.Component;
public class ChartTypePane extends ChartCommonWizardPane {
public class ChartTypePane extends ChartCommonWizardPane implements CallbackEvent {
private static final long serialVersionUID = -1175602484968520546L;
private String[] chartIDs = ChartTypeManager.getInstanceWithCheck().getAllChartIDs();
@ -96,14 +96,17 @@ public class ChartTypePane extends ChartCommonWizardPane {
int main_index = mainTypeList.getSelectedIndex();
String id = ChartTypePane.this.chartIDs[main_index];
String[] demoImagePath = ChartTypeInterfaceManager.getInstance().getDemoImagePath(id);
ChartProvider[] charts = ChartTypeManager.getInstance().getCharts(id);
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(id);
ChartTypePane.this.iconListModel.clear();
for (int i = 0, len = subName.length; i < len; i++) {
String ImagePath = demoImagePath.length > i ? demoImagePath[i] : StringUtils.EMPTY;
String chartName = subName[i];
ChartTypePane.this.iconListModel.addElement(new ChartIcon(ImagePath, chartName));
for (int i = 0, len = charts.length; i < len; i++) {
ChartProvider chart = charts[i];
ChartCollection chartCollection = new ChartCollection(chart);
ChartIcon chartIcon = new ChartIcon(chartCollection);
chartIcon.setChartName(subName[i]);
chartIcon.registerCallBackEvent(ChartTypePane.this);
ChartTypePane.this.iconListModel.addElement(chartIcon);
}
iconViewList.setSelectedIndex(0);
}
@ -144,4 +147,9 @@ public class ChartTypePane extends ChartCommonWizardPane {
update(chart4Update);
}
@Override
public void callback() {
this.repaint();
}
}

1
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java

@ -40,6 +40,7 @@ public class SeriesNameUseFieldValuePane extends FurtherBasicBeanPane<ChartColle
public SeriesNameUseFieldValuePane() {
seriesName = new UIComboBoxWithNone();
seriesName.getModel().setSelectedItem(null);
seriesValue = new UIComboBox();
calculateCombox = new CalculateComboBox();
calculateCombox.reset();

18
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java

@ -18,7 +18,6 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.style.color.ColorControlWindow;
import com.fr.design.style.color.ColorSelectBox;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.StringUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
@ -29,6 +28,8 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants;
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.Color;
import java.awt.Component;
@ -40,8 +41,6 @@ import java.awt.LayoutManager;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
public class UIColorPickerPane extends BasicPane implements UIObserver {
private static final int MARGIN_TOP = 7;
@ -635,7 +634,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
@Override
public void layoutContainer(Container parent) {
upControlPane.setBounds(MARGIN_LEFT, MARGIN_TOP, UPCONTROLPANE_WIDTH, upControlPane.getPreferredSize().height);
upControlPane.setBounds(getBoundX(), getBoundY(), getBoundWidth(), upControlPane.getPreferredSize().height);
colorGroup.setBounds(COLORGROUP_MARGIN_LEFT, 2 * MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height);
textGroup.setBounds(colorGroup.getPreferredSize().width + COLORGROUP_MARGIN_LEFT, MARGIN_TOP + upControlPane.getPreferredSize().height + LAYOUR_DET, textGroup.getPreferredSize().width, textGroup.getPreferredSize().height);
}
@ -646,6 +645,17 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
}
};
protected int getBoundX() {
return MARGIN_LEFT;
}
protected int getBoundY() {
return MARGIN_TOP;
}
protected int getBoundWidth() {
return UPCONTROLPANE_WIDTH;
}
/**
*刷新颜色选取器

83
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxBorderPane.java

@ -0,0 +1,83 @@
package com.fr.van.chart.box;
import com.fr.base.background.ColorBackground;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.plugin.chart.base.AttrBorderWithWidth;
import com.fr.stable.StringUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.background.VanChartMarkerBackgroundPane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
public class VanChartBoxBorderPane extends BasicBeanPane<AttrBorderWithWidth> {
private VanChartMarkerBackgroundPane colorBackground;
private UISpinner lineWidth;
public VanChartBoxBorderPane() {
colorBackground = new VanChartMarkerBackgroundPane() {
protected Component[][] getPaneComponents() {
return new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Color")), typeComboBox},
new Component[]{null, centerPane},
};
}
};
lineWidth = new UISpinner(0.5, Double.MAX_VALUE, 0.5, 0.5);
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Line_Width")), lineWidth},
new Component[]{colorBackground, null}
};
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, e};
double[] rowSize = {p, p, p};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize);
this.setLayout(new BorderLayout());
this.add(panel, BorderLayout.CENTER);
}
public void populateBean(AttrBorderWithWidth border) {
if (border.getBorderColor() != null) {
this.colorBackground.populate(ColorBackground.getInstance(border.getBorderColor()));
}
this.lineWidth.setValue(border.getLineWidth());
}
public AttrBorderWithWidth updateBean() {
AttrBorderWithWidth border = new AttrBorderWithWidth();
ColorBackground colorBackground = this.colorBackground.update();
if (colorBackground == null) {
border.setBorderColor(null);
} else {
border.setBorderColor(colorBackground.getColor());
}
if (this.lineWidth != null) {
border.setLineWidth(this.lineWidth.getValue());
}
return border;
}
protected String title4PopupWindow() {
return StringUtils.EMPTY;
}
}

19
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxConditionPane.java

@ -2,15 +2,19 @@ package com.fr.van.chart.box;
import com.fr.chart.base.AttrAlpha;
import com.fr.chart.base.AttrBackground;
import com.fr.chart.base.AttrBorder;
import com.fr.chart.chartattr.Plot;
import com.fr.design.chart.series.SeriesCondition.ChartConditionPane;
import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane;
import com.fr.design.chart.series.SeriesCondition.LabelAlphaPane;
import com.fr.plugin.chart.base.AttrBorderWithWidth;
import com.fr.plugin.chart.box.VanChartAttrNormalMarker;
import com.fr.plugin.chart.box.VanChartAttrOutlierMarker;
import com.fr.plugin.chart.box.VanChartBoxPlot;
import com.fr.plugin.chart.type.ConditionKeyType;
import com.fr.van.chart.column.VanChartColumnLabelBorderPane;
import com.fr.van.chart.designer.other.condition.item.VanChartColumnSeriesColorConditionPane;
import com.fr.van.chart.box.condition.VanChartBoxBorderConditionPane;
import com.fr.van.chart.box.condition.VanChartBoxNormalMarkerConditionPane;
import com.fr.van.chart.box.condition.VanChartBoxOutlierMarkerConditionPane;
import com.fr.van.chart.designer.other.condition.item.VanChartSeriesColorConditionPane;
import java.awt.Dimension;
@ -27,9 +31,14 @@ public class VanChartBoxConditionPane extends DataSeriesConditionPane {
}
protected void addBasicAction() {
classPaneMap.put(AttrBackground.class, new VanChartColumnSeriesColorConditionPane(this));
classPaneMap.put(AttrBackground.class, new VanChartSeriesColorConditionPane(this));
classPaneMap.put(AttrAlpha.class, new LabelAlphaPane(this));
classPaneMap.put(AttrBorder.class, new VanChartColumnLabelBorderPane(this));
classPaneMap.put(AttrBorderWithWidth.class, new VanChartBoxBorderConditionPane(this));
if (((VanChartBoxPlot) plot).isDetailed()) {
classPaneMap.put(VanChartAttrNormalMarker.class, new VanChartBoxNormalMarkerConditionPane(this));
classPaneMap.put(VanChartAttrOutlierMarker.class, new VanChartBoxOutlierMarkerConditionPane(this));
}
}
protected void addStyleAction() {

6
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxPlotPane.java

@ -3,6 +3,7 @@ package com.fr.van.chart.box;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Plot;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.base.VanChartTools;
import com.fr.plugin.chart.box.BoxIndependentVanChart;
import com.fr.plugin.chart.box.VanChartBoxPlot;
import com.fr.van.chart.designer.type.AbstractVanChartTypePane;
@ -42,4 +43,9 @@ public class VanChartBoxPlotPane extends AbstractVanChartTypePane {
return BoxIndependentVanChart.BoxVanChartTypes[0];
}
protected VanChartTools createVanChartTools() {
VanChartTools tools = new VanChartTools();
tools.setSort(false);
return tools;
}
}

30
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxSeriesPane.java

@ -9,7 +9,6 @@ import com.fr.plugin.chart.box.VanChartBoxPlot;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane;
import com.fr.van.chart.designer.component.VanChartMarkerPane;
import com.fr.van.chart.designer.component.border.VanChartBorderPane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import javax.swing.JPanel;
@ -18,6 +17,8 @@ import java.awt.Component;
public class VanChartBoxSeriesPane extends VanChartAbstractPlotSeriesPane {
private VanChartBoxBorderPane boxBorderPane;
private JPanel normalMarker;
private JPanel outlierMarker;
@ -36,7 +37,7 @@ public class VanChartBoxSeriesPane extends VanChartAbstractPlotSeriesPane {
double[] rowSize = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{createBorderPane()},
new Component[]{createBoxBorderPane()},
new Component[]{createNormalValuePane()},
new Component[]{createOutlierValuePane()}
};
@ -46,20 +47,21 @@ public class VanChartBoxSeriesPane extends VanChartAbstractPlotSeriesPane {
return contentPane;
}
protected VanChartBorderPane createDiffBorderPane() {
return new VanChartBorderPane();
private JPanel createBoxBorderPane() {
boxBorderPane = new VanChartBoxBorderPane();
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Border"), boxBorderPane);
}
private JPanel createNormalValuePane() {
normalValuePane = new VanChartMarkerPane();
normalMarker = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Engine_Chart_Normal_Value"), normalValuePane);
normalMarker = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Normal_Value"), normalValuePane);
return normalMarker;
}
private JPanel createOutlierValuePane() {
outlierValuePane = new VanChartMarkerPane();
outlierMarker = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Engine_Chart_Outlier_Value"), outlierValuePane);
outlierMarker = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Outlier_Value"), outlierValuePane);
return outlierMarker;
}
@ -85,10 +87,13 @@ public class VanChartBoxSeriesPane extends VanChartAbstractPlotSeriesPane {
super.populateBean(plot);
if (plot instanceof VanChartBoxPlot) {
normalValuePane.populate(((VanChartBoxPlot) plot).getNormalValue());
outlierValuePane.populate(((VanChartBoxPlot) plot).getOutlierValue());
VanChartBoxPlot boxPlot = (VanChartBoxPlot) plot;
boxBorderPane.populateBean(boxPlot.getBorder());
normalValuePane.populate(boxPlot.getNormalValue());
outlierValuePane.populate(boxPlot.getOutlierValue());
checkMarkerPane(((VanChartBoxPlot) plot).isDetailed());
checkMarkerPane(boxPlot.isDetailed());
}
}
@ -98,8 +103,11 @@ public class VanChartBoxSeriesPane extends VanChartAbstractPlotSeriesPane {
}
if (plot instanceof VanChartBoxPlot) {
((VanChartBoxPlot) plot).setNormalValue(normalValuePane.update());
((VanChartBoxPlot) plot).setOutlierValue(outlierValuePane.update());
VanChartBoxPlot boxPlot = (VanChartBoxPlot) plot;
boxPlot.setBorder(boxBorderPane.updateBean());
boxPlot.setNormalValue(normalValuePane.update());
boxPlot.setOutlierValue(outlierValuePane.update());
}
super.updateBean(plot);

2
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java

@ -62,7 +62,7 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
};
outlier = new VanChartFormatPaneWithCheckBox(parent, showOnPane) {
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Engine_Chart_Outlier_Value");
return Toolkit.i18nText("Fine-Design_Chart_Outlier_Value");
}
};
}

49
designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxBorderConditionPane.java

@ -0,0 +1,49 @@
package com.fr.van.chart.box.condition;
import com.fr.chart.base.DataSeriesCondition;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.AttrBorderWithWidth;
import com.fr.van.chart.box.VanChartBoxBorderPane;
import com.fr.van.chart.designer.other.condition.item.AbstractNormalMultiLineConditionPane;
import javax.swing.JPanel;
public class VanChartBoxBorderConditionPane extends AbstractNormalMultiLineConditionPane {
private VanChartBoxBorderPane borderPane;
protected JPanel initContentPane() {
borderPane = new VanChartBoxBorderPane();
return borderPane;
}
public VanChartBoxBorderConditionPane(ConditionAttributesPane conditionAttributesPane) {
super(conditionAttributesPane);
}
public String nameForPopupMenuItem() {
return Toolkit.i18nText("Fine-Design_Chart_Border");
}
protected String getItemLabelString() {
return nameForPopupMenuItem();
}
protected String title4PopupWindow() {
return nameForPopupMenuItem();
}
public void setDefault() {
borderPane.populateBean(new AttrBorderWithWidth());
}
public void populate(DataSeriesCondition condition) {
if (condition instanceof AttrBorderWithWidth) {
this.borderPane.populateBean((AttrBorderWithWidth) condition);
}
}
public DataSeriesCondition update() {
return this.borderPane.updateBean();
}
}

51
designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxNormalMarkerConditionPane.java

@ -0,0 +1,51 @@
package com.fr.van.chart.box.condition;
import com.fr.chart.base.DataSeriesCondition;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.VanChartAttrMarker;
import com.fr.plugin.chart.box.VanChartAttrNormalMarker;
import com.fr.plugin.chart.marker.type.MarkerType;
import com.fr.van.chart.designer.component.VanChartMarkerPane;
import com.fr.van.chart.designer.other.condition.item.VanChartMarkerConditionPane;
public class VanChartBoxNormalMarkerConditionPane extends VanChartMarkerConditionPane {
public VanChartBoxNormalMarkerConditionPane(ConditionAttributesPane conditionAttributesPane) {
super(conditionAttributesPane);
}
public String nameForPopupMenuItem() {
return Toolkit.i18nText("Fine-Design_Chart_Normal_Value");
}
protected String getItemLabelString() {
return nameForPopupMenuItem();
}
protected void initMarkerPane() {
markerPane = new VanChartMarkerPane() {
protected VanChartAttrMarker createNewAttrMarker() {
return new VanChartAttrNormalMarker();
}
};
}
public void setDefault() {
VanChartAttrNormalMarker normalMarker = new VanChartAttrNormalMarker();
normalMarker.setMarkerType(MarkerType.MARKER_CIRCLE);
markerPane.populate(new VanChartAttrNormalMarker());
}
public void populate(DataSeriesCondition condition) {
if (condition instanceof VanChartAttrNormalMarker) {
markerPane.populate((VanChartAttrNormalMarker) condition);
}
}
public DataSeriesCondition update() {
return markerPane.update();
}
}

51
designer-chart/src/main/java/com/fr/van/chart/box/condition/VanChartBoxOutlierMarkerConditionPane.java

@ -0,0 +1,51 @@
package com.fr.van.chart.box.condition;
import com.fr.chart.base.DataSeriesCondition;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.VanChartAttrMarker;
import com.fr.plugin.chart.box.VanChartAttrOutlierMarker;
import com.fr.plugin.chart.marker.type.MarkerType;
import com.fr.van.chart.designer.component.VanChartMarkerPane;
import com.fr.van.chart.designer.other.condition.item.VanChartMarkerConditionPane;
public class VanChartBoxOutlierMarkerConditionPane extends VanChartMarkerConditionPane {
public VanChartBoxOutlierMarkerConditionPane(ConditionAttributesPane conditionAttributesPane) {
super(conditionAttributesPane);
}
public String nameForPopupMenuItem() {
return Toolkit.i18nText("Fine-Design_Chart_Outlier_Value");
}
protected String getItemLabelString() {
return nameForPopupMenuItem();
}
public void setDefault() {
VanChartAttrOutlierMarker outlierMarker = new VanChartAttrOutlierMarker();
outlierMarker.setMarkerType(MarkerType.MARKER_CIRCLE_HOLLOW);
markerPane.populate(outlierMarker);
}
protected void initMarkerPane() {
markerPane = new VanChartMarkerPane() {
protected VanChartAttrMarker createNewAttrMarker() {
return new VanChartAttrOutlierMarker();
}
};
}
public void populate(DataSeriesCondition condition) {
if (condition instanceof VanChartAttrOutlierMarker) {
markerPane.populate((VanChartAttrOutlierMarker) condition);
}
}
public DataSeriesCondition update() {
return markerPane.update();
}
}

6
designer-chart/src/main/java/com/fr/van/chart/bubble/VanChartBubbleSeriesPane.java

@ -2,8 +2,8 @@ package com.fr.van.chart.bubble;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.design.i18n.Toolkit;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
@ -12,7 +12,7 @@ import com.fr.plugin.chart.bubble.attr.VanChartAttrBubble;
import com.fr.van.chart.bubble.component.VanChartBubblePane;
import com.fr.van.chart.custom.component.VanChartCustomAxisConditionPane;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane;
import javax.swing.JPanel;
@ -22,7 +22,7 @@ import java.awt.Component;
/**
* Created by Mitisky on 16/3/31.
*/
public class VanChartBubbleSeriesPane extends VanChartAbstractPlotSeriesPane {
public class VanChartBubbleSeriesPane extends VanChartColorValueSeriesPane {
private static final long serialVersionUID = 5595016643808487932L;
private VanChartBubblePane bubblePane;

74
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartHeatValueColorPane.java

@ -0,0 +1,74 @@
package com.fr.van.chart.designer.component;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
import com.fr.van.chart.range.component.GradualIntervalConfigPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.LegendGradientBar;
import com.fr.van.chart.range.component.SectionIntervalConfigPaneWithOutNum;
import com.fr.van.chart.range.component.SectionLegendPane;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-04
*/
public class VanChartHeatValueColorPane extends VanChartValueColorPane {
public VanChartHeatValueColorPane(VanChartStylePane parent) {
super(parent);
}
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane() {
@Override
protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane() {
@Override
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane, ColorSelectBoxWithOutTransparent colorSelectBox, UINumberDragPane numberDragPane, LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar}
};
}
};
}
};
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(getVanChartStylePane()) {
@Override
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPaneWithOutNum(parent) {
private static final int WIDTH = 227;
@Override
protected int getBoundX() {
return 0;
}
@Override
protected int getBoundY() {
return 0;
}
@Override
protected int getBoundWidth() {
return WIDTH;
}
};
}
};
}
}

8
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartMarkerPane.java

@ -104,9 +104,13 @@ public class VanChartMarkerPane extends BasicPane {
return Toolkit.i18nText("Fine-Design_Chart_Marker");
}
protected VanChartAttrMarker createNewAttrMarker(){
return new VanChartAttrMarker();
}
public void populate(VanChartAttrMarker marker) {
if(marker == null){
marker = new VanChartAttrMarker();
marker = createNewAttrMarker();
}
commonORCustom.setSelectedIndex(marker.isCommon() ? 0 : 1);
if(marker.isCommon()){
@ -120,7 +124,7 @@ public class VanChartMarkerPane extends BasicPane {
}
public VanChartAttrMarker update() {
VanChartAttrMarker marker = new VanChartAttrMarker();
VanChartAttrMarker marker = createNewAttrMarker();
if(commonORCustom.getSelectedIndex() == 0){
commonMarkerPane.updateBean(marker);
} else {

153
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartValueColorPane.java

@ -0,0 +1,153 @@
package com.fr.van.chart.designer.component;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.PaneTitleConstants;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.SectionLegendPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-03
*/
public class VanChartValueColorPane extends BasicPane {
//颜色类型切换按钮
private UIButtonGroup<LegendType> valueColorTypeButton;
//连续渐变面板
private GradualLegendPane gradualLegendPane;
//区域渐变面板
private SectionLegendPane sectionLegendPane;
private VanChartStylePane parent;
private JPanel rangeLegendPane;
public VanChartValueColorPane(VanChartStylePane parent) {
this.parent = parent;
initComponents();
}
public VanChartStylePane getVanChartStylePane() {
return parent;
}
public void initComponents() {
valueColorTypeButton = createLegendTypeButton();
valueColorTypeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
}
});
valueColorTypeButton.setSelectedIndex(0);
UILabel label = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Color_Type"));
Component[][] labelComponent = new Component[][]{
new Component[]{label, valueColorTypeButton},
};
JPanel legendTypeButtonWithTilePane = TableLayout4VanChartHelper.createGapTableLayoutPane(labelComponent);
legendTypeButtonWithTilePane.setBorder(BorderFactory.createEmptyBorder(10,0,0,0));
//渐变色图例面板
gradualLegendPane = createGradualLegendPane();
//区域段图例面板
sectionLegendPane = createSectionLegendPane();
rangeLegendPane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (valueColorTypeButton.getSelectedItem() == LegendType.GRADUAL) {
return gradualLegendPane.getPreferredSize();
} else {
return sectionLegendPane.getPreferredSize();
}
}
};
rangeLegendPane.add(gradualLegendPane, LegendType.GRADUAL.getStringType());
rangeLegendPane.add(sectionLegendPane, LegendType.SECTION.getStringType());
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p};
Component[][] components = new Component[][]{
new Component[]{legendTypeButtonWithTilePane},
new Component[]{rangeLegendPane}
};
JPanel tableLayoutPane = TableLayoutHelper.createTableLayoutPane(components, row, col);
this.setLayout(new BorderLayout());
this.add(tableLayoutPane, BorderLayout.CENTER);
}
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) rangeLegendPane.getLayout();
cardLayout.show(rangeLegendPane, valueColorTypeButton.getSelectedItem().getStringType());
this.validate();
this.repaint();
}
private UIButtonGroup<LegendType> createLegendTypeButton() {
return new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Continuous_Gradient"),
Toolkit.i18nText("Fine-Design_Chart_Area_Gradient")
}, new LegendType[]{LegendType.GRADUAL, LegendType.SECTION});
}
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane();
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(parent);
}
/**
* 标题
*
* @return 标题
*/
public String title4PopupWindow() {
return PaneTitleConstants.CHART_STYLE_SERIES_TITLE;
}
public void updateBean(VanChartRangeLegend legend) {
LegendType legendType = valueColorTypeButton.getSelectedItem();
legend.setLegendType(legendType);
if (legendType == LegendType.GRADUAL) {
gradualLegendPane.update(legend.getGradualLegend());
} else if (legendType == LegendType.SECTION) {
sectionLegendPane.update(legend.getSectionLegend());
}
}
public void populateBean(VanChartRangeLegend legend) {
//范围图例部分
if (legend.getLegendType() != LegendType.ORDINARY) {
valueColorTypeButton.setSelectedItem(legend.getLegendType());
}
gradualLegendPane.populate(legend.getGradualLegend());
sectionLegendPane.populate(legend.getSectionLegend());
checkCardPane();
}
}

53
designer-chart/src/main/java/com/fr/van/chart/designer/style/HeatMapRangeLegendPane.java

@ -1,22 +1,6 @@
package com.fr.van.chart.designer.style;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.i18n.Toolkit;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.chart.gui.ColorSelectBoxWithOutTransparent;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.style.axis.component.MinMaxValuePaneWithOutTick;
import com.fr.van.chart.range.component.GradualIntervalConfigPane;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.LegendGradientBar;
import com.fr.van.chart.range.component.SectionIntervalConfigPaneWithOutNum;
import com.fr.van.chart.range.component.SectionLegendPane;
import javax.swing.JPanel;
import java.awt.Component;
/**
* Created by Mitisky on 16/10/20.
@ -35,41 +19,4 @@ public class HeatMapRangeLegendPane extends VanChartRangeLegendPane {
protected JPanel createCommonLegendPane(){
return this.createLegendPaneWithoutHighlight();
}
@Override
protected UIButtonGroup<LegendType> createLegendTypeButton(){
return new UIButtonGroup<LegendType>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Legend_Gradual"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Section")
}, new LegendType[]{LegendType.GRADUAL, LegendType.SECTION});
}
@Override
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane(){
@Override
protected GradualIntervalConfigPane createGradualIntervalConfigPane() {
return new GradualIntervalConfigPane(){
@Override
protected Component[][] getPaneComponents(MinMaxValuePaneWithOutTick minMaxValuePane, ColorSelectBoxWithOutTransparent colorSelectBox, UINumberDragPane numberDragPane, LegendGradientBar legendGradientBar) {
return new Component[][]{
new Component[]{minMaxValuePane, null},
new Component[]{new BoldFontTextLabel(Toolkit.i18nText("Fine-Design_Chart_Value_Divided_Stage")), numberDragPane},
new Component[]{null, legendGradientBar}
};
}
};
}
};
}
@Override
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(this.getLegendPaneParent()) {
@Override
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPaneWithOutNum(parent);
}
};
}
}

131
designer-chart/src/main/java/com/fr/van/chart/designer/style/VanChartRangeLegendPane.java

@ -1,24 +1,18 @@
package com.fr.van.chart.designer.style;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.layout.TableLayout;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.plugin.chart.attr.VanChartLegend;
import com.fr.plugin.chart.range.SectionLegend;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.range.component.GradualLegendPane;
import com.fr.van.chart.range.component.SectionLegendPane;
import com.fr.van.chart.range.component.LegendLabelFormatPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
@ -28,87 +22,63 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
private static final long serialVersionUID = 1614283200308877353L;
//散点图不同类型面板容器,容器布局管理
private JPanel rangeLegendPane;
//图例切换按钮
private UIButtonGroup<LegendType> legendTypeButton;
private JPanel rangeLabelPane;
//普通图例面板(因为普通图例没有新内容,故而为空)
private JPanel ordinaryLegendPane;
//渐变色图例面板
private GradualLegendPane gradualLegendPane;
//区域段图例面板
private SectionLegendPane sectionLegendPane;
private JPanel ordinaryLabelPane;
private LegendLabelFormatPane gradualLabelFormPane;
private LegendLabelFormatPane sectionLabelFormPane;
private LegendType legendType;
public VanChartRangeLegendPane() {
super();
}
public VanChartRangeLegendPane(VanChartStylePane parent) {
super(parent);
}
private JPanel createRangeLegendPane() {
//普通图例面板
ordinaryLegendPane = new JPanel();
//渐变色图例面板
gradualLegendPane = createGradualLegendPane();
gradualLegendPane.setParentPane(this.getLegendPaneParent());
//区域段图例面板
sectionLegendPane = createSectionLegendPane();
sectionLegendPane.setParentPane(this.getLegendPaneParent());
private JPanel createRangeLabelPane() {
ordinaryLabelPane = new JPanel();
gradualLabelFormPane = new LegendLabelFormatPane();
gradualLabelFormPane.setParentPane(this.getLegendPaneParent());
sectionLabelFormPane = new LegendLabelFormatPane() {
@Override
protected void checkCustomLabelText() {
setCustomFormatterText(SectionLegend.DEFAULT_LABEL_FUNCTION);
}
};
sectionLabelFormPane.setParentPane(this.getLegendPaneParent());
JPanel panel = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if(legendTypeButton.getSelectedItem() == LegendType.ORDINARY){
return new Dimension(ordinaryLegendPane.getWidth(), 0);
} else if (legendTypeButton.getSelectedItem() == LegendType.GRADUAL){
return gradualLegendPane.getPreferredSize();
if (legendType == LegendType.ORDINARY) {
return new Dimension(ordinaryLabelPane.getWidth(), 0);
} else if (legendType == LegendType.GRADUAL) {
return gradualLabelFormPane.getPreferredSize();
} else {
return sectionLegendPane.getPreferredSize();
return sectionLabelFormPane.getPreferredSize();
}
}
};
panel.add(ordinaryLegendPane, LegendType.ORDINARY.getStringType());
panel.add(gradualLegendPane, LegendType.GRADUAL.getStringType());
panel.add(sectionLegendPane, LegendType.SECTION.getStringType());
panel.add(ordinaryLabelPane, LegendType.ORDINARY.getStringType());
panel.add(gradualLabelFormPane, LegendType.GRADUAL.getStringType());
panel.add(sectionLabelFormPane, LegendType.SECTION.getStringType());
return panel;
}
protected GradualLegendPane createGradualLegendPane() {
return new GradualLegendPane();
}
protected SectionLegendPane createSectionLegendPane() {
return new SectionLegendPane(this.getLegendPaneParent());
}
private JPanel createTableLayoutPaneWithTitle(String title, Component component) {
return TableLayout4VanChartHelper.createGapTableLayoutPane(title, component);
}
protected UIButtonGroup<LegendType> createLegendTypeButton(){
return new UIButtonGroup<LegendType>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Legend_Ordinary"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Gradual"),
Toolkit.i18nText("Fine-Design_Chart_Legend_Section")
}, new LegendType[]{LegendType.ORDINARY, LegendType.GRADUAL, LegendType.SECTION});
}
protected JPanel createCommonLegendPane() {
return super.createLegendPane();
}
@Override
protected JPanel createLegendPane() {
legendTypeButton = createLegendTypeButton();
initLegendTypeButtonListener();
JPanel legendTypeButtonWithTilePane = createTableLayoutPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Legend_Form"), legendTypeButton);
legendTypeButtonWithTilePane.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
rangeLegendPane = createRangeLegendPane();
rangeLabelPane = createRangeLabelPane();
//不包含新内容的普通面板内容
JPanel commonLegendPane = this.createCommonLegendPane();
@ -116,28 +86,17 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p, p, p};
double[] row = {p, p};
Component[][] components = new Component[][]{
new Component[]{legendTypeButtonWithTilePane},
new Component[]{rangeLegendPane},
new Component[]{rangeLabelPane},
new Component[]{commonLegendPane}
};
return TableLayoutHelper.createTableLayoutPane(components, row, col);
}
private void initLegendTypeButtonListener() {
legendTypeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
checkLayoutPaneVisible();
}
});
}
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) rangeLegendPane.getLayout();
cardLayout.show(rangeLegendPane, legendTypeButton.getSelectedItem().getStringType());
CardLayout cardLayout = (CardLayout) rangeLabelPane.getLayout();
cardLayout.show(rangeLabelPane, legendType.getStringType());
}
@Override
@ -151,14 +110,13 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
protected boolean isVisibleLayoutPane() {
return super.isVisibleLayoutPane() && legendTypeButton.getSelectedItem() != LegendType.GRADUAL;
return super.isVisibleLayoutPane() && legendType != LegendType.GRADUAL;
}
private void checkHighlightVisible() {
JPanel highlightPane = this.getHighlightPane();
if (highlightPane != null) {
LegendType legendType = legendTypeButton.getSelectedItem();
highlightPane.setVisible(legendType != LegendType.GRADUAL);
}
}
@ -172,26 +130,21 @@ public class VanChartRangeLegendPane extends VanChartPlotLegendPane {
VanChartRangeLegend scatterLegend = (VanChartRangeLegend) legend;
//范围图例部分
LegendType legendType = legendTypeButton.getSelectedItem();
scatterLegend.setLegendType(legendType);
if (legendType == LegendType.GRADUAL) {
gradualLegendPane.update(scatterLegend.getGradualLegend());
gradualLabelFormPane.update(scatterLegend.getGradualLegend().getLegendLabelFormat());
} else if (legendType == LegendType.SECTION) {
sectionLegendPane.update(scatterLegend.getSectionLegend());
sectionLabelFormPane.update(scatterLegend.getSectionLegend().getLegendLabelFormat());
}
this.checkHighlightVisible();
}
@Override
public void populateBean(VanChartLegend legend) {
VanChartRangeLegend scatterLegend = (VanChartRangeLegend) legend;
legendType = scatterLegend.getLegendType();
if (scatterLegend != null) {
//范围图例部分
legendTypeButton.setSelectedItem(scatterLegend.getLegendType());
gradualLegendPane.populate(scatterLegend.getGradualLegend());
sectionLegendPane.populate(scatterLegend.getSectionLegend());
gradualLabelFormPane.populate(scatterLegend.getGradualLegend().getLegendLabelFormat());
sectionLabelFormPane.populate(scatterLegend.getSectionLegend().getLegendLabelFormat());
super.populateBean(scatterLegend);
}
checkAllUse();

173
designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartColorValueSeriesPane.java

@ -0,0 +1,173 @@
package com.fr.van.chart.designer.style.series;
import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.plugin.chart.type.LegendType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane;
import com.fr.van.chart.designer.component.VanChartValueColorPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-08-03
*/
public abstract class VanChartColorValueSeriesPane extends VanChartAbstractPlotSeriesPane {
//颜色划分切换
private UIButtonGroup<String> colorDivideButton;
private VanChartValueColorPane vanChartValueColorPane;
private JPanel colorDividePane;
public VanChartColorValueSeriesPane(ChartStylePane parent, Plot plot) {
super(parent, plot);
}
public VanChartValueColorPane getVanChartValueColorPane() {
return vanChartValueColorPane;
}
public void setVanChartValueColorPane(VanChartValueColorPane vanChartValueColorPane) {
this.vanChartValueColorPane = vanChartValueColorPane;
}
//获取颜色面板
protected JPanel getColorPane() {
JPanel panel = new JPanel(new BorderLayout());
JPanel colorChoosePane = createColorChoosePane();
if (colorChoosePane != null) {
panel.add(colorChoosePane, BorderLayout.CENTER);
}
stylePane = createStylePane();
setColorPaneContent(panel);
JPanel colorPane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Color"), panel);
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 0));
return panel.getComponentCount() == 0 ? null : colorPane;
}
protected JPanel createColorChoosePane() {
vanChartFillStylePane = getVanChartFillStylePane();
if (vanChartFillStylePane != null) {
JPanel divideButtonPane = initDivideButtonPane();
vanChartValueColorPane = new VanChartValueColorPane((VanChartStylePane) parentPane);
colorDividePane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (colorDivideButton.getSelectedIndex() == 0) {
return vanChartFillStylePane.getPreferredSize();
} else {
return vanChartValueColorPane.getPreferredSize();
}
}
};
colorDividePane.add(vanChartFillStylePane, "series");
colorDividePane.add(vanChartValueColorPane, "value");
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{divideButtonPane},
new Component[]{colorDividePane}
};
return TableLayoutHelper.createCommonTableLayoutPane(components, row, col, 0);
}
return null;
}
private JPanel initDivideButtonPane() {
colorDivideButton = new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Series"),
Toolkit.i18nText("Fine-Design_Chart_Use_Value")
}, new String[]{"series", "value"});
colorDivideButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkCardPane();
}
});
colorDivideButton.setSelectedIndex(0);
UILabel label = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Color_Divide"));
Component[][] labelComponent = new Component[][]{
new Component[]{label, colorDivideButton},
};
JPanel gapTableLayoutPane = TableLayout4VanChartHelper.createGapTableLayoutPane(labelComponent);
gapTableLayoutPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
return gapTableLayoutPane;
}
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) colorDividePane.getLayout();
cardLayout.show(colorDividePane, colorDivideButton.getSelectedItem());
colorDividePane.validate();
colorDividePane.repaint();
}
//风格
protected VanChartBeautyPane createStylePane() {
return null;
}
/**
* 保存 系列界面的属性到Plot
*/
public void updateBean(Plot plot) {
if (plot == null) {
return;
}
super.updateBean(plot);
if (colorDivideButton != null) {
VanChartRangeLegend legend = (VanChartRangeLegend) plot.getLegend();
int selectedIndex = colorDivideButton.getSelectedIndex();
if (selectedIndex == 0) {
legend.setLegendType(LegendType.ORDINARY);
} else {
vanChartValueColorPane.updateBean(legend);
}
}
}
/**
* 更新Plot的属性到系列界面
*/
public void populateBean(Plot plot) {
if (plot == null) {
return;
}
super.populateBean(plot);
if (colorDivideButton != null) {
VanChartRangeLegend legend = (VanChartRangeLegend) plot.getLegend();
LegendType legendType = legend.getLegendType();
if (legendType == LegendType.ORDINARY) {
colorDivideButton.setSelectedIndex(0);
} else {
colorDivideButton.setSelectedIndex(1);
}
vanChartValueColorPane.populateBean(legend);
checkCardPane();
}
}
}

22
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java

@ -6,12 +6,16 @@ import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot;
import com.fr.plugin.chart.range.VanChartRangeLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartFillStylePane;
import com.fr.van.chart.designer.component.VanChartHeatValueColorPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.map.VanChartMapSeriesPane;
import javax.swing.JPanel;
@ -91,6 +95,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
double[] col = {f};
Component[][] components = new Component[][]{
new Component[]{createHeatColorPane()},
new Component[]{createHeatPointStylePane()},
new Component[]{createOpacityPane()}
};
@ -98,6 +103,21 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
return TableLayoutHelper.createTableLayoutPane(components, row, col);
}
private JPanel createHeatColorPane() {
setVanChartValueColorPane(new VanChartHeatValueColorPane((VanChartStylePane) parentPane));
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] row = {p};
double[] col = {f};
Component[][] components = new Component[][]{
new Component[]{getVanChartFillStylePane()},
};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col);
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Color"), panel);
}
private JPanel createHeatPointStylePane() {
radius = new UISpinner(0, Double.MAX_VALUE, 1, 30);
blur = new UISpinner(0, 100, 1, 30);
@ -152,6 +172,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
blur.setValue(heatMapPlot.getBlur());
maxOpacity.populateBean(heatMapPlot.getMaxOpacity());
minOpacity.populateBean(heatMapPlot.getMinOpacity());
getVanChartValueColorPane().populateBean((VanChartRangeLegend) plot.getLegend());
}
}
@ -169,6 +190,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
heatMapPlot.setBlur(blur.getValue());
heatMapPlot.setMaxOpacity(maxOpacity.updateBean());
heatMapPlot.setMinOpacity(minOpacity.updateBean());
getVanChartValueColorPane().updateBean((VanChartRangeLegend) plot.getLegend());
}
}

15
designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java

@ -31,7 +31,7 @@ import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.border.VanChartBorderWithAlphaPane;
import com.fr.van.chart.designer.component.marker.VanChartImageMarkerPane;
import com.fr.van.chart.designer.other.VanChartInteractivePane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartEffectPane;
import com.fr.van.chart.map.designer.style.series.VanChartMapScatterMarkerPane;
import com.fr.van.chart.map.line.VanChartCurvePane;
@ -52,7 +52,7 @@ import java.awt.event.ItemListener;
* Created by Mitisky on 16/5/4.
* 地图-系列界面
*/
public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane {
public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane {
private static final String AREA_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Region");
private static final String POINT_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Point");
private static final String LINE_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Flow");
@ -164,8 +164,9 @@ public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane {
JPanel panel = new JPanel(new BorderLayout());
mapType = ((VanChartMapPlot) plot).getAllLayersMapType();
if (mapType == MapType.CUSTOM || mapType == MapType.DRILL_CUSTOM) {
vanChartFillStylePane = getVanChartFillStylePane();
panel.add(vanChartFillStylePane, BorderLayout.NORTH);
JPanel pane = createColorChoosePane();
pane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
panel.add(pane, BorderLayout.NORTH);
}
panel.add(getContentInPlotType(), BorderLayout.CENTER);
return panel;
@ -177,9 +178,9 @@ public class VanChartMapSeriesPane extends VanChartAbstractPlotSeriesPane {
stylePane = createStylePane();
mapType = ((VanChartMapPlot) plot).getAllLayersMapType();
if (mapType != MapType.CUSTOM && mapType != MapType.DRILL_CUSTOM) {
vanChartFillStylePane = getVanChartFillStylePane();
if (vanChartFillStylePane != null) {
panel.add(vanChartFillStylePane, BorderLayout.NORTH);
JPanel pane = createColorChoosePane();
if (pane != null) {
panel.add(pane, BorderLayout.NORTH);
}
}
setColorPaneContent(panel, paneType);

21
designer-chart/src/main/java/com/fr/van/chart/range/component/GradualLegendPane.java

@ -2,10 +2,7 @@ package com.fr.van.chart.range.component;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.plugin.chart.range.GradualLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
@ -15,29 +12,21 @@ public class GradualLegendPane extends JPanel{
private static final long serialVersionUID = 1614283200308877353L;
private GradualIntervalConfigPane intervalConfigPane;
private LegendLabelFormatPane labelFormPane;
public GradualLegendPane() {
initComponents();
}
public void setParentPane(VanChartStylePane parent) {
labelFormPane.setParentPane(parent);
}
private void initComponents() {
intervalConfigPane = createGradualIntervalConfigPane();
JPanel intervalConfigPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Section_Config"),intervalConfigPane);
labelFormPane = new LegendLabelFormatPane();
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p, p, p};
double[] row = {p};
Component[][] components = new Component[][]{
new Component[]{null},
new Component[]{intervalConfigPaneWithTitle},
new Component[]{labelFormPane},
new Component[]{intervalConfigPane},
};
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col);
@ -53,17 +42,11 @@ public class GradualLegendPane extends JPanel{
if (intervalConfigPane != null) {
intervalConfigPane.populate(gradualLegend.getGradualIntervalConfig());
}
if (labelFormPane != null) {
labelFormPane.populate(gradualLegend.getLegendLabelFormat());
}
}
public void update(GradualLegend gradualLegend) {
if (intervalConfigPane != null) {
intervalConfigPane.update(gradualLegend.getGradualIntervalConfig());
}
if (labelFormPane != null) {
labelFormPane.update(gradualLegend.getLegendLabelFormat());
}
}
}

12
designer-chart/src/main/java/com/fr/van/chart/range/component/LegendLabelFormatPane.java

@ -36,11 +36,19 @@ public class LegendLabelFormatPane extends JPanel{
public LegendLabelFormatPane() {
labelFormatStyle = new UIButtonGroup<Integer>(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")});
labelFormat = new FormatPaneWithOutFont();
labelFormat = new FormatPaneWithOutFont() {
@Override
protected Component[][] getComponent(JPanel fontPane, JPanel centerPane, JPanel typePane) {
typePane.setBorder(BorderFactory.createEmptyBorder());
return new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Base_Format"), SwingConstants.LEFT), typePane},
new Component[]{null, centerPane},
};
}
};
htmlLabelPane = new VanChartHtmlLabelPaneWithOutWidthAndHeight();
htmlLabelPane.setBorder(BorderFactory.createEmptyBorder(0, (int) TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH + TableLayout4VanChartHelper.COMPONENT_INTERVAL, 0, 0));
centerPane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {

11
designer-chart/src/main/java/com/fr/van/chart/range/component/SectionIntervalConfigPaneWithOutNum.java

@ -5,9 +5,7 @@ import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Component;
@ -38,15 +36,6 @@ public class SectionIntervalConfigPaneWithOutNum extends MapColorPickerPaneWithF
});
}
@Override
protected JPanel getUpControlPane(Component[][] components) {
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double[] columnSize = {d, e};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, getRowSIze(), columnSize);
return panel;
}
private void setRegionVisible(boolean visible) {
getRegionNumPane().setVisible(visible);
numLabel.setVisible(visible);

45
designer-chart/src/main/java/com/fr/van/chart/range/component/SectionLegendPane.java

@ -5,8 +5,6 @@ import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.style.series.MapColorPickerPaneWithFormula;
import com.fr.plugin.chart.range.SectionLegend;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
@ -16,7 +14,6 @@ public class SectionLegendPane extends JPanel{
private static final long serialVersionUID = 1614283200308877353L;
private MapColorPickerPaneWithFormula intervalConfigPane;
private LegendLabelFormatPane labelFormPane;
private AbstractAttrNoScrollPane parent;
public SectionLegendPane(AbstractAttrNoScrollPane parent) {
@ -24,28 +21,15 @@ public class SectionLegendPane extends JPanel{
initComponents();
}
public void setParentPane(VanChartStylePane parent){
labelFormPane.setParentPane(parent);
}
private void initComponents() {
intervalConfigPane = createSectionIntervalConfigPane(this.parent);
JPanel intervalConfigPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Section_Config"), intervalConfigPane);
labelFormPane = new LegendLabelFormatPane(){
@Override
protected void checkCustomLabelText() {
setCustomFormatterText(SectionLegend.DEFAULT_LABEL_FUNCTION);
}
};
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] col = {f};
double[] row = {p, p, p};
double[] row = {p};
Component[][] components = new Component[][]{
new Component[]{null},
new Component[]{intervalConfigPaneWithTitle},
new Component[]{labelFormPane},
new Component[]{intervalConfigPane},
};
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col);
@ -55,24 +39,35 @@ public class SectionLegendPane extends JPanel{
}
protected MapColorPickerPaneWithFormula createSectionIntervalConfigPane(AbstractAttrNoScrollPane parent) {
return new SectionIntervalConfigPane(parent);
return new SectionIntervalConfigPane(parent) {
private static final int WIDTH = 225;
@Override
protected int getBoundX() {
return 0;
}
@Override
protected int getBoundY() {
return 0;
}
@Override
protected int getBoundWidth() {
return WIDTH;
}
};
}
public void populate(SectionLegend sectionLegend) {
if (intervalConfigPane != null) {
intervalConfigPane.populateBean(sectionLegend.getMapHotAreaColor());
}
if (labelFormPane != null) {
labelFormPane.populate(sectionLegend.getLegendLabelFormat());
}
}
public void update(SectionLegend sectionLegend) {
if (intervalConfigPane != null) {
intervalConfigPane.updateBean(sectionLegend.getMapHotAreaColor());
}
if (labelFormPane != null) {
labelFormPane.update(sectionLegend.getLegendLabelFormat());
}
}
}

4
designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterSeriesPane.java

@ -13,7 +13,7 @@ import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartLineTypePane;
import com.fr.van.chart.designer.component.VanChartMarkerPane;
import com.fr.van.chart.designer.component.marker.VanChartCommonMarkerPane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartStackedAndAxisListControlPane;
import com.fr.van.chart.scatter.component.VanChartScatterLineTypePane;
@ -24,7 +24,7 @@ import java.awt.Component;
/**
* 散点图的系列界面
*/
public class VanChartScatterSeriesPane extends VanChartAbstractPlotSeriesPane {
public class VanChartScatterSeriesPane extends VanChartColorValueSeriesPane {
private static final long serialVersionUID = 5595016643808487932L;
public VanChartScatterSeriesPane(ChartStylePane parent, Plot plot) {

10
designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudSeriesPane.java

@ -18,8 +18,7 @@ import com.fr.general.IOUtils;
import com.fr.plugin.chart.wordcloud.CloudShapeType;
import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.VanChartBeautyPane;
import com.fr.van.chart.designer.style.series.VanChartAbstractPlotSeriesPane;
import com.fr.van.chart.designer.style.series.VanChartColorValueSeriesPane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
@ -34,7 +33,7 @@ import java.awt.event.ItemListener;
/**
* Created by Mitisky on 16/11/29.
*/
public class VanChartWordCloudSeriesPane extends VanChartAbstractPlotSeriesPane {
public class VanChartWordCloudSeriesPane extends VanChartColorValueSeriesPane {
private static final String AUTO_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Auto");
private static final String CUSTOM_FONT_SIZE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Define_Size");
private static final double MAX_ROTATION = 90;
@ -228,9 +227,4 @@ public class VanChartWordCloudSeriesPane extends VanChartAbstractPlotSeriesPane
}
}
}
@Override
protected VanChartBeautyPane createStylePane() {
return null;
}
}

39
designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java

@ -83,7 +83,6 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
private static final int SUBMIT_BUTTON_H_LOCATION = 270;
private static final int PARA_IMAGE_SHIFT_X = -4;
private static final int FORM_AREA_PADDING_LEFT = 13;
private int addableRegionY;
private static Image paraImage = BaseUtils.readImage("/com/fr/design/images/form/parameter.png");
@ -413,30 +412,10 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
if (layoutContainer == null) {
layoutContainer = new XWParameterLayout();
}
refreshAddableRegion(layoutContainer);
layoutContainer.setSize(LARGE_PREFERRED_SIZE);
setRootComponent(layoutContainer);
}
/**
* @param layoutContainer
* @Description: 为了不覆盖以前的组件所以要计算可以添加组件的区域
* @return:
* @Author: Henry.Wang
* @date: 2020/7/15 15:12
*/
public void refreshAddableRegion(XLayoutContainer layoutContainer) {
addableRegionY = 0;
for (int i = 0; i < layoutContainer.getComponentCount(); i++) {
Rectangle rectangle = layoutContainer.getComponent(i).getBounds();
if (addableRegionY < rectangle.y + rectangle.height) {
addableRegionY = rectangle.y + rectangle.height;
}
}
int vGap = V_COMPONENT_GAP - (int) XCreator.SMALL_PREFERRED_SIZE.getHeight();
addableRegionY = Math.max(0, addableRegionY - FIRST_V_LOCATION + (int) (XCreator.SMALL_PREFERRED_SIZE.getHeight() / 2) + vGap);
}
/**
* 是否是报表的参数面板
*
@ -604,15 +583,14 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
label.setWidgetName("Label" + name);
label.setWidgetValue(new WidgetValue(name + ":"));
XCreator xCreator = XCreatorUtils.createXCreator(label);
int x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + FIRST_H_LOCATION;
int y = addableRegionY + FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE);
if (!(this.autoAddComponent(xCreator, x, y))) {
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE)
+ FIRST_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) {
return false;
}
EditorHolder editor = new EditorHolder(parameter);
xCreator = XCreatorUtils.createXCreator(editor);
x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + SECOND_H_LOCATION;
if (!(this.autoAddComponent(xCreator, x, y))) {
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE)
+ SECOND_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) {
return false;
}
return true;
@ -668,17 +646,16 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
label.setWidgetValue(new WidgetValue(parameterArray[i].getName() + ":"));
XCreator xCreator = XCreatorUtils.createXCreator(label);
int x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + FIRST_H_LOCATION;
int y = addableRegionY + FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE);
if (!(this.autoAddComponent(xCreator, x, y))) {
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE)
+ FIRST_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) {
break;
}
// 每行显示5组
EditorHolder editor = new EditorHolder(parameterArray[i]);
editor.setWidgetName(parameterArray[i].getName());
xCreator = XCreatorUtils.createXCreator(editor);
x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + SECOND_H_LOCATION;
if (!(this.autoAddComponent(xCreator, x, y))) {
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE)
+ SECOND_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) {
break;
}
currentIndex++;

87
designer-realize/src/main/java/com/fr/design/dscolumn/DSColumnAdvancedPane.java

@ -7,6 +7,7 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.formula.CustomVariableResolver;
import com.fr.design.formula.FormulaFactory;
import com.fr.design.formula.FormulaTextField;
import com.fr.design.formula.SortFormulaPane;
import com.fr.design.formula.UIFormula;
import com.fr.design.gui.ibutton.UIButton;
@ -25,8 +26,17 @@ import com.fr.report.cell.cellattr.CellExpandAttr;
import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.cell.cellattr.core.group.SelectCount;
import javax.swing.*;
import java.awt.*;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -221,7 +231,7 @@ public class DSColumnAdvancedPane extends BasicPane {
return;
}
Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) {
if (!(value instanceof DSColumn)) {
return;
}
@ -238,7 +248,7 @@ public class DSColumnAdvancedPane extends BasicPane {
this.cellElement = cellElement;
Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) {
if (!(value instanceof DSColumn)) {
return;
}
DSColumn dSColumn = (DSColumn) value;
@ -246,8 +256,8 @@ public class DSColumnAdvancedPane extends BasicPane {
int sort = dSColumn.getOrder();
this.sortOrderComboBox.setSortOrder(new SortOrder(sort));
String sortFormula = dSColumn.getSortFormula();
sortFormulaTextField.setText(sortFormula);
BaseFormula sortFormulaObject = dSColumn.getSortFormulaObject();
sortFormulaTextField.setValue(sortFormulaObject);
}
public void update(CellElement cellElement) {
@ -263,15 +273,7 @@ public class DSColumnAdvancedPane extends BasicPane {
dSColumn.setOrder(this.sortOrderComboBox.getSortOrder().getOrder());
//lance:sort formula
String sText = null;
if (!(sortFormulaTextField.getText() == null || sortFormulaTextField.getText().trim().equals("") || sortFormulaTextField.getText().trim().equals("$$$"))) {
sText = new String(sortFormulaTextField.getText());
}
if (!(sText == null || sText.length() < 1)) {
dSColumn.setSortFormula(sText);
} else {
dSColumn.setSortFormula(null);
}
dSColumn.setSortFormulaObject(sortFormulaTextField.getValue());
}
}
@ -367,9 +369,9 @@ public class DSColumnAdvancedPane extends BasicPane {
int selectCountType = selectCount.getType();
this.selectCountComboBox.setSelectedIndex(selectCountType);
if (selectCountType == TOP.getValue()) {
this.topFormulaPane.populate(selectCount.getFormulaCount());
this.topFormulaPane.populateFormula(selectCount.getFormulaObject());
} else if (selectCountType == BOTTOM.getValue()) {
this.bottomFormulaPane.populate(selectCount.getFormulaCount());
this.bottomFormulaPane.populateFormula(selectCount.getFormulaObject());
} else if (selectCountType == SPECIFY.getValue()) {
this.serialTextField.setText(selectCount.getSerial());
}
@ -395,9 +397,9 @@ public class DSColumnAdvancedPane extends BasicPane {
dSColumn.setSelectCount(selectCount);
selectCount.setType(selectCountSelectIndex);
if (selectCountSelectIndex == TOP.getValue()) {
selectCount.setFormulaCount(this.topFormulaPane.getFormulaText());
selectCount.setFormulaObject(this.topFormulaPane.getFormula());
} else if (selectCountSelectIndex == BOTTOM.getValue()) {
selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText());
selectCount.setFormulaObject(this.bottomFormulaPane.getFormula());
} else if (selectCountSelectIndex == SPECIFY.getValue()) {
selectCount.setSerial(this.serialTextField.getText());
}
@ -407,19 +409,19 @@ public class DSColumnAdvancedPane extends BasicPane {
private static class JFormulaField extends JPanel {
private CellElement cellElement;
private UITextField formulaTextField;
private String defaultValue;
private FormulaTextField formulaTextField;
private BaseFormula defaultFormula;
public JFormulaField(String defaultValue) {
this.defaultValue = defaultValue;
this.defaultFormula = BaseFormula.createFormulaBuilder().build(defaultValue);
this.setLayout(FRGUIPaneFactory.createBoxFlowLayout());
UILabel bottomLabel = new UILabel("=");
bottomLabel.setFont(new Font("Dialog", Font.BOLD, 12));
this.add(bottomLabel);
formulaTextField = new UITextField(24);
formulaTextField = new FormulaTextField(24);
this.add(formulaTextField);
formulaTextField.setText(defaultValue);
formulaTextField.setValue(defaultFormula);
UIButton bottomFrmulaButton = new UIButton("...");
this.add(bottomFrmulaButton);
@ -440,15 +442,24 @@ public class DSColumnAdvancedPane extends BasicPane {
return this.formulaTextField.getText();
}
public void populateFormula(BaseFormula baseFormula) {
this.formulaTextField.setValue(baseFormula);
this.formulaTextField.setText(baseFormula.getPureContent());
}
public BaseFormula getFormula() {
return this.formulaTextField.getValue();
}
private ActionListener formulaButtonActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BaseFormula valueFormula = BaseFormula.createFormulaBuilder().build();
String text = formulaTextField.getText();
if (text == null || text.length() <= 0) {
valueFormula.setContent(defaultValue);
} else {
valueFormula.setContent(text);
BaseFormula valueFormula = formulaTextField.getValue();
if (valueFormula == null) {
valueFormula = BaseFormula.createFormulaBuilder().build();
}
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
@ -457,7 +468,7 @@ public class DSColumnAdvancedPane extends BasicPane {
return;
}
Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) {
if (!(value instanceof DSColumn)) {
return;
}
DSColumn dsColumn = (DSColumn) value;
@ -470,9 +481,9 @@ public class DSColumnAdvancedPane extends BasicPane {
public void doOk() {
BaseFormula valueFormula = formulaPane.update();
if (valueFormula.getContent().length() <= 1) {
formulaTextField.setText(defaultValue);
formulaTextField.setValue(defaultFormula);
} else {
formulaTextField.setText(valueFormula.getContent().substring(1));
formulaTextField.setValue(valueFormula);
}
}
}).setVisible(true);
@ -503,12 +514,12 @@ public class DSColumnAdvancedPane extends BasicPane {
DSColumn dSColumn = (DSColumn) value;
//formula
String valueFormula = dSColumn.getResult();
BaseFormula valueFormula = dSColumn.getResultObject();
if (valueFormula == null) {
valueFormula = "$$$";
valueFormula = BaseFormula.createFormulaBuilder().build("$$$");
}
formulaField.populateElement(cellElement);
formulaField.populate(valueFormula);
formulaField.populateFormula(valueFormula);
}
public void update(CellElement cellElement) {
@ -516,13 +527,13 @@ public class DSColumnAdvancedPane extends BasicPane {
return;
}
Object value = cellElement.getValue();
if (value == null || !(value instanceof DSColumn)) {
if (!(value instanceof DSColumn)) {
return;
}
DSColumn dSColumn = (DSColumn) (cellElement.getValue());
//formula
dSColumn.setResult(this.formulaField.getFormulaText());
dSColumn.setResultObject(this.formulaField.getFormula());
}
}

4
designer-realize/src/main/java/com/fr/design/parameter/ParameterDefinitePane.java

@ -218,6 +218,7 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
/**
* 导出菜单项用于图表设计器
*
* @return 菜单项
*/
public ShortCut[] shortcut4ExportMenu() {
@ -267,6 +268,8 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
bridge.setBackground(reportParameterAttr.getBackground());
bridge.setUseParamsTemplate(reportParameterAttr.isUseParamsTemplate());
}
currentIndex = reportParameterAttr.getCurrentIndex();
}
@ -378,6 +381,7 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus
paraDesignEditor.getParaTarget().setDesignSize(new Dimension(bridge.getDesignWidth(),
(int) paraDesignEditor.getParaTarget().getDesignSize().getHeight()));
reportParameterAttr.setParameterUI(parameterUI);
reportParameterAttr.setCurrentIndex(currentIndex);
return reportParameterAttr;
}

72
designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

@ -12,6 +12,7 @@ import com.fr.design.dscolumn.SelectedDataColumnPane;
import com.fr.design.event.UIObserverListener;
import com.fr.design.formula.CustomVariableResolver;
import com.fr.design.formula.FormulaFactory;
import com.fr.design.formula.FormulaTextField;
import com.fr.design.formula.UIFormula;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonGroup;
@ -645,6 +646,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/
public class ResultSetSortConfigPane extends JPanel {
private static final String DEFAULT_VALUE = "=";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build();
private JPanel contentPane;
private UIButtonGroup sortTypePane;
private JFormulaField formulaField;
@ -719,11 +721,11 @@ public class CellDSColumnEditor extends CellQuickEditor {
centerPane.setPreferredSize(new Dimension(156, 20));
TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, VGAP);
}
String sortFormula = dSColumn.getSortFormula();
if (sortFormula != null && sortFormula.length() >= 1) {
this.formulaField.populate(sortFormula);
BaseFormula baseFormula = dSColumn.getSortFormulaObject();
if (baseFormula == null) {
this.formulaField.populateFormula(DEFAULT_FORMULA);
} else {
this.formulaField.populate(DEFAULT_VALUE);
this.formulaField.populateFormula(baseFormula);
}
}
}
@ -740,7 +742,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) value;
dSColumn.setOrder(this.sortTypePane.getSelectedIndex());
dSColumn.setSortFormula(this.formulaField.getFormulaText());
dSColumn.setSortFormulaObject(this.formulaField.getFormula());
}
}
}
@ -774,6 +776,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/
public class ResultSetFilterConfigPane extends JPanel {
private static final String DEFAULT_VALUE = "=";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build(DEFAULT_VALUE);
private JPanel contentPane;
private UIComboBox rsComboBox;
@ -918,8 +921,8 @@ public class CellDSColumnEditor extends CellQuickEditor {
CardLayout setCardPaneLayout = (CardLayout) setCardPane.getLayout();
CardLayout tipCardPaneLayout = (CardLayout) tipCardPane.getLayout();
// 重置默认值
this.topFormulaPane.populate(DEFAULT_VALUE);
this.bottomFormulaPane.populate(DEFAULT_VALUE);
this.topFormulaPane.populateFormula(DEFAULT_FORMULA);
this.bottomFormulaPane.populateFormula(DEFAULT_FORMULA);
this.serialTextField.setText(StringUtils.EMPTY);
if (selectCount != null) {
@ -927,7 +930,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
this.rsComboBox.setSelectedIndex(selectCountType);
switch (FilterTypeEnum.getFilterByValue(selectCountType)) {
case TOP:
this.topFormulaPane.populate(selectCount.getFormulaCount());
this.topFormulaPane.populateFormula(selectCount.getFormulaObject());
//前N个
setCardPaneLayout.show(setCardPane, TOP.name());
tipCardPaneLayout.show(tipCardPane, TOP.name());
@ -938,7 +941,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 4, 0);
break;
case BOTTOM:
this.bottomFormulaPane.populate(selectCount.getFormulaCount());
this.bottomFormulaPane.populateFormula(selectCount.getFormulaObject());
//后N个
setCardPaneLayout.show(setCardPane, BOTTOM.name());
tipCardPaneLayout.show(tipCardPane, BOTTOM.name());
@ -1019,9 +1022,9 @@ public class CellDSColumnEditor extends CellQuickEditor {
dSColumn.setSelectCount(selectCount);
//noinspection Duplicates
if (selectedFilterIndex == TOP.getValue()) {
selectCount.setFormulaCount(this.topFormulaPane.getFormulaText());
selectCount.setFormulaObject(this.topFormulaPane.getFormula());
} else if (selectedFilterIndex == BOTTOM.getValue()) {
selectCount.setFormulaCount(this.bottomFormulaPane.getFormulaText());
selectCount.setFormulaObject(this.bottomFormulaPane.getFormula());
} else if (selectedFilterIndex == SPECIFY.getValue()) {
selectCount.setSerial(this.serialTextField.getText());
}
@ -1060,14 +1063,15 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/
public class JFormulaField extends JPanel {
private CellElement cellElement;
private UITextField formulaTextField;
private String defaultValue;
private FormulaTextField formulaTextField;
private BaseFormula defaultFormula;
public JFormulaField(String defaultValue) {
this.defaultValue = defaultValue;
formulaTextField = new UITextField();
formulaTextField.setText(defaultValue);
this.defaultFormula = BaseFormula.createFormulaBuilder().build(defaultValue);
formulaTextField = new FormulaTextField();
formulaTextField.setValue(defaultFormula);
JPanel textFieldPane = new JPanel(new BorderLayout());
textFieldPane.add(formulaTextField, BorderLayout.CENTER);
textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
@ -1095,6 +1099,16 @@ public class CellDSColumnEditor extends CellQuickEditor {
return this.formulaTextField.getText().trim();
}
public void populateFormula(BaseFormula baseFormula) {
this.formulaTextField.setValue(baseFormula);
}
public BaseFormula getFormula() {
return this.formulaTextField.getValue();
}
/**
* 添加事件监听器
*
@ -1114,16 +1128,14 @@ public class CellDSColumnEditor extends CellQuickEditor {
private ActionListener formulaButtonActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
BaseFormula valueFormula = BaseFormula.createFormulaBuilder().build();
String text = formulaTextField.getText();
if (text == null || text.length() <= 0) {
valueFormula.setContent(defaultValue);
} else {
valueFormula.setContent(text);
BaseFormula valueFormula = formulaTextField.getValue();
if (valueFormula == null) {
valueFormula = BaseFormula.createFormulaBuilder().build();
}
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();
if (cellElement != null) {
Object value = cellElement.getValue();
final Object value = cellElement.getValue();
if (value instanceof DSColumn) {
DSColumn dsColumn = (DSColumn) value;
String[] displayNames = DesignTableDataManager.getSelectedColumnNames(DesignTableDataManager.getEditingTableDataSource(), dsColumn.getDSName());
@ -1133,9 +1145,9 @@ public class CellDSColumnEditor extends CellQuickEditor {
public void doOk() {
BaseFormula valueFormula = formulaPane.update();
if (valueFormula.getContent().length() <= 1) {
formulaTextField.setText(defaultValue);
formulaTextField.setValue(defaultFormula);
} else {
formulaTextField.setText(valueFormula.getContent());
formulaTextField.setValue(valueFormula);
}
}
}).setVisible(true);
@ -1152,6 +1164,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
*/
public class CustomValuePane extends JPanel {
private static final String DEFAULT_VALUE = "=$$$";
private final BaseFormula DEFAULT_FORMULA = BaseFormula.createFormulaBuilder().build(DEFAULT_VALUE);
private JFormulaField formulaField;
@ -1171,11 +1184,11 @@ public class CellDSColumnEditor extends CellQuickEditor {
if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) value;
//formula
String valueFormula = dSColumn.getResult();
BaseFormula valueFormula = dSColumn.getResultObject();
if (valueFormula != null) {
formulaField.populate(valueFormula);
formulaField.populateFormula(valueFormula);
} else {
formulaField.populate(DEFAULT_VALUE);
formulaField.populateFormula(DEFAULT_FORMULA);
}
formulaField.populateElement(cellElement);
@ -1188,8 +1201,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
Object value = cellElement.getValue();
if (value instanceof DSColumn) {
DSColumn dSColumn = (DSColumn) (cellElement.getValue());
dSColumn.setResult(StringUtils.isEmpty(this.formulaField.getFormulaText()) ?
null : this.formulaField.getFormulaText());
dSColumn.setResultObject(this.formulaField.getFormula());
}
}
}

Loading…
Cancel
Save