forked from fanruan/design
Browse Source
Merge in DESIGN/design from ~BJORN/design:feature/10.0 to feature/10.0 * commit '303c0483786c7cb68148400a849c1e0b65a2b369': CHART-15566 代码质量 CHART-15566 图表预定义样式面板persist/11.0
Bjorn
4 years ago
54 changed files with 1927 additions and 408 deletions
@ -0,0 +1,94 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.dialog.MultiTabPane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartAxisStylePane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartBackgroundStylePane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartDataSheetStylePane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartLabelStylePane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartLegendStylePane; |
||||||
|
import com.fr.design.mainframe.predefined.ui.detail.chart.ChartTitleStylePane; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-16 |
||||||
|
*/ |
||||||
|
public class ChartStyleSettingPane extends MultiTabPane<PredefinedChartStyle> { |
||||||
|
|
||||||
|
private ChartTitleStylePane chartTitleStylePane; |
||||||
|
private ChartLegendStylePane chartLegendStylePane; |
||||||
|
private ChartLabelStylePane chartLabelPane; |
||||||
|
private ChartAxisStylePane chartAxisStylePane; |
||||||
|
private ChartDataSheetStylePane chartDataSheetStylePane; |
||||||
|
private ChartBackgroundStylePane chartBackgroundStylePane; |
||||||
|
|
||||||
|
public ChartStyleSettingPane() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void initLayout() { |
||||||
|
super.initLayout(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected List<BasicPane> initPaneList() { |
||||||
|
this.chartTitleStylePane = new ChartTitleStylePane(); |
||||||
|
this.chartLegendStylePane = new ChartLegendStylePane(); |
||||||
|
this.chartLabelPane = new ChartLabelStylePane(); |
||||||
|
this.chartAxisStylePane = new ChartAxisStylePane(); |
||||||
|
this.chartDataSheetStylePane = new ChartDataSheetStylePane(); |
||||||
|
this.chartBackgroundStylePane = new ChartBackgroundStylePane(); |
||||||
|
paneList = new ArrayList<>(); |
||||||
|
paneList.add(this.chartTitleStylePane); |
||||||
|
paneList.add(this.chartLegendStylePane); |
||||||
|
paneList.add(this.chartLabelPane); |
||||||
|
paneList.add(this.chartAxisStylePane); |
||||||
|
paneList.add(this.chartDataSheetStylePane); |
||||||
|
paneList.add(this.chartBackgroundStylePane); |
||||||
|
return paneList; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(PredefinedChartStyle ob) { |
||||||
|
chartTitleStylePane.populate(ob); |
||||||
|
chartLegendStylePane.populate(ob); |
||||||
|
chartLabelPane.populate(ob); |
||||||
|
chartAxisStylePane.populate(ob); |
||||||
|
chartDataSheetStylePane.populate(ob); |
||||||
|
chartBackgroundStylePane.populate(ob); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void updateBean(PredefinedChartStyle ob) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public PredefinedChartStyle updateBean() { |
||||||
|
PredefinedChartStyle chartStyle = new PredefinedChartStyle(); |
||||||
|
chartTitleStylePane.update(chartStyle); |
||||||
|
chartLegendStylePane.update(chartStyle); |
||||||
|
chartLabelPane.update(chartStyle); |
||||||
|
chartAxisStylePane.update(chartStyle); |
||||||
|
chartDataSheetStylePane.update(chartStyle); |
||||||
|
chartBackgroundStylePane.update(chartStyle); |
||||||
|
return chartStyle; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean accept(Object ob) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,292 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail; |
||||||
|
|
||||||
|
import com.fr.base.ChartColorMatching; |
||||||
|
import com.fr.base.ChartPreStyleConfig; |
||||||
|
import com.fr.base.Utils; |
||||||
|
import com.fr.chart.base.ChartConstants; |
||||||
|
import com.fr.config.predefined.ColorFillStyle; |
||||||
|
import com.fr.config.predefined.PredefinedColorStyle; |
||||||
|
import com.fr.design.beans.BasicBeanPane; |
||||||
|
import com.fr.design.constants.LayoutConstants; |
||||||
|
import com.fr.design.event.UIObserverListener; |
||||||
|
import com.fr.design.gui.icombobox.ColorSchemeComboBox; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.layout.FRGUIPaneFactory; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
import com.fr.design.style.background.gradient.FixedGradientBar; |
||||||
|
import com.fr.design.style.color.ColorAdjustPane; |
||||||
|
import com.fr.stable.StringUtils; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.List; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.awt.Color; |
||||||
|
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-09-15 |
||||||
|
*/ |
||||||
|
public class ColorFillStylePane extends BasicBeanPane<ColorFillStyle> { |
||||||
|
|
||||||
|
private ColorSchemeComboBox styleSelectBox; |
||||||
|
private JPanel customPane; |
||||||
|
private JPanel changeColorSetPane; |
||||||
|
private FixedGradientBar colorGradient; |
||||||
|
|
||||||
|
private CardLayout cardLayout; |
||||||
|
|
||||||
|
private ColorAdjustPane colorAdjustPane; |
||||||
|
|
||||||
|
private Color[] gradientColors; |
||||||
|
private Color[] accColors; |
||||||
|
|
||||||
|
private boolean gradientSelect = false; |
||||||
|
|
||||||
|
public ColorFillStylePane() { |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
|
||||||
|
styleSelectBox = createColorSchemeComboBox(); |
||||||
|
customPane = new JPanel(FRGUIPaneFactory.createBorderLayout()) { |
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() { |
||||||
|
if (!customPane.isVisible()) { |
||||||
|
return new Dimension(0, 0); |
||||||
|
} |
||||||
|
if (!gradientSelect) { |
||||||
|
return colorAdjustPane.getPreferredSize(); |
||||||
|
} |
||||||
|
return colorGradient.getPreferredSize(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
changeColorSetPane = new JPanel(cardLayout = new CardLayout()); |
||||||
|
changeColorSetPane.add(colorGradient = new FixedGradientBar(4, 130), "gradient"); |
||||||
|
gradientColors = new Color[]{Color.WHITE, FixedGradientBar.NEW_CHARACTER}; |
||||||
|
changeColorSetPane.add(colorAdjustPane = new ColorAdjustPane(), "acc"); |
||||||
|
accColors = ColorAdjustPane.DEFAULT_COLORS; |
||||||
|
cardLayout.show(changeColorSetPane, "acc"); |
||||||
|
customPane.add(changeColorSetPane, BorderLayout.CENTER); |
||||||
|
initListener(); |
||||||
|
initLayout(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public ColorSchemeComboBox getStyleSelectBox() { |
||||||
|
return styleSelectBox; |
||||||
|
} |
||||||
|
|
||||||
|
public JPanel getCustomPane() { |
||||||
|
return customPane; |
||||||
|
} |
||||||
|
|
||||||
|
protected ColorSchemeComboBox createColorSchemeComboBox() { |
||||||
|
return new ColorSchemeComboBox(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initListener() { |
||||||
|
colorAdjustPane.registerChangeListener(new UIObserverListener() { |
||||||
|
@Override |
||||||
|
public void doChange() { |
||||||
|
accColors = colorAdjustPane.getColors(); |
||||||
|
if (styleSelectBox.getSelectType() != ColorSchemeComboBox.SelectType.COMBINATION_COLOR) { |
||||||
|
styleSelectBox.setSelectType(ColorSchemeComboBox.SelectType.COMBINATION_COLOR); |
||||||
|
} |
||||||
|
ColorFillStylePane.this.revalidate(); |
||||||
|
} |
||||||
|
}); |
||||||
|
colorGradient.registerChangeListener(new UIObserverListener() { |
||||||
|
@Override |
||||||
|
public void doChange() { |
||||||
|
gradientColors[0] = colorGradient.getSelectColorPointBtnP1().getColorInner(); |
||||||
|
gradientColors[1] = colorGradient.getSelectColorPointBtnP2().getColorInner(); |
||||||
|
if (styleSelectBox.getSelectType() != ColorSchemeComboBox.SelectType.GRADATION_COLOR) { |
||||||
|
styleSelectBox.setSelectType(ColorSchemeComboBox.SelectType.GRADATION_COLOR); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
styleSelectBox.addActionListener(new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
styleSelectBoxChange(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
protected void styleSelectBoxChange() { |
||||||
|
switch (styleSelectBox.getSelectType()) { |
||||||
|
case COMBINATION_COLOR: |
||||||
|
colorAdjustPane.updateColor(accColors); |
||||||
|
cardLayout.show(changeColorSetPane, "acc"); |
||||||
|
gradientSelect = false; |
||||||
|
break; |
||||||
|
case GRADATION_COLOR: |
||||||
|
colorGradient.updateColor(gradientColors[0], gradientColors[1]); |
||||||
|
cardLayout.show(changeColorSetPane, "gradient"); |
||||||
|
gradientSelect = true; |
||||||
|
break; |
||||||
|
default: |
||||||
|
ColorSchemeComboBox.ColorInfo selectColorInfo = styleSelectBox.getSelectColorInfo(); |
||||||
|
if (selectColorInfo == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (selectColorInfo.isGradient()) { |
||||||
|
colorGradient.updateColor(selectColorInfo.getColors().get(0), selectColorInfo.getColors().get(1)); |
||||||
|
cardLayout.show(changeColorSetPane, "gradient"); |
||||||
|
gradientSelect = true; |
||||||
|
} else { |
||||||
|
colorAdjustPane.updateColor(selectColorInfo.getColors().toArray(new Color[]{})); |
||||||
|
cardLayout.show(changeColorSetPane, "acc"); |
||||||
|
gradientSelect = false; |
||||||
|
} |
||||||
|
break; |
||||||
|
} |
||||||
|
ColorFillStylePane.this.revalidate(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initLayout() { |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(getContentPane(), BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel getContentPane() { |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double e = 155; |
||||||
|
double[] columnSize = {f, e}; |
||||||
|
double[] rowSize = {p, p, p}; |
||||||
|
|
||||||
|
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(contentPaneComponents(), rowSize, columnSize, 12, LayoutConstants.VGAP_LARGE); |
||||||
|
return panel; |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] contentPaneComponents() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Template_Color")), styleSelectBox}, |
||||||
|
new Component[]{null, customPane}, |
||||||
|
|
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Color"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBean(PredefinedColorStyle predefinedColorStyle) { |
||||||
|
populateBean(predefinedColorStyle.getColorFillStyle()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void populateBean(ColorFillStyle colorFillStyle) { |
||||||
|
String fillStyleName = colorFillStyle == null ? "" : colorFillStyle.getFillStyleName(); |
||||||
|
if (StringUtils.isBlank(fillStyleName) || !styleSelectBox.getItems().contains(fillStyleName)) { |
||||||
|
if (colorFillStyle == null || colorFillStyle.getColorStyle() == ChartConstants.COLOR_DEFAULT) { |
||||||
|
styleSelectBox.setSelectType(ColorSchemeComboBox.SelectType.DEFAULT);//默认
|
||||||
|
} else { |
||||||
|
int colorStyle = colorFillStyle.getColorStyle(); |
||||||
|
if (colorStyle == ChartConstants.COLOR_GRADIENT) { |
||||||
|
gradientColors[0] = colorFillStyle.getColorList().get(0); |
||||||
|
gradientColors[1] = colorFillStyle.getColorList().get(1); |
||||||
|
styleSelectBox.setSelectType(ColorSchemeComboBox.SelectType.GRADATION_COLOR); |
||||||
|
} else { |
||||||
|
int colorSize = colorFillStyle.getColorList().size(); |
||||||
|
accColors = new Color[colorSize]; |
||||||
|
for (int i = 0; i < colorSize; i++) { |
||||||
|
accColors[i] = colorFillStyle.getColorList().get(i); |
||||||
|
} |
||||||
|
styleSelectBox.setSelectType(ColorSchemeComboBox.SelectType.COMBINATION_COLOR); |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
styleSelectBox.setSelectedItem(fillStyleName); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public PredefinedColorStyle update() { |
||||||
|
PredefinedColorStyle predefinedColorStyle = new PredefinedColorStyle(); |
||||||
|
predefinedColorStyle.setColorFillStyle(updateBean()); |
||||||
|
return predefinedColorStyle; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ColorFillStyle updateBean() { |
||||||
|
switch (styleSelectBox.getSelectType()) { |
||||||
|
case COMBINATION_COLOR: |
||||||
|
return updateCombinationColor(); |
||||||
|
case GRADATION_COLOR: |
||||||
|
return updateGradationColor(); |
||||||
|
case DEFAULT: |
||||||
|
return updateDefaultColor(); |
||||||
|
default: |
||||||
|
return updateNormalColor(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private ColorFillStyle updateCombinationColor() { |
||||||
|
ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||||
|
List<Color> colorList = colorFillStyle.getColorList(); |
||||||
|
colorFillStyle.setColorStyle(ChartConstants.COLOR_ACC); |
||||||
|
for (int i = 0, length = accColors.length; i < length; i++) { |
||||||
|
colorList.add(accColors[i]); |
||||||
|
} |
||||||
|
colorFillStyle.setCustomFillStyle(true); |
||||||
|
return colorFillStyle; |
||||||
|
} |
||||||
|
|
||||||
|
private ColorFillStyle updateGradationColor() { |
||||||
|
ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||||
|
List<Color> colorList = colorFillStyle.getColorList(); |
||||||
|
colorFillStyle.setColorStyle(ChartConstants.COLOR_GRADIENT); |
||||||
|
Color start = gradientColors[0]; |
||||||
|
Color end = gradientColors[1]; |
||||||
|
colorList.add(start); |
||||||
|
colorList.add(end); |
||||||
|
colorFillStyle.setCustomFillStyle(true); |
||||||
|
return colorFillStyle; |
||||||
|
} |
||||||
|
|
||||||
|
private ColorFillStyle updateDefaultColor() { |
||||||
|
ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||||
|
colorFillStyle.setColorStyle(ChartConstants.COLOR_DEFAULT); |
||||||
|
return colorFillStyle; |
||||||
|
} |
||||||
|
|
||||||
|
private ColorFillStyle updateNormalColor() { |
||||||
|
ChartPreStyleConfig manager = ChartPreStyleConfig.getInstance(); |
||||||
|
Object preStyle = manager.getPreStyle(styleSelectBox.getSelectedItem()); |
||||||
|
if (preStyle instanceof ChartColorMatching) { |
||||||
|
ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||||
|
ChartColorMatching chartColorMatching = (ChartColorMatching) preStyle; |
||||||
|
colorFillStyle.setColorStyle(chartColorMatching.getGradient() ? ChartConstants.COLOR_GRADIENT : ChartConstants.COLOR_ACC); |
||||||
|
List<Color> colorList = chartColorMatching.getColorList(); |
||||||
|
if (colorList == null || colorList.size() == 0) { |
||||||
|
colorList = Arrays.asList(ChartConstants.CHART_COLOR_ARRAY); |
||||||
|
} |
||||||
|
colorFillStyle.setColorList(colorList); |
||||||
|
colorFillStyle.setFillStyleName(Utils.objectToString(styleSelectBox.getSelectedItem())); |
||||||
|
return colorFillStyle; |
||||||
|
} else { |
||||||
|
return updateModifyColor(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private ColorFillStyle updateModifyColor() { |
||||||
|
ColorFillStyle colorFillStyle = new ColorFillStyle(); |
||||||
|
ColorSchemeComboBox.ColorInfo selectColorInfo = styleSelectBox.getSelectColorInfo(); |
||||||
|
boolean isGradient = selectColorInfo.isGradient(); |
||||||
|
List<Color> colors = selectColorInfo.getColors(); |
||||||
|
colorFillStyle.setColorList(colors); |
||||||
|
colorFillStyle.setCustomFillStyle(true); |
||||||
|
colorFillStyle.setColorStyle(isGradient ? ChartConstants.COLOR_GRADIENT : ChartConstants.COLOR_ACC); |
||||||
|
return colorFillStyle; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.constants.LayoutConstants; |
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.gui.icontainer.UIScrollPane; |
||||||
|
import com.fr.design.layout.FRGUIPaneFactory; |
||||||
|
import com.fr.design.layout.TableLayout; |
||||||
|
import com.fr.design.layout.TableLayoutHelper; |
||||||
|
|
||||||
|
import javax.swing.BorderFactory; |
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-17 |
||||||
|
*/ |
||||||
|
public abstract class AbstractChartStylePane extends BasicPane { |
||||||
|
|
||||||
|
public AbstractChartStylePane() { |
||||||
|
initComponents(); |
||||||
|
initPane(); |
||||||
|
} |
||||||
|
|
||||||
|
protected abstract void initComponents(); |
||||||
|
|
||||||
|
protected void initPane() { |
||||||
|
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||||
|
double e = 155; |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double[] columnSize = {p, e}; |
||||||
|
JPanel gapTableLayoutPane = TableLayoutHelper.createGapTableLayoutPane(getComponent(), getRows(p), columnSize, 20, LayoutConstants.VGAP_LARGE); |
||||||
|
gapTableLayoutPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); |
||||||
|
UIScrollPane rightTopPane = new UIScrollPane(gapTableLayoutPane); |
||||||
|
rightTopPane.setBorder(BorderFactory.createEmptyBorder()); |
||||||
|
this.add(rightTopPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
protected abstract Component[][] getComponent(); |
||||||
|
|
||||||
|
protected abstract double[] getRows(double p); |
||||||
|
|
||||||
|
public abstract void populate(PredefinedChartStyle chartStyle); |
||||||
|
|
||||||
|
public abstract void update(PredefinedChartStyle chartStyle); |
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.style.color.ColorSelectBox; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-16 |
||||||
|
*/ |
||||||
|
public class ChartAxisStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
//轴标题字体样式
|
||||||
|
private ChartFontPane titleFontPane; |
||||||
|
|
||||||
|
//轴标签字体样式
|
||||||
|
private ChartFontPane labelFontPane; |
||||||
|
|
||||||
|
//轴线颜色
|
||||||
|
private ColorSelectBox axisLineColor; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
titleFontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Axis_Title_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
labelFontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
axisLineColor = new ColorSelectBox(100); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{titleFontPane, null}, |
||||||
|
new Component[]{labelFontPane, null}, |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Axis_Line_Color")), axisLineColor} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p, p, p}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Axis"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
titleFontPane.populate(chartStyle.getAxisTitleFont()); |
||||||
|
labelFontPane.populate(chartStyle.getAxisLabelFont()); |
||||||
|
axisLineColor.setSelectObject(chartStyle.getAxisLineColor()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setAxisTitleFont(titleFontPane.update()); |
||||||
|
chartStyle.setAxisLabelFont(labelFontPane.update()); |
||||||
|
chartStyle.setAxisLineColor(axisLineColor.getSelectObject()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,113 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.base.background.ImageBackground; |
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.gui.icombobox.UIComboBox; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.VanChartGradientPane; |
||||||
|
import com.fr.design.style.color.ColorSelectBox; |
||||||
|
import com.fr.general.Background; |
||||||
|
import com.fr.stable.Constants; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.awt.CardLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.Dimension; |
||||||
|
import java.awt.event.ItemEvent; |
||||||
|
import java.awt.event.ItemListener; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-17 |
||||||
|
*/ |
||||||
|
public class ChartBackgroundStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
private UIComboBox typeComboBox; |
||||||
|
private List<BackgroundQuickPane> paneList; |
||||||
|
private JPanel centerPane; |
||||||
|
//网格线颜色
|
||||||
|
private ColorSelectBox mainGridColor; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
mainGridColor = new ColorSelectBox(100); |
||||||
|
|
||||||
|
typeComboBox = new UIComboBox(); |
||||||
|
final CardLayout cardlayout = new CardLayout(); |
||||||
|
initList(); |
||||||
|
|
||||||
|
centerPane = new JPanel(cardlayout) { |
||||||
|
@Override |
||||||
|
public Dimension getPreferredSize() {// AUGUST:使用当前面板的的高度
|
||||||
|
int index = typeComboBox.getSelectedIndex(); |
||||||
|
return new Dimension(super.getPreferredSize().width, paneList.get(index).getPreferredSize().height); |
||||||
|
} |
||||||
|
}; |
||||||
|
for (int i = 0; i < paneList.size(); i++) { |
||||||
|
BackgroundQuickPane pane = paneList.get(i); |
||||||
|
typeComboBox.addItem(pane.title4PopupWindow()); |
||||||
|
centerPane.add(pane, pane.title4PopupWindow()); |
||||||
|
} |
||||||
|
|
||||||
|
typeComboBox.addItemListener(new ItemListener() { |
||||||
|
@Override |
||||||
|
public void itemStateChanged(ItemEvent e) { |
||||||
|
cardlayout.show(centerPane, (String) typeComboBox.getSelectedItem()); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{null, null}, |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Area_Background_Color")), typeComboBox}, |
||||||
|
new Component[]{null, centerPane}, |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Grid_Line_Color")), mainGridColor} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p, p, p, p}; |
||||||
|
} |
||||||
|
|
||||||
|
private void initList() { |
||||||
|
paneList = new ArrayList<>(); |
||||||
|
paneList.add(new NullBackgroundQuickPane()); |
||||||
|
paneList.add(new ColorBackgroundQuickPane()); |
||||||
|
paneList.add(new ImageBackgroundQuickPane(false)); |
||||||
|
paneList.add(new VanChartGradientPane()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Background"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
Background background = chartStyle.getChartBackground(); |
||||||
|
for (int i = 0; i < paneList.size(); i++) { |
||||||
|
BackgroundQuickPane pane = paneList.get(i); |
||||||
|
if (pane.accept(background)) { |
||||||
|
pane.populateBean(background); |
||||||
|
typeComboBox.setSelectedIndex(i); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
mainGridColor.setSelectObject(chartStyle.getGridMainLineColor()); |
||||||
|
} |
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setChartBackground(paneList.get(typeComboBox.getSelectedIndex()).updateBean()); |
||||||
|
if (chartStyle.getChartBackground() instanceof ImageBackground) { |
||||||
|
((ImageBackground) chartStyle.getChartBackground()).setLayout(Constants.IMAGE_EXTEND); |
||||||
|
} |
||||||
|
chartStyle.setGridMainLineColor(mainGridColor.getSelectObject()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.style.color.ColorSelectBox; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-17 |
||||||
|
*/ |
||||||
|
public class ChartDataSheetStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
//字体样式
|
||||||
|
private ChartFontPane fontPane; |
||||||
|
|
||||||
|
//边框颜色
|
||||||
|
private ColorSelectBox borderColor; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
fontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_DataSheet_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
borderColor = new ColorSelectBox(100); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{fontPane, null}, |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Border_Color")), borderColor} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p, p, p}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Data_Sheet"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
fontPane.populate(chartStyle.getDataSheetFont()); |
||||||
|
borderColor.setSelectObject(chartStyle.getDataSheetBorderColor()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setDataSheetFont(fontPane.update()); |
||||||
|
chartStyle.setDataSheetBorderColor(borderColor.getSelectObject()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,160 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.base.BaseUtils; |
||||||
|
import com.fr.base.FRContext; |
||||||
|
import com.fr.base.Utils; |
||||||
|
import com.fr.design.constants.LayoutConstants; |
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.event.UIObserverListener; |
||||||
|
import com.fr.design.gui.ibutton.UIColorButton; |
||||||
|
import com.fr.design.gui.ibutton.UIToggleButton; |
||||||
|
import com.fr.design.gui.icombobox.UIComboBox; |
||||||
|
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.utils.gui.GUICoreUtils; |
||||||
|
import com.fr.general.FRFont; |
||||||
|
import com.fr.general.GeneralUtils; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.SwingConstants; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
import java.awt.Component; |
||||||
|
import java.awt.FlowLayout; |
||||||
|
import java.awt.Font; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-16 |
||||||
|
*/ |
||||||
|
public class ChartFontPane extends BasicPane { |
||||||
|
|
||||||
|
public static final int FONT_START = 6; |
||||||
|
public static final int FONT_END = 72; |
||||||
|
private UIComboBox fontNameComboBox; |
||||||
|
private UIComboBox fontSizeComboBox; |
||||||
|
private UIToggleButton bold; |
||||||
|
private UIToggleButton italic; |
||||||
|
private UIColorButton fontColor; |
||||||
|
private static Integer[] FONT_SIZES = new Integer[FONT_END - FONT_START + 1]; |
||||||
|
|
||||||
|
static { |
||||||
|
for (int i = FONT_START; i <= FONT_END; i++) { |
||||||
|
FONT_SIZES[i - FONT_START] = i; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public ChartFontPane() { |
||||||
|
initState(); |
||||||
|
initComponents(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initState() { |
||||||
|
fontNameComboBox = new UIComboBox(Utils.getAvailableFontFamilyNames4Report()); |
||||||
|
fontSizeComboBox = new UIComboBox(FONT_SIZES); |
||||||
|
bold = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/bold.png")); |
||||||
|
italic = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/italic.png")); |
||||||
|
fontColor = new UIColorButton(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
Component[] components = new Component[]{ |
||||||
|
fontColor, italic, bold |
||||||
|
}; |
||||||
|
JPanel buttonPane = new JPanel(new BorderLayout()); |
||||||
|
buttonPane.add(fontSizeComboBox, BorderLayout.CENTER); |
||||||
|
buttonPane.add(GUICoreUtils.createFlowPane(components, FlowLayout.LEFT, LayoutConstants.HGAP_LARGE), BorderLayout.EAST); |
||||||
|
|
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(getContentPane(buttonPane), BorderLayout.CENTER); |
||||||
|
|
||||||
|
populate(FRContext.getDefaultValues().getFRFont()); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel getContentPane(JPanel buttonPane) { |
||||||
|
double e = 155; |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
double[] rows = {p, p, p}; |
||||||
|
double[] columnSize = {p, e}; |
||||||
|
UILabel text = new UILabel(getUILabelText(), SwingConstants.LEFT); |
||||||
|
Component[][] components = { |
||||||
|
new Component[]{null, null}, |
||||||
|
new Component[]{text, fontNameComboBox}, |
||||||
|
new Component[]{null, buttonPane} |
||||||
|
}; |
||||||
|
|
||||||
|
return TableLayoutHelper.createGapTableLayoutPane(components, rows, columnSize, 20, LayoutConstants.VGAP_LARGE); |
||||||
|
} |
||||||
|
|
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Character"); |
||||||
|
} |
||||||
|
|
||||||
|
public String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(FRFont frFont) { |
||||||
|
UIObserverListener listener = fontNameComboBox == null ? null : fontNameComboBox.getUiObserverListener(); |
||||||
|
removeAllComboBoxListener(); |
||||||
|
|
||||||
|
if (frFont != null) { |
||||||
|
fontNameComboBox.setSelectedItem(frFont.getFamily()); |
||||||
|
bold.setSelected(frFont.isBold()); |
||||||
|
italic.setSelected(frFont.isItalic()); |
||||||
|
populateFontSize(frFont); |
||||||
|
if (fontColor != null) { |
||||||
|
fontColor.setColor(frFont.getForeground()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//更新结束后,注册监听器
|
||||||
|
registerAllComboBoxListener(listener); |
||||||
|
} |
||||||
|
|
||||||
|
private void populateFontSize(FRFont frFont) { |
||||||
|
if (fontSizeComboBox != null) { |
||||||
|
fontSizeComboBox.setSelectedItem(frFont.getSize()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void removeAllComboBoxListener() { |
||||||
|
fontNameComboBox.removeChangeListener(); |
||||||
|
fontSizeComboBox.removeChangeListener(); |
||||||
|
} |
||||||
|
|
||||||
|
private void registerAllComboBoxListener(UIObserverListener listener) { |
||||||
|
fontNameComboBox.registerChangeListener(listener); |
||||||
|
fontSizeComboBox.registerChangeListener(listener); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新字 |
||||||
|
* |
||||||
|
* @return 更新字 |
||||||
|
*/ |
||||||
|
public FRFont update() { |
||||||
|
String name = GeneralUtils.objectToString(fontNameComboBox.getSelectedItem()); |
||||||
|
|
||||||
|
return FRFont.getInstance(name, updateFontStyle(), updateFontSize(), fontColor.getColor()); |
||||||
|
} |
||||||
|
|
||||||
|
private int updateFontStyle() { |
||||||
|
int style = Font.PLAIN; |
||||||
|
if (bold.isSelected() && !italic.isSelected()) { |
||||||
|
style = Font.BOLD; |
||||||
|
} else if (!bold.isSelected() && italic.isSelected()) { |
||||||
|
style = Font.ITALIC; |
||||||
|
} else if (bold.isSelected() && italic.isSelected()) { |
||||||
|
style = 3; |
||||||
|
} |
||||||
|
|
||||||
|
return style; |
||||||
|
} |
||||||
|
|
||||||
|
private float updateFontSize() { |
||||||
|
return Float.parseFloat(GeneralUtils.objectToString(fontSizeComboBox.getSelectedItem())); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
|
||||||
|
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-09-16 |
||||||
|
*/ |
||||||
|
public class ChartLabelStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
private UIButtonGroup<Integer> autoButton; |
||||||
|
//字体样式
|
||||||
|
private ChartFontPane chartFontPane; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
autoButton = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Auto"), |
||||||
|
Toolkit.i18nText("Fine-Design_Chart_Custom")}); |
||||||
|
chartFontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Label_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
initListener(); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{null, null}, |
||||||
|
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Style_Setting")), autoButton}, |
||||||
|
new Component[]{chartFontPane, null} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p, p, p}; |
||||||
|
} |
||||||
|
|
||||||
|
private void initListener() { |
||||||
|
autoButton.addActionListener(new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkPreButton() { |
||||||
|
chartFontPane.setVisible(autoButton.getSelectedIndex() == 1); |
||||||
|
chartFontPane.setPreferredSize(autoButton.getSelectedIndex() == 1 ? new Dimension(0, 60) : new Dimension(0, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Label"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
autoButton.setSelectedIndex(chartStyle.isAutoLabelFont() ? 0 : 1); |
||||||
|
chartFontPane.populate(chartStyle.getLabelFont()); |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setAutoLabelFont(autoButton.getSelectedIndex() == 0); |
||||||
|
chartStyle.setLabelFont(chartFontPane.update()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-16 |
||||||
|
*/ |
||||||
|
public class ChartLegendStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
//字体样式
|
||||||
|
private ChartFontPane chartFontPane; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
chartFontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Legend_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{chartFontPane, null} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Legend"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
chartFontPane.populate(chartStyle.getLegendFont()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setLegendFont(chartFontPane.update()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package com.fr.design.mainframe.predefined.ui.detail.chart; |
||||||
|
|
||||||
|
import com.fr.config.predefined.PredefinedChartStyle; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-16 |
||||||
|
*/ |
||||||
|
public class ChartTitleStylePane extends AbstractChartStylePane { |
||||||
|
|
||||||
|
//字体样式
|
||||||
|
private ChartFontPane chartFontPane; |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
chartFontPane = new ChartFontPane() { |
||||||
|
public String getUILabelText() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Title_Character"); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponent() { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{chartFontPane, null} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected double[] getRows(double p) { |
||||||
|
return new double[]{p}; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Report_Title"); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(PredefinedChartStyle chartStyle) { |
||||||
|
chartFontPane.populate(chartStyle.getTitleFont()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void update(PredefinedChartStyle chartStyle) { |
||||||
|
chartStyle.setTitleFont(chartFontPane.update()); |
||||||
|
} |
||||||
|
} |
@ -1,9 +1,8 @@ |
|||||||
package com.fr.design.chartx.component.button; |
package com.fr.design.style.color; |
||||||
|
|
||||||
import com.fr.base.BaseUtils; |
import com.fr.base.BaseUtils; |
||||||
import com.fr.base.background.ColorBackground; |
import com.fr.base.background.ColorBackground; |
||||||
import com.fr.design.style.AbstractSelectBox; |
import com.fr.design.style.AbstractSelectBox; |
||||||
import com.fr.design.style.color.ColorSelectPane; |
|
||||||
|
|
||||||
import javax.swing.JPanel; |
import javax.swing.JPanel; |
||||||
import javax.swing.event.ChangeEvent; |
import javax.swing.event.ChangeEvent; |
@ -0,0 +1,97 @@ |
|||||||
|
package com.fr.design.mainframe.chart.gui.style; |
||||||
|
|
||||||
|
import com.fr.chart.base.TextAttr; |
||||||
|
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.van.chart.designer.TableLayout4VanChartHelper; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.SwingConstants; |
||||||
|
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-09-03 |
||||||
|
*/ |
||||||
|
public class ChartTextAttrPaneWithPreStyle extends ChartTextAttrPane { |
||||||
|
|
||||||
|
private static final int PREDEFINED_STYLE = 0; |
||||||
|
private static final int CUSTOM = 1; |
||||||
|
|
||||||
|
private UIButtonGroup<Integer> preButton; |
||||||
|
private JPanel textFontPane; |
||||||
|
|
||||||
|
public ChartTextAttrPaneWithPreStyle() { |
||||||
|
initListener(); |
||||||
|
} |
||||||
|
|
||||||
|
protected JPanel getContentPane(JPanel buttonPane) { |
||||||
|
preButton = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Predefined"), |
||||||
|
Toolkit.i18nText("Fine-Design_Chart_Custom")}); |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double e = getEdithAreaWidth(); |
||||||
|
double[] columnSize = {f, e}; |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
textFontPane = TableLayout4VanChartHelper.createGapTableLayoutPane(getComponents(buttonPane), getRowSize(), columnSize); |
||||||
|
|
||||||
|
double[] rowSize = {p, p, p}; |
||||||
|
UILabel text = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Character"), SwingConstants.LEFT); |
||||||
|
Component[][] components = { |
||||||
|
new Component[]{null, null}, |
||||||
|
new Component[]{text, preButton}, |
||||||
|
new Component[]{textFontPane, null}, |
||||||
|
}; |
||||||
|
return TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); |
||||||
|
} |
||||||
|
|
||||||
|
protected double getEdithAreaWidth() { |
||||||
|
return TableLayout4VanChartHelper.EDIT_AREA_WIDTH; |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getComponents(JPanel buttonPane) { |
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{null, getFontNameComboBox()}, |
||||||
|
new Component[]{null, buttonPane} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
private void initListener() { |
||||||
|
preButton.addActionListener(new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkPreButton() { |
||||||
|
textFontPane.setVisible(preButton.getSelectedIndex() == CUSTOM); |
||||||
|
textFontPane.setPreferredSize(preButton.getSelectedIndex() == CUSTOM ? new Dimension(0, 60) : new Dimension(0, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(TextAttr textAttr) { |
||||||
|
if (textAttr.isPredefinedStyle()) { |
||||||
|
preButton.setSelectedIndex(PREDEFINED_STYLE); |
||||||
|
} else { |
||||||
|
preButton.setSelectedIndex(CUSTOM); |
||||||
|
} |
||||||
|
super.populate(textAttr); |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
|
||||||
|
public void update(TextAttr textAttr) { |
||||||
|
int selectedIndex = preButton.getSelectedIndex(); |
||||||
|
if (selectedIndex == PREDEFINED_STYLE) { |
||||||
|
textAttr.setPredefinedStyle(true); |
||||||
|
} else { |
||||||
|
textAttr.setPredefinedStyle(false); |
||||||
|
} |
||||||
|
super.update(textAttr); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,88 @@ |
|||||||
|
package com.fr.design.mainframe.chart.gui.style; |
||||||
|
|
||||||
|
import com.fr.chart.base.ColorWithPreStyle; |
||||||
|
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.style.color.ColorSelectBox; |
||||||
|
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.SwingConstants; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
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-09-07 |
||||||
|
*/ |
||||||
|
public class ColorSelectBoxWithPreStyle extends BasicPane { |
||||||
|
|
||||||
|
private static final int PREDEFINED_STYLE = 0; |
||||||
|
private static final int CUSTOM = 1; |
||||||
|
|
||||||
|
private UIButtonGroup<Integer> preButton; |
||||||
|
private ColorSelectBox colorSelectBox; |
||||||
|
|
||||||
|
public ColorSelectBoxWithPreStyle(int preferredWidth) { |
||||||
|
preButton = new UIButtonGroup<>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Predefined"), |
||||||
|
Toolkit.i18nText("Fine-Design_Chart_Custom")}); |
||||||
|
colorSelectBox = new ColorSelectBox(preferredWidth); |
||||||
|
initContent(); |
||||||
|
initListener(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initContent() { |
||||||
|
double f = TableLayout.FILL; |
||||||
|
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; |
||||||
|
double[] columnSize = {f, e}; |
||||||
|
double p = TableLayout.PREFERRED; |
||||||
|
|
||||||
|
double[] rowSize = {p, p, p}; |
||||||
|
UILabel text = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Color"), SwingConstants.LEFT); |
||||||
|
Component[][] components = { |
||||||
|
new Component[]{text, preButton}, |
||||||
|
new Component[]{null, colorSelectBox}, |
||||||
|
}; |
||||||
|
JPanel gapTableLayoutPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize); |
||||||
|
this.setLayout(new BorderLayout()); |
||||||
|
this.add(gapTableLayoutPane, BorderLayout.CENTER); |
||||||
|
} |
||||||
|
|
||||||
|
private void initListener() { |
||||||
|
preButton.addActionListener(new ActionListener() { |
||||||
|
@Override |
||||||
|
public void actionPerformed(ActionEvent e) { |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
private void checkPreButton() { |
||||||
|
colorSelectBox.setVisible(preButton.getSelectedIndex() == CUSTOM); |
||||||
|
this.setPreferredSize(preButton.getSelectedIndex() == CUSTOM ? new Dimension(0, 55) : new Dimension(0, 23)); |
||||||
|
} |
||||||
|
|
||||||
|
public String title4PopupWindow() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(ColorWithPreStyle colorWithPreStyle) { |
||||||
|
preButton.setSelectedIndex(colorWithPreStyle.isPredefinedStyle() ? PREDEFINED_STYLE : CUSTOM); |
||||||
|
colorSelectBox.setSelectObject(colorWithPreStyle.getColor()); |
||||||
|
checkPreButton(); |
||||||
|
} |
||||||
|
|
||||||
|
public ColorWithPreStyle update() { |
||||||
|
ColorWithPreStyle colorWithPreStyle = new ColorWithPreStyle(); |
||||||
|
colorWithPreStyle.setPredefinedStyle(preButton.getSelectedIndex() == PREDEFINED_STYLE); |
||||||
|
colorWithPreStyle.setColor(colorSelectBox.getSelectObject()); |
||||||
|
return colorWithPreStyle; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package com.fr.van.chart.designer.component.background; |
||||||
|
|
||||||
|
import com.fr.chart.chartglyph.GeneralInfo; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.VanChartGradientPane; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-11 |
||||||
|
*/ |
||||||
|
public class VanChartBackgroundPaneWithAutoColor extends VanChartBackgroundPane { |
||||||
|
|
||||||
|
private static final int AUTO = 0; |
||||||
|
|
||||||
|
public VanChartBackgroundPaneWithAutoColor() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initList() { |
||||||
|
paneList.add(new NullBackgroundQuickPane() { |
||||||
|
public String title4PopupWindow() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Automatic"); |
||||||
|
} |
||||||
|
}); |
||||||
|
paneList.add(new NullBackgroundQuickPane()); |
||||||
|
paneList.add(new ColorBackgroundQuickPane()); |
||||||
|
paneList.add(new VanChartGradientPane()); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBackground(GeneralInfo attr, int begin) { |
||||||
|
if (attr.isAutoBackground()) { |
||||||
|
typeComboBox.setSelectedIndex(AUTO); |
||||||
|
return; |
||||||
|
} |
||||||
|
super.populateBackground(attr, begin + 1); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBackground(GeneralInfo attr) { |
||||||
|
if (typeComboBox.getSelectedIndex() == AUTO) { |
||||||
|
attr.setAutoBackground(true); |
||||||
|
return; |
||||||
|
} |
||||||
|
attr.setAutoBackground(false); |
||||||
|
super.updateBackground(attr); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.fr.van.chart.designer.component.background; |
||||||
|
|
||||||
|
import com.fr.chart.base.BackgroundWithPreStyle; |
||||||
|
import com.fr.chart.chartglyph.GeneralInfo; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.ImageBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.NullBackgroundQuickPane; |
||||||
|
import com.fr.design.mainframe.backgroundpane.VanChartGradientPane; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-08 |
||||||
|
*/ |
||||||
|
public class VanChartBackgroundPaneWithPreStyle extends VanChartBackgroundPane { |
||||||
|
|
||||||
|
private static final int PREDEFINED_STYLE = 0; |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void initList() { |
||||||
|
paneList.add(new NullBackgroundQuickPane() { |
||||||
|
public String title4PopupWindow() { |
||||||
|
return Toolkit.i18nText("Fine-Design_Chart_Predefined"); |
||||||
|
} |
||||||
|
}); |
||||||
|
paneList.add(new NullBackgroundQuickPane()); |
||||||
|
paneList.add(new ColorBackgroundQuickPane()); |
||||||
|
paneList.add(new ImageBackgroundQuickPane(false)); |
||||||
|
paneList.add(new VanChartGradientPane()); |
||||||
|
} |
||||||
|
|
||||||
|
public void populateBackground(GeneralInfo attr, int begin) { |
||||||
|
BackgroundWithPreStyle backgroundWithPreStyle = attr.getBackgroundWithPreStyle(); |
||||||
|
if (backgroundWithPreStyle.isPredefinedStyle()) { |
||||||
|
typeComboBox.setSelectedIndex(PREDEFINED_STYLE); |
||||||
|
return; |
||||||
|
} |
||||||
|
super.populateBackground(attr, begin + 1); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateBackground(GeneralInfo attr) { |
||||||
|
if (typeComboBox.getSelectedIndex() == PREDEFINED_STYLE) { |
||||||
|
attr.getBackgroundWithPreStyle().setPredefinedStyle(true); |
||||||
|
return; |
||||||
|
} |
||||||
|
attr.getBackgroundWithPreStyle().setPredefinedStyle(false); |
||||||
|
super.updateBackground(attr); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,57 @@ |
|||||||
|
package com.fr.van.chart.designer.component.border; |
||||||
|
|
||||||
|
import com.fr.chart.chartglyph.GeneralInfo; |
||||||
|
import com.fr.design.gui.icombobox.LineComboBox; |
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.mainframe.chart.gui.style.ColorSelectBoxWithPreStyle; |
||||||
|
import com.fr.design.utils.gui.UIComponentUtils; |
||||||
|
import com.fr.design.widget.FRWidgetFactory; |
||||||
|
import com.fr.stable.CoreConstants; |
||||||
|
|
||||||
|
import java.awt.Component; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-07 |
||||||
|
*/ |
||||||
|
public class VanChartBorderPaneWithPreStyle extends VanChartBorderPane { |
||||||
|
|
||||||
|
private ColorSelectBoxWithPreStyle colorSelectBoxWithPreStyle; |
||||||
|
|
||||||
|
public VanChartBorderPaneWithPreStyle() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
protected void initComponents() { |
||||||
|
currentLineCombo = new LineComboBox(CoreConstants.STRIKE_LINE_STYLE_ARRAY_4_CHART); |
||||||
|
colorSelectBoxWithPreStyle = new ColorSelectBoxWithPreStyle(100); |
||||||
|
} |
||||||
|
|
||||||
|
protected Component[][] getUseComponent() { |
||||||
|
UILabel lineStyleLabel = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Line_Style")); |
||||||
|
|
||||||
|
return new Component[][]{ |
||||||
|
new Component[]{null, null}, |
||||||
|
new Component[]{lineStyleLabel, UIComponentUtils.wrapWithBorderLayoutPane(currentLineCombo)}, |
||||||
|
new Component[]{colorSelectBoxWithPreStyle, null}, |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
public void populate(GeneralInfo attr) { |
||||||
|
super.populate(attr); |
||||||
|
if (attr == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
colorSelectBoxWithPreStyle.populate(attr.getColorWithPreStyle()); |
||||||
|
} |
||||||
|
|
||||||
|
public void update(GeneralInfo attr) { |
||||||
|
super.update(attr); |
||||||
|
if (attr == null) { |
||||||
|
attr = new GeneralInfo(); |
||||||
|
} |
||||||
|
attr.setColorWithPreStyle(colorSelectBoxWithPreStyle.update()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.fr.van.chart.designer.style; |
||||||
|
|
||||||
|
import com.fr.van.chart.designer.component.background.VanChartBackgroundPane; |
||||||
|
import com.fr.van.chart.designer.component.background.VanChartBackgroundPaneWithAutoColor; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bjorn |
||||||
|
* @version 10.0 |
||||||
|
* Created by Bjorn on 2020-09-11 |
||||||
|
*/ |
||||||
|
public class MapRangeLegendPane extends VanChartRangeLegendPane { |
||||||
|
|
||||||
|
public MapRangeLegendPane() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
public MapRangeLegendPane(VanChartStylePane parent) { |
||||||
|
super(parent); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected VanChartBackgroundPane creatBackgroundPane(){ |
||||||
|
return new VanChartBackgroundPaneWithAutoColor(); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue