Browse Source

CHART-15510 调整富文本标签和数据点提示界面

feature/big-screen
Qinghui.Liu 4 years ago
parent
commit
d1cce51256
  1. 2
      designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java
  2. 21
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRefreshTooltipContentPane.java
  3. 20
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java
  4. 406
      designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java
  5. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/CategoryNameFormatPaneWithoutCheckBox.java
  6. 21
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ChangedPercentFormatPaneWithoutCheckBox.java
  7. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ChangedValueFormatPaneWithoutCheckBox.java
  8. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/MapAreaNameFormatPaneWithoutCheckBox.java
  9. 21
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/PercentFormatPaneWithoutCheckBox.java
  10. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SeriesNameFormatPaneWithoutCheckBox.java
  11. 17
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ValueFormatPaneWithoutCheckBox.java
  12. 57
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/VanChartFormatPaneWithCheckBox.java
  13. 16
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/VanChartFormatPaneWithoutCheckBox.java
  14. 16
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/XFormatPaneWithoutCheckBox.java
  15. 16
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/YFormatPaneWithoutCheckBox.java
  16. 20
      designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java
  17. 8
      designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java
  18. 24
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java
  19. 50
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java
  20. 1
      designer-chart/src/main/java/com/fr/van/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java
  21. 49
      designer-chart/src/main/java/com/fr/van/chart/designer/style/tooltip/VanChartPlotTooltipPane.java
  22. 18
      designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/FunnelPercentFormatPaneWithoutCheckBox.java
  23. 19
      designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelLabelContentPane.java
  24. 20
      designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java
  25. 19
      designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java
  26. 12
      designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java
  27. 22
      designer-chart/src/main/java/com/fr/van/chart/map/designer/style/tooltip/VanChartMapRefreshTooltipContentPane.java
  28. 12
      designer-chart/src/main/java/com/fr/van/chart/map/designer/style/tooltip/VanChartMapTooltipContentPane.java
  29. 17
      designer-chart/src/main/java/com/fr/van/chart/map/line/StartAndEndNameFormatPaneWithoutCheckBox.java
  30. 12
      designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java
  31. 18
      designer-chart/src/main/java/com/fr/van/chart/multilayer/style/MultiPieLevelNameFormatPaneWithoutCheckBox.java
  32. 18
      designer-chart/src/main/java/com/fr/van/chart/multilayer/style/MultiPieSeriesNameFormatPaneWithoutCheckBox.java
  33. 9
      designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java
  34. 9
      designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieTooltipContentPane.java
  35. 21
      designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java
  36. 26
      designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java
  37. 42
      designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java
  38. 20
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRefreshTooltipContentPane.java
  39. 33
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureTooltipContentPane.java
  40. 28
      designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTootipContentPane.java
  41. 30
      designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java
  42. 103
      designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html
  43. 6
      designer-chart/src/main/resources/com/fr/design/editor/script/editor.constant.js
  44. 241
      designer-chart/src/main/resources/com/fr/design/editor/script/editor.js
  45. 53
      designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js
  46. 562
      designer-chart/src/main/resources/com/fr/design/editor/script/editor.service.js
  47. 114
      designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js
  48. 40
      designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.model.js
  49. 38
      designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/item/item.js
  50. 22
      designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/disabled_bar_wrapper.js
  51. 124
      designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/toolbar.js
  52. 12
      designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/toolbar.model.js

2
designer-chart/src/main/java/com/fr/van/chart/box/VanChartBoxTooltipContentPane.java

@ -76,7 +76,7 @@ public class VanChartBoxTooltipContentPane extends VanChartTooltipContentPane {
};
}
protected JPanel createCommonPanel() {
protected JPanel createCommonFormatPanel() {
JPanel commonPanel = new JPanel(new BorderLayout());
commonPanel.add(createCateAndSeriesPane(), BorderLayout.NORTH);

21
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRefreshTooltipContentPane.java

@ -1,7 +1,9 @@
package com.fr.van.chart.designer.component;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -28,6 +30,14 @@ public class VanChartRefreshTooltipContentPane extends VanChartTooltipContentPan
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected Component[][] getPaneComponents(){
return new Component[][]{
new Component[]{categoryNameFormatPane,null},
@ -39,4 +49,15 @@ public class VanChartRefreshTooltipContentPane extends VanChartTooltipContentPan
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

20
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java

@ -8,9 +8,6 @@ import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter;
import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class VanChartRichEditorPane {
@ -75,23 +72,6 @@ public class VanChartRichEditorPane {
return new RichEditorModel(richText.getContent(), richText.isAuto(), paramsStr.toString());
}
public static List<String> richParamsParser(String content, Map<String, String> paramsMap) {
if (content == null || paramsMap == null) {
return null;
}
List<String> result = new ArrayList<>();
for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
String param = entry.getValue();
if (content.contains(URLEncoder.encode(param))) {
result.add(param);
}
}
return result;
}
public static class RichEditorModel {
private String content;
private boolean auto;

406
designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java

@ -9,19 +9,26 @@ 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.gui.style.ChartTextAttrPane;
import com.fr.design.ui.ModernUIPane;
import com.fr.general.ComparatorUtils;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.AttrTooltipRichText;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JComponent;
@ -36,28 +43,38 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
/**
* 内容界面 数据点提示
* 数据点提示内容界面含有通用设置富文本编辑器自定义JS界面
*/
public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent> {
private static final long serialVersionUID = 8825929000117843641L;
protected UIButtonGroup<Integer> content;
protected ValueFormatPaneWithCheckBox valueFormatPane;
protected PercentFormatPaneWithCheckBox percentFormatPane;
protected CategoryNameFormatPaneWithCheckBox categoryNameFormatPane;
protected SeriesNameFormatPaneWithCheckBox seriesNameFormatPane;
protected ValueFormatPaneWithCheckBox valueFormatPane;
protected PercentFormatPaneWithCheckBox percentFormatPane;
//监控刷新时,自动数据点提示使用
protected ChangedValueFormatPaneWithCheckBox changedValueFormatPane;
protected ChangedPercentFormatPaneWithCheckBox changedPercentFormatPane;
private JPanel centerPane;
protected CategoryNameFormatPaneWithoutCheckBox richTextCategoryNameFormatPane;
protected SeriesNameFormatPaneWithoutCheckBox richTextSeriesNameFormatPane;
protected ValueFormatPaneWithoutCheckBox richTextValueFormatPane;
protected PercentFormatPaneWithoutCheckBox richTextPercentFormatPane;
protected ChangedValueFormatPaneWithoutCheckBox richTextChangedValueFormatPane;
protected ChangedPercentFormatPaneWithoutCheckBox richTextChangedPercentFormatPane;
private JPanel centerPanel;
private JPanel commonPanel;
private JPanel editorPane;
private JPanel editorPanel;
private JPanel htmlPanel;
private UIButtonGroup<Integer> styleButton;
private ChartTextAttrPane textAttrPane;
private VanChartHtmlLabelPane htmlLabelPane;
private VanChartStylePane parent;
@ -75,55 +92,44 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
}
private JPanel createLabelContentPane() {
content = new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Common"),
Toolkit.i18nText("Fine-Design_Chart_Custom")
});
initFormatPane(parent, showOnPane);
initRichTextFormatPane(parent, showOnPane);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
initDetailPane();
initCenterPane();
JPanel content = new JPanel(new BorderLayout());
content.add(createButtonPane(), BorderLayout.NORTH);
content.add(centerPanel, BorderLayout.CENTER);
initContentListener();
return getLabelContentPane(content);
}
private void initDetailPane() {
commonPanel = createCommonPanel();
htmlLabelPane = createHtmlLabelPane();
htmlLabelPane.setParent(parent);
editorPanel = createRichEditorPanel();
htmlPanel = createHtmlPane();
}
centerPane = new JPanel(new CardLayout()){
@Override
private void initCenterPane() {
centerPanel = new JPanel(new CardLayout()) {
public Dimension getPreferredSize() {
if(content.getSelectedIndex() == 0){
if (content.getSelectedIndex() == 0) {
return commonPanel.getPreferredSize();
} else if (content.getSelectedIndex() == 1) {
return editorPanel.getPreferredSize();
} else {
return new Dimension(commonPanel.getPreferredSize().width,htmlLabelPane.getPreferredSize().height);
return htmlPanel.getPreferredSize();
}
}
};
centerPane.add(htmlLabelPane, Toolkit.i18nText("Fine-Design_Chart_Custom"));
centerPane.add(commonPanel, Toolkit.i18nText("Fine-Design_Chart_Common"));
double[] column = {f, e};
double[] row = {p,p,p};
Component[][] components = new Component[][]{
new Component[]{null,null},
new Component[]{new UILabel(getLabelContentTitle()),content},
new Component[]{null,centerPane},
};
JPanel contentPane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, column);
// editorPane = createRichEditorPanel();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(contentPane, BorderLayout.CENTER);
// panel.add(editorPane, BorderLayout.SOUTH);
initContentListener();
return getLabelContentPane(panel);
centerPanel.add(commonPanel, Toolkit.i18nText("Fine-Design_Chart_Common"));
centerPanel.add(editorPanel, Toolkit.i18nText("Fine-Design_Chart_Rich_Text"));
centerPanel.add(htmlPanel, Toolkit.i18nText("Fine-Design_Chart_Custom"));
}
protected String getLabelContentTitle () {
@ -134,18 +140,88 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
return createTableLayoutPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Content"), contentPane);
}
protected VanChartHtmlLabelPane createHtmlLabelPane() {
return new VanChartHtmlLabelPaneWithOutWidthAndHeight();
private JPanel createButtonPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] column = {f, p};
double[] row = {p, p};
content = new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Common"),
Toolkit.i18nText("Fine-Design_Chart_Rich_Text"),
Toolkit.i18nText("Fine-Design_Chart_Custom")
});
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{content, null}
};
return TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, column);
}
private JPanel createCommonPanel() {
JPanel common = new JPanel(new BorderLayout());
common.add(createCommonFormatPanel(), BorderLayout.CENTER);
common.add(createCommonStylePane(), BorderLayout.SOUTH);
return common;
}
protected JPanel createCommonPanel() {
protected JPanel createCommonFormatPanel() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, p};
double[] rowSize = getRowSize(p);
JPanel formatContent = TableLayoutHelper.createTableLayoutPane(getPaneComponents(), getRowSize(p), new double[]{f, p});
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(getLabelContentTitle()), formatContent}
};
return TableLayoutHelper.createTableLayoutPane(getPaneComponents(), rowSize, columnSize);
return TableLayoutHelper.createTableLayoutPane(components, new double[]{p, p}, new double[]{f, e});
}
private JPanel createCommonStylePane() {
styleButton = new UIButtonGroup<>(new String[]{
Toolkit.i18nText("Fine-Design_Chart_Automatic"),
Toolkit.i18nText("Fine-Design_Chart_Custom")
});
textAttrPane = new ChartTextAttrPane() {
protected Component[][] getComponents(JPanel buttonPane) {
return new Component[][]{
new Component[]{null, null},
new Component[]{null, getFontNameComboBox()},
new Component[]{null, buttonPane}
};
}
};
JPanel buttonPane = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Widget_Style"), styleButton);
JPanel stylePanel = new JPanel(new BorderLayout());
stylePanel.add(buttonPane, BorderLayout.CENTER);
stylePanel.add(textAttrPane, BorderLayout.SOUTH);
initStyleButtonListener();
return stylePanel;
}
private void initStyleButtonListener() {
styleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
checkStylePane();
}
});
}
private void checkStylePane() {
textAttrPane.setVisible(styleButton.getSelectedIndex() == 1);
}
private JPanel createRichEditorPanel() {
@ -154,18 +230,21 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, e};
double[] rowSize = {p, p};
double[] rowSize = {p, p, p};
JPanel formatContent = TableLayoutHelper.createTableLayoutPane(getRichTextComponents(), getRowSize(p), new double[]{f, p});
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Content_Style")), createContentStylePane()}
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Content_Style")), createRichEditorButton()},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Use_Format")), formatContent}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JComponent createContentStylePane() {
UIButton contentTextArea = new UIButton(Toolkit.i18nText("Fine-Design_Report_RichTextEditor"));
private JComponent createRichEditorButton() {
UIButton contentTextArea = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Rich_Text_Edit"));
contentTextArea.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
@ -188,8 +267,6 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
VanChartRichEditorPane.RichEditorModel model = pane.update();
String content = model.getContent();
List<String> params = VanChartRichEditorPane.richParamsParser(content, richText.getParams());
populateFormatParams(params);
updateLocalRichText(content, model.isAuto());
SwingUtilities.getWindowAncestor(pane).setVisible(false);
@ -207,6 +284,28 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
}
}
private JPanel createHtmlPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] column = {f, p};
double[] row = {p, p};
htmlLabelPane = createHtmlLabelPane();
htmlLabelPane.setParent(parent);
Component[][] htmlComponents = new Component[][]{
new Component[]{null, null},
new Component[]{htmlLabelPane, null}
};
return TableLayout4VanChartHelper.createGapTableLayoutPane(htmlComponents, row, column);
}
protected VanChartHtmlLabelPane createHtmlLabelPane() {
return new VanChartHtmlLabelPaneWithOutWidthAndHeight();
}
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane){
categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane);
seriesNameFormatPane = new SeriesNameFormatPaneWithCheckBox(parent, showOnPane);
@ -214,6 +313,13 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected JPanel createTableLayoutPaneWithTitle(String title, JPanel panel) {
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(title, panel);
}
@ -231,6 +337,15 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
};
}
private void initContentListener() {
content.addActionListener(new ActionListener() {
@Override
@ -242,19 +357,17 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
private void checkCardPane() {
CardLayout cardLayout = (CardLayout) centerPane.getLayout();
if (content.getSelectedIndex() == 1) {
cardLayout.show(centerPane, Toolkit.i18nText("Fine-Design_Chart_Custom"));
CardLayout cardLayout = (CardLayout) centerPanel.getLayout();
if (content.getSelectedIndex() == 2) {
cardLayout.show(centerPanel, Toolkit.i18nText("Fine-Design_Chart_Custom"));
if(isDirty()){
setCustomFormatterText();
setDirty(false);
}
} else if (content.getSelectedIndex() == 1) {
cardLayout.show(centerPanel, Toolkit.i18nText("Fine-Design_Chart_Rich_Text"));
} else {
cardLayout.show(centerPane, Toolkit.i18nText("Fine-Design_Chart_Common"));
}
if (editorPane != null) {
editorPane.setVisible(content.getSelectedIndex() == 0);
cardLayout.show(centerPanel, Toolkit.i18nText("Fine-Design_Chart_Common"));
}
}
@ -263,8 +376,13 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
}
public boolean isDirty() {
return categoryNameFormatPane.isDirty() || seriesNameFormatPane.isDirty() || valueFormatPane.isDirty() || percentFormatPane.isDirty()
|| (changedValueFormatPane != null && changedValueFormatPane.isDirty()) || (changedValueFormatPane != null && changedPercentFormatPane.isDirty());
return categoryNameFormatPane.isDirty()
|| seriesNameFormatPane.isDirty()
|| valueFormatPane.isDirty()
|| percentFormatPane.isDirty()
|| (changedValueFormatPane != null && changedValueFormatPane.isDirty())
|| (changedValueFormatPane != null && changedPercentFormatPane.isDirty());
}
public void setDirty(boolean isDirty) {
@ -281,57 +399,28 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
}
}
protected VanChartFormatPaneWithCheckBox[] getFormatPaneGroup() {
return new VanChartFormatPaneWithCheckBox[]{
categoryNameFormatPane, seriesNameFormatPane,
valueFormatPane, percentFormatPane,
changedValueFormatPane, changedPercentFormatPane
};
}
protected VanChartFormatPaneWithCheckBox getTargetFormatPane(Object param) {
VanChartFormatPaneWithCheckBox[] formatPaneGroup = getFormatPaneGroup();
protected VanChartFormatPaneWithCheckBox[] getCommonFormatPaneGroup() {
Object[] params = richText.getParams().values().toArray();
for (int i = 0, len = Math.min(params.length, formatPaneGroup.length); i < len; i++) {
if (ComparatorUtils.equals(params[i], param) && formatPaneGroup[i] != null) {
return formatPaneGroup[i];
}
}
return null;
return new VanChartFormatPaneWithCheckBox[]{
categoryNameFormatPane,
seriesNameFormatPane,
valueFormatPane,
percentFormatPane,
changedValueFormatPane,
changedPercentFormatPane
};
}
private String getParamsRichText() {
VanChartFormatPaneWithCheckBox[] formatPaneGroup = getFormatPaneGroup();
protected VanChartFormatPaneWithoutCheckBox[] getRichTextFormatPaneGroup() {
// todo 获取参数对应的富文本字符串,正确的流程是:
// 在BI的富文本组件中,先清空content,然后addParam,最后读取最新的content,
// 但是当前接口还没开出来,暂时先在本地写死,模拟类似的效果
String[] richTextGroup = new String[]{
"<img alt=\"%24%7BCATEGORY%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:86.095703125px;height: 16px; max-width:86.095703125px;max-height: 16px; min-width:86.095703125px;min-height: 16px\" name=\"%24%7BCATEGORY%7D\" />",
"<img alt=\"%24%7BSERIES%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:63.8828125px;height: 16px; max-width:63.8828125px;max-height: 16px; min-width:63.8828125px;min-height: 16px\" name=\"%24%7BSERIES%7D\" />",
"<img alt=\"%24%7BVALUE%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:61.849609375px;height: 16px; max-width:61.849609375px;max-height: 16px; min-width:61.849609375px;min-height: 16px\" name=\"%24%7BVALUE%7D\" />",
"<img alt=\"%24%7BPERCENT%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:77.39453125px;height: 16px; max-width:77.39453125px;max-height: 16px; min-width:77.39453125px;min-height: 16px\" name=\"%24%7BPERCENT%7D\" />",
"<img alt=\"%24%7BCHANGEDVALUE%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:122.119140625px;height: 16px; max-width:122.119140625px;max-height: 16px; min-width:122.119140625px;min-height: 16px\" name=\"%24%7BCHANGEDVALUE%7D\" />",
"<img alt=\"%24%7BCHANGEDPERCENT%7D\" class=\"rich-editor-param\" style=\"background-color: rgba(54, 133, 242, 0.1);vertical-align: middle; margin: 0 1px; width:137.6640625px;height: 16px; max-width:137.6640625px;max-height: 16px; min-width:137.6640625px;min-height: 16px\" name=\"%24%7BCHANGEDPERCENT%7D\" />"
return new VanChartFormatPaneWithoutCheckBox[]{
richTextCategoryNameFormatPane,
richTextSeriesNameFormatPane,
richTextValueFormatPane,
richTextPercentFormatPane,
richTextChangedValueFormatPane,
richTextChangedPercentFormatPane
};
StringBuilder result = new StringBuilder("<p>");
for (int i = 0, len = formatPaneGroup.length; i < len; i++) {
VanChartFormatPaneWithCheckBox formatPane = formatPaneGroup[i];
String paramRichText = richTextGroup[i];
if (formatPane != null && formatPane.isSelected()) {
result.append(paramRichText);
}
}
result.append("</p>");
return result.toString();
}
@Override
@ -346,19 +435,36 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
return;
}
content.setSelectedIndex(attrTooltipContent.isCommon() ? 0 : 1);
if (attrTooltipContent.isCommon()) {
content.setSelectedIndex(0);
} else if (attrTooltipContent.isRichText()) {
content.setSelectedIndex(1);
} else {
content.setSelectedIndex(2);
}
if (attrTooltipContent.isCustom()) {
styleButton.setSelectedIndex(1);
} else {
styleButton.setSelectedIndex(0);
}
this.textAttrPane.populate(attrTooltipContent.getTextAttr());
populateFormatPane(attrTooltipContent);
populateRichEditor(attrTooltipContent);
htmlLabelPane.populate(attrTooltipContent.getHtmlLabel());
if(!attrTooltipContent.isCommon()){
setDirty(false);
}
checkCardPane();
checkStylePane();
}
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {
VanChartFormatPaneWithCheckBox[] formatPaneGroup = getFormatPaneGroup();
VanChartFormatPaneWithCheckBox[] formatPaneGroup = getCommonFormatPaneGroup();
AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
attrTooltipContent.getCategoryFormat(),
@ -375,54 +481,52 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
if (formatPane != null && format != null) {
formatPane.populate(format);
// 填充面板时,更新富文本编辑器参数
formatPane.updateFormatParams(richText.getParams(), format.getJs());
}
}
}
AttrTooltipRichText tooltipRichText = attrTooltipContent.getRichText();
protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = getRichTextFormatPaneGroup();
if (tooltipRichText != null) {
updateLocalRichText(tooltipRichText.getContent(), tooltipRichText.isAuto());
setDirty(false);
}
}
AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
attrTooltipContent.getRichTextCategoryFormat(),
attrTooltipContent.getRichTextSeriesFormat(),
attrTooltipContent.getRichTextValueFormat(),
attrTooltipContent.getRichTextPercentFormat(),
attrTooltipContent.getRichTextChangedValueFormat(),
attrTooltipContent.getRichTextChangedPercentFormat()
};
private void populateFormatParams(List<String> params) {
if (params == null) {
return;
}
for (int i = 0, len = formatPaneGroup.length; i < len; i++) {
VanChartFormatPaneWithCheckBox formatPane = formatPaneGroup[i];
AttrTooltipFormat format = formatGroup[i];
VanChartFormatPaneWithCheckBox[] formatPaneGroup = getFormatPaneGroup();
if (formatPane != null && format != null) {
formatPane.populate(format);
for (VanChartFormatPaneWithCheckBox formatPane : formatPaneGroup) {
if (formatPane != null) {
formatPane.setSelected(false);
// 填充面板时,更新富文本编辑器参数
formatPane.updateFormatParams(richText.getParams(), format.getJs());
}
}
for (String param : params) {
VanChartFormatPaneWithCheckBox formatPane = getTargetFormatPane(param);
AttrTooltipRichText tooltipRichText = attrTooltipContent.getRichTextAttr();
if (formatPane != null) {
formatPane.setSelected(true);
}
if (tooltipRichText != null) {
updateLocalRichText(tooltipRichText.getContent(), tooltipRichText.isAuto());
setDirty(false);
}
}
public AttrTooltipContent updateBean() {
AttrTooltipContent attrTooltipContent = createAttrTooltip();
boolean isCommon = content.getSelectedIndex() == 0;
attrTooltipContent.setCommon(isCommon);
if (isDirty() && isCommon) {
updateLocalRichText(getParamsRichText(), false);
setDirty(false);
}
attrTooltipContent.setCommon(content.getSelectedIndex() == 0);
attrTooltipContent.setRichText(content.getSelectedIndex() == 1);
attrTooltipContent.setCustom(styleButton.getSelectedIndex() == 1);
attrTooltipContent.setTextAttr(this.textAttrPane.update());
updateFormatPane(attrTooltipContent);
updateRichEditor(attrTooltipContent);
updateTooltipRichText(attrTooltipContent);
updateFormatsWithPaneWidth(attrTooltipContent);
@ -449,6 +553,20 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
}
}
protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
richTextCategoryNameFormatPane.update(attrTooltipContent.getRichTextCategoryFormat());
richTextSeriesNameFormatPane.update(attrTooltipContent.getRichTextSeriesFormat());
richTextValueFormatPane.update(attrTooltipContent.getRichTextValueFormat());
richTextValueFormatPane.update(attrTooltipContent.getRichTextPercentFormat());
if (richTextChangedValueFormatPane != null) {
richTextChangedValueFormatPane.update(attrTooltipContent.getRichTextChangedValueFormat());
}
if (richTextChangedPercentFormatPane != null) {
richTextChangedPercentFormatPane.update(attrTooltipContent.getRichTextChangedPercentFormat());
}
}
private void updateLocalRichText(String content, boolean isAuto) {
richText.setContent(content);
richText.setAuto(isAuto);
@ -456,7 +574,7 @@ public class VanChartTooltipContentPane extends BasicBeanPane<AttrTooltipContent
private void updateTooltipRichText(AttrTooltipContent attrTooltipContent) {
if (attrTooltipContent != null) {
AttrTooltipRichText tooltipRichText = attrTooltipContent.getRichText();
AttrTooltipRichText tooltipRichText = attrTooltipContent.getRichTextAttr();
tooltipRichText.setContent(richText.getContent());
tooltipRichText.setAuto(richText.isAuto());
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/CategoryNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class CategoryNameFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public CategoryNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Category_Use_Name");
}
}

21
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ChangedPercentFormatPaneWithoutCheckBox.java

@ -0,0 +1,21 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class ChangedPercentFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public ChangedPercentFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Change_Percent");
}
protected boolean isPercent() {
return true;
}
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ChangedValueFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class ChangedValueFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public ChangedValueFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Change_Value");
}
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/MapAreaNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class MapAreaNameFormatPaneWithoutCheckBox extends CategoryNameFormatPaneWithoutCheckBox {
public MapAreaNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Area_Name");
}
}

21
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/PercentFormatPaneWithoutCheckBox.java

@ -0,0 +1,21 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class PercentFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public PercentFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Use_Percent");
}
protected boolean isPercent() {
return true;
}
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SeriesNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class SeriesNameFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public SeriesNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Series_Name");
}
}

17
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/ValueFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.designer.component.format;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class ValueFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public ValueFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Use_Value");
}
}

57
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/VanChartFormatPaneWithCheckBox.java

@ -5,6 +5,7 @@ import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.UIBubbleFloatPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.style.FormatPane;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.format.AttrTooltipFormat;
@ -15,6 +16,7 @@ import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.Format;
import java.util.Map;
@ -37,26 +39,55 @@ public abstract class VanChartFormatPaneWithCheckBox extends JPanel{
public VanChartFormatPaneWithCheckBox(AbstractAttrNoScrollPane parent, JPanel showOnPane) {
this.parent = parent;
this.showOnPane = showOnPane;
this.isDirty = false;
this.isDirty = true;
this.setLayout(new BorderLayout());
isSelectedBox = new UICheckBox(getCheckBoxText());
formatButton = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Use_Format"));
isSelectedBox = new UICheckBox(getCheckBoxText()) {
protected void attributeChange() {
isDirty = true;
super.attributeChange();
}
};
if (showSelectBox()) {
this.add(isSelectedBox, BorderLayout.CENTER);
} else {
this.add(new UILabel(getCheckBoxText()), BorderLayout.CENTER);
}
formatButton = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Use_Format"));
this.add(isSelectedBox, BorderLayout.CENTER);
this.add(formatButton, BorderLayout.EAST);
initFormatListener();
isSelectedBox.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
isDirty = true;
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
protected abstract String getCheckBoxText();
protected boolean showSelectBox() {
return true;
}
protected boolean isPercent() {
return false;
}
@ -107,14 +138,6 @@ public abstract class VanChartFormatPaneWithCheckBox extends JPanel{
this.isDirty = isDirty;
}
public boolean isSelected() {
return this.isSelectedBox.isSelected();
}
public void setSelected(boolean isSelected) {
this.isSelectedBox.setSelected(isSelected);
}
public void populate(AttrTooltipFormat tooltipFormat) {
this.isSelectedBox.setSelected(tooltipFormat.isEnable());
this.format = tooltipFormat.getFormat();

16
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/VanChartFormatPaneWithoutCheckBox.java

@ -0,0 +1,16 @@
package com.fr.van.chart.designer.component.format;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public abstract class VanChartFormatPaneWithoutCheckBox extends VanChartFormatPaneWithCheckBox {
public VanChartFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected boolean showSelectBox() {
return false;
}
}

16
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/XFormatPaneWithoutCheckBox.java

@ -0,0 +1,16 @@
package com.fr.van.chart.designer.component.format;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class XFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public XFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return "x";
}
}

16
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/YFormatPaneWithoutCheckBox.java

@ -0,0 +1,16 @@
package com.fr.van.chart.designer.component.format;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class YFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public YFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return "y";
}
}

20
designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/RefreshTooltipContentPaneWithOutSeries.java

@ -1,7 +1,9 @@
package com.fr.van.chart.designer.component.tooltip;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -23,6 +25,14 @@ public class RefreshTooltipContentPaneWithOutSeries extends TooltipContentPaneWi
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p};
}
@ -36,4 +46,14 @@ public class RefreshTooltipContentPaneWithOutSeries extends TooltipContentPaneWi
new Component[]{changedPercentFormatPane,null},
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

8
designer-chart/src/main/java/com/fr/van/chart/designer/component/tooltip/TooltipContentPaneWithOutSeries.java

@ -28,4 +28,12 @@ public class TooltipContentPaneWithOutSeries extends VanChartTooltipContentPane
new Component[]{percentFormatPane,null},
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null}
};
}
}

24
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java

@ -24,6 +24,8 @@ import javax.swing.SwingConstants;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by mengao on 2017/8/13.
@ -35,6 +37,8 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
private UIButtonGroup<Integer> align;
private JPanel alignPane;
private Integer[] oldAlignValues;
protected UIButtonGroup<Integer> style;
protected ChartTextAttrPane textFontPane;
public VanChartGaugeLabelDetailPane(Plot plot, VanChartStylePane parent) {
super(plot, parent);
@ -63,6 +67,15 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
return TableLayoutHelper.createTableLayoutPane(getLabelStyleComponents(plot), row, col);
}
protected void initStyleListener() {
style.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkStyleUse();
}
});
}
protected boolean isFontSizeAuto() {
return false;
}
@ -120,7 +133,10 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
};
} else {
return super.getLabelPaneComponents(plot, p, columnSize);
return new Component[][]{
new Component[]{dataLabelContentPane, null},
new Component[]{createLabelStylePane(getLabelStyleRowSize(p), columnSize, plot), null},
};
}
}
@ -210,15 +226,21 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane {
super.populate(detail);
style.setSelectedIndex(1);
textFontPane.populate(detail.getTextAttr());
if (hasLabelAlign(this.getPlot()) && align != null) {
align.setSelectedItem(detail.getAlign());
}
checkStyleUse();
}
public void update(AttrLabelDetail detail) {
super.update(detail);
detail.setCustom(true);
if (textFontPane != null) {
detail.setTextAttr(textFontPane.update());
}
if (align != null) {
if (align.getSelectedItem() != null) {
detail.setAlign(align.getSelectedItem());

50
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java

@ -44,9 +44,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
protected UIButtonGroup<Boolean> autoAdjust;
protected UIToggleButton tractionLine;
protected UIButtonGroup<Integer> style;
protected ChartTextAttrPane textFontPane;
protected ColorSelectBox backgroundColor;
private JPanel tractionLinePane;
@ -93,13 +90,11 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
if(hasLabelPosition(plot)){
return new Component[][]{
new Component[]{dataLabelContentPane,null},
new Component[]{createLabelPositionPane(Toolkit.i18nText("Fine-Design_Chart_Layout_Position"), plot), null},
new Component[]{createLabelStylePane(getLabelStyleRowSize(p), columnSize, plot),null},
new Component[]{createLabelPositionPane(Toolkit.i18nText("Fine-Design_Chart_Layout_Position"), plot), null}
};
} else {
return new Component[][]{
new Component[]{dataLabelContentPane,null},
new Component[]{createLabelStylePane(getLabelStyleRowSize(p), columnSize, plot),null},
new Component[]{dataLabelContentPane,null}
};
}
}
@ -214,17 +209,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
});
}
protected JPanel createLabelStylePane(double[] row, double[] col, Plot plot) {
style = new UIButtonGroup<Integer>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"),
Toolkit.i18nText("Fine-Design_Chart_Custom")});
textFontPane =initTextFontPane();
initStyleListener();
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(getLabelStyleComponents(plot),row,col);
return createTableLayoutPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Widget_Style"), panel);
}
protected ChartTextAttrPane initTextFontPane () {
return new ChartTextAttrPane(){
protected Component[][] getComponents(JPanel buttonPane) {
@ -237,24 +221,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
};
}
protected Component[][] getLabelStyleComponents(Plot plot) {
UILabel text = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Character"), SwingConstants.LEFT);
return new Component[][]{
new Component[]{null,null},
new Component[]{text,style},
new Component[]{textFontPane,null},
};
}
protected void initStyleListener() {
style.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkStyleUse();
}
});
}
protected JPanel createBackgroundColorPane() {
backgroundColor = new ColorSelectBox(100);
return createTableLayoutPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Background"), backgroundColor);
@ -265,18 +231,12 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
}
private void checkAllUse() {
checkStyleUse();
if(tractionLine == null){
return;
}
checkPositionEnabled();
}
protected void checkStyleUse() {
textFontPane.setVisible(style.getSelectedIndex() == 1);
textFontPane.setPreferredSize(style.getSelectedIndex() == 1 ? new Dimension(0, 60) : new Dimension(0, 0));
}
private void checkPosition() {
tractionLine.setSelected(position.getSelectedItem() == Constants.OUTSIDE);
checkPositionEnabled();
@ -301,8 +261,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
if(autoAdjust != null){
autoAdjust.setSelectedIndex(detail.isAutoAdjust() == true ? 0 : 1);
}
style.setSelectedIndex(detail.isCustom() ? 1 : 0);
textFontPane.populate(detail.getTextAttr());
if(backgroundColor != null){
backgroundColor.setSelectObject(detail.getBackgroundColor());
@ -327,10 +285,6 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
if(tractionLine != null){
detail.setShowGuidLine(tractionLine.isSelected() && detail.getPosition() == Constants.OUTSIDE);
}
detail.setCustom(style.getSelectedIndex() == 1);
if(textFontPane != null){
detail.setTextAttr(textFontPane.update());
}
if(backgroundColor != null){
detail.setBackgroundColor(backgroundColor.getSelectObject());
}

1
designer-chart/src/main/java/com/fr/van/chart/designer/style/tooltip/VanChartPlotRefreshTooltipPane.java

@ -72,7 +72,6 @@ public class VanChartPlotRefreshTooltipPane extends VanChartPlotTooltipNoCheckPa
Component[][] components = new Component[][]{
new Component[]{refreshTooltipContentPane,null},
new Component[]{initDurationPane(),null},
new Component[]{createLabelStylePane(),null},
new Component[]{TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Border"),borderPane),null},
new Component[]{TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Background"), backgroundPane),null},

49
designer-chart/src/main/java/com/fr/van/chart/designer/style/tooltip/VanChartPlotTooltipPane.java

@ -7,8 +7,6 @@ import com.fr.design.gui.icheckbox.UICheckBox;
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.utils.gui.UIComponentUtils;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.plugin.chart.base.AttrTooltip;
@ -32,9 +30,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
protected VanChartTooltipContentPane tooltipContentPane;
protected UIButtonGroup<Integer> style;
protected ChartTextAttrPane textFontPane;
protected VanChartBorderWithRadiusPane borderPane;
protected VanChartBackgroundWithOutImagePane backgroundPane;
@ -95,7 +90,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
protected Component[][] createComponents(Plot plot) {
Component[][] components = new Component[][]{
new Component[]{tooltipContentPane,null},
new Component[]{createLabelStylePane(),null},
new Component[]{TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Border"),borderPane),null},
new Component[]{TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Background"), backgroundPane),null},
new Component[]{createDisplayStrategy(plot),null},
@ -108,38 +102,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
tooltipContentPane = PlotFactory.createPlotTooltipContentPane(plot, parent, VanChartPlotTooltipPane.this);
}
protected JPanel createLabelStylePane() {
style = new UIButtonGroup<Integer>(new String[]{Toolkit.i18nText("Fine-Design_Chart_Automatic"),Toolkit.i18nText("Fine-Design_Chart_Custom")});
textFontPane = new ChartTextAttrPane() {
protected Component[][] getComponents(JPanel buttonPane) {
return new Component[][]{
new Component[]{null, null},
new Component[]{null, getFontNameComboBox()},
new Component[]{null, buttonPane}
};
}
};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Character"), style);
JPanel panel1 = new JPanel(new BorderLayout());
panel1.add(panel, BorderLayout.CENTER);
panel1.add(textFontPane, BorderLayout.SOUTH);
initStyleListener();
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Widget_Style"), panel1);
}
private void initStyleListener() {
style.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
checkStyleUse();
}
});
}
protected JPanel createDisplayStrategy(Plot plot) {
showAllSeries = new UICheckBox(getShowAllSeriesLabelText());
followMouse = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Chart_Follow_Mouse"),
@ -175,7 +137,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
private void checkAllUse() {
checkBoxUse();
checkStyleUse();
}
/**
* 检查box使用.
@ -184,10 +145,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
tooltipPane.setVisible(isTooltipShow.isSelected());
}
private void checkStyleUse() {
textFontPane.setVisible(style.getSelectedIndex() == 1);
}
protected AttrTooltip getAttrTooltip() {
return new AttrTooltip();
}
@ -202,8 +159,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
tooltipContentPane.populateBean(attr.getContent());
}
style.setSelectedIndex(attr.isCustom() ? 1 : 0);
textFontPane.populate(attr.getTextAttr());
borderPane.populate(attr.getGeneralInfo());
backgroundPane.populate(attr.getGeneralInfo());
if(showAllSeries != null) {
@ -224,10 +179,6 @@ public class VanChartPlotTooltipPane extends BasicPane {
attrTooltip.setContent(tooltipContentPane.updateBean());
}
attrTooltip.setCustom(style.getSelectedIndex() == 1);
if(textFontPane != null){
attrTooltip.setTextAttr(textFontPane.update());
}
borderPane.update(attrTooltip.getGeneralInfo());
backgroundPane.update(attrTooltip.getGeneralInfo());
if(showAllSeries != null) {

18
designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/FunnelPercentFormatPaneWithoutCheckBox.java

@ -0,0 +1,18 @@
package com.fr.van.chart.funnel.designer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class FunnelPercentFormatPaneWithoutCheckBox extends PercentFormatPaneWithoutCheckBox {
public FunnelPercentFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Value_Conversion");
}
}

19
designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelLabelContentPane.java

@ -4,8 +4,12 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -31,6 +35,14 @@ public class VanChartFunnelLabelContentPane extends VanChartLabelContentPane {
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null}
};
}
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane);
@ -39,6 +51,13 @@ public class VanChartFunnelLabelContentPane extends VanChartLabelContentPane {
percentFormatPane = new FunnelPercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new FunnelPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent attrTooltipContent = new AttrTooltipContent();
attrTooltipContent.getCategoryFormat().setEnable(false);

20
designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelRefreshTooltipContentPane.java

@ -1,7 +1,9 @@
package com.fr.van.chart.funnel.designer.style;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -22,6 +24,14 @@ public class VanChartFunnelRefreshTooltipContentPane extends VanChartFunnelToolt
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p};
}
@ -35,4 +45,14 @@ public class VanChartFunnelRefreshTooltipContentPane extends VanChartFunnelToolt
new Component[]{changedPercentFormatPane,null},
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

19
designer-chart/src/main/java/com/fr/van/chart/funnel/designer/style/VanChartFunnelTooltipContentPane.java

@ -4,8 +4,11 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -31,6 +34,14 @@ public class VanChartFunnelTooltipContentPane extends VanChartTooltipContentPane
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null}
};
}
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane);
@ -39,6 +50,14 @@ public class VanChartFunnelTooltipContentPane extends VanChartTooltipContentPane
percentFormatPane = new FunnelPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new FunnelPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent attrTooltipContent = new AttrTooltipContent();
attrTooltipContent.getCategoryFormat().setEnable(false);

12
designer-chart/src/main/java/com/fr/van/chart/map/designer/style/label/VanChartMapLabelContentPane.java

@ -5,9 +5,13 @@ import com.fr.plugin.chart.base.format.AttrTooltipAreaNameFormat;
import com.fr.plugin.chart.base.format.AttrTooltipMapValueFormat;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -28,6 +32,14 @@ public class VanChartMapLabelContentPane extends VanChartLabelContentPane {
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new MapAreaNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();

22
designer-chart/src/main/java/com/fr/van/chart/map/designer/style/tooltip/VanChartMapRefreshTooltipContentPane.java

@ -3,7 +3,9 @@ package com.fr.van.chart.map.designer.style.tooltip;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipAreaNameFormat;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -20,10 +22,19 @@ public class VanChartMapRefreshTooltipContentPane extends VanChartMapTooltipCont
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initFormatPane(parent, showOnPane);
changedValueFormatPane = new ChangedValueFormatPaneWithCheckBox(parent, showOnPane);
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p,p};
}
@ -39,6 +50,17 @@ public class VanChartMapRefreshTooltipContentPane extends VanChartMapTooltipCont
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();

12
designer-chart/src/main/java/com/fr/van/chart/map/designer/style/tooltip/VanChartMapTooltipContentPane.java

@ -5,9 +5,13 @@ import com.fr.plugin.chart.base.format.AttrTooltipAreaNameFormat;
import com.fr.plugin.chart.base.format.AttrTooltipMapValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.MapAreaNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -28,6 +32,14 @@ public class VanChartMapTooltipContentPane extends VanChartTooltipContentPane {
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new MapAreaNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();

17
designer-chart/src/main/java/com/fr/van/chart/map/line/StartAndEndNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,17 @@
package com.fr.van.chart.map.line;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class StartAndEndNameFormatPaneWithoutCheckBox extends CategoryNameFormatPaneWithoutCheckBox {
public StartAndEndNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Start_And_End");
}
}

12
designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapTooltipContentPane.java

@ -4,9 +4,13 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipStartAndEndNameFormat;
import com.fr.plugin.chart.base.format.AttrTooltipValueFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -27,6 +31,14 @@ public class VanChartLineMapTooltipContentPane extends VanChartTooltipContentPan
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new StartAndEndNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();

18
designer-chart/src/main/java/com/fr/van/chart/multilayer/style/MultiPieLevelNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,18 @@
package com.fr.van.chart.multilayer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class MultiPieLevelNameFormatPaneWithoutCheckBox extends CategoryNameFormatPaneWithoutCheckBox {
public MultiPieLevelNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Level_Name");
}
}

18
designer-chart/src/main/java/com/fr/van/chart/multilayer/style/MultiPieSeriesNameFormatPaneWithoutCheckBox.java

@ -0,0 +1,18 @@
package com.fr.van.chart.multilayer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
public class MultiPieSeriesNameFormatPaneWithoutCheckBox extends SeriesNameFormatPaneWithoutCheckBox {
public MultiPieSeriesNameFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
}
}

9
designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieLabelContentPane.java

@ -4,7 +4,9 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.van.chart.designer.component.VanChartLabelContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -25,6 +27,13 @@ public class VanChartMultiPieLabelContentPane extends VanChartLabelContentPane {
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new MultiPieLevelNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new MultiPieSeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();
content.setCategoryFormat(new AttrTooltipMultiLevelNameFormat());

9
designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMultiPieTooltipContentPane.java

@ -4,7 +4,9 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -25,6 +27,13 @@ public class VanChartMultiPieTooltipContentPane extends VanChartTooltipContentPa
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new MultiPieLevelNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSeriesNameFormatPane = new MultiPieSeriesNameFormatPaneWithoutCheckBox(parent, showOnPane);
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent content = new AttrTooltipContent();

21
designer-chart/src/main/java/com/fr/van/chart/multilayer/style/VanChartMutiPieRefreshTooltipContentPane.java

@ -1,7 +1,9 @@
package com.fr.van.chart.multilayer.style;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -25,6 +27,14 @@ public class VanChartMutiPieRefreshTooltipContentPane extends VanChartMultiPieTo
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p,p};
}
@ -40,4 +50,15 @@ public class VanChartMutiPieRefreshTooltipContentPane extends VanChartMultiPieTo
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

26
designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterRefreshTooltipContentPane.java

@ -3,7 +3,9 @@ package com.fr.van.chart.scatter;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.scatter.attr.ScatterAttrTooltipContent;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -15,7 +17,7 @@ import java.awt.Component;
public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterTooltipContentPane {
private ChangedValueFormatPaneWithCheckBox changedSizeFormatPane;
private ChangedValueFormatPaneWithoutCheckBox richTextChangedSizeFormatPane;
public VanChartScatterRefreshTooltipContentPane(VanChartStylePane parent, JPanel showOnPane) {
super(null, showOnPane);
@ -28,6 +30,12 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedSizeFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p) {
return new double[]{p, p, p, p, p, p};
@ -36,14 +44,26 @@ public class VanChartScatterRefreshTooltipContentPane extends VanChartScatterToo
protected Component[][] getPaneComponents() {
return new Component[][]{
new Component[]{seriesNameFormatPane, null},
new Component[]{getxFormatPane(), null},
new Component[]{getyFormatPane(), null},
new Component[]{getXFormatPane(), null},
new Component[]{getYFormatPane(), null},
new Component[]{getSizeFormatPane(), null},
new Component[]{changedSizeFormatPane, null},
new Component[]{changedPercentFormatPane, null},
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{getRichTextXFormatPane(), null},
new Component[]{getRichTextYFormatPane(), null},
new Component[]{getRichTextSizeFormatPane(), null},
new Component[]{richTextChangedSizeFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
@Override
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {

42
designer-chart/src/main/java/com/fr/van/chart/scatter/VanChartScatterTooltipContentPane.java

@ -4,8 +4,11 @@ import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.scatter.attr.ScatterAttrTooltipContent;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.XFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.XFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.YFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.YFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -20,11 +23,15 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
private YFormatPaneWithCheckBox yFormatPane;
private ValueFormatPaneWithCheckBox sizeFormatPane;
public XFormatPaneWithCheckBox getxFormatPane() {
private XFormatPaneWithoutCheckBox richTextXFormatPane;
private YFormatPaneWithoutCheckBox richTextYFormatPane;
private ValueFormatPaneWithoutCheckBox richTextSizeFormatPane;
public XFormatPaneWithCheckBox getXFormatPane() {
return xFormatPane;
}
public YFormatPaneWithCheckBox getyFormatPane() {
public YFormatPaneWithCheckBox getYFormatPane() {
return yFormatPane;
}
@ -32,6 +39,18 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
return sizeFormatPane;
}
public XFormatPaneWithoutCheckBox getRichTextXFormatPane() {
return richTextXFormatPane;
}
public YFormatPaneWithoutCheckBox getRichTextYFormatPane() {
return richTextYFormatPane;
}
public ValueFormatPaneWithoutCheckBox getRichTextSizeFormatPane() {
return richTextSizeFormatPane;
}
public VanChartScatterTooltipContentPane(VanChartStylePane parent, JPanel showOnPane){
super(parent, showOnPane);
}
@ -45,6 +64,15 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
sizeFormatPane = new ValueFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextXFormatPane = new XFormatPaneWithoutCheckBox(parent, showOnPane);
richTextYFormatPane = new YFormatPaneWithoutCheckBox(parent, showOnPane);
richTextSizeFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected Component[][] getPaneComponents(){
return new Component[][]{
@ -55,6 +83,16 @@ public class VanChartScatterTooltipContentPane extends VanChartTooltipContentPa
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextXFormatPane, null},
new Component[]{richTextYFormatPane, null},
new Component[]{richTextSizeFormatPane, null}
};
}
@Override
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {
super.populateFormatPane(attrTooltipContent);

20
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureRefreshTooltipContentPane.java

@ -1,7 +1,9 @@
package com.fr.van.chart.structure.desinger.style;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -23,6 +25,13 @@ public class VanChartStructureRefreshTooltipContentPane extends VanChartStructur
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p};
}
@ -37,4 +46,15 @@ public class VanChartStructureRefreshTooltipContentPane extends VanChartStructur
new Component[]{changedPercentFormatPane,null},
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

33
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/style/VanChartStructureTooltipContentPane.java

@ -1,13 +1,18 @@
package com.fr.van.chart.structure.desinger.style;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.multilayer.style.AttrTooltipMultiLevelNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -30,24 +35,48 @@ public class VanChartStructureTooltipContentPane extends VanChartTooltipContentP
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null}
};
}
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane){
categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Node_Name");
return Toolkit.i18nText("Fine-Design_Chart_Node_Name");
}
};
seriesNameFormatPane = new SeriesNameFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
}
};
valueFormatPane = new ValueFormatPaneWithCheckBox(parent, showOnPane);
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane) {
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Node_Name");
}
};
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane) {
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
}
};
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane);
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent attrTooltipContent = new AttrTooltipContent();

28
designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudRefreshTootipContentPane.java

@ -1,8 +1,11 @@
package com.fr.van.chart.wordcloud.designer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -23,13 +26,25 @@ public class VanChartWordCloudRefreshTootipContentPane extends VanChartWordCloud
changedValueFormatPane = new ChangedValueFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Change_Word_Value");
return Toolkit.i18nText("Fine-Design_Chart_Change_Word_Value");
}
};
changedPercentFormatPane = new ChangedPercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
super.initRichTextFormatPane(parent, showOnPane);
richTextChangedValueFormatPane = new ChangedValueFormatPaneWithoutCheckBox(parent, showOnPane) {
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Change_Word_Value");
}
};
richTextChangedPercentFormatPane = new ChangedPercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
protected double[] getRowSize(double p){
return new double[]{p,p,p,p,p,p};
}
@ -44,4 +59,15 @@ public class VanChartWordCloudRefreshTootipContentPane extends VanChartWordCloud
new Component[]{changedPercentFormatPane,null},
};
}
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{richTextCategoryNameFormatPane, null},
new Component[]{richTextSeriesNameFormatPane, null},
new Component[]{richTextValueFormatPane, null},
new Component[]{richTextChangedValueFormatPane, null},
new Component[]{richTextPercentFormatPane, null},
new Component[]{richTextChangedPercentFormatPane, null}
};
}
}

30
designer-chart/src/main/java/com/fr/van/chart/wordcloud/designer/style/VanChartWordCloudTooltipContentPane.java

@ -1,13 +1,18 @@
package com.fr.van.chart.wordcloud.designer.style;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.base.AttrTooltipContent;
import com.fr.plugin.chart.base.format.AttrTooltipNameFormat;
import com.fr.van.chart.designer.component.VanChartTooltipContentPane;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.PercentFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.ValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
@ -25,24 +30,43 @@ public class VanChartWordCloudTooltipContentPane extends VanChartTooltipContentP
categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
}
};
seriesNameFormatPane = new SeriesNameFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Word_Name");
return Toolkit.i18nText("Fine-Design_Chart_Word_Name");
}
};
valueFormatPane = new ValueFormatPaneWithCheckBox(parent, showOnPane){
@Override
protected String getCheckBoxText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Word_Value");
return Toolkit.i18nText("Fine-Design_Chart_Word_Value");
}
};
percentFormatPane = new PercentFormatPaneWithCheckBox(parent, showOnPane);
}
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
richTextCategoryNameFormatPane = new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane){
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name");
}
};
richTextSeriesNameFormatPane = new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane){
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Word_Name");
}
};
richTextValueFormatPane = new ValueFormatPaneWithoutCheckBox(parent, showOnPane){
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Word_Value");
}
};
richTextPercentFormatPane = new PercentFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected AttrTooltipContent createAttrTooltip() {
AttrTooltipContent attrTooltipContent = new AttrTooltipContent();

103
designer-chart/src/main/resources/com/fr/design/editor/rich_editor.html

@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title></title>
<link rel="stylesheet" type="text/css" href="http://fanruan.design/fineui/2.0/fineui.min.css"/>
<script src="http://fanruan.design/fineui/2.0/fineui.js"></script>
<script src="https://fanruan.design/fineui/materials.bundle.min.js"></script>
</head>
<body>
<script>
BICst.RICH_TEXT_INFO = {
DATA_ID: "data-id",
DATA_NAME: "data-name",
DATA_FULL_NAME: "data-full-name",
DATA_ORIGIN_ID: "data-origin-id",
DATA_ORIGIN_NAME: "data-origin-name",
DATA_ORIGIN_FULL_NAME: "data-origin-full-name",
DATA_IS_INSERT_PARAM: "data-is-insert-param",
DATA_IS_MISSING_FIELD: "data-is-missing-field",
DATA_UN_VALID: "data-unvalid",
NAME: "name",
ALT: "alt",
SRC: "src"
};
</script>
<script src="script/insertcombo/item/item.js"></script>
<script src="script/insertcombo/combo.insert_param.js"></script>
<script src="script/insertcombo/combo.insert_param.model.js"></script>
<script src="script/toolbar/disabled_bar_wrapper.js"></script>
<script src="script/toolbar/toolbar.js"></script>
<script src="script/toolbar/toolbar.model.js"></script>
<script src="script/editor.constant.js"></script>
<script src="script/editor.js"></script>
<script src="script/editor.model.js"></script>
<script src="script/editor.service.js"></script>
<script>
window.onload = function () {
var content = Pool.data.getContent();
var isAuto = Pool.data.isAuto();
var params = Pool.data.getParams();
var dimensionIds = [];
var paramGroup = params.split("-");
for (var i = 0, len = paramGroup.length; i < len; i++) {
var [key, value] = paramGroup[i].split(":");
var param = {};
param[key] = value;
dimensionIds.push(param);
}
var rich_editor = BI.createWidget({
type: "bi.design.chart.common.editor",
element: "body",
content: content,
fontStyle: {
textAlign: "center",
fontFamily: "",
fontSize: 18,
italic: true,
fontBold: false
},
isAuto: isAuto,
dimensionIds: dimensionIds,
toolbar: {
buttons: [
{type: "bi.rich_editor_font_chooser"},
{type: "bi.rich_editor_size_chooser"},
{type: "bi.rich_editor_bold_button"},
{type: "bi.rich_editor_italic_button"},
{type: "bi.rich_editor_underline_button"},
{type: "bi.rich_editor_color_chooser"},
{type: "bi.rich_editor_align_left_button"},
{type: "bi.rich_editor_align_center_button"},
{type: "bi.rich_editor_align_right_button"},
{type: "bi.design.chart.common.editor.insert_param"}
]
},
ref: function (_ref) {
self.editor = _ref;
}
});
Pool.dispatch = function(){
rich_editor.setValue({content: Pool.data.getContent(), isAuto: Pool.data.isAuto()});
}
Pool.update = function () {
var {content, isAuto} = rich_editor.getValue();
Pool.data.setContent(content);
Pool.data.setAuto(isAuto);
return Pool.data;
};
};
</script>
</body>
</html>

6
designer-chart/src/main/resources/com/fr/design/editor/script/editor.constant.js

@ -0,0 +1,6 @@
!(function () {
BI.constant("bi.constant.design.chart.common.editor.placeholder_style", {
fontColor: "#c4c9d1"
});
}());

241
designer-chart/src/main/resources/com/fr/design/editor/script/editor.js

@ -0,0 +1,241 @@
!(function () {
var Widget = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-design-chart-common-editor",
isAuto: true,
content: "",
placeholder: "",
fontStyle: {},
dimensionIds: [],
toolbar: {
buttons: []
},
textAlign: "center"
},
_store: function () {
var o = this.options;
return BI.Models.getModel("bi.model.design.chart.common.editor", {
dimensionIds: o.dimensionIds,
isAuto: o.isAuto
});
},
render: function () {
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.nic_editor",
$value: "chart-common-editor",
height: 365,
cls: "editor bi-border bi-focus-shadow " + (o.textAlign === "center" ? "editor-center-text" : ""),
listeners: [{
eventName: BI.NicEditor.EVENT_FOCUS,
action: function () {
self.clearPlaceholder();
self.store.setEditorBlurState(false);
}
}, {
eventName: BI.NicEditor.EVENT_BLUR,
action: function () {
self.setPlaceholder();
self.store.setEditorBlurState(true);
}
}]
});
return {
type: "bi.vtape",
ref: function (_ref) {
self.bar = _ref;
},
items: [{
type: "bi.htape",
items: [{
type: "bi.label",
text: "字体样式: ",
textAlign: "left",
width: 70
}, {
type: "bi.button_group",
items: this.model.fontStyleItems,
ref: function (_ref) {
self.fontStyleGroup = _ref;
},
listeners: [{
eventName: BI.ButtonGroup.EVENT_CHANGE,
action: function () {
var isAuto = this.getValue()[0];
self.store.changeIsAuto(isAuto);
self.changeFontStyleMode(isAuto);
}
}],
layouts: [{
type: "bi.left",
rgap: 5
}],
value: this.model.mode,
width: 125
}, this._getToolBar()],
height: 24
}, {
el: this.editor,
tgap: 10
}]
};
},
_getToolBar: function () {
var self = this;
return {
type: "bi.design.chart.common.editor.toolbar",
cls: "toolbar-region",
wId: this.options.wId,
editor: this.editor,
buttons: this.options.toolbar.buttons,
ref: function (_ref) {
self.toolbar = _ref;
}
};
},
mounted: function () {
this.editor.bindToolbar(this.bar);
this.editor.setValue(this._formatContent(this.options.content));
this.setFocus();
},
_cleanHtml: function (value) {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
var result = BI.replaceAll(value, "<p></p>", "");
// 去掉image的src属性,因为数据太大了
result = value.replaceAll("<img.*?>", function (imageStr) {
var attrs = editorService.getImageAttr(imageStr);
var str = "<img ";
BI.each(attrs, function (key, value) {
if (key === "src") {
return;
}
str += " " + key + "=\"" + value + "\"";
});
return str + " />";
});
return result;
},
getValue: function () {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
var value = this._cleanHtml(this.editor.getValue(BI.NicEditor.FormatType.ESCAPE));
// BI.each(this.model.dimensionIds, function (idx, dId) {
// var fullName = BI.Utils.getNotGeoDimensionFullName(dId);
// value = editorService.appendImageAttr(value, fullName, BICst.RICH_TEXT_INFO.DATA_ID, dId);
// });
if (editorService.isEmptyRichText(value)) {
value = "";
}
if (BI.isNotEmptyString(this.options.placeholder) && editorService.isRichTextEqual(value, this.options.placeholder)) {
value = null;
}
return {
isAuto: this.model.isAuto,
content: value
};
},
setValue: function (obj) {
var keys = BI.keys(obj);
if (BI.contains(keys, "content")) {
this.editor.setValue(this._formatContent(obj.content));
}
if (BI.contains(keys, "isAuto")) {
this.store.changeIsAuto(obj.isAuto);
this.fontStyleGroup.setValue(obj.isAuto);
}
},
_formatContent: function (content) {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
content = editorService.setImageSrc(content);
if (editorService.isBlankRichText(content)
|| editorService.isRichTextEqual(content, this.options.placeholder)) {
content = this.options.placeholder || "";
}
return content;
},
// 切换到“自动”时的处理方法
_switchToAutoStyle: function () {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor"),
content = this.editor.getValue(BI.NicEditor.FormatType.ESCAPE),
isEqualToPlaceholder = editorService.isRichTextEqual(content, this.options.placeholder);
var HTML_ONLY_STYLE_TAG = "<font[\\s\\S]*?>|</font>|<span[\\s\\S]*?>|</span>|<b\\s+(.*?)>|<b>|</b>|<u[\\s\\S]*?>|</u>|<i\\s+(.*?)>|<i>|</i>|<strong[\\s\\S]*?>|</strong>|<em[\\s\\S]*?>|</em>|<div[\\s\\S]style(.*?)>|</div>|<p[\\s\\S]style(.*?)>|<p.[\\s\\S]*align(.*?)>|</p>";
if (!isEqualToPlaceholder) {
content = content.replaceAll(HTML_ONLY_STYLE_TAG, "");
}
return content;
},
clearPlaceholder: function () {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
var content = this.editor.getValue(BI.NicEditor.FormatType.ESCAPE);
var isSameContent = editorService.isRichTextEqual(content, this.options.placeholder);
if (isSameContent) {
content = editorService.convertText2RichText("", this.options.fontStyle);
this.editor.setValue(content);
this.setFocus();
}
},
setPlaceholder: function () {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
var content = this.editor.getValue(BI.NicEditor.FormatType.ESCAPE);
var isSameContent = editorService.isBlankRichText(content);
if (isSameContent) {
this.editor.setValue(this.options.placeholder);
}
},
// 字体样式切换
changeFontStyleMode: function (isAuto) {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
var switchFn = this.options.switchFn,
content = this.editor.getValue(BI.NicEditor.FormatType.ESCAPE),
origin = content;
if (isAuto) {
content = this._switchToAutoStyle();
this.setFocus();
} else if (editorService.isRichTextEqual(content, this.options.placeholder)) {
content = "";
}
if (BI.isFunction(switchFn)) {
content = switchFn(isAuto, content);
}
if (content !== origin) {
this.editor.setValue(content);
}
},
setFocus: function () {
var instance = this.editor.instance;
instance && instance.initSelection();
}
});
Widget.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.design.chart.common.editor", Widget);
}());

53
designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js

@ -0,0 +1,53 @@
!(function () {
var Model = BI.inherit(Fix.Model, {
childContext: ["isAuto", "dimensionIds"],
state: function () {
var o = this.options;
return {
isAuto: o.isAuto,
dimensionIds: o.dimensionIds,
isEditorBlur: true
};
},
computed: {
fontStyleItems: function () {
return [{
type: "bi.single_select_radio_item",
text: "自动",
hgap: 5,
logic: {
dynamic: true
},
value: true,
selected: this.options.isAuto
}, {
type: "bi.single_select_radio_item",
text: "自定义",
hgap: 5,
logic: {
dynamic: true
},
value: false,
selected: !this.options.isAuto
}];
}
},
actions: {
changeIsAuto: function (isAuto) {
this.model.isAuto = isAuto;
},
setEditorBlurState: function (isBlur) {
this.model.isEditorBlur = isBlur;
}
}
});
BI.model("bi.model.design.chart.common.editor", Model);
}());

562
designer-chart/src/main/resources/com/fr/design/editor/script/editor.service.js

@ -0,0 +1,562 @@
!(function () {
/**
* HTML解析类使用方法
* new HTMLParser().parse(htmlText, {
* startTag: function (tagName, attrs) {},
* endTag: function (tagName) {},
* text: function (text) {}
* })
*/
function HTMLParser () {
}
HTMLParser.prototype = {
constructor: HTMLParser,
startTagPattern: /<([-\w\d_]+)\s*([^>]*)\s*(\/?)>/,
endTagPattern: /^<\/([-\w\d_]+)[^>]*>/,
attrPattern: /([-\w\d_]+)\s*=\s*["']([^"']*)["']/g,
// 特殊的字符
specialCharsPatterns: [{
pattern: /&nbsp;/g,
subStr: " "
}, {
pattern: /&lt;/g,
subStr: "<"
}, {
pattern: /&gt;/g,
subStr: ">"
}, {
pattern: /&amp;/g,
subStr: "&"
}],
handle: {
// 以下为处理开始标签和文本的时候触发的函数,可以自定义
startTag: function () {
},
endTag: function () {
},
text: function () {
}
},
/**
*
* @param html
* @param handle
* @param isReplaceSpecialChars 是否需要替换HTML中的特殊字符
*/
parse: function (html, handle, isReplaceSpecialChars) {
var index, isText = false,
match, last = html,
me = this;
isReplaceSpecialChars = isReplaceSpecialChars !== null ? isReplaceSpecialChars : true;
if (BI.isPlainObject(handle)) {
BI.isFunction(handle.startTag) && (this.handle.startTag = handle.startTag);
BI.isFunction(handle.endTag) && (this.handle.endTag = handle.endTag);
BI.isFunction(handle.text) && (this.handle.text = handle.text);
}
while (html) {
isText = true;
// 结束标签
if (html.indexOf("</") === 0) {
match = html.match(this.endTagPattern);
if (match) {
html = html.substring(match[0].length);
match[0].replace(this.endTagPattern, function () {
me._parseEndTag.apply(me, arguments);
});
isText = false;
}
} else if (html.indexOf("<") === 0) {
// 遇到起始的标签,提取标签名称和属性之类的
match = html.match(this.startTagPattern);
if (match) {
html = html.substring(match[0].length);
match[0].replace(this.startTagPattern, function () {
me._parseStartTag.apply(me, arguments);
});
isText = false;
}
}
// 仅仅是一行文本的情况
if (isText) {
index = html.indexOf("<");
var text = index < 0 ? html : html.substring(0, index);
html = index < 0 ? "" : html.substring(index);
if (isReplaceSpecialChars) {
BI.each(this.specialCharsPatterns, function (idx, obj) {
text = text.replace(obj.pattern, obj.subStr);
});
}
this.handle.text(text);
}
if (html === last) {
throw "Parse Error: " + html;
}
last = html;
}
this._parseEndTag();
},
/**
* 解析开始标签的字符串
* @param all 整个需要解析的字符串
* @param tagName
* @param rest 除去tagNAme之后allString剩下的部分
*/
_parseStartTag: function (all, tagName, rest) {
tagName = tagName.toLowerCase();
var attrs = [];
rest.replace(this.attrPattern, function (all, attrName, value) {
attrs.push({
name: attrName,
value: value,
escaped: value.replace(/(^|[^\\])"/g, "$1\\\"")
});
});
tagName && this.handle.startTag(tagName, attrs);
},
/**
* 解析关闭的标签
*/
_parseEndTag: function (all, tagName) {
tagName && this.handle.endTag(tagName);
}
};
// 获取一个HTML字符串中image的属性
function getImageAttr (html) {
var htmlParse = new HTMLParser();
var imageAttr;
htmlParse.parse(html, {
startTag: function (tagName, attrs) {
if (tagName === "img") {
imageAttr = {};
BI.each(attrs, function (idx, attr) {
imageAttr[attr.name] = attr.value;
});
}
}
});
return imageAttr;
}
var Service = BI.inherit(BI.OB, {
encode: function (params) {
if (/[<>'$%{}"]/.test(params)) {
return window.encodeURIComponent(params).replace(/'/g, escape);
}
return params;
},
decode: function (params) {
try {
var result = window.decodeURIComponent(params);
if (/[<>'$%{}"]/.test(result)) {
return result;
}
return params;
} catch (e) {
return params;
}
},
HTMLParser: HTMLParser,
getImageAttr: getImageAttr,
/**
* 构造一个富文本中的参数图片
*/
getEditorParamImage: function (param, fillStyle) {
var attr = BI.DOM.getImage(param, fillStyle);
return "<img class='rich-editor-param' height='16px'"
+ " alt='" + this.encode(attr.param)
+ "' name='" + this.encode(attr.param)
+ "' style='" + attr.style + "' />";
},
/**
* 给image设置属性
*/
appendImageAttr: function (html, altValue, attrName, attrValue, isCovered) {
altValue = this.encode(altValue);
attrName = this.encode(attrName);
attrValue = this.encode(attrValue);
isCovered = isCovered || false; // 属性是否可以覆盖
return html.replaceAll("<img(.*?)>", function (imageStr) {
var attrs = getImageAttr(imageStr);
if (attrs && attrs["alt"] === altValue && (BI.isNull(attrs[attrName]) || isCovered)) {
attrs[attrName] = attrValue;
imageStr = "<img ";
BI.each(attrs, function (attrName, attrValue) {
imageStr += "" + attrName + "=\"" + attrValue + "\" ";
});
imageStr += "/>";
}
return imageStr;
});
},
/**
* 将普通的文本转化成富文本字符串
*/
convertText2RichText: function (text, fontStyle, fontProcessFn) {
fontStyle = fontStyle || {};
if (BI.isEmptyString(text)) {
return text;
}
var lines = text.split("\n"),
pattern = "\\$\\{(.*?)\\}",
richText = "",
self = this,
html = self._getHtmlTagStr(fontStyle, fontProcessFn);
BI.each(lines, function (idx, lineText) {
// 替换参数为image
var newText = lineText.replaceAll(pattern, function (all, $1) {
return self.getEditorParamImage($1);
});
// 空字符串
if (!lineText) {
newText += "<br />";
}
richText += html.startHtml + newText + html.endHtml;
});
return richText;
},
/**
* 根据fontStyle构造标签
*/
_getHtmlTagStr: function (fontStyle, fontProcessFn) {
var tags = [{
tag: "p",
style: {}
}],
obj,
startHtml = "",
endHtml = "";
// fontSize 为number值
if (fontStyle.fontSize) {
obj = {
tag: "font",
style: {"font-size": fontStyle.fontSize + "px"}
};
tags.push(obj);
}
// 字体一般用默认值,不需要处理,但是KPI指标卡例外
if (BI.isFunction(fontProcessFn)) {
tags.push(fontProcessFn());
}
// fontBold 为boolean值
if (fontStyle.fontBold) {
obj = {
tag: "b",
style: {}
};
tags.push(obj);
}
// italic 为boolean值
if (fontStyle.italic) {
obj = {
tag: "i",
style: {}
};
tags.push(obj);
}
// underline 为boolean值
if (fontStyle.underline) {
obj = {
tag: "u",
style: {}
};
tags.push(obj);
}
BI.each(tags, function (idx, item) {
startHtml += "<" + item.tag;
// set style
if (BI.isNotEmptyObject(item.style)) {
startHtml += " style=\"";
BI.each(item.style, function (key, value) {
startHtml += key + ":" + value + ";";
});
startHtml += "\"";
}
// set attributes
BI.each(item.attr, function (key, value) {
startHtml += " " + key + "=\"" + value + "\"";
});
startHtml += ">";
});
BI.each(tags.reverse(), function (idx, item) {
endHtml += "</" + item.tag + ">";
});
return {
startHtml: startHtml,
endHtml: endHtml
};
},
/**
* 将富文本HTML转化成普通的文本不需要记录fontStyle
*/
convertRichText2Text: function (html) {
var content = "",
line = "",
htmlFragments = [];
new HTMLParser().parse(html, {
startTag: function (tagName, attrs) {
// 只关心br、img
switch (tagName) {
case "br":
line += "\n";
htmlFragments.push(tagName);
break;
case "img":
BI.each(attrs, function (idx, obj) {
if (obj.name === "alt") {
line += "${" + obj.value + "}";
}
});
break;
default:
break;
}
},
endTag: function (tagName) {
if (tagName === "div") {
// <div><br /></div>这样的情况下应该只代表一个回车符
htmlFragments[htmlFragments.length - 1] !== "br" && (line += "\n");
htmlFragments = [];
}
content += line;
line = "";
},
text: function (text) {
htmlFragments.push(text);
line += text;
}
});
// 去掉最后的换行符
content = content.replace(/\n$/, "");
return content;
},
convertImage2Text: function (html) {
if (BI.isNull(html)) {
return html;
}
return html.replaceAll("<img.*?>", function (imageStr) {
var matched = imageStr.match(/alt="(.*?)"/);
var startHtml = "<span class=\"rich-editor-param\" style=\"background-color: #EAF2FD;\">";
var endHtml = "</span>";
return startHtml + (matched ? matched[1] : imageStr) + endHtml;
});
},
isRichTextEqual: function (html1, html2) {
if (BI.isNotNull(html1)) {
html1 = this.convertImage2Text(html1);
}
if (BI.isNotNull(html2)) {
html2 = this.convertImage2Text(html2);
}
return html1 === html2;
},
isRichTextNotEqual: function (html1, html2) {
return !this.isRichTextEqual(html1, html2);
},
isBlankRichText: function (html) {
html = html || "";
html = this.convertRichText2Text(html);
return BI.trim(html).length === 0;
},
// 显示整个富文本中缺失的字段
showMissingFields: function (html, validDimensionIds) {
var self = this;
return html.replaceAll("<img.*?>", function (imageStr) {
var attrs = getImageAttr(imageStr);
return attrs && BI.contains(validDimensionIds, attrs[BICst.RICH_TEXT_INFO.DATA_ID])
? imageStr
: self.getMissingFieldImage(
attrs[BICst.RICH_TEXT_INFO.DATA_ID],
attrs[BICst.RICH_TEXT_INFO.DATA_NAME],
attrs[BICst.RICH_TEXT_INFO.ALT]
);
});
},
// 获取缺失元素的图片
getMissingFieldImage: function (dId, name, fullName) {
var missingText = "<!" + BI.i18nText("BI-Design_Missing_Field") + "!>";
var missingImage = BI.DOM.getImage(missingText, "#ff0000");
var html = this.getEditorParamImage(fullName, "#ff0000");
// 将原来的dId、name、fullName保存起来
html = this.appendImageAttr(html, fullName, BICst.RICH_TEXT_INFO.DATA_ORIGIN_ID, dId);
html = this.appendImageAttr(html, fullName, BICst.RICH_TEXT_INFO.DATA_ORIGIN_NAME, name);
html = this.appendImageAttr(html, fullName, BICst.RICH_TEXT_INFO.DATA_ORIGIN_FULL_NAME, fullName);
html = this.appendImageAttr(html, fullName, BICst.RICH_TEXT_INFO.SRC, missingImage.src, true);
// 标记出这个参数是一个“缺失元素”
html = this.appendImageAttr(html, fullName, BICst.RICH_TEXT_INFO.DATA_IS_MISSING_FIELD, "true", true);
html = this.appendImageAttr(html, fullName, "style", missingImage.style, true);
return html;
},
// 将“缺失元素”替换成原来的字段
restoreMissingField: function (html) {
var self = this;
return html.replaceAll("<img.*?>", function (imageStr) {
var attrs = getImageAttr(imageStr);
if (attrs && attrs[BICst.RICH_TEXT_INFO.DATA_ORIGIN_ID]) {
var fullName = attrs[BICst.RICH_TEXT_INFO.DATA_ORIGIN_FULL_NAME];
var image = self.getEditorParamImage(fullName);
image = self.appendImageAttr(image, fullName, BICst.RICH_TEXT_INFO.DATA_ID, attrs[BICst.RICH_TEXT_INFO.DATA_ORIGIN_ID]);
image = self.appendImageAttr(image, fullName, BICst.RICH_TEXT_INFO.DATA_NAME, attrs[BICst.RICH_TEXT_INFO.DATA_ORIGIN_NAME]);
return image;
}
if (attrs
&& attrs[BICst.RICH_TEXT_INFO.DATA_IS_INSERT_PARAM]
&& !attrs[BICst.RICH_TEXT_INFO.DATA_ID]
) {
imageStr = self.appendImageAttr(
imageStr,
attrs[BICst.RICH_TEXT_INFO.ALT],
BICst.RICH_TEXT_INFO.DATA_UN_VALID,
"true",
true
);
}
return imageStr;
});
},
// 将富文本字符串中由用户主动插入的字段参数标记出来
markTheInsertParamImages: function (html) {
return html.replaceAll("<img.*?>", function (imageStr) {
var attrs = getImageAttr(imageStr);
// "缺失元素"和普通的字段参数直接过滤(从富文本编辑器中插入的参数只有data-id属性)
if (BI.has(attrs, BICst.RICH_TEXT_INFO.DATA_NAME)
|| BI.has(attrs, BICst.RICH_TEXT_INFO.DATA_ORIGIN_ID)) {
return imageStr;
}
attrs[BICst.RICH_TEXT_INFO.DATA_IS_INSERT_PARAM] = "true";
imageStr = "<img ";
BI.each(attrs, function (key, value) {
imageStr += key + "=\"" + value + "\" ";
});
imageStr += "/>";
return imageStr;
});
},
// editor在getValue时因为src太大去掉了,在展示之前需要set 一下src
setImageSrc: function (content) {
var self = this;
return content && content.replaceAll("<img.*?>", function (imageStr) {
var attrs = self.getImageAttr(imageStr);
// 已有src
if (BI.has(attrs, BICst.RICH_TEXT_INFO.SRC) && attrs[BICst.RICH_TEXT_INFO.SRC]) {
return imageStr;
}
var alt = self.decode(attrs[BICst.RICH_TEXT_INFO.ALT]);
var image = BI.DOM.getImage(alt);
imageStr = self.appendImageAttr(imageStr, alt, BICst.RICH_TEXT_INFO.SRC, image.src, true);
imageStr = self.appendImageAttr(imageStr, alt, "style", image.style, true);
return imageStr;
});
},
isEmptyRichText: function (html) {
return "" === html.replaceAll("<p.*?>|</p>|<br/?>", "");
},
// BI-23091 设置显示名之后更新参数名称
getNewParamNameRichText: function (content) {
if (!content) {
return content;
}
var self = this;
return content.replaceAll("<img.*?>", function (imageStr) {
var attrs = self.getImageAttr(imageStr);
// 缺失元素
if (attrs[BICst.RICH_TEXT_INFO.DATA_IS_MISSING_FIELD]) {
return imageStr;
}
var alt = attrs[BICst.RICH_TEXT_INFO.ALT],
dId = attrs[BICst.RICH_TEXT_INFO.DATA_ID],
name = BI.Utils.getNotGeoDimensionFullName(dId);
if (name !== alt) {
imageStr = self.appendImageAttr(imageStr, alt, BICst.RICH_TEXT_INFO.ALT, name, true);
}
return imageStr;
});
}
});
BI.service("bi.service.design.chart.common.editor", Service);
}());

114
designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.js

@ -0,0 +1,114 @@
!(function () {
var Widget = BI.inherit(BI.RichEditorParamAction, {
props: {
baseCls: "bi-design-chart-common-editor-insert-param",
dimensionIds: [],
editor: null
},
_store: function () {
return BI.Models.getModel("bi.model.design.chart.common.editor.insert_param");
},
watch: {
isSelectedParam: function () {
var editorService = BI.Services.getService("bi.service.design.chart.common.editor");
this.addParam(this.model.param, editorService.encode);
this.combo.hideView();
// this._restorePosition();
}
},
render: function () {
var self = this;
var adapter = BI.createWidget({
type: "bi.button_group",
items: this.model.items,
chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE,
behaviors: {},
layouts: [{
type: "bi.vertical"
}],
listeners: [{
eventName: BI.ButtonGroup.EVENT_CHANGE,
action: function () {
self._savePosition();
self.store.changeParam(this.getValue()[0]);
}
}]
});
var searchPopup = {
type: "bi.vertical",
cls: "bi-border",
hgap: 15,
tgap: 5,
bgap: 10,
items: [{
type: "bi.searcher",
adapter: adapter,
width: 210,
height: 24,
listeners: [{
eventName: BI.Searcher.EVENT_CHANGE,
action: function () {
self.store.changeParam(this.getValue()[0]);
}
}]
}, adapter]
};
return {
type: "bi.combo",
direction: "bottom,left",
isNeedAdjustWidth: false,
el: {
type: "bi.vertical_adapt",
items: [{
type: "bi.icon_change_button",
iconCls: "editor-insert-param-inactivated-font",
iconWidth: 24,
iconHeight: 24,
ref: function (_ref) {
self.iconButtonTrigger = _ref;
}
}]
},
popup: {
el: searchPopup
},
ref: function (_ref) {
self.combo = _ref;
},
listeners: [{
eventName: BI.Combo.EVENT_AFTER_POPUPVIEW,
action: function () {
self.iconButtonTrigger.setIcon("editor-insert-param-active-font");
}
}, {
eventName: BI.Combo.EVENT_BEFORE_HIDEVIEW,
action: function () {
self.iconButtonTrigger.setIcon("editor-insert-param-inactivated-font");
}
}]
};
},
_savePosition: function () {
var instance = this._getInstance();
instance.saveRng();
},
_restorePosition: function () {
var instance = this._getInstance();
instance.initSelection();
},
_getInstance: function () {
return this.options.editor.selectedInstance || this.options.editor.getInstance();
}
});
BI.shortcut("bi.design.chart.common.editor.insert_param", Widget);
}());

40
designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/combo.insert_param.model.js

@ -0,0 +1,40 @@
/*
* @Maintainers: xiaofu.qin
*/
!(function () {
var Model = BI.inherit(Fix.Model, {
context: ["dimensionIds"],
state: function () {
return {
param: "",
isSelectedParam: false
};
},
computed: {
items: function () {
return BI.map(this.model.dimensionIds, function (idx, dId) {
var key = BI.keys(dId)[0];
return {
type: "bi.design.chart.common.editor.search",
text: key,
value: dId[key]
};
});
}
},
actions: {
changeParam: function (param) {
this.model.isSelectedParam = !this.model.isSelectedParam;
this.model.param = param;
}
}
});
BI.model("bi.model.design.chart.common.editor.insert_param", Model);
} ());

38
designer-chart/src/main/resources/com/fr/design/editor/script/insertcombo/item/item.js

@ -0,0 +1,38 @@
!(function () {
var Widget = BI.inherit(BI.BasicButton, {
props: {
text: "",
iconCls: "",
extraCls: "bi-list-item-active"
},
render: function () {
var o = this.options;
return {
type: "bi.vertical_adapt",
height: 25,
items: [{
type: "bi.center_adapt",
cls: o.iconCls,
items: [{
type: "bi.icon",
width: 16,
height: 16
}],
width: 16,
height: 16
}, {
type: "bi.label",
textAlign: "left",
lgap: 5,
text: o.text,
value: o.text
}]
};
}
});
BI.shortcut("bi.design.chart.common.editor.search", Widget);
}());

22
designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/disabled_bar_wrapper.js

@ -0,0 +1,22 @@
/**
* 灰化toolbar的item
*/
!(function () {
var Widget = BI.inherit(BI.Single, {
props: {
button: null
},
render: function () {
return {
type: "bi.vertical_adapt",
disabled: true,
items: [this.options.button]
};
}
});
BI.shortcut("bi.design.chart.common.editor.toolbar.disabled_item_wrapper", Widget);
}());

124
designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/toolbar.js

@ -0,0 +1,124 @@
!(function () {
var RichEditorTextToolbar = BI.inherit(BI.Widget, {
props: {
baseCls: "bi-rich-editor-text-toolbar",
height: 25,
editor: null,
buttons: [
{type: "bi.rich_editor_font_chooser"},
{type: "bi.rich_editor_size_chooser"},
{type: "bi.rich_editor_bold_button"},
{type: "bi.rich_editor_italic_button"},
{type: "bi.rich_editor_underline_button"},
{type: "bi.rich_editor_color_chooser"},
{type: "bi.rich_editor_align_left_button"},
{type: "bi.rich_editor_align_center_button"},
{type: "bi.rich_editor_align_right_button"},
{type: "bi.design.chart.common.editor.insert_param"}
]
},
_store: function () {
return BI.Models.getModel("bi.model.design.chart.common.editor.toolbar");
},
watch: {
isAuto: function (isAuto) {
this[isAuto ? "hideCustomFontTool" : "showCustomFontTool"]();
}
},
render: function () {
var self = this,
o = this.options;
this.hasInsertCombo = o.buttons[o.buttons.length - 1].type === "bi.design.chart.common.editor.insert_param";
this.buttons = BI.createWidgets(BI.map(o.buttons, function (i, btn) {
return BI.extend(btn, {
editor: o.editor
});
}));
if (this.hasInsertCombo) {
var leftItems = BI.filter(this.buttons, function (idx) {
return idx !== self.buttons.length - 1;
});
return {
type: "bi.left_right_vertical_adapt",
lrgap: 10,
items: {
left: this._getButtons(leftItems),
right: [this.buttons[this.buttons.length - 1]]
}
};
}
return {
type: "bi.vertical_adapt",
rgap: 10,
items: this._getButtons(this.buttons)
};
},
mounted: function () {
var self = this;
if (BI.isIE9Below()) {// IE8下必须要设置unselectable才能不blur输入框
this.element.mousedown(function () {
self._noSelect(self.element[0]);
});
this._noSelect(this.element[0]);
}
this.model.isAuto && this.hideCustomFontTool();
},
_noSelect: function (element) {
if (element.setAttribute && element.nodeName.toLowerCase() !== "input" && element.nodeName.toLowerCase() !== "textarea") {
element.setAttribute("unselectable", "on");
}
for (var i = 0; i < element.childNodes.length; i++) {
this._noSelect(element.childNodes[i]);
}
},
hideCustomFontTool: function () {
var self = this;
BI.each(this.buttons, function (idx, button) {
if (self.hasInsertCombo) {
idx !== self.buttons.length - 1 && button.setVisible(false);
} else {
button.setVisible(false);
}
});
},
showCustomFontTool: function () {
var self = this;
BI.each(this.buttons, function (idx, button) {
if (self.hasInsertCombo) {
idx !== self.buttons.length - 1 && button.setVisible(true);
} else {
button.setVisible(true);
}
});
},
_getButtons: function (buttons) {
return BI.map(buttons, function (idx, button) {
if (button.options.used === false) {
return {
type: "bi.design.chart.common.editor.toolbar.disabled_item_wrapper",
button: button,
title: button.options.title
};
}
return button;
});
}
});
BI.shortcut("bi.design.chart.common.editor.toolbar", RichEditorTextToolbar);
})();

12
designer-chart/src/main/resources/com/fr/design/editor/script/toolbar/toolbar.model.js

@ -0,0 +1,12 @@
/*
* @Maintainers: xiaofu.qin
*/
!(function () {
var Model = BI.inherit(Fix.Model, {
context: ["isAuto", "wId", "dimensionIds"]
});
BI.model("bi.model.design.chart.common.editor.toolbar", Model);
} ());
Loading…
Cancel
Save