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.
202 lines
8.2 KiB
202 lines
8.2 KiB
package com.fr.plugin.pielinecomb.ui; |
|
|
|
import com.fr.chart.base.TextAttr; |
|
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.gui.itextarea.UITextArea; |
|
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.style.ChartTextAttrPane; |
|
import com.fr.general.FRFont; |
|
import com.fr.json.JSONObject; |
|
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
|
|
|
import javax.swing.*; |
|
import javax.swing.event.ChangeEvent; |
|
import javax.swing.event.ChangeListener; |
|
import java.awt.*; |
|
|
|
/** |
|
* @author duan.jingliang |
|
* @date 2022/10/22 |
|
*/ |
|
public class LineLabelStylePane extends JPanel { |
|
private UIButtonGroup<Integer> lineValueType; |
|
private CardLayout lineCardLayout; |
|
private JPanel lineCardPane; |
|
|
|
private UICheckBox showLineLabel; |
|
private UICheckBox showLineCategory; |
|
private UICheckBox showLineSeries; |
|
private UICheckBox showLineValue; |
|
private UITextArea lineJsPane; |
|
private ChartTextAttrPane lineTextAttrPane; |
|
|
|
private UIButtonGroup<String> linePosition; |
|
|
|
|
|
public LineLabelStylePane() { |
|
initComponents(); |
|
} |
|
|
|
public void populateBean(JSONObject chartConf) { |
|
this.showLineLabel.setSelected(chartConf.getBoolean("showLineLabel")); |
|
this.lineValueType.setSelectedItem(chartConf.getInt("lineValueType")); |
|
this.showLineCategory.setSelected(chartConf.getBoolean("showLineCategory")); |
|
this.showLineSeries.setSelected(chartConf.getBoolean("showLineSeries")); |
|
this.showLineValue.setSelected(chartConf.getBoolean("showLineValue")); |
|
this.lineJsPane.setText(chartConf.getString("lineJsPane")); |
|
this.linePosition.setSelectedItem(chartConf.getString("linePosition")); |
|
|
|
FRFont textFont = FRFont.getInstance(chartConf.getString("linelabelfamily"), |
|
chartConf.getInt("linelabelstyle"), |
|
chartConf.getInt("linelabelsize"), |
|
MapUtil.toColor(chartConf.getString("linelabelcolor"))); |
|
this.lineTextAttrPane.populate(textFont); |
|
|
|
if (chartConf.getInt("lineValueType") == 2) { |
|
this.lineCardLayout.show(this.lineCardPane, "linejs"); |
|
} else { |
|
this.lineCardLayout.show(this.lineCardPane, "linecheck"); |
|
} |
|
} |
|
|
|
public JSONObject update() { |
|
JSONObject chartConf = JSONObject.create(); |
|
chartConf.put("showLineLabel", this.showLineLabel.isSelected()); |
|
chartConf.put("lineValueType", this.lineValueType.getSelectedItem()); |
|
chartConf.put("showLineCategory", this.showLineCategory.isSelected()); |
|
chartConf.put("showLineSeries", this.showLineSeries.isSelected()); |
|
chartConf.put("showLineValue", this.showLineValue.isSelected()); |
|
chartConf.put("lineJsPane", this.lineJsPane.getText()); |
|
chartConf.put("linePosition", this.linePosition.getSelectedItem()); |
|
|
|
TextAttr textAttr = this.lineTextAttrPane.update(); |
|
chartConf.put("linelabelsize", textAttr.getFRFont().getSize()); |
|
chartConf.put("linelabelstyle", textAttr.getFRFont().getStyle()); |
|
chartConf.put("linelabelfamily", textAttr.getFRFont().getFamily()); |
|
chartConf.put("linelabelcolor", MapUtil.toHex(textAttr.getFRFont().getForeground())); |
|
|
|
return chartConf; |
|
} |
|
|
|
private void initComponents() { |
|
this.setLayout(new BorderLayout()); |
|
|
|
JPanel mainPane = createLineLabelPane(); |
|
|
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
Component[][] acomponents = new Component[][]{ |
|
new Component[]{mainPane} |
|
}; |
|
|
|
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents, new double[]{p, p}, new double[]{f}); |
|
|
|
this.add(panel,BorderLayout.CENTER); |
|
this.setVisible(true); |
|
} |
|
|
|
private JPanel createLineLabelPane() { |
|
lineValueType = new UIButtonGroup<Integer>(new String[]{ |
|
Toolkit.i18nText("Plugin-Pielinecomb-general"), |
|
Toolkit.i18nText("Plugin-Pielinecomb-custom") |
|
}, |
|
new Integer[]{1, 2} |
|
); |
|
lineValueType.setSelectedItem(1); |
|
|
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
Component[][] comp = new Component[][]{ |
|
{null}, |
|
new Component[]{this.lineValueType} |
|
}; |
|
JPanel lineValueTypePane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp, new double[]{p, p}, new double[]{f}); |
|
|
|
|
|
showLineLabel = new UICheckBox(Toolkit.i18nText("Plugin-Pielinecomb-showPieLabel")); |
|
|
|
showLineCategory = new UICheckBox(Toolkit.i18nText("Plugin-Pielinecomb-showPieCategory")); |
|
showLineSeries = new UICheckBox(Toolkit.i18nText("Plugin-Pielinecomb-showPieSeries")); |
|
showLineValue = new UICheckBox(Toolkit.i18nText("Plugin-Pielinecomb-showPieValue")); |
|
|
|
Component[][] compCheck = new Component[][]{ |
|
new Component[]{showLineCategory}, |
|
new Component[]{showLineSeries}, |
|
new Component[]{showLineValue} |
|
}; |
|
final JPanel checkPane = TableLayout4VanChartHelper.createGapTableLayoutPane(compCheck, new double[]{p, p, p, p}, new double[]{f}); |
|
|
|
lineJsPane = new UITextArea(6, 6); |
|
|
|
lineCardPane = new JPanel(this.lineCardLayout = new CardLayout()){ |
|
@Override |
|
public Dimension getPreferredSize() { |
|
if (null != lineValueType.getSelectedItem() && lineValueType.getSelectedItem() == 2) { |
|
return lineJsPane.getPreferredSize(); |
|
} else { |
|
return checkPane.getPreferredSize(); |
|
} |
|
} |
|
}; |
|
lineCardPane.add(checkPane, "linecheck"); |
|
lineCardPane.add(lineJsPane, "linejs"); |
|
this.lineCardLayout.show(lineCardPane, "linecheck"); |
|
lineValueType.addChangeListener(new ChangeListener() { |
|
@Override |
|
public void stateChanged(ChangeEvent var1x) { |
|
if (lineValueType.getSelectedItem() == 1) { |
|
lineCardLayout.show(lineCardPane, "linecheck"); |
|
} else { |
|
lineCardLayout.show(lineCardPane, "linejs"); |
|
} |
|
} |
|
}); |
|
|
|
Component[][] contentComp = new Component[][]{ |
|
new Component[]{lineValueTypePane}, |
|
new Component[]{lineCardPane} |
|
}; |
|
JPanel contentCompPane = TableLayout4VanChartHelper.createGapTableLayoutPane(contentComp, new double[]{p, p, p}, new double[]{f}); |
|
JPanel contentPane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-Pielinecomb-TitleText"), contentCompPane); |
|
|
|
JPanel stylePane = createLineTextPane(); |
|
|
|
JPanel layoutPane = createLinePosition(); |
|
|
|
Component[][] comps = new Component[][]{ |
|
new Component[]{showLineLabel}, |
|
new Component[]{contentPane}, |
|
new Component[]{stylePane}, |
|
new Component[]{layoutPane} |
|
}; |
|
|
|
return TableLayout4VanChartHelper.createGapTableLayoutPane(comps, new double[]{p, p, p, p, p}, new double[]{f}); |
|
} |
|
|
|
private JPanel createLinePosition() { |
|
this.linePosition = new UIButtonGroup<String>(new String[]{ |
|
Toolkit.i18nText("Plugin-Pielinecomb-postop"), |
|
Toolkit.i18nText("Plugin-Pielinecomb-posbottom") |
|
}, |
|
new String[]{"top", "bottom"} |
|
); |
|
|
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
Component[][] comp = new Component[][]{ |
|
{null, null}, |
|
new Component[]{new UILabel(Toolkit.i18nText("Plugin-Pielinecomb-TitlePosition")), this.linePosition} |
|
}; |
|
JPanel pane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp, new double[]{p, p}, new double[]{p, f}); |
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-Pielinecomb-layout"), pane); |
|
} |
|
|
|
private JPanel createLineTextPane() { |
|
this.lineTextAttrPane = new ChartTextAttrPane(); |
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-Pielinecomb-TitleStyle"), this.lineTextAttrPane); |
|
} |
|
}
|
|
|