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 HeatPointMapStyleLegendPane extends ExtendedScrollPane { private UICheckBox isLegendVisable; private UIButtonGroup legendPosition; private ChartTextAttrPane textAttrPane; @Override protected JPanel createContentPane() { return new ContentPane(); } @Override public void populateBean(HeatPointMapChart chart) { JSONObject legendConf = chart.getLegendConf(); this.isLegendVisable.setSelected(legendConf.getBoolean("isLegendVisable")); this.legendPosition.setSelectedItem(legendConf.getInt("legendPosition")); FRFont titleFont = FRFont.getInstance(legendConf.getString("legendfamily"), legendConf.getInt("legendstyle"), legendConf.getInt("legendsize"), MapUtil.toColor(legendConf.getString("legendcolor"))); this.textAttrPane.populate(titleFont); } @Override public void updateBean(HeatPointMapChart chart) { JSONObject legendConf = JSONObject.create(); legendConf.put("isLegendVisable", this.isLegendVisable.isSelected()); legendConf.put("legendPosition", legendPosition.getSelectedItem()); TextAttr titleAttr = this.textAttrPane.update(); legendConf.put("legendsize", titleAttr.getFRFont().getSize()); legendConf.put("legendstyle", titleAttr.getFRFont().getStyle()); legendConf.put("legendfamily", titleAttr.getFRFont().getFamily()); legendConf.put("legendcolor", MapUtil.toHex(titleAttr.getFRFont().getForeground())); chart.setLegendConf(legendConf); } @Override protected String title4PopupWindow() { return PaneTitleConstants.CHART_STYLE_LEGNED_TITLE; } private class ContentPane extends JPanel { public ContentPane() { initComponents(); } private void initComponents() { this.setLayout(new BorderLayout()); // 内容 JPanel titleContentPane = createLegendContentPane(); // 样式 JPanel stylePane = createLegendStylePane(); double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {f}; double[] rowSize = {p, p, p, p}; Component[][] acomponents = new Component[][]{ new Component[]{isLegendVisable}, new Component[]{titleContentPane}, new Component[]{stylePane} } ; JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize); this.add(panel,BorderLayout.CENTER); this.setVisible(true); } } private JPanel createLegendContentPane(){ // 内容 this.isLegendVisable = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-isLegendVisable")); String[] tips = new String[]{ Toolkit.i18nText("Plugin-HeatPointMap-Alignment-LeftTop"), Toolkit.i18nText("Plugin-HeatPointMap-Alignment-RightTop"), Toolkit.i18nText("Plugin-HeatPointMap-Alignment-RightBottom"), Toolkit.i18nText("Plugin-HeatPointMap-Alignment-LeftBottom") }; Integer[] vals = new Integer[]{1, 2, 3, 4}; Icon[] icons = new Icon[]{ BaseUtils.readIcon("/com/fr/plugin/heatpointmapbox/images/layout_top_left.png"), BaseUtils.readIcon("/com/fr/plugin/heatpointmapbox/images/layout_top_right.png"), BaseUtils.readIcon("/com/fr/plugin/heatpointmapbox/images/layout_bottom_right.png"), BaseUtils.readIcon("/com/fr/plugin/heatpointmapbox/images/layout_bottom_left.png") }; this.legendPosition = new UIButtonGroup(icons, vals); this.legendPosition.setAllToolTips(tips); Component[][] components = new Component[][]{ {null, null}, new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-legendPosition"), 2), this.legendPosition} } ; return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-legendPositionExpand"), components); } private JPanel createLegendStylePane() { this.textAttrPane = new ChartTextAttrPane(); return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-LegendStyle"), this.textAttrPane); } }