You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
5.8 KiB

2 years ago
package com.fr.plugin.heatpointmapbox.ui;
import com.fr.base.BaseUtils;
import com.fr.chart.base.TextAttr;
import com.fr.design.formula.TinyFormulaPane;
import com.fr.design.gui.frpane.UINumberDragPane;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icheckbox.UICheckBox;
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.mainframe.chart.gui.style.ChartTextAttrPane;
import com.fr.design.style.color.ColorSelectBox;
import com.fr.extended.chart.ExtendedScrollPane;
import com.fr.general.FRFont;
import com.fr.json.JSONObject;
import com.fr.plugin.heatpointmapbox.HeatPointMapChart;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.*;
import java.awt.*;
public class HeatPointMapStyleTitlePane extends ExtendedScrollPane<HeatPointMapChart> {
private UICheckBox isTitleVisable;
private ColorSelectBox titleBgColor;
private UINumberDragPane titleBgOpacity;
private TinyFormulaPane titleName;
private UIButtonGroup<Integer> titleAlignment;
private ChartTextAttrPane textAttrPane;
@Override
protected JPanel createContentPane() {
return new ContentPane();
}
@Override
public void populateBean(HeatPointMapChart chart) {
JSONObject titleConf = chart.getTitleConf();
this.isTitleVisable.setSelected(titleConf.getBoolean("titlevisiable"));
this.titleBgColor.setSelectObject(MapUtil.toColor(titleConf.getString("titlebgcolor")));
this.titleBgOpacity.populateBean(titleConf.getDouble("titleBgOpacity"));
this.titleName.populateBean(titleConf.getString("titlename"));
this.titleAlignment.setSelectedItem(titleConf.getInt("titleposition"));
FRFont titleFont = FRFont.getInstance(titleConf.getString("titlefamily"),
titleConf.getInt("titlestyle"),
titleConf.getInt("titlesize"),
MapUtil.toColor(titleConf.getString("titlecolor")));
this.textAttrPane.populate(titleFont);
}
@Override
public void updateBean(HeatPointMapChart chart) {
JSONObject titleConf = JSONObject.create();
titleConf.put("titlevisiable", this.isTitleVisable.isSelected());
titleConf.put("titlebgcolor", MapUtil.toHex(this.titleBgColor.getSelectObject()));
titleConf.put("titleBgOpacity", this.titleBgOpacity.updateBean());
titleConf.put("titlename", this.titleName.updateBean());
titleConf.put("titleposition", titleAlignment.getSelectedItem());
TextAttr titleAttr = this.textAttrPane.update();
titleConf.put("titlesize", titleAttr.getFRFont().getSize());
titleConf.put("titlestyle", titleAttr.getFRFont().getStyle());
titleConf.put("titlefamily", titleAttr.getFRFont().getFamily());
titleConf.put("titlecolor", MapUtil.toHex(titleAttr.getFRFont().getForeground()));
chart.setTitleConf(titleConf);
}
@Override
protected String title4PopupWindow() {
return PaneTitleConstants.CHART_STYLE_TITLE_TITLE;
}
private class ContentPane extends JPanel {
public ContentPane() {
initComponents();
}
private void initComponents() {
this.setLayout(new BorderLayout());
// 内容
JPanel titleContentPane = createTitleContentPane();
// 样式
JPanel stylePane = createTitleStylePane();
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p, p, p};
Component[][] acomponents = new Component[][]{
new Component[]{isTitleVisable},
new Component[]{titleContentPane},
new Component[]{stylePane}
} ;
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize);
this.add(panel,BorderLayout.CENTER);
this.setVisible(true);
}
}
private JPanel createTitleContentPane(){
// 内容
this.isTitleVisable = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-isVisiableTitle"));
this.titleBgColor = new ColorSelectBox(100);
this.titleBgOpacity = new UINumberDragPane(0, 100);
this.titleName = new TinyFormulaPane();
// 位置
Icon[] titlePositonIcons = new Icon[]{BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_left_normal.png"), BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_center_normal.png"), BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/h_right_normal.png")};
Integer[] titlePositionVal = new Integer[]{2, 0, 4};
this.titleAlignment = new UIButtonGroup(titlePositonIcons, titlePositionVal);
Component[][] components = new Component[][]{
{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-titleBgColor")), this.titleBgColor},
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-titleBgOpacity")), this.titleBgOpacity},
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-TitleText")), this.titleName},
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-TitlePosition"), 2), this.titleAlignment}
} ;
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-TitleExpand"), components);
}
private JPanel createTitleStylePane() {
this.textAttrPane = new ChartTextAttrPane();
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-TitleStyle"), this.textAttrPane);
}
}