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.
209 lines
8.9 KiB
209 lines
8.9 KiB
package com.fr.plugin.heatpointmapbox.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.ispinner.UISpinner; |
|
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.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 javax.swing.event.ChangeEvent; |
|
import javax.swing.event.ChangeListener; |
|
import java.awt.*; |
|
|
|
/** |
|
* @author xx |
|
*/ |
|
public class HeatPointMapStyleLabelsPane extends ExtendedScrollPane<HeatPointMapChart> { |
|
|
|
private UICheckBox showPointLabel; |
|
private ColorSelectBox labelBgColor; |
|
private UIButtonGroup<Integer> labelType; |
|
private UICheckBox showLayerType; |
|
private UICheckBox showDataType; |
|
private UICheckBox showName; |
|
private UICheckBox showLng; |
|
private UICheckBox showLat; |
|
private UICheckBox showDesc; |
|
private UITextArea labelJsPane; |
|
private CardLayout cardLayout; |
|
private JPanel cardPane; |
|
|
|
private ChartTextAttrPane textAttrPane; |
|
|
|
private UISpinner showLabelZoom; |
|
|
|
@Override |
|
protected JPanel createContentPane() { |
|
return new ContentPane(); |
|
} |
|
|
|
@Override |
|
public void populateBean(HeatPointMapChart chart) { |
|
JSONObject labelConf = chart.getLabelConf(); |
|
this.showPointLabel.setSelected(labelConf.getBoolean("showPointLabel")); |
|
this.showLabelZoom.setValue(labelConf.getDouble("showLabelZoom")); |
|
this.labelBgColor.setSelectObject(MapUtil.toColor(labelConf.getString("labelBgColor"))); |
|
this.labelType.setSelectedItem(labelConf.getInt("labelType")); |
|
this.showLayerType.setSelected(labelConf.getBoolean("showLayerType")); |
|
this.showDataType.setSelected(labelConf.getBoolean("showDataType")); |
|
this.showName.setSelected(labelConf.getBoolean("showName")); |
|
this.showLng.setSelected(labelConf.getBoolean("showLng")); |
|
this.showLat.setSelected(labelConf.getBoolean("showLat")); |
|
this.showDesc.setSelected(labelConf.getBoolean("showDesc")); |
|
labelJsPane.setText(labelConf.getString("labelJsPane")); |
|
FRFont labelFont = FRFont.getInstance(labelConf.getString("labelfamily"), |
|
labelConf.getInt("labelstyle"), |
|
labelConf.getInt("labelsize"), |
|
MapUtil.toColor(labelConf.getString("labelcolor"))); |
|
this.textAttrPane.populate(labelFont); |
|
if (labelConf.getInt("labelType") == 2) { |
|
this.cardLayout.show(cardPane, "js"); |
|
} |
|
} |
|
|
|
@Override |
|
public void updateBean(HeatPointMapChart chart) { |
|
JSONObject labelConf = JSONObject.create(); |
|
labelConf.put("showPointLabel", this.showPointLabel.isSelected()); |
|
labelConf.put("showLabelZoom", this.showLabelZoom.getValue()); |
|
labelConf.put("labelBgColor", MapUtil.toHex(this.labelBgColor.getSelectObject())); |
|
labelConf.put("labelType", this.labelType.getSelectedItem()); |
|
labelConf.put("showLayerType", this.showLayerType.isSelected()); |
|
labelConf.put("showDataType", this.showDataType.isSelected()); |
|
labelConf.put("showName", this.showName.isSelected()); |
|
labelConf.put("showLng", this.showLng.isSelected()); |
|
labelConf.put("showLat", this.showLat.isSelected()); |
|
labelConf.put("showDesc", this.showDesc.isSelected()); |
|
labelConf.put("labelJsPane", this.labelJsPane.getText()); |
|
|
|
TextAttr labelAttr = this.textAttrPane.update(); |
|
labelConf.put("labelsize", labelAttr.getFRFont().getSize()); |
|
labelConf.put("labelstyle", labelAttr.getFRFont().getStyle()); |
|
labelConf.put("labelfamily", labelAttr.getFRFont().getFamily()); |
|
labelConf.put("labelcolor", MapUtil.toHex(labelAttr.getFRFont().getForeground())); |
|
|
|
chart.setLabelConf(labelConf); |
|
} |
|
|
|
@Override |
|
protected String title4PopupWindow() { |
|
return Toolkit.i18nText("Plugin-HeatPointMap-labelstitle"); |
|
} |
|
|
|
private class ContentPane extends JPanel { |
|
public ContentPane() { |
|
initComponents(); |
|
} |
|
|
|
private void initComponents() { |
|
this.setLayout(new BorderLayout()); |
|
|
|
JPanel toolContentPane = createLabelContentPane(); |
|
JPanel textStylePane = createLabelTextStylePane(); |
|
|
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
double[] columnSize = {f}; |
|
double[] rowSize = {p, p, p, p}; |
|
Component[][] acomponents = new Component[][]{ |
|
new Component[]{showPointLabel}, |
|
new Component[]{toolContentPane}, |
|
new Component[]{textStylePane} |
|
}; |
|
|
|
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents, rowSize, columnSize); |
|
this.add(panel, BorderLayout.CENTER); |
|
this.setVisible(true); |
|
} |
|
} |
|
|
|
private JPanel createLabelContentPane() { |
|
|
|
showPointLabel = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showPointLabel")); |
|
labelBgColor = new ColorSelectBox(100); |
|
showLabelZoom = new UISpinner(0, 20, 1, 15); |
|
labelType = new UIButtonGroup<Integer>(new String[]{ |
|
Toolkit.i18nText("Plugin-HeatPointMap-labelTypeCheck"), |
|
Toolkit.i18nText("Plugin-HeatPointMap-labelTypeJS") |
|
}, |
|
new Integer[]{1, 2} |
|
); |
|
labelType.setSelectedItem(1); |
|
|
|
showLayerType = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showLayerType")); |
|
showDataType = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showDataType")); |
|
showName = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showName")); |
|
showLng = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showLng")); |
|
showLat = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showLat")); |
|
showDesc = new UICheckBox(Toolkit.i18nText("Plugin-HeatPointMap-showDesc")); |
|
|
|
labelJsPane = new UITextArea(6, 6); |
|
|
|
double p = TableLayout.PREFERRED; |
|
double f = TableLayout.FILL; |
|
Component[][] compLabel = new Component[][]{ |
|
{null, null}, |
|
//new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-showLabelZoom")), this.showLabelZoom}, |
|
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-labelBgColor")), this.labelBgColor}, |
|
new Component[]{new UILabel(Toolkit.i18nText("Plugin-HeatPointMap-labelType")), this.labelType} |
|
}; |
|
JPanel labelTypePane = TableLayout4VanChartHelper.createGapTableLayoutPane(compLabel, new double[]{p, p, p, p, p}, new double[]{p, f}); |
|
|
|
Component[][] compCheck = new Component[][]{ |
|
new Component[]{showDataType, showName}, |
|
new Component[]{showLng, showLat}, |
|
new Component[]{showDesc, null} |
|
}; |
|
final JPanel checkPane = TableLayout4VanChartHelper.createGapTableLayoutPane(compCheck, new double[]{p, p, p, p}, new double[]{p, f}); |
|
|
|
cardPane = new JPanel(this.cardLayout = new CardLayout()){ |
|
@Override |
|
public Dimension getPreferredSize() { |
|
if (null != labelType.getSelectedItem() && labelType.getSelectedItem() == 2) { |
|
return labelJsPane.getPreferredSize(); |
|
} else { |
|
return checkPane.getPreferredSize(); |
|
} |
|
} |
|
}; |
|
cardPane.add(checkPane, "check"); |
|
cardPane.add(labelJsPane, "js"); |
|
this.cardLayout.show(cardPane, "check"); |
|
labelType.addChangeListener(new ChangeListener() { |
|
@Override |
|
public void stateChanged(ChangeEvent var1x) { |
|
if (labelType.getSelectedItem() == 1) { |
|
cardLayout.show(cardPane, "check"); |
|
} else { |
|
cardLayout.show(cardPane, "js"); |
|
} |
|
} |
|
}); |
|
|
|
Component[][] comp = new Component[][]{ |
|
new Component[]{labelTypePane}, |
|
new Component[]{cardPane} |
|
}; |
|
JPanel pane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp, new double[]{p, p, p}, new double[]{f}); |
|
|
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-labelAlignExpand"), pane); |
|
} |
|
|
|
private JPanel createLabelTextStylePane() { |
|
this.textAttrPane = new ChartTextAttrPane(); |
|
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-HeatPointMap-LabelsTextStyle"), this.textAttrPane); |
|
} |
|
|
|
}
|
|
|