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.
164 lines
5.5 KiB
164 lines
5.5 KiB
2 years ago
|
package com.fr.plugin.pielinecomb.ui;
|
||
|
|
||
|
import com.fr.design.event.GlobalNameListener;
|
||
|
import com.fr.design.event.GlobalNameObserver;
|
||
|
import com.fr.design.event.UIObserver;
|
||
|
import com.fr.design.event.UIObserverListener;
|
||
|
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
|
||
|
import com.fr.design.gui.frpane.AttributeChangeListener;
|
||
|
import com.fr.design.gui.itextfield.UITextField;
|
||
|
import com.fr.design.i18n.Toolkit;
|
||
|
import com.fr.design.layout.TableLayout;
|
||
|
import com.fr.design.layout.TableLayoutHelper;
|
||
|
import com.fr.extended.chart.ExtendedScrollPane;
|
||
|
import com.fr.json.JSONArray;
|
||
|
import com.fr.json.JSONObject;
|
||
|
import com.fr.plugin.pielinecomb.PieLineCombChart;
|
||
|
import com.fr.plugin.pielinecomb.comp.CustomChartAxisButtonPane;
|
||
|
|
||
|
import javax.swing.*;
|
||
|
import java.awt.*;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Iterator;
|
||
|
import java.util.LinkedHashMap;
|
||
|
import java.util.Map;
|
||
|
|
||
|
public class PieLineCombStyleAxisPane extends ExtendedScrollPane<PieLineCombChart> {
|
||
|
|
||
|
private CustomChartAxisButtonPane axisButtonPane;
|
||
|
|
||
|
private LinkedHashMap<String, JPanel> axisPaneMap = new LinkedHashMap<>();;
|
||
|
private JPanel axisCardPane;
|
||
|
|
||
|
private PieLineCombStylePane stylePane;
|
||
|
|
||
|
public PieLineCombStyleAxisPane(PieLineCombStylePane stylePane) {
|
||
|
this.stylePane = stylePane;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected JPanel createContentPane() {
|
||
|
return new ContentPane();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void populateBean(PieLineCombChart chart) {
|
||
|
JSONObject chartConf = chart.getAxisConf();
|
||
|
|
||
|
if (null == axisPaneMap) {
|
||
|
axisPaneMap = new LinkedHashMap<>();
|
||
|
}
|
||
|
|
||
|
JSONObject axisX = chartConf.getJSONObject("axisX");
|
||
|
PieLineCombStyleAxisXPane axisXPane = new PieLineCombStyleAxisXPane(stylePane);
|
||
|
axisXPane.populateBean(axisX);
|
||
|
axisPaneMap.put(axisX.getString("axisName"), axisXPane);
|
||
|
axisCardPane.add(axisXPane, axisX.getString("axisName"));
|
||
|
|
||
|
JSONArray axisYList = chartConf.getJSONArray("axisY");
|
||
|
for (int i = 0; i < axisYList.size(); i++) {
|
||
|
JSONObject axisY = axisYList.getJSONObject(i);
|
||
|
PieLineCombStyleAxisYPane axisYPane = new PieLineCombStyleAxisYPane(stylePane);
|
||
|
axisYPane.populateBean(axisY);
|
||
|
|
||
|
axisPaneMap.put(axisY.getString("axisName"), axisYPane);
|
||
|
axisCardPane.add(axisYPane, axisY.getString("axisName"));
|
||
|
}
|
||
|
|
||
|
axisButtonPane.populateBean(chartConf);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void updateBean(PieLineCombChart chart) {
|
||
|
JSONObject chartConf = new JSONObject();
|
||
|
|
||
|
if (null != axisPaneMap && !axisPaneMap.isEmpty()) {
|
||
|
Iterator<String> it = axisPaneMap.keySet().iterator();
|
||
|
JSONArray axisY = JSONArray.create();
|
||
|
while(it.hasNext()) {
|
||
|
String name = it.next();
|
||
|
if (name.startsWith("X")) {
|
||
|
PieLineCombStyleAxisXPane xPane = (PieLineCombStyleAxisXPane)axisPaneMap.get(name);
|
||
|
JSONObject axisXTmp = xPane.update();
|
||
|
axisXTmp.put("axisName", name);
|
||
|
chartConf.put("axisX", axisXTmp);
|
||
|
} else if (name.startsWith("Y")) {
|
||
|
PieLineCombStyleAxisYPane yPane = (PieLineCombStyleAxisYPane)axisPaneMap.get(name);
|
||
|
JSONObject axisYTmp = yPane.update();
|
||
|
axisYTmp.put("axisName", name);
|
||
|
axisY.put(axisYTmp);
|
||
|
}
|
||
|
}
|
||
|
chartConf.put("axisY", axisY);
|
||
|
}
|
||
|
|
||
|
chart.setAxisConf(chartConf);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String title4PopupWindow() {
|
||
|
return Toolkit.i18nText("Plugin-Pielinecomb-StyleAxisTitle");
|
||
|
}
|
||
|
|
||
|
private class ContentPane extends JPanel {
|
||
|
public ContentPane() {
|
||
|
initComponents();
|
||
|
}
|
||
|
|
||
|
private void initComponents() {
|
||
|
this.setLayout(new BorderLayout());
|
||
|
|
||
|
JPanel mainPane = createMainPane();
|
||
|
JPanel axisPane = createAxisPane();
|
||
|
|
||
|
double p = TableLayout.PREFERRED;
|
||
|
double f = TableLayout.FILL;
|
||
|
Component[][] acomponents = new Component[][]{
|
||
|
new Component[]{mainPane},
|
||
|
new Component[]{axisPane}
|
||
|
};
|
||
|
|
||
|
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents, new double[]{p, p, p, p}, new double[]{f});
|
||
|
|
||
|
this.add(panel,BorderLayout.CENTER);
|
||
|
|
||
|
this.setVisible(true);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
private JPanel createMainPane() {
|
||
|
axisButtonPane = new CustomChartAxisButtonPane(this);
|
||
|
return axisButtonPane;
|
||
|
}
|
||
|
|
||
|
private JPanel createAxisPane() {
|
||
|
axisCardPane = new JPanel(new CardLayout());
|
||
|
// axisPaneMap = new LinkedHashMap<>();
|
||
|
// axisPaneMap.put("X轴", new PieLineCombStyleAxisXPane());
|
||
|
// axisPaneMap.put("Y轴", new PieLineCombStyleAxisYPane());
|
||
|
// Iterator<String> it = axisPaneMap.keySet().iterator();
|
||
|
// while (it.hasNext()) {
|
||
|
// String name = it.next();
|
||
|
// axisCardPane.add(axisPaneMap.get(name), name);
|
||
|
// }
|
||
|
((CardLayout)axisCardPane.getLayout()).show(axisCardPane, "X轴");
|
||
|
return axisCardPane;
|
||
|
}
|
||
|
|
||
|
public void addAxisPane(String name) {
|
||
|
axisPaneMap.put(name, new PieLineCombStyleAxisYPane(stylePane));
|
||
|
axisCardPane.add(axisPaneMap.get(name), name);
|
||
|
}
|
||
|
|
||
|
public void delAxisPane(String name) {
|
||
|
axisPaneMap.remove(name);
|
||
|
stylePane.attributeChanged();
|
||
|
}
|
||
|
|
||
|
public void changeAxisSelected(String name) {
|
||
|
((CardLayout)axisCardPane.getLayout()).show(axisCardPane, name);
|
||
|
}
|
||
|
}
|