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.
216 lines
9.0 KiB
216 lines
9.0 KiB
2 years ago
|
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 PieLabelStylePane extends JPanel {
|
||
|
|
||
|
private UIButtonGroup<Integer> pieValueType;
|
||
|
private CardLayout pieCardLayout;
|
||
|
private JPanel pieCardPane;
|
||
|
|
||
|
private UICheckBox showPieLabel;
|
||
|
private UICheckBox showPieCategory;
|
||
|
private UICheckBox showPieSeries;
|
||
|
private UICheckBox showPieValue;
|
||
|
private UITextArea pieJsPane;
|
||
|
private ChartTextAttrPane pieTextAttrPane;
|
||
|
|
||
|
private UIButtonGroup<String> piePosition;
|
||
|
private UIButtonGroup<Integer> pieDirection;
|
||
|
|
||
|
|
||
|
public PieLabelStylePane() {
|
||
|
initComponents();
|
||
|
}
|
||
|
|
||
|
public void populateBean(JSONObject chartConf) {
|
||
|
this.showPieLabel.setSelected(chartConf.getBoolean("showPieLabel"));
|
||
|
this.pieValueType.setSelectedItem(chartConf.getInt("pieValueType"));
|
||
|
this.showPieCategory.setSelected(chartConf.getBoolean("showPieCategory"));
|
||
|
this.showPieSeries.setSelected(chartConf.getBoolean("showPieSeries"));
|
||
|
this.showPieValue.setSelected(chartConf.getBoolean("showPieValue"));
|
||
|
this.pieJsPane.setText(chartConf.getString("pieJsPane"));
|
||
|
this.piePosition.setSelectedItem(chartConf.getString("piePosition"));
|
||
|
this.pieDirection.setSelectedItem(chartConf.getInt("pieDirection"));
|
||
|
|
||
|
FRFont textFont = FRFont.getInstance(chartConf.getString("pielabelfamily"),
|
||
|
chartConf.getInt("pielabelstyle"),
|
||
|
chartConf.getInt("pielabelsize"),
|
||
|
MapUtil.toColor(chartConf.getString("pielabelcolor")));
|
||
|
this.pieTextAttrPane.populate(textFont);
|
||
|
|
||
|
if (chartConf.getInt("pieValueType") == 2) {
|
||
|
this.pieCardLayout.show(this.pieCardPane, "piejs");
|
||
|
} else {
|
||
|
this.pieCardLayout.show(this.pieCardPane, "piecheck");
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
public JSONObject update() {
|
||
|
JSONObject chartConf = JSONObject.create();
|
||
|
chartConf.put("showPieLabel", this.showPieLabel.isSelected());
|
||
|
chartConf.put("pieValueType", this.pieValueType.getSelectedItem());
|
||
|
chartConf.put("showPieCategory", this.showPieCategory.isSelected());
|
||
|
chartConf.put("showPieSeries", this.showPieSeries.isSelected());
|
||
|
chartConf.put("showPieValue", this.showPieValue.isSelected());
|
||
|
chartConf.put("pieJsPane", this.pieJsPane.getText());
|
||
|
chartConf.put("piePosition", this.piePosition.getSelectedItem());
|
||
|
chartConf.put("pieDirection", this.pieDirection.getSelectedItem());
|
||
|
|
||
|
TextAttr textAttr = this.pieTextAttrPane.update();
|
||
|
chartConf.put("pielabelsize", textAttr.getFRFont().getSize());
|
||
|
chartConf.put("pielabelstyle", textAttr.getFRFont().getStyle());
|
||
|
chartConf.put("pielabelfamily", textAttr.getFRFont().getFamily());
|
||
|
chartConf.put("pielabelcolor", MapUtil.toHex(textAttr.getFRFont().getForeground()));
|
||
|
return chartConf;
|
||
|
}
|
||
|
|
||
|
private void initComponents() {
|
||
|
this.setLayout(new BorderLayout());
|
||
|
|
||
|
JPanel mainPane = createPieLabelPane();
|
||
|
|
||
|
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 createPieLabelPane() {
|
||
|
pieValueType = new UIButtonGroup<Integer>(new String[]{
|
||
|
com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-general"),
|
||
|
com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-custom")
|
||
|
},
|
||
|
new Integer[]{1, 2}
|
||
|
);
|
||
|
pieValueType.setSelectedItem(1);
|
||
|
|
||
|
double p = TableLayout.PREFERRED;
|
||
|
double f = TableLayout.FILL;
|
||
|
Component[][] comp = new Component[][]{
|
||
|
{null},
|
||
|
new Component[]{this.pieValueType}
|
||
|
};
|
||
|
JPanel pieValueTypePane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp, new double[]{p, p}, new double[]{f});
|
||
|
|
||
|
|
||
|
showPieLabel = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-showPieLabel"));
|
||
|
|
||
|
showPieCategory = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-showPieCategory"));
|
||
|
showPieSeries = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-showPieSeries"));
|
||
|
showPieValue = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Plugin-Pielinecomb-showPieValue"));
|
||
|
|
||
|
Component[][] compCheck = new Component[][]{
|
||
|
new Component[]{showPieCategory},
|
||
|
new Component[]{showPieSeries},
|
||
|
new Component[]{showPieValue}
|
||
|
};
|
||
|
final JPanel checkPane = TableLayout4VanChartHelper.createGapTableLayoutPane(compCheck, new double[]{p, p, p, p}, new double[]{f});
|
||
|
|
||
|
pieJsPane = new UITextArea(6, 6);
|
||
|
|
||
|
pieCardPane = new JPanel(this.pieCardLayout = new CardLayout()){
|
||
|
@Override
|
||
|
public Dimension getPreferredSize() {
|
||
|
if (null != pieValueType.getSelectedItem() && pieValueType.getSelectedItem() == 2) {
|
||
|
return pieJsPane.getPreferredSize();
|
||
|
} else {
|
||
|
return checkPane.getPreferredSize();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
pieCardPane.add(checkPane, "piecheck");
|
||
|
pieCardPane.add(pieJsPane, "piejs");
|
||
|
this.pieCardLayout.show(pieCardPane, "piecheck");
|
||
|
pieValueType.addChangeListener(new ChangeListener() {
|
||
|
@Override
|
||
|
public void stateChanged(ChangeEvent var1x) {
|
||
|
CardLayout card = (CardLayout)pieCardPane.getLayout();
|
||
|
if (pieValueType.getSelectedItem() == 1) {
|
||
|
card.show(pieCardPane, "piecheck");
|
||
|
} else {
|
||
|
card.show(pieCardPane, "piejs");
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
Component[][] contentComp = new Component[][]{
|
||
|
new Component[]{pieValueTypePane},
|
||
|
new Component[]{pieCardPane}
|
||
|
};
|
||
|
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 = createPieTextPane();
|
||
|
|
||
|
JPanel layoutPane = createPiePosition();
|
||
|
|
||
|
Component[][] comps = new Component[][]{
|
||
|
new Component[]{showPieLabel},
|
||
|
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 createPiePosition() {
|
||
|
this.piePosition = new UIButtonGroup<String>(new String[]{
|
||
|
Toolkit.i18nText("Plugin-Pielinecomb-posoutside"),
|
||
|
Toolkit.i18nText("Plugin-Pielinecomb-posinside"),
|
||
|
Toolkit.i18nText("Plugin-Pielinecomb-poscenter")
|
||
|
},
|
||
|
new String[]{"top", "insideTop", "inside"}
|
||
|
);
|
||
|
this.pieDirection = new UIButtonGroup<Integer>(new String[]{
|
||
|
Toolkit.i18nText("Plugin-Pielinecomb-DirectOrientation"),
|
||
|
Toolkit.i18nText("Plugin-Pielinecomb-DirectVertical")
|
||
|
},
|
||
|
new Integer[]{0, 90}
|
||
|
);
|
||
|
|
||
|
double p = TableLayout.PREFERRED;
|
||
|
double f = TableLayout.FILL;
|
||
|
Component[][] comp = new Component[][]{
|
||
|
{null, null},
|
||
|
new Component[]{new UILabel(Toolkit.i18nText("Plugin-Pielinecomb-TitlePosition")), this.piePosition},
|
||
|
new Component[]{new UILabel(Toolkit.i18nText("Plugin-Pielinecomb-textDirection")), this.pieDirection}
|
||
|
};
|
||
|
JPanel pane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp, new double[]{p, p, p}, new double[]{p, f});
|
||
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-Pielinecomb-layout"), pane);
|
||
|
}
|
||
|
|
||
|
private JPanel createPieTextPane() {
|
||
|
this.pieTextAttrPane = new ChartTextAttrPane();
|
||
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-Pielinecomb-TitleStyle"), this.pieTextAttrPane);
|
||
|
}
|
||
|
}
|