Qinghui.Liu
4 years ago
9 changed files with 402 additions and 43 deletions
@ -1,11 +0,0 @@ |
|||||||
package com.fr.van.chart.box.data; |
|
||||||
|
|
||||||
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
|
||||||
import com.fr.design.mainframe.chart.gui.data.report.CategoryPlotReportDataContentPane; |
|
||||||
|
|
||||||
public class BoxPlotReportDataContentPane extends CategoryPlotReportDataContentPane { |
|
||||||
|
|
||||||
public BoxPlotReportDataContentPane(ChartDataPane parent) { |
|
||||||
super(parent); |
|
||||||
} |
|
||||||
} |
|
@ -1,4 +0,0 @@ |
|||||||
package com.fr.van.chart.box.data; |
|
||||||
|
|
||||||
public class BoxPlotReportResultDataSeriesPane { |
|
||||||
} |
|
@ -0,0 +1,137 @@ |
|||||||
|
package com.fr.van.chart.box.data.report; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
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.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||||
|
import com.fr.design.utils.gui.GUICoreUtils; |
||||||
|
import com.fr.plugin.chart.box.VanChartBoxPlot; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDefinition; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.awt.event.ActionEvent; |
||||||
|
import java.awt.event.ActionListener; |
||||||
|
|
||||||
|
public class BoxPlotReportDataContentPane extends AbstractReportDataContentPane { |
||||||
|
|
||||||
|
private UIButtonGroup dataType; |
||||||
|
|
||||||
|
private BoxPlotReportDetailedDataSeriesPane detailedDataSeriesPane; |
||||||
|
private BoxPlotReportResultDataSeriesPane resultDataSeriesPane; |
||||||
|
|
||||||
|
private Plot initplot; |
||||||
|
|
||||||
|
public BoxPlotReportDataContentPane(Plot plot, ChartDataPane parent) { |
||||||
|
this.initplot = plot; |
||||||
|
|
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
this.add(createDataTypePane(), BorderLayout.NORTH); |
||||||
|
this.add(createSeriesPane(parent), BorderLayout.CENTER); |
||||||
|
|
||||||
|
initDataTypeListener(); |
||||||
|
} |
||||||
|
|
||||||
|
private JPanel createDataTypePane() { |
||||||
|
JPanel pane = new JPanel(new BorderLayout(4, 0)); |
||||||
|
pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); |
||||||
|
|
||||||
|
UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Type")); |
||||||
|
label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT)); |
||||||
|
|
||||||
|
String[] names = new String[]{ |
||||||
|
Toolkit.i18nText("Fine-Design_Chart_Detailed_Data"), |
||||||
|
Toolkit.i18nText("Fine-Design_Chart_Result_Data") |
||||||
|
}; |
||||||
|
|
||||||
|
dataType = new UIButtonGroup(names); |
||||||
|
dataType.setPreferredSize(new Dimension(100, 20)); |
||||||
|
|
||||||
|
pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null})); |
||||||
|
pane.setPreferredSize(new Dimension(246, 30)); |
||||||
|
pane.setBorder(BorderFactory.createEmptyBorder(0, 24, 10, 15)); |
||||||
|
|
||||||
|
return pane; |
||||||
|
} |
||||||
|
|
||||||
|
private JPanel createSeriesPane(ChartDataPane parent) { |
||||||
|
detailedDataSeriesPane = new BoxPlotReportDetailedDataSeriesPane(parent); |
||||||
|
resultDataSeriesPane = new BoxPlotReportResultDataSeriesPane(); |
||||||
|
|
||||||
|
JPanel pane = new JPanel(new BorderLayout(4, 0)); |
||||||
|
|
||||||
|
pane.add(resultDataSeriesPane, BorderLayout.NORTH); |
||||||
|
pane.add(detailedDataSeriesPane, BorderLayout.CENTER); |
||||||
|
|
||||||
|
return pane; |
||||||
|
} |
||||||
|
|
||||||
|
private void initDataTypeListener() { |
||||||
|
dataType.addActionListener(new ActionListener() { |
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
checkDataPaneVisible(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkDataPaneVisible() { |
||||||
|
if (detailedDataSeriesPane != null) { |
||||||
|
detailedDataSeriesPane.setVisible(dataType.getSelectedIndex() == 0); |
||||||
|
} |
||||||
|
if (resultDataSeriesPane != null) { |
||||||
|
resultDataSeriesPane.setVisible(dataType.getSelectedIndex() == 1); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(ChartCollection collection) { |
||||||
|
collection.getSelectedChart().setFilterDefinition(new VanBoxReportDefinition()); |
||||||
|
VanBoxReportDefinition report = BoxReportDefinitionHelper.getBoxReportDefinition(collection); |
||||||
|
|
||||||
|
if (report != null) { |
||||||
|
boolean isDetailed = dataType.getSelectedIndex() == 0; |
||||||
|
|
||||||
|
report.setDetailed(isDetailed); |
||||||
|
((VanChartBoxPlot) initplot).setDetailed(isDetailed); |
||||||
|
} |
||||||
|
if (detailedDataSeriesPane != null) { |
||||||
|
detailedDataSeriesPane.updateBean(collection); |
||||||
|
} |
||||||
|
if (resultDataSeriesPane != null) { |
||||||
|
resultDataSeriesPane.updateBean(collection); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(ChartCollection collection) { |
||||||
|
VanBoxReportDefinition report = BoxReportDefinitionHelper.getBoxReportDefinition(collection); |
||||||
|
|
||||||
|
if (report == null) { |
||||||
|
dataType.setSelectedIndex(0); |
||||||
|
checkDataPaneVisible(); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
if (dataType != null) { |
||||||
|
dataType.setSelectedIndex(BoxReportDefinitionHelper.isDetailedReportDataType(collection) ? 0 : 1); |
||||||
|
} |
||||||
|
if (detailedDataSeriesPane != null) { |
||||||
|
detailedDataSeriesPane.populateBean(collection); |
||||||
|
} |
||||||
|
if (resultDataSeriesPane != null) { |
||||||
|
resultDataSeriesPane.populateBean(collection); |
||||||
|
} |
||||||
|
|
||||||
|
checkDataPaneVisible(); |
||||||
|
} |
||||||
|
|
||||||
|
protected String[] columnNames() { |
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package com.fr.van.chart.box.data.report; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.mainframe.chart.gui.ChartDataPane; |
||||||
|
import com.fr.design.mainframe.chart.gui.data.report.CategoryPlotReportDataContentPane; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDefinition; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDetailedDefinition; |
||||||
|
|
||||||
|
public class BoxPlotReportDetailedDataSeriesPane extends CategoryPlotReportDataContentPane { |
||||||
|
|
||||||
|
public BoxPlotReportDetailedDataSeriesPane(ChartDataPane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
VanBoxReportDetailedDefinition definition = BoxReportDefinitionHelper.getBoxReportDetailedDefinition(ob); |
||||||
|
|
||||||
|
if (definition == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
this.populateDefinition(definition); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
VanBoxReportDefinition report = BoxReportDefinitionHelper.getBoxReportDefinition(ob); |
||||||
|
|
||||||
|
if (report == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
VanBoxReportDetailedDefinition detailedDefinition = new VanBoxReportDetailedDefinition(); |
||||||
|
|
||||||
|
this.updateDefinition(detailedDefinition); |
||||||
|
|
||||||
|
report.setDetailedDefinition(detailedDefinition); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,133 @@ |
|||||||
|
package com.fr.van.chart.box.data.report; |
||||||
|
|
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.design.formula.TinyFormulaPane; |
||||||
|
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.data.report.AbstractReportDataContentPane; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDefinition; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportResultDefinition; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
|
||||||
|
public class BoxPlotReportResultDataSeriesPane extends AbstractReportDataContentPane { |
||||||
|
|
||||||
|
private TinyFormulaPane category; |
||||||
|
private TinyFormulaPane seriesName; |
||||||
|
private TinyFormulaPane max; |
||||||
|
private TinyFormulaPane q3; |
||||||
|
private TinyFormulaPane median; |
||||||
|
private TinyFormulaPane q1; |
||||||
|
private TinyFormulaPane min; |
||||||
|
|
||||||
|
public BoxPlotReportResultDataSeriesPane() { |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
initContentComponents(); |
||||||
|
|
||||||
|
JPanel panel = createContentPane(); |
||||||
|
|
||||||
|
panel.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15)); |
||||||
|
|
||||||
|
this.add(panel, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
private void initContentComponents() { |
||||||
|
|
||||||
|
category = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Category")); |
||||||
|
seriesName = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Series_Name")); |
||||||
|
max = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Data_Max")); |
||||||
|
q3 = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Data_Q3")); |
||||||
|
median = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Data_Median")); |
||||||
|
q1 = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Data_Q1")); |
||||||
|
min = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Data_Min")); |
||||||
|
} |
||||||
|
|
||||||
|
private JPanel createContentPane() { |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double[] row = {p, p, p, p, p, p, p}; |
||||||
|
double[] col = {f}; |
||||||
|
|
||||||
|
Component[][] components = new Component[][]{ |
||||||
|
new Component[]{category}, |
||||||
|
new Component[]{seriesName}, |
||||||
|
new Component[]{max}, |
||||||
|
new Component[]{q3}, |
||||||
|
new Component[]{median}, |
||||||
|
new Component[]{q1}, |
||||||
|
new Component[]{min} |
||||||
|
}; |
||||||
|
|
||||||
|
return TableLayoutHelper.createTableLayoutPane(components, row, col); |
||||||
|
} |
||||||
|
|
||||||
|
private TinyFormulaPane createTinyFormulaPaneWithTitle(final String title) { |
||||||
|
|
||||||
|
return new TinyFormulaPane() { |
||||||
|
protected void initLayout() { |
||||||
|
this.setLayout(new BorderLayout(4, 0)); |
||||||
|
|
||||||
|
UILabel label = new UILabel(title); |
||||||
|
label.setPreferredSize(new Dimension(75, 20)); |
||||||
|
this.add(label, BorderLayout.WEST); |
||||||
|
|
||||||
|
formulaTextField.setPreferredSize(new Dimension(100, 20)); |
||||||
|
this.add(formulaTextField, BorderLayout.CENTER); |
||||||
|
this.add(formulaTextFieldButton, BorderLayout.EAST); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(ChartCollection ob) { |
||||||
|
VanBoxReportResultDefinition detailedDefinition = BoxReportDefinitionHelper.getBoxReportResultDefinition(ob); |
||||||
|
|
||||||
|
if (detailedDefinition == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
populateFormulaPane(category, detailedDefinition.getCategoryName()); |
||||||
|
populateFormulaPane(seriesName, detailedDefinition.getSeriesName()); |
||||||
|
populateFormulaPane(max, detailedDefinition.getMax()); |
||||||
|
populateFormulaPane(q3, detailedDefinition.getQ3()); |
||||||
|
populateFormulaPane(median, detailedDefinition.getMedian()); |
||||||
|
populateFormulaPane(q1, detailedDefinition.getQ1()); |
||||||
|
populateFormulaPane(min, detailedDefinition.getMin()); |
||||||
|
} |
||||||
|
|
||||||
|
private void populateFormulaPane(TinyFormulaPane pane, Object ob) { |
||||||
|
if (ob != null) { |
||||||
|
pane.populateBean(ob.toString()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBean(ChartCollection ob) { |
||||||
|
VanBoxReportDefinition report = BoxReportDefinitionHelper.getBoxReportDefinition(ob); |
||||||
|
|
||||||
|
if (report == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
VanBoxReportResultDefinition resultDefinition = new VanBoxReportResultDefinition(); |
||||||
|
|
||||||
|
resultDefinition.setCategoryName(canBeFormula(category.getUITextField().getText())); |
||||||
|
resultDefinition.setSeriesName(canBeFormula(seriesName.getUITextField().getText())); |
||||||
|
resultDefinition.setMax(canBeFormula(max.getUITextField().getText())); |
||||||
|
resultDefinition.setQ3(canBeFormula(q3.getUITextField().getText())); |
||||||
|
resultDefinition.setMedian(canBeFormula(median.getUITextField().getText())); |
||||||
|
resultDefinition.setQ1(canBeFormula(q1.getUITextField().getText())); |
||||||
|
resultDefinition.setMin(canBeFormula(min.getUITextField().getText())); |
||||||
|
|
||||||
|
report.setResultDefinition(resultDefinition); |
||||||
|
} |
||||||
|
|
||||||
|
protected String[] columnNames() { |
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
package com.fr.van.chart.box.data.report; |
||||||
|
|
||||||
|
import com.fr.base.chart.chartdata.TopDefinitionProvider; |
||||||
|
import com.fr.chart.chartattr.Chart; |
||||||
|
import com.fr.chart.chartattr.ChartCollection; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDefinition; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportDetailedDefinition; |
||||||
|
import com.fr.plugin.chart.box.data.VanBoxReportResultDefinition; |
||||||
|
|
||||||
|
public class BoxReportDefinitionHelper { |
||||||
|
|
||||||
|
public static VanBoxReportDefinition getBoxReportDefinition(ChartCollection collection) { |
||||||
|
if (collection != null) { |
||||||
|
|
||||||
|
Chart chart = collection.getSelectedChart(); |
||||||
|
|
||||||
|
if (chart != null) { |
||||||
|
TopDefinitionProvider definitionProvider = chart.getFilterDefinition(); |
||||||
|
|
||||||
|
if (definitionProvider instanceof VanBoxReportDefinition) { |
||||||
|
return (VanBoxReportDefinition) definitionProvider; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public static VanBoxReportResultDefinition getBoxReportResultDefinition(ChartCollection collection) { |
||||||
|
VanBoxReportDefinition report = getBoxReportDefinition(collection); |
||||||
|
|
||||||
|
if (report != null) { |
||||||
|
return report.getResultDefinition(); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public static VanBoxReportDetailedDefinition getBoxReportDetailedDefinition(ChartCollection collection) { |
||||||
|
VanBoxReportDefinition report = getBoxReportDefinition(collection); |
||||||
|
|
||||||
|
if (report != null) { |
||||||
|
return report.getDetailedDefinition(); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isDetailedReportDataType(ChartCollection collection) { |
||||||
|
VanBoxReportDefinition report = getBoxReportDefinition(collection); |
||||||
|
|
||||||
|
if (report != null) { |
||||||
|
return report.isDetailed(); |
||||||
|
} |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue