Browse Source

Pull request #2: Feature/10.0

Merge in ~QINGHUI.LIU/design from DESIGN/design:feature/10.0 to feature/10.0

* commit '1f1fe41bc41855036ec497bb4aea04bc191a4735': (22 commits)
  CHART-17249 高德地图设计器配置界面
  fix
  CHART-15835  饼图标签改为值标签+分类标签组合
  CHART-17393 边框和背景隐藏后占用面板位置
  REPORT-45095 表单控件设置提交事件,添加字段后编辑字段,事件弹框消失
  REPORT-45095 修复代码质量&优化传递
  REPORT-44714 【10.0.12冒烟】设计器缓存文件记录设计器设置失效 【问题原因】需要在中间版本发布,提一份到final 【改动思路】改动已经在release中通过,提一份到final
  REPORT-44714 【10.0.12冒烟】设计器缓存文件记录设计器设置失效 将对一些文件的误改动回退一下
  REPORT-44714 【10.0.12冒烟】设计器缓存文件记录设计器设置失效 与产品沟通后,确认修改方案为,当发生了足以造成数据集面板丢失的容器高度变化时,至少保证水平拖拽面板不丢失
  CHART-17340 补充富文本国际化翻译
  CHART-17340 富文本颜色组件增加国际化
  REPORT-45095 表单控件设置提交事件,添加字段后编辑字段,事件弹框消失
  CHART-17249 高德地图设计器配置界面
  REPORT-42240 【10.0.13】设计器里功能描述(表单、组件)优化
  REPORT-42240 【10.0.13】设计器里功能描述(表单、组件)优化
  REPORT-42240 【10.0.13】设计器里功能描述(表单、组件)优化
  REPORT-44596 下拉树控件-急速构建依赖层数自动变化
  REPORT-42240 【10.0.13】设计器里功能描述(表单、组件)优化
  REPORT-42240 【10.0.13】设计器里功能描述(表单、组件)优化
  KERNEL-6154 GeneralXMLTools注册问题
  ...
persist/11.0
Qinghui.Liu 4 years ago
parent
commit
08dede8538
  1. 39
      designer-base/src/main/java/com/fr/design/DesignerEnvManager.java
  2. 1
      designer-base/src/main/java/com/fr/design/gui/frpane/tree/layer/config/LayerDependenceSettingPane.java
  3. 32
      designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java
  4. 4
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  5. 34
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  6. 2
      designer-base/src/main/java/com/fr/design/mainframe/WestRegionContainerPane.java
  7. 9
      designer-base/src/main/java/com/fr/design/mainframe/widget/BasicPropertyPane.java
  8. 3
      designer-base/src/main/java/com/fr/design/preview/FormPreview.java
  9. 5
      designer-base/src/main/java/com/fr/design/report/fit/menupane/ReportFitAttrAction.java
  10. 21
      designer-base/src/main/java/com/fr/design/widget/WidgetBoundsPaneFactory.java
  11. 1736
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  12. 4
      designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java
  13. 3
      designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java
  14. 6
      designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java
  15. 23
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SummaryValueFormatPaneWithCheckBox.java
  16. 23
      designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SummaryValueFormatPaneWithoutCheckBox.java
  17. 64
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieCategoryLabelDetailPane.java
  18. 61
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPiePlotLabelPane.java
  19. 72
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieValueLabelDetailPane.java
  20. 24
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java
  21. 4
      designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelPane.java
  22. 4
      designer-chart/src/main/java/com/fr/van/chart/drillmap/designer/data/comp/DrillMapLayerPane.java
  23. 16
      designer-chart/src/main/java/com/fr/van/chart/drillmap/designer/type/VanChartDrillMapPlotPane.java
  24. 15
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapSourceChoosePane.java
  25. 24
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java
  26. 258
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GeoUrlPane.java
  27. 303
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java
  28. 167
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java
  29. 51
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/TileLayerPane.java
  30. 1
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java
  31. 714
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java
  32. 165
      designer-chart/src/main/java/com/fr/van/chart/map/designer/type/WMSLayerPane.java
  33. 130
      designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryLabelContentPane.java
  34. 79
      designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java
  35. 3
      designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java
  36. 16
      designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java
  37. 11
      designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java
  38. 7
      designer-realize/src/main/java/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java
  39. 4
      designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java
  40. 5
      designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

39
designer-base/src/main/java/com/fr/design/DesignerEnvManager.java

@ -141,8 +141,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private int eastRegionToolPaneY = 300;
private int eastRegionContainerWidth = 260;
private int westRegionToolPaneY = 300;
private int westRegionContainerWidth = 240;
private double westRegionToolPaneYRate = 0.5;
private String encryptionKey;
private String jdkHome;
@ -240,7 +240,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
String installHome = StableUtils.getInstallHome();
//这里不判断路径是.的情况,放在checkValid方法里面,重新选
if (installHome != null) {
String name = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Engine_DEFAULT");
String name = Toolkit.i18nText("Fine-Design_Basic_Engine_DEFAULT");
String envPath = designerEnvManager.getDefaultenvPath(installHome);
designerEnvManager.putEnv(name, LocalDesignerWorkspaceInfo.create(name, envPath));
designerEnvManager.setCurEnvName(name);
@ -304,8 +304,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
String today = calender.get(Calendar.YEAR) + "-" + (calender.get(Calendar.MONTH) + 1) + "-" + calender.get(Calendar.DAY_OF_MONTH);
String fileName = StableUtils.pathJoin(logLocation, "fr_" + today + "_%g.log");
if (!new java.io.File(fileName).exists()) {
StableUtils.makesureFileExist(new java.io.File(fileName));
if (!new File(fileName).exists()) {
StableUtils.makesureFileExist(new File(fileName));
}
Handler handler = new FileHandler(fileName, true);
@ -440,12 +440,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.lastOpenFilePath = lastOpenFilePath;
}
/**
* 获取西面板的上子面板的高度占容器总高度的比例
* 得到西面板的上下子面板的高度区分
*
* @return
*/
public double getLastWestRegionToolPaneYRate() {
return westRegionToolPaneYRate;
public int getLastWestRegionToolPaneY() {
return this.westRegionToolPaneY;
}
/**
@ -458,11 +460,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
}
/**
* 设置关闭设计器前西面板的上子面板的高度占容器总高度的比例
* @param westRegionToolPaneYRate
* 设置西面板的上下子面板的高度区分
*
* @param toolPaneY
*/
public void setLastWestRegionToolPaneYRate(double westRegionToolPaneYRate) {
this.westRegionToolPaneYRate = westRegionToolPaneYRate;
public void setLastWestRegionToolPaneY(int toolPaneY) {
this.westRegionToolPaneY = toolPaneY;
}
/**
@ -526,7 +529,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
return env;
}
}
String name = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Workspace_Default");
String name = Toolkit.i18nText("Fine-Design_Basic_Workspace_Default");
LocalDesignerWorkspaceInfo newDefaultEnv = LocalDesignerWorkspaceInfo.create(name, defaultenvPath);
this.putEnv(name, newDefaultEnv);
return newDefaultEnv;
@ -549,7 +552,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
}
}
}
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Workspace_Default");
return Toolkit.i18nText("Fine-Design_Basic_Workspace_Default");
}
@ -1607,8 +1610,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void readLastWestRegionLayout(XMLableReader reader) {
String tmpVal;
if ((tmpVal = reader.getAttrAsString("toolPaneYRate", null)) != null) {
this.setLastWestRegionToolPaneYRate(Double.parseDouble(tmpVal));
if ((tmpVal = reader.getAttrAsString("toolPaneY", null)) != null) {
this.setLastWestRegionToolPaneY(Integer.parseInt(tmpVal));
}
if ((tmpVal = reader.getAttrAsString("containerWidth", null)) != null) {
this.setLastWestRegionContainerWidth(Integer.parseInt(tmpVal));
@ -1640,7 +1643,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
if ((tmpVal = reader.getAttrAsString("webinfLocation", null)) != null) {
// marks:兼容6.1的
// marks:设置默认的目录.
String curReportServerName = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Server_Embedded_Server");
String curReportServerName = Toolkit.i18nText("Fine-Design_Basic_Server_Embedded_Server");
LocalDesignerWorkspaceInfo reportServer = LocalDesignerWorkspaceInfo.create(curReportServerName, tmpVal);
this.putEnv(curReportServerName, reportServer);
@ -1931,8 +1934,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void writeLastWestRegionLayout(XMLPrintWriter writer) {
writer.startTAG("LastWestRegionLayout");
if (this.getLastWestRegionToolPaneYRate() >= 0) {
writer.attr("toolPaneYRate", this.getLastWestRegionToolPaneYRate());
if (this.getLastWestRegionToolPaneY() >= 0) {
writer.attr("toolPaneY ", this.getLastWestRegionToolPaneY());
}
if (this.getLastWestRegionContainerWidth() >= 0) {
writer.attr("containerWidth", this.getLastWestRegionContainerWidth());

1
designer-base/src/main/java/com/fr/design/gui/frpane/tree/layer/config/LayerDependenceSettingPane.java

@ -142,6 +142,7 @@ public class LayerDependenceSettingPane extends JPanel implements ItemListener {
this.model.clear();
this.model.addAll(dependenceList);
this.model.fireTableDataChanged();
}

32
designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java

@ -44,7 +44,6 @@ public class UIResizableContainer extends JPanel {
private boolean isDownPaneVisible = true ;
private int paraHeight;
private int parentHeight = -1;
private double toolPaneYRate;
public UIResizableContainer(int direction) {
this(new JPanel(), new JPanel(), direction);
@ -157,20 +156,12 @@ public class UIResizableContainer extends JPanel {
return this.toolPaneY;
}
/**
* 获取上子面板高度占容器总高度的比例
* @return
*/
public double getToolPaneYRate() {
return toolPaneYRate;
}
/**
* 设置关闭设计器前最新的上子面板的高度比例
* @param toolPaneYRate
* @param toolPaneY
*/
public void setLastToolPaneYRate(double toolPaneYRate) {
this.toolPaneYRate = toolPaneYRate;
public void setLastToolPaneY(int toolPaneY) {
this.toolPaneY = toolPaneY;
}
/**
@ -248,9 +239,10 @@ public class UIResizableContainer extends JPanel {
if (parentHeight == -1) {
// 初始化下parentheight,存一下当前的父容器height
parentHeight = parent.getHeight();
} else if (parentHeight != parent.getHeight() && parent.getHeight() > 0) {
// parentHeight与父容器height不等时,代表用户调整分辨率或者dpi或者容器高度发生变化了,此时调整toolPaneY
toolPaneY = Math.min((int) (parent.getHeight() * toolPaneYRate), (parent.getHeight() - toolPaneHeight));
}
if (parentHeight != parent.getHeight() && (parent.getHeight() - toolPaneHeight) >= 0) {
// 调整toolPaneY,保证至少水平的拖拽条horizontToolPane不丢失
toolPaneY = Math.min(toolPaneY, parent.getHeight() - toolPaneHeight);
parentHeight = parent.getHeight();
}
}
@ -376,7 +368,6 @@ public class UIResizableContainer extends JPanel {
toolPaneY = e.getYOnScreen() - UIResizableContainer.this.getLocationOnScreen().y;
toolPaneY = toolPaneY < 0 ? 0 : toolPaneY;
toolPaneY = toolPaneY > UIResizableContainer.this.getHeight() - toolPaneHeight ? UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight() : toolPaneY - getParameterPaneHeight();
adjustToolPaneYRate();
refreshContainer();
}
});
@ -398,10 +389,8 @@ public class UIResizableContainer extends JPanel {
public void mouseClicked(MouseEvent e) {
if (e.getX() <= ARROW_RANGE) {
toolPaneY = 0;
UIResizableContainer.this.adjustToolPaneYRate();
} else if (e.getX() >= getWidth() - ARROW_RANGE) {
toolPaneY = UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight();
UIResizableContainer.this.adjustToolPaneYRate();
} else {
return;
}
@ -562,11 +551,4 @@ public class UIResizableContainer extends JPanel {
jf.setSize(500, 500);
jf.setVisible(true);
}
/**
* 当toolPaneY发生变化时也需要调整toolPaneYRate
*/
private void adjustToolPaneYRate() {
this.toolPaneYRate = ((double) toolPaneY) / this.getHeight();
}
}

4
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java

@ -1170,8 +1170,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
DesignerEnvManager.getEnvManager().setLastOpenFile(jt.getEditingFILE().getPath());
}
DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneYRate(
WestRegionContainerPane.getInstance().getToolPaneYRate());
DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneY(
WestRegionContainerPane.getInstance().getToolPaneY());
DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth(
WestRegionContainerPane.getInstance().getContainerWidth());
DesignerEnvManager.getEnvManager().setLastEastRegionToolPaneY(

34
designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java

@ -18,6 +18,7 @@ import com.fr.design.ui.util.UIUtil;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.general.FRFont;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginContext;
import com.fr.plugin.context.PluginRuntime;
import com.fr.plugin.injectable.PluginModule;
@ -100,14 +101,29 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
REPORT, // 报表
REPORT_PARA, // 报表参数面板
REPORT_FLOAT, // 报表悬浮元素
FORM, // 表单
FORM(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Settings")), // 表单
FORM_REPORT, // 表单报表块
POLY, // 聚合报表
POLY_REPORT, // 聚合报表-报表块
POLY_CHART, // 聚合报表-图表块
AUTHORITY_EDITION, // 权限编辑
AUTHORITY_EDITION_DISABLED // 权限编辑
AUTHORITY_EDITION_DISABLED; // 权限编辑
private String title;
PropertyMode() {
this.title = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Settings");
}
PropertyMode(String title) {
this.title = title;
}
public String getTitle() {
return this.title;
}
}
private PropertyMode currentMode; // 当前模式(根据不同模式,显示不同的可用面板)
@ -400,6 +416,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private void updatePropertyItemMap() {
for (PropertyItem item : propertyItemMap.values()) {
item.updateStatus();
item.updateTitle();
}
}
@ -734,6 +751,19 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
}
}
public void updateTitle() {
try {
if (StringUtils.equals(KEY_WIDGET_SETTINGS, name)) {
title = currentMode.getTitle();
button.setToolTipText(title);
UILabel uiLabel = (UILabel) ((BorderLayout) popupToolPane.contentPane.getLayout()).getLayoutComponent(BorderLayout.WEST);
uiLabel.setText(title);
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage());
}
}
public void reAddContentArea() {
propertyPanel.add(contentArea, BorderLayout.CENTER);
}

2
designer-base/src/main/java/com/fr/design/mainframe/WestRegionContainerPane.java

@ -24,7 +24,7 @@ public class WestRegionContainerPane extends UIResizableContainer {
public static final WestRegionContainerPane getInstance() {
if (THIS == null) {
THIS = new WestRegionContainerPane();
THIS.setLastToolPaneYRate(DesignerEnvManager.getEnvManager().getLastWestRegionToolPaneYRate());
THIS.setLastToolPaneY(DesignerEnvManager.getEnvManager().getLastWestRegionToolPaneY());
THIS.setLastContainerWidth(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth());
}
return THIS;

9
designer-base/src/main/java/com/fr/design/mainframe/widget/BasicPropertyPane.java

@ -4,6 +4,7 @@ import com.fr.design.designer.IntervalConstants;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
@ -56,20 +57,24 @@ public class BasicPropertyPane extends BasicPane {
}
}
};
widgetName.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Basic"));
widgetName.setGlobalName(Toolkit.i18nText("Fine-Design_Report_Basic"));
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[] rowSize = {p};
double[] columnSize = {p, f};
int[][] rowCount = {{1, 1}};
Component[][] components = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Name")), widgetName},
new Component[]{new UILabel(obtainBasicName()), widgetName},
};
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
this.add(panel, BorderLayout.NORTH);
}
public String obtainBasicName(){
return Toolkit.i18nText("Fine-Design_Basic_Component_Name");
}
public UITextField getWidgetNameField() {
return widgetName;
}

3
designer-base/src/main/java/com/fr/design/preview/FormPreview.java

@ -1,6 +1,7 @@
package com.fr.design.preview;
import com.fr.design.fun.impl.AbstractPreviewProvider;
import com.fr.design.i18n.Toolkit;
/**
@ -12,7 +13,7 @@ public class FormPreview extends AbstractPreviewProvider {
@Override
public String nameForPopupItem() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Form_Preview");
return Toolkit.i18nText("Fine-Design_Form_M_PC_Preview");
}
@Override

5
designer-base/src/main/java/com/fr/design/report/fit/menupane/ReportFitAttrAction.java

@ -4,6 +4,7 @@ import com.fr.design.actions.JTemplateAction;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.UIDialog;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.menu.MenuKeySet;
@ -26,7 +27,7 @@ public class ReportFitAttrAction extends JTemplateAction {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_Fit-Template");
return Toolkit.i18nText("Fine-Designer_PC_Fit_Attr");
}
@Override
@ -42,7 +43,7 @@ public class ReportFitAttrAction extends JTemplateAction {
@Override
public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_Fit-Elementcase");
return Toolkit.i18nText("Fine-Designer_PC_Element_Case_Fit_Attr");
}
@Override

21
designer-base/src/main/java/com/fr/design/widget/WidgetBoundsPaneFactory.java

@ -4,6 +4,7 @@ import com.fr.design.designer.IntervalConstants;
import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
@ -25,8 +26,8 @@ public class WidgetBoundsPaneFactory {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Size")), createRightPane(width, height)},
new Component[]{null, createRightPane(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tree_Width"), SwingConstants.CENTER), new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tree_Height"), SwingConstants.CENTER))},
new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Basic_Component_Size")), createRightPane(width, height)},
new Component[]{null, createRightPane(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Tree_Width"), SwingConstants.CENTER), new UILabel(Toolkit.i18nText("Fine-Design_Basic_Tree_Height"), SwingConstants.CENTER))},
};
double[] rowSize = {p, p};
double[] columnSize = {f, RIGHT_PANE_WIDTH};
@ -34,7 +35,7 @@ public class WidgetBoundsPaneFactory {
final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W5, IntervalConstants.INTERVAL_L6);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
boundsPane.add(panel);
return new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 280, 24, boundsPane);
return new UIExpandablePane(Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 280, 24, boundsPane);
}
public static JPanel createRightPane(Component com1, Component com2){
double f = TableLayout.FILL;
@ -53,12 +54,12 @@ public class WidgetBoundsPaneFactory {
double p = TableLayout.PREFERRED;
Component[][] northComponents = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Position")), createRightPane(x, y)},
new Component[]{null, createRightPane(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_X_Coordinate"), SwingConstants.CENTER), new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Y_Coordinate"), SwingConstants.CENTER))},
new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Basic_Widget_Position")), createRightPane(x, y)},
new Component[]{null, createRightPane(new UILabel(Toolkit.i18nText("Fine-Design_Basic_X_Coordinate"), SwingConstants.CENTER), new UILabel(Toolkit.i18nText("Fine-Design_Basic_Y_Coordinate"), SwingConstants.CENTER))},
};
Component[][] centerComponents = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Size")), createRightPane(width, height)},
new Component[]{null, createRightPane(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tree_Width"), SwingConstants.CENTER), new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tree_Height"), SwingConstants.CENTER))},
new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Basic_Widget_Size")), createRightPane(width, height)},
new Component[]{null, createRightPane(new UILabel(Toolkit.i18nText("Fine-Design_Basic_Tree_Width"), SwingConstants.CENTER), new UILabel(Toolkit.i18nText("Fine-Design_Basic_Tree_Height"), SwingConstants.CENTER))},
};
double[] rowSize = {p, p};
double[] columnSize = {f, RIGHT_PANE_WIDTH};
@ -70,7 +71,7 @@ public class WidgetBoundsPaneFactory {
centerPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
boundsPane.add(northPanel, BorderLayout.NORTH);
boundsPane.add(centerPanel, BorderLayout.CENTER);
return new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 230, 24, boundsPane);
return new UIExpandablePane(Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 230, 24, boundsPane);
}
@ -79,7 +80,7 @@ public class WidgetBoundsPaneFactory {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Size")), width},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Basic_Component_Size")), width},
};
double[] rowSize = {p};
double[] columnSize = {p, f};
@ -87,6 +88,6 @@ public class WidgetBoundsPaneFactory {
final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L6);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
boundsPane.add(panel);
return new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 280, 24, boundsPane);
return new UIExpandablePane(Toolkit.i18nText("Fine-Design_Form_Coords_And_Size"), 280, 24, boundsPane);
}
}

1736
designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java

File diff suppressed because it is too large Load Diff

4
designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java

@ -14,7 +14,7 @@ import com.fr.plugin.chart.type.MapType;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.drillmap.designer.data.comp.MapDataTree;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
import com.fr.van.chart.map.designer.type.MapStatusPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
@ -154,7 +154,7 @@ public class DrillMapLayerPane extends BasicBeanPane<VanChartDrillMapPlot> {
rowSize[i + 1] = p;
int d = i + 1;
UILabel label = new UILabel(String.format("%s%d%s", Toolkit.i18nText("Fine-Design_Chart_Index_Article"), d, Toolkit.i18nText("Fine-Design_Chart_Index_Layer")));
UIComboBox level = new UIComboBox(VanChartMapSourceChoosePane.ZOOM_LEVELS);
UIComboBox level = new UIComboBox(MapStatusPane.ZOOM_LEVELS);
level.setEnabled(i != 0);
UIComboBox type = new UIComboBox(items);
detailComps[i + 1] = new Component[]{label, level, type};

3
designer-chart/src/main/java/com/fr/van/chart/designer/PlotFactory.java

@ -35,6 +35,7 @@ import com.fr.van.chart.designer.style.VanChartRangeLegendPane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.designer.style.VanLegendPaneWidthOutHighlight;
import com.fr.van.chart.designer.style.label.VanChartGaugePlotLabelPane;
import com.fr.van.chart.designer.style.label.VanChartPiePlotLabelPane;
import com.fr.van.chart.designer.style.label.VanChartPlotLabelDetailPane;
import com.fr.van.chart.designer.style.label.VanChartPlotLabelPane;
import com.fr.van.chart.designer.style.tooltip.VanChartPlotRefreshTooltipPane;
@ -209,6 +210,8 @@ public class PlotFactory {
public static VanChartPlotLabelPane createPlotLabelPane(Plot plot, VanChartStylePane stylePane, boolean inCondition) {
if (plot instanceof VanChartGaugePlot) {
return new VanChartGaugePlotLabelPane(plot, stylePane);
} else if (plot instanceof PiePlot4VanChart) {
return new VanChartPiePlotLabelPane(plot, stylePane, inCondition);
}
return new VanChartPlotLabelPane(plot, stylePane, inCondition);
}

6
designer-chart/src/main/java/com/fr/van/chart/designer/component/border/VanChartBorderWithShapePane.java

@ -46,6 +46,10 @@ public class VanChartBorderWithShapePane extends BasicPane {
createBorderPane();
}
public LineComboBox getLineTypeBox() {
return lineTypeBox;
}
private void initComponents() {
lineTypeBox = new LineComboBox(CoreConstants.STRIKE_LINE_STYLE_ARRAY_4_CHART);
lineColorButton = new UIButtonGroup<>(new String[]{
@ -106,7 +110,7 @@ public class VanChartBorderWithShapePane extends BasicPane {
borderRadius.setEnabled(borderShape.getSelectedIndex() == RECTANGULAR_INDEX || borderShape.getSelectedIndex() == DIALOG_INDEX);
}
private JPanel createLineTypePane() {
protected JPanel createLineTypePane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;

23
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SummaryValueFormatPaneWithCheckBox.java

@ -0,0 +1,23 @@
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;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-10
*/
public class SummaryValueFormatPaneWithCheckBox extends VanChartFormatPaneWithCheckBox {
public SummaryValueFormatPaneWithCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
@Override
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Use_Summary_Value");
}
}

23
designer-chart/src/main/java/com/fr/van/chart/designer/component/format/SummaryValueFormatPaneWithoutCheckBox.java

@ -0,0 +1,23 @@
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;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-10
*/
public class SummaryValueFormatPaneWithoutCheckBox extends VanChartFormatPaneWithoutCheckBox {
public SummaryValueFormatPaneWithoutCheckBox(VanChartStylePane parent, JPanel showOnPane) {
super(parent, showOnPane);
}
protected String getCheckBoxText() {
return Toolkit.i18nText("Fine-Design_Chart_Use_Summary_Value");
}
}

64
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieCategoryLabelDetailPane.java

@ -0,0 +1,64 @@
package com.fr.van.chart.designer.style.label;
import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ibutton.UIButtonGroup;
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.stable.Constants;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.pie.style.VanChartPieCategoryLabelContentPane;
import javax.swing.JPanel;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-09
*/
public class VanChartPieCategoryLabelDetailPane extends VanChartPlotLabelDetailPane {
public VanChartPieCategoryLabelDetailPane(Plot plot, VanChartStylePane parent, boolean inCondition) {
super(plot, parent, inCondition);
}
protected void initToolTipContentPane(Plot plot) {
setDataLabelContentPane(new VanChartPieCategoryLabelContentPane(getParentPane(), this, isInCondition()));
}
protected JPanel createLabelPositionPane(String title, Plot plot) {
String[] positionName = new String[]{
Toolkit.i18nText("Fine-Design_Chart_Axis_Bottom"),
Toolkit.i18nText("Fine-Design_Form_Center"),
Toolkit.i18nText("Fine-Design_Chart_Axis_Top")
};
Integer[] positionValue = new Integer[]{Constants.BOTTOM, Constants.CENTER, Constants.TOP};
UIButtonGroup<Integer> position = new UIButtonGroup<>(positionName, positionValue);
setPosition(position);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] row = {p, p};
double[] col = {f, e};
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Layout_Position")), position},
};
return TableLayoutHelper.createTableLayoutPane(components, row, col);
}
protected void checkPositionPane(String title) {
}
protected JPanel createBorderAndBackgroundPane() {
return null;
}
}

61
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPiePlotLabelPane.java

@ -0,0 +1,61 @@
package com.fr.van.chart.designer.style.label;
import com.fr.chart.chartattr.Plot;
import com.fr.design.i18n.Toolkit;
import com.fr.plugin.chart.attr.plot.VanChartPlot;
import com.fr.plugin.chart.base.AttrLabel;
import com.fr.plugin.chart.base.AttrLabelDetail;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.BorderLayout;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-09
*/
public class VanChartPiePlotLabelPane extends VanChartPlotLabelPane {
private VanChartPlotLabelDetailPane pieCategoryLabelPane;
public VanChartPiePlotLabelPane(Plot plot, VanChartStylePane parent, boolean inCondition) {
super(plot, parent, inCondition);
}
protected void createLabelPane() {
setLabelPane(new JPanel(new BorderLayout(0, 4)));
setLabelDetailPane(new VanChartPieValueLabelDetailPane(getPlot(), getParentPane(), isInCondition()));
JPanel valuePane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Value_Label"), getLabelDetailPane());
getLabelPane().add(valuePane, BorderLayout.NORTH);
if (!isInCondition()) {
pieCategoryLabelPane = new VanChartPieCategoryLabelDetailPane(getPlot(), getParentPane(), isInCondition());
JPanel categoryPane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Category_Label"), pieCategoryLabelPane);
getLabelPane().add(categoryPane, BorderLayout.CENTER);
}
}
public void populate(AttrLabel attrLabel) {
if (attrLabel == null) {
attrLabel = ((VanChartPlot) this.getPlot()).getDefaultAttrLabel();
}
super.populate(attrLabel);
if (pieCategoryLabelPane != null) {
AttrLabelDetail labelDetail = attrLabel.getSecondLabelDetail();
pieCategoryLabelPane.populate(labelDetail);
}
}
public AttrLabel update() {
AttrLabel attrLabel = super.update();
if (pieCategoryLabelPane != null) {
AttrLabelDetail labelDetail = attrLabel.getSecondLabelDetail();
pieCategoryLabelPane.update(labelDetail);
} else {
attrLabel.setSecondLabelDetail(null);
}
return attrLabel;
}
}

72
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPieValueLabelDetailPane.java

@ -0,0 +1,72 @@
package com.fr.van.chart.designer.style.label;
import com.fr.chart.chartattr.Plot;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.utils.gui.UIComponentUtils;
import com.fr.design.widget.FRWidgetFactory;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.designer.component.background.VanChartBackgroundWithOutImagePane;
import com.fr.van.chart.designer.component.border.VanChartBorderWithShapePane;
import com.fr.van.chart.designer.style.VanChartStylePane;
import com.fr.van.chart.pie.style.VanChartPieValueLabelContentPane;
import javax.swing.JPanel;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-09
*/
public class VanChartPieValueLabelDetailPane extends VanChartPlotLabelDetailPane {
public VanChartPieValueLabelDetailPane(Plot plot, VanChartStylePane parent, boolean inCondition) {
super(plot, parent, inCondition);
}
protected void initToolTipContentPane(Plot plot) {
setDataLabelContentPane(new VanChartPieValueLabelContentPane(getParentPane(), this, isInCondition()));
}
protected JPanel getLabelLayoutPane(JPanel panel, String title) {
return panel;
}
protected JPanel createLabelBorderPane() {
VanChartBorderWithShapePane borderPane = new VanChartBorderWithShapePane() {
@Override
protected JPanel createLineTypePane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] columnSize = {f, e};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Chart_Border")),
UIComponentUtils.wrapWithBorderLayoutPane(getLineTypeBox())}};
return TableLayout4VanChartHelper.createGapTableLayoutPane(components, rowSize, columnSize);
}
};
setBorderPane(borderPane);
return borderPane;
}
protected JPanel createLabelBackgroundPane() {
VanChartBackgroundWithOutImagePane backgroundPane = new VanChartBackgroundWithOutImagePane() {
protected Component[][] getPaneComponents() {
return new Component[][]{
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Basic_Utils_Background")), typeComboBox},
new Component[]{null, centerPane},
new Component[]{getTransparentLabel(), transparent},
};
}
};
setBackgroundPane(backgroundPane);
return backgroundPane;
}
}

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

@ -83,6 +83,19 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
return parent;
}
public void setPosition(UIButtonGroup<Integer> position) {
this.position = position;
}
public void setBorderPane(VanChartBorderWithShapePane borderPane) {
this.borderPane = borderPane;
}
public void setBackgroundPane(VanChartBackgroundWithOutImagePane backgroundPane) {
this.backgroundPane = backgroundPane;
}
protected void initLabelDetailPane(Plot plot) {
this.setLayout(new BorderLayout());
initToolTipContentPane(plot);
@ -122,8 +135,7 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
return new Component[][]{
new Component[]{dataLabelContentPane, null},
new Component[]{createLabelPositionPane(Toolkit.i18nText("Fine-Design_Chart_Layout_Position"), plot), null},
new Component[]{createLabelBorderPane(), null},
new Component[]{createLabelBackgroundPane(), null}
new Component[]{createBorderAndBackgroundPane(), null},
};
}
@ -138,6 +150,14 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
};
}
protected JPanel createBorderAndBackgroundPane() {
JPanel jPanel = new JPanel();
jPanel.setLayout(new BorderLayout(0, 5));
jPanel.add(createLabelBorderPane(), BorderLayout.NORTH);
jPanel.add(createLabelBackgroundPane(), BorderLayout.CENTER);
return jPanel;
}
private JPanel createLabelBorderPane() {
borderPane = new VanChartBorderWithShapePane();
borderPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Border"), borderPane);

4
designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelPane.java

@ -44,6 +44,10 @@ public class VanChartPlotLabelPane extends BasicPane {
addComponents();
}
public boolean isInCondition() {
return inCondition;
}
public VanChartPlotLabelDetailPane getLabelDetailPane() {
return labelDetailPane;
}

4
designer-chart/src/main/java/com/fr/van/chart/drillmap/designer/data/comp/DrillMapLayerPane.java

@ -14,7 +14,7 @@ import com.fr.plugin.chart.map.server.CompatibleGeoJSONTreeHelper;
import com.fr.plugin.chart.type.MapType;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
import com.fr.van.chart.map.designer.type.MapStatusPane;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
@ -105,7 +105,7 @@ public class DrillMapLayerPane extends BasicScrollPane<ChartCollection> {
rowSize[i + 1] = p;
int d = i + 1;
UILabel label = new UILabel(String.format("%s%d%s", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Article"), d, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Index_Layer")));
UIComboBox level = new UIComboBox(VanChartMapSourceChoosePane.ZOOM_LEVELS);
UIComboBox level = new UIComboBox(MapStatusPane.ZOOM_LEVELS);
level.setEnabled(i != 0);
UIComboBox type = new UIComboBox(TEMP.get(oldMapType));
detailComps[i + 1] = new Component[]{label, level, type};

16
designer-chart/src/main/java/com/fr/van/chart/drillmap/designer/type/VanChartDrillMapPlotPane.java

@ -8,11 +8,14 @@ import com.fr.plugin.chart.base.VanChartTools;
import com.fr.plugin.chart.drillmap.DrillMapIndependentVanChart;
import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot;
import com.fr.plugin.chart.drillmap.data.DrillMapDefinition;
import com.fr.plugin.chart.map.designer.type.GEOJSONTreeHelper;
import com.fr.plugin.chart.type.MapType;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.map.designer.type.GeoUrlPane;
import com.fr.van.chart.map.designer.type.VanChartMapPlotPane;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
import javax.swing.tree.TreeNode;
import java.util.ArrayList;
/**
@ -30,10 +33,15 @@ public class VanChartDrillMapPlotPane extends VanChartMapPlotPane {
@Override
protected VanChartMapSourceChoosePane createSourceChoosePane() {
return new VanChartMapSourceChoosePane(){
return new VanChartMapSourceChoosePane() {
@Override
protected boolean supportParam(){
return false;
protected void initGeoUrlPane() {
setGeoUrlPane(new GeoUrlPane() {
@Override
protected TreeNode getRootNode() {
return GEOJSONTreeHelper.getInstance().getRootNodeWithoutPara();
}
});
}
};
}
@ -59,7 +67,7 @@ public class VanChartDrillMapPlotPane extends VanChartMapPlotPane {
protected void resetAttr(Plot plot) {
super.resetAttr(plot);
if(plot instanceof VanChartDrillMapPlot) {
if (plot instanceof VanChartDrillMapPlot) {
resetLayerTypeAndZoomLevel((VanChartDrillMapPlot) plot);
}
}

15
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapSourceChoosePane.java

@ -1,15 +0,0 @@
package com.fr.van.chart.heatmap.designer.type;
import com.fr.design.gui.ilable.UILabel;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
/**
* Created by Mitisky on 16/10/20.
*/
public class VanChartHeatMapSourceChoosePane extends VanChartMapSourceChoosePane {
@Override
protected UILabel createSourceTitleLabel() {
return new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Area_And_Point"));
}
}

24
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/type/VanChartHeatMapTypePane.java

@ -3,6 +3,8 @@ package com.fr.van.chart.heatmap.designer.type;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.Plot;
import com.fr.chartx.data.ChartDataDefinitionProvider;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.attr.plot.VanChartPlot;
@ -11,6 +13,7 @@ import com.fr.plugin.chart.heatmap.HeatMapIndependentVanChart;
import com.fr.plugin.chart.heatmap.VanChartHeatMapPlot;
import com.fr.plugin.chart.map.server.CompatibleGEOJSONHelper;
import com.fr.plugin.chart.vanchart.VanChart;
import com.fr.van.chart.map.designer.type.GeoUrlPane;
import com.fr.van.chart.map.designer.type.VanChartMapPlotPane;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
@ -27,18 +30,27 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane {
@Override
protected VanChartMapSourceChoosePane createSourceChoosePane() {
return new VanChartHeatMapSourceChoosePane();
return new VanChartMapSourceChoosePane() {
@Override
protected void initGeoUrlPane() {
setGeoUrlPane(new GeoUrlPane() {
@Override
protected UILabel createSourceTitleLabel() {
return new UILabel(Toolkit.i18nText("Fine-Design_Chart_Map_Area_And_Point"));
}
});
}
};
}
//适用一种图表只有一种类型的
public void populateBean(VanChart chart) {
typeDemo.get(0).isPressing = true;
VanChartHeatMapPlot plot = (VanChartHeatMapPlot)chart.getPlot();
VanChartHeatMapPlot plot = (VanChartHeatMapPlot) chart.getPlot();
populateSourcePane(plot);
boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl());
GUICoreUtils.setEnabled(this.getTypePane(), enabled);
GUICoreUtils.setEnabled(this.getSourceChoosePane().getSourceComboBox(), enabled);
checkDemosBackground();
}
@ -53,13 +65,13 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane {
return tools;
}
protected Plot getSelectedClonedPlot(){
protected Plot getSelectedClonedPlot() {
Chart chart = getDefaultChart();
VanChartHeatMapPlot newPlot = (VanChartHeatMapPlot)chart.getPlot();
VanChartHeatMapPlot newPlot = (VanChartHeatMapPlot) chart.getPlot();
Plot cloned = null;
try {
cloned = (Plot)newPlot.clone();
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}

258
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GeoUrlPane.java

@ -0,0 +1,258 @@
package com.fr.van.chart.map.designer.type;
import com.fr.base.Parameter;
import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONHelper;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.FRTreeComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.plugin.chart.map.VanChartMapPlot;
import com.fr.plugin.chart.map.designer.type.GEOJSONTreeHelper;
import com.fr.plugin.chart.map.server.ChartGEOJSONHelper;
import com.fr.plugin.chart.map.server.CompatibleGEOJSONHelper;
import com.fr.plugin.chart.type.MapType;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.drillmap.designer.data.comp.MapDataTree;
import com.fr.workspace.WorkContext;
import javax.swing.JPanel;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-07
*/
public class GeoUrlPane extends JPanel implements UIObserver {
private UILabel sourceTitleLabel;
private FRTreeComboBox sourceComboBox;
private MapDataTree mapDataTree;
private TreePath selectTreePath;
private UIObserverListener listener;
private String[] oldParams;
public GeoUrlPane() {
initComps();
}
private void initComps() {
this.setLayout(new BorderLayout());
this.add(createMapSourcesPane(), BorderLayout.CENTER);
}
@Override
public void registerChangeListener(UIObserverListener listener) {
this.listener = listener;
}
@Override
public boolean shouldResponseChangeListener() {
return true;
}
private JPanel createMapSourcesPane() {
mapDataTree = new MapDataTree(this.getRootNode());
mapDataTree.setEditable(false);
mapDataTree.selectDefaultTreeNode();
sourceComboBox = new FRTreeComboBox(mapDataTree, mapDataTree.getCellRenderer()) {
//搜索
protected void dealSamePath(TreePath parent, TreeNode node, UITextField textField) {
String searchText = textField.getText();
GeoUrlPane.this.mapDataTree.search(searchText);
}
//选中 tree---combobox
public void setSelectedItem(Object o) {
TreePath oldPath = mapDataTree.getSelectionPath();
Object oldText = getSelectedItem();
if (o != null && o instanceof TreePath) {
selectTreePath = (TreePath) o;
this.tree.setSelectionPath(selectTreePath);
this.getModel().setSelectedItem(pathToString(selectTreePath));
if (ComparatorUtils.equals(oldText, getSelectedItem()) && !ComparatorUtils.equals(oldPath, selectTreePath)) {
//point的江苏省切换到area的江苏省
listener.doChange();
}
} else if (o instanceof String) {//list里面没有
selectTreePath = null;
this.tree.setSelectionPath(null);
this.getModel().setSelectedItem(ChartGEOJSONHelper.getPresentNameWithPath((String) o));
}
}
@Override
protected String pathToString(TreePath path) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
//不显示后缀
return ChartGEOJSONHelper.getPresentNameWithPath(node.toString());
}
@Override
protected boolean customSelectable(DefaultMutableTreeNode node) {
return GEOJSONTreeHelper.isSelectableTreeNode(node);
}
};
sourceComboBox.setEditable(true);
sourceComboBox.setOnlyLeafSelectable(false);
sourceComboBox.addPopupMenuListener(popupMenuListener);
sourceTitleLabel = createSourceTitleLabel();
boolean hasRefreshButton = !WorkContext.getCurrent().isLocal();
UIButton button = new UIButton(IOUtils.readIcon("/com/fr/design/images/control/refresh.png"));
button.setToolTipText(Toolkit.i18nText("Fine-Design_Chart_Update_Remote_Map_JSON"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
GEOJSONHelper.reset();
GEOJSONHelper.getInstance();
}
});
double p = TableLayout.PREFERRED;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double f = TableLayout.FILL;
double[] rowSize = {p, p};
double[] columnSize = hasRefreshButton ? new double[]{d + 10, e - 20, 20} : new double[]{f, e};
Component[] comps = hasRefreshButton
? new Component[]{sourceTitleLabel, sourceComboBox, button}
: new Component[]{sourceTitleLabel, sourceComboBox};
double hGap = hasRefreshButton ? 0 : TableLayout4VanChartHelper.COMPONENT_INTERVAL;
Component[][] components = new Component[][]{
new Component[]{null, null},
comps,
};
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, hGap, LayoutConstants.VGAP_LARGE);
}
protected UILabel createSourceTitleLabel() {
return new UILabel(Toolkit.i18nText("Fine-Design_Chart_Map_Area"));
}
protected TreeNode getRootNode() {
return GEOJSONTreeHelper.getInstance().getRootNodeWithPara();
}
private String[] getParamsName() {
JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (jTemplate == null) {
return new String[0];
}
Parameter[] parameters = jTemplate.getJTemplateParameters();
int len = parameters.length;
String[] names = new String[len];
for (int i = 0; i < len; i++) {
names[i] = parameters[i].getName();
}
return names;
}
private PopupMenuListener popupMenuListener = new PopupMenuListener() {
public void popupMenuCanceled(PopupMenuEvent e) {
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
GEOJSONTreeHelper.reset();
mapDataTree.changeRootNode(GeoUrlPane.this.getRootNode());
GEOJSONTreeHelper.getInstance().updateParamRootNode(GeoUrlPane.this.getParamsName());
if (selectTreePath != null) {
mapDataTree.setSelectNodePath(CompatibleGEOJSONHelper.completeJSONName(selectTreePath.getLastPathComponent().toString()));
selectTreePath = mapDataTree.getSelectionPath();
}
mapDataTree.updateUI();//因为服务器那边可能随时编辑,所以这边要重画
mapDataTree.setSelectionPath(selectTreePath);
mapDataTree.scrollPathToVisible(selectTreePath);
}
};
public void populate(VanChartMapPlot mapPlot) {
resetComponentValue(mapPlot, false);
String geoUrl = mapPlot.getGeoUrl();
mapDataTree.setSelectNodePath(geoUrl);
selectTreePath = mapDataTree.getSelectionPath();
if (selectTreePath == null) {//此url当前环境没有
sourceComboBox.setSelectedItem(geoUrl);
} else {
sourceComboBox.setSelectedItem(selectTreePath);
}
boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(mapPlot.getGeoUrl());
GUICoreUtils.setEnabled(sourceComboBox, enabled);
}
public String update() {
return mapDataTree.getSelectNodeJSONPath();
}
protected void resetComponentValue(VanChartMapPlot mapPlot, boolean samePlotChange) {
MapType mapType = mapPlot.getMapType();
//获取最新的参数
String[] params = getParamsName();
if (!ComparatorUtils.equals(oldParams, params)) {
oldParams = params;
GEOJSONTreeHelper.getInstance().updateParamRootNode(params);
}
mapDataTree.changeRootNode(this.getRootNode());
if (samePlotChange) {
String nodePath = ChartGEOJSONHelper.getDefaultJSONURL();
mapPlot.setGeoUrl(nodePath);
mapDataTree.setSelectNodePath(nodePath);
selectTreePath = mapDataTree.getSelectionPath();
sourceComboBox.setSelectedItem(selectTreePath);
}
switch (mapType) {
case CUSTOM:
sourceTitleLabel.setText(Toolkit.i18nText("Fine-Design_Chart_Map_Area_And_Point"));
break;
case POINT:
sourceTitleLabel.setText(Toolkit.i18nText("Fine-Design_Chart_Map_Point"));
break;
case LINE:
sourceTitleLabel.setText(Toolkit.i18nText("Fine-Design_Chart_Map_Point"));
break;
default:
sourceTitleLabel.setText(Toolkit.i18nText("Fine-Design_Chart_Map_Area"));
}
}
}

303
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java

@ -0,0 +1,303 @@
package com.fr.van.chart.map.designer.type;
import com.fr.base.Utils;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icombobox.UIComboBox;
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.general.ComparatorUtils;
import com.fr.plugin.chart.base.GisLayer;
import com.fr.plugin.chart.map.VanChartMapPlot;
import com.fr.plugin.chart.map.server.MapLayerConfigManager;
import com.fr.plugin.chart.type.GISLayerType;
import com.fr.plugin.chart.type.GaoDeGisType;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-07
*/
public class GisLayerPane extends JPanel implements UIObserver {
private UIButtonGroup gisButton;
private JPanel layerPaneCheckPane;
private UIComboBox gisGaoDeLayer;
private UIComboBox gisLayer;
private JPanel layerCardPane;
private WMSLayerPane wmsLayerPane;
private TileLayerPane tileLayerPane;
private UIComboBox zoomLevel;
private String[] layers = MapLayerConfigManager.getLayerItems();
public GisLayerPane() {
initComps();
}
private void initComps() {
this.setLayout(new BorderLayout());
this.add(createGISLayerPane(), BorderLayout.CENTER);
}
@Override
public void registerChangeListener(UIObserverListener listener) {
this.wmsLayerPane.registerChangeListener(listener);
}
@Override
public boolean shouldResponseChangeListener() {
return true;
}
public void registerZoomLevel(UIComboBox zoomLevel) {
this.zoomLevel = zoomLevel;
}
private boolean isStandardGis() {
return gisButton.getSelectedIndex() == 0;
}
private JPanel createGISLayerPane() {
gisButton = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Form_Widget_Style_Standard"), Toolkit.i18nText("Fine-Design_Chart_Custom")});
gisGaoDeLayer = new UIComboBox(MapLayerConfigManager.getGaoDeLayerItems());
gisButton.addActionListener(event -> {
refreshZoomLevel();
checkLayerCardPane();
});
gisGaoDeLayer.addItemListener(event -> refreshZoomLevel());
initCustomGISLayerPane();
initLayerCardPane();
layerPaneCheckPane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (isStandardGis()) {
return gisGaoDeLayer.getPreferredSize();
} else {
return gisLayer.getPreferredSize();
}
}
};
layerPaneCheckPane.add(gisGaoDeLayer, "standard");
layerPaneCheckPane.add(gisLayer, "custom");
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] row = {p, p, p};
double[] col = {f, e};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Gis_Layer")), gisButton},
new Component[]{null, layerPaneCheckPane},
new Component[]{layerCardPane, null},
};
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, row, col);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
return panel;
}
private void initLayerCardPane() {
tileLayerPane = new TileLayerPane();
wmsLayerPane = new WMSLayerPane();
layerCardPane = new JPanel(new CardLayout()) {
@Override
public Dimension getPreferredSize() {
if (isStandardGis()) {
return new Dimension(0, 0);
}
String itemName = Utils.objectToString(gisLayer.getSelectedItem());
if (MapLayerConfigManager.isCustomLayer(itemName)) {
return tileLayerPane.getPreferredSize();
} else if (MapLayerConfigManager.isCustomWmsLayer(itemName)) {
return wmsLayerPane.getPreferredSize();
}
return new Dimension(0, 0);
}
};
for (String itemName : layers) {
JPanel pane = new JPanel();
if (MapLayerConfigManager.isCustomLayer(itemName)) {
pane = tileLayerPane;
} else if (MapLayerConfigManager.isCustomWmsLayer(itemName)) {
pane = wmsLayerPane;
}
layerCardPane.add(pane, itemName);
}
}
private void initCustomGISLayerPane() {
gisLayer = new UIComboBox(layers);
gisLayer.addItemListener(e ->
{
if (e.getStateChange() == ItemEvent.SELECTED) {
checkCustomLayerCardPane();
}
refreshZoomLevel();
}
);
gisLayer.addPopupMenuListener(new PopupMenuListener() {
public void popupMenuCanceled(PopupMenuEvent e) {
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
String selected = Utils.objectToString(gisLayer.getSelectedItem());
ZoomLevel zoomSelected = (ZoomLevel) zoomLevel.getSelectedItem();
gisLayer.setModel(new DefaultComboBoxModel(MapLayerConfigManager.getLayerItems()));
gisLayer.setSelectedItem(selected);
zoomLevel.setSelectedItem(zoomSelected);
}
});
}
private void refreshZoomLevel() {
//gis图层不同,对应的缩放等级不同。
ZoomLevel[] levels;
if (isStandardGis()) {
if (gisGaoDeLayer.getSelectedIndex() == gisGaoDeLayer.getItemCount() - 1) {
levels = MapStatusPane.ZOOM_LEVELS;
} else {
levels = MapStatusPane.GAODE_ZOOM_LEVELS;
}
} else {
if (ComparatorUtils.equals(gisLayer.getSelectedItem(), Toolkit.i18nText("Fine-Design_Chart_Layer_Blue"))) {
levels = MapStatusPane.BLUE_ZOOM_LEVELS;
} else if (ComparatorUtils.equals(gisLayer.getSelectedItem(), Toolkit.i18nText("Fine-Design_Chart_Layer_GaoDe"))) {
levels = MapStatusPane.GAODE_ZOOM_LEVELS;
} else {
levels = MapStatusPane.ZOOM_LEVELS;
}
}
zoomLevel.setModel(new DefaultComboBoxModel(levels));
}
private void checkLayerCardPane() {
CardLayout cardLayout = (CardLayout) layerPaneCheckPane.getLayout();
cardLayout.show(layerPaneCheckPane, isStandardGis() ? "standard" : "custom");
}
private void checkCustomLayerCardPane() {
CardLayout cardLayout = (CardLayout) layerCardPane.getLayout();
cardLayout.show(layerCardPane, Utils.objectToString(gisLayer.getSelectedItem()));
}
public void resetGisLayer(VanChartMapPlot mapPlot) {
//TODO Bjorn 地图gis图层自动逻辑
/* mapPlot.getGisLayer().setGisLayerType(GISLayerType.AUTO);
mapPlot.getGisLayer().setLayerName(GISLayerType.getLocString(GISLayerType.AUTO));*/
GaoDeGisType gaoDeGisType= mapPlot.getDefaultGisLayerType();
mapPlot.getGisLayer().setGisLayerType(GISLayerType.GAO_DE_API);
mapPlot.getGisLayer().setLayerName(gaoDeGisType.getTypeName());
mapPlot.getGisLayer().setGaoDeGisType(gaoDeGisType);
populate(mapPlot.getGisLayer());
}
public void populate(GisLayer layer) {
switch (layer.getGisLayerType()) {
case GAO_DE_API:
case LAYER_NULL:
populateStandardGis(layer);
break;
default:
populateCustomGis(layer);
}
refreshZoomLevel();
checkCustomLayerCardPane();
checkLayerCardPane();
}
private void populateStandardGis(GisLayer layer) {
gisButton.setSelectedIndex(0);
if (layer.getGisLayerType() == GISLayerType.LAYER_NULL) {
gisGaoDeLayer.setSelectedIndex(gisGaoDeLayer.getItemCount() - 1);
} else {
gisGaoDeLayer.setSelectedItem(layer.getGaoDeGisType().getTypeName());
}
}
private void populateCustomGis(GisLayer layer) {
gisButton.setSelectedIndex(1);
gisLayer.setSelectedItem(layer.getShowItemName());
switch (layer.getGisLayerType()) {
case CUSTOM_WMS_LAYER:
wmsLayerPane.populate(layer);
break;
case CUSTOM_TILE_LAYER:
tileLayerPane.populate(layer);
break;
}
}
public void update(GisLayer layer) {
if (isStandardGis()) {
updateStandardGis(layer);
} else {
updateCustomGis(layer);
}
}
private void updateStandardGis(GisLayer layer) {
String layerName = Utils.objectToString(gisGaoDeLayer.getSelectedItem());
layer.setLayerName(layerName);
if (gisGaoDeLayer.getSelectedIndex() == gisGaoDeLayer.getItemCount() - 1) {
layer.setGisLayerType(MapLayerConfigManager.getGisLayerType(layerName));
} else {
layer.setGisLayerType(GISLayerType.GAO_DE_API);
layer.setGaoDeGisType(GaoDeGisType.parseByLocaleName(layerName));
}
}
private void updateCustomGis(GisLayer layer) {
String layerName = Utils.objectToString(gisLayer.getSelectedItem());
layer.setLayerName(layerName);
layer.setGisLayerType(MapLayerConfigManager.getGisLayerType(layerName));
switch (layer.getGisLayerType()) {
case CUSTOM_WMS_LAYER:
wmsLayerPane.update(layer);
break;
case CUSTOM_TILE_LAYER:
tileLayerPane.update(layer);
break;
}
}
}

167
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java

@ -0,0 +1,167 @@
package com.fr.van.chart.map.designer.type;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.plugin.chart.base.ViewCenter;
import com.fr.plugin.chart.map.VanChartMapPlot;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.stable.ArrayUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-07
*/
public class MapStatusPane extends JPanel {
public static final ZoomLevel[] ZOOM_LEVELS = new ZoomLevel[]{
ZoomLevel.AUTO,
ZoomLevel.ZERO, ZoomLevel.ZEROPOINTFIVE,
ZoomLevel.ONE, ZoomLevel.ONEPOINTFIVE,
ZoomLevel.TWO, ZoomLevel.TWOPOINTFIVE,
ZoomLevel.THREE, ZoomLevel.THREEPOINTFIVE,
ZoomLevel.FOUR, ZoomLevel.FOURPOINTFIVE,
ZoomLevel.FIVE, ZoomLevel.FIVEPOINTFIVE,
ZoomLevel.SIX, ZoomLevel.SIXPOINTFIVE,
ZoomLevel.SEVEN, ZoomLevel.SEVENPOINTFIVE,
ZoomLevel.EIGHT, ZoomLevel.EIGHTPOINTFIVE,
ZoomLevel.NINE, ZoomLevel.NINEPOINTFIVE,
ZoomLevel.TEN, ZoomLevel.TENPOINTFIVE,
ZoomLevel.ELEVEN, ZoomLevel.ELEVENTPOINTFIVE,
ZoomLevel.TWELVE, ZoomLevel.TWELVEPOINTFIVE,
ZoomLevel.THIRTEEN, ZoomLevel.THIRTEENPOINTFIVE,
ZoomLevel.FOURTEEN, ZoomLevel.FOURTEENPOINTFIVE,
ZoomLevel.FIFTEEN, ZoomLevel.FIFTEENPOINTFIVE,
ZoomLevel.SIXTEEN, ZoomLevel.SIXTEENPOINTFIVE,
ZoomLevel.SEVENTEEN, ZoomLevel.SEVENTEENPOINTFIVE,
ZoomLevel.EIGHTEEN
};
//深蓝和高德地图下拉框层级
public static final ZoomLevel[] BLUE_ZOOM_LEVELS = ArrayUtils.subarray(ZOOM_LEVELS, 0, 34);
public static final ZoomLevel[] GAODE_ZOOM_LEVELS = ArrayUtils.addAll(new ZoomLevel[]{ZoomLevel.AUTO}, (ZoomLevel[]) ArrayUtils.subarray(ZOOM_LEVELS, 7, 38));
private static final String AUTO_CENTER_STRING = Toolkit.i18nText("Fine-Design_Chart_Automatic");
private static final String CUSTOM_CENTER_STRING = Toolkit.i18nText("Fine-Design_Chart_Custom");
private JPanel levelAndCenterPane;
private JPanel longAndLatPane;
private UIComboBox zoomLevel;
private UIButtonGroup viewCenterCom;
private UISpinner longitude;
private UISpinner latitude;
public MapStatusPane() {
initComps();
}
public UIComboBox getZoomLevel() {
return zoomLevel;
}
private void initComps() {
zoomLevel = new UIComboBox(ZOOM_LEVELS);
viewCenterCom = new UIButtonGroup(new String[]{AUTO_CENTER_STRING, CUSTOM_CENTER_STRING});
longitude = new UISpinner(-Double.MAX_VALUE, Double.MAX_VALUE, 1, 0.0);
latitude = new UISpinner(-Double.MAX_VALUE, Double.MAX_VALUE, 1, 0.0);
double p = TableLayout.PREFERRED;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH;
double[] rowSize = {p, p, p};
double[] columnSize = {d, e};
double[] column = {d, s};
Component[][] comps = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Zoom_Layer")), zoomLevel},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_View_Center")), viewCenterCom},
};
levelAndCenterPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, columnSize);
Component[][] longAndLatComps = new Component[][]{
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Longitude")), longitude},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Latitude")), latitude}
};
longAndLatPane = TableLayout4VanChartHelper.createGapTableLayoutPane(longAndLatComps, rowSize, column);
longAndLatPane.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0));
longAndLatPane.setVisible(false);
this.setLayout(new BorderLayout(0, 6));
this.add(levelAndCenterPane, BorderLayout.NORTH);
this.add(longAndLatPane, BorderLayout.CENTER);
viewCenterCom.addActionListener(event ->
longAndLatPane.setVisible(!isAutoViewCenter()));
}
@Override
public Dimension getPreferredSize() {
if (longAndLatPane.isVisible()) {
return super.getPreferredSize();
} else {
return levelAndCenterPane.getPreferredSize();
}
}
private boolean isAutoViewCenter() {
return viewCenterCom.getSelectedIndex() == 0;
}
public void resetViewCenter(VanChartMapPlot mapPlot) {
mapPlot.setViewCenter(new ViewCenter());
viewCenterCom.setSelectedIndex(0);
longitude.setValue(0);
latitude.setValue(0);
longAndLatPane.setVisible(false);
}
public void resetZoomLevel(VanChartMapPlot mapPlot) {
mapPlot.setZoomLevel(ZoomLevel.AUTO);
zoomLevel.setSelectedItem(mapPlot.getZoomLevel());
}
public void populate(VanChartMapPlot mapPlot) {
zoomLevel.setSelectedItem(mapPlot.getZoomLevel());
ViewCenter viewCenter = mapPlot.getViewCenter();
if (viewCenter.isAuto()) {
viewCenterCom.setSelectedIndex(0);
longitude.setValue(0);
latitude.setValue(0);
} else {
viewCenterCom.setSelectedIndex(1);
longitude.setValue(viewCenter.getLongitude());
latitude.setValue(viewCenter.getLatitude());
}
longAndLatPane.setVisible(!isAutoViewCenter());
}
public void update(VanChartMapPlot mapPlot) {
mapPlot.setZoomLevel((ZoomLevel) zoomLevel.getSelectedItem());
ViewCenter viewCenter = mapPlot.getViewCenter();
if (isAutoViewCenter()) {
viewCenter.setAuto(true);
} else {
viewCenter.setAuto(false);
viewCenter.setLongitude(longitude.getValue());
viewCenter.setLatitude(latitude.getValue());
}
}
}

51
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/TileLayerPane.java

@ -0,0 +1,51 @@
package com.fr.van.chart.map.designer.type;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.layout.TableLayout;
import com.fr.plugin.chart.base.GisLayer;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-07
*/
public class TileLayerPane extends JPanel {
private UITextArea customTileLayer;
private UITextArea attribution;
public TileLayerPane() {
double p = TableLayout.PREFERRED;
double[] rowSize = {p, p};
double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH - 3};
customTileLayer = new UITextArea();
attribution = new UITextArea();
Component[][] comps = new Component[][]{
new Component[]{new UILabel("url"), customTileLayer},
new Component[]{new UILabel("Attribution"), attribution}
};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE);
panel.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER);
this.setLayout(new BorderLayout());
this.add(panel, BorderLayout.CENTER);
}
public void populate(GisLayer layer) {
customTileLayer.setText(layer.getCustomTileLayer());
attribution.setText(layer.getAttribution());
}
public void update(GisLayer layer) {
layer.setCustomTileLayer(customTileLayer.getText());
layer.setAttribution(attribution.getText());
}
}

1
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapPlotPane.java

@ -78,7 +78,6 @@ public class VanChartMapPlotPane extends AbstractVanChartTypePane {
boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl());
GUICoreUtils.setEnabled(this.getTypePane(), enabled);
GUICoreUtils.setEnabled(this.sourceChoosePane.getSourceComboBox(), enabled);
checkDemosBackground();
}

714
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java

@ -1,739 +1,113 @@
package com.fr.van.chart.map.designer.type;
import com.fr.base.Parameter;
import com.fr.base.Utils;
import com.fr.decision.webservice.v10.map.WMSFactory;
import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONHelper;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonGroup;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.FRTreeComboBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.JTemplate;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.general.http.HttpClient;
import com.fr.plugin.chart.base.GisLayer;
import com.fr.plugin.chart.base.ViewCenter;
import com.fr.plugin.chart.map.VanChartMapPlot;
import com.fr.plugin.chart.map.designer.type.GEOJSONTreeHelper;
import com.fr.plugin.chart.map.layer.WMSLayer;
import com.fr.plugin.chart.map.server.ChartGEOJSONHelper;
import com.fr.plugin.chart.map.server.CompatibleGEOJSONHelper;
import com.fr.plugin.chart.map.server.MapLayerConfigManager;
import com.fr.plugin.chart.type.GISLayerType;
import com.fr.plugin.chart.type.MapType;
import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.stable.ArrayUtils;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.drillmap.designer.data.comp.MapDataTree;
import com.fr.workspace.WorkContext;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import java.util.ArrayList;
import java.util.List;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* Created by Mitisky on 16/5/11.
* 地图类型选择面板,关于json资源路径/gis图层等设置面板
*/
public class VanChartMapSourceChoosePane extends JPanel implements UIObserver {
private static final double[] COLUMN_SIZE = {48, TableLayout.FILL, TableLayout.PREFERRED};
public static final ZoomLevel[] ZOOM_LEVELS = new ZoomLevel[]{
ZoomLevel.AUTO,
ZoomLevel.ZERO, ZoomLevel.ZEROPOINTFIVE,
ZoomLevel.ONE, ZoomLevel.ONEPOINTFIVE,
ZoomLevel.TWO, ZoomLevel.TWOPOINTFIVE,
ZoomLevel.THREE, ZoomLevel.THREEPOINTFIVE,
ZoomLevel.FOUR, ZoomLevel.FOURPOINTFIVE,
ZoomLevel.FIVE, ZoomLevel.FIVEPOINTFIVE,
ZoomLevel.SIX, ZoomLevel.SIXPOINTFIVE,
ZoomLevel.SEVEN, ZoomLevel.SEVENPOINTFIVE,
ZoomLevel.EIGHT, ZoomLevel.EIGHTPOINTFIVE,
ZoomLevel.NINE, ZoomLevel.NINEPOINTFIVE,
ZoomLevel.TEN, ZoomLevel.TENPOINTFIVE,
ZoomLevel.ELEVEN, ZoomLevel.ELEVENTPOINTFIVE,
ZoomLevel.TWELVE, ZoomLevel.TWELVEPOINTFIVE,
ZoomLevel.THIRTEEN, ZoomLevel.THIRTEENPOINTFIVE,
ZoomLevel.FOURTEEN, ZoomLevel.FOURTEENPOINTFIVE,
ZoomLevel.FIFTEEN, ZoomLevel.FIFTEENPOINTFIVE,
ZoomLevel.SIXTEEN, ZoomLevel.SIXTEENPOINTFIVE,
ZoomLevel.SEVENTEEN, ZoomLevel.SEVENTEENPOINTFIVE,
ZoomLevel.EIGHTEEN
};
//深蓝和高德地图下拉框层级
private static final ZoomLevel[] BLUE_ZOOM_LEVELS =(ZoomLevel[]) ArrayUtils.subarray(ZOOM_LEVELS, 0, 34);
private static final ZoomLevel[] GAODE_ZOOM_LEVELS =ArrayUtils.addAll(new ZoomLevel[]{ZoomLevel.AUTO}, (ZoomLevel[])ArrayUtils.subarray(ZOOM_LEVELS, 7, 38));
private static final String AUTO_CENTER_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Automatic");
private static final String CUSTOM_CENTER_STRING = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom");
private UILabel sourceTitleLabel;
private FRTreeComboBox sourceComboBox;
private MapDataTree mapDataTree;
private TreePath selectTreePath;
private GeoUrlPane geoUrlPane;
private UIComboBox gisLayer;
private JPanel layerCardPane;
private GisLayerPane gisLayerPane;
private UITextArea wmsUrl;
private UIButton connectButton;
private JPanel wmsLayerPane;
private java.util.List<UICheckBox> wmsLayerCheckBoxs = new ArrayList<UICheckBox>();
private UITextArea customTileLayer;
private UITextArea attribution;
private UIComboBox zoomLevel;
private UIButtonGroup viewCenterCom;
private JPanel longAndLatPane;
private UISpinner longitude;
private UISpinner latitude;
private String[] oldParams;
private UIObserverListener listener;
private String[] layers = MapLayerConfigManager.getLayerItems();
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
@Override
public void registerChangeListener(UIObserverListener listener) {
this.listener = listener;
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
@Override
public boolean shouldResponseChangeListener() {
return true;
}
private MapStatusPane mapStatusPane;
public VanChartMapSourceChoosePane() {
initGeoUrlPane();
initMapStatusPane();
initGisLayerPane();
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10,5,0,0));
this.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0));
double p = TableLayout.PREFERRED;
double[] columnSize = {230};
double[] rowSize = {p,p,p,p,p,p,p,p};
double[] rowSize = {p, p, p, p, p, p, p, p};
JPanel panel = new JPanel(new BorderLayout());
panel.add(createMapSourcesPane(), BorderLayout.NORTH);
panel.add(createGISLayerPane(), BorderLayout.CENTER);
JPanel BasePane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Basic"), panel);
panel.add(geoUrlPane, BorderLayout.NORTH);
panel.add(gisLayerPane, BorderLayout.CENTER);
JPanel basePane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Report_Basic"), panel);
JPanel mapStatusPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Map_Init_Status"), mapStatusPane);
Component[][] comps = new Component[][]{
new Component[]{BasePane},
new Component[]{createMapInitStatusPane()}
new Component[]{basePane},
new Component[]{mapStatusPaneWithTitle}
};
JPanel contentPane = TableLayoutHelper.createTableLayoutPane(comps,rowSize,columnSize);
JPanel contentPane = TableLayoutHelper.createTableLayoutPane(comps, rowSize, columnSize);
this.add(contentPane, BorderLayout.CENTER);
}
protected boolean supportParam(){
return true;
}
protected TreeNode getRootNode() {
return supportParam() ? GEOJSONTreeHelper.getInstance().getRootNodeWithPara() : GEOJSONTreeHelper.getInstance().getRootNodeWithoutPara();
public void setGeoUrlPane(GeoUrlPane geoUrlPane) {
this.geoUrlPane = geoUrlPane;
}
protected UILabel createSourceTitleLabel() {
return new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Area"));
}
private JPanel createMapSourcesPane() {
mapDataTree = new MapDataTree(this.getRootNode());
mapDataTree.setEditable(false);
mapDataTree.selectDefaultTreeNode();
sourceComboBox = new FRTreeComboBox(mapDataTree, mapDataTree.getCellRenderer()){
//搜索
protected void dealSamePath(TreePath parent, TreeNode node, UITextField textField){
String searchText = textField.getText();
VanChartMapSourceChoosePane.this.mapDataTree.search(searchText);
}
//选中 tree---combobox
public void setSelectedItem(Object o) {
TreePath oldPath = mapDataTree.getSelectionPath();
Object oldText = getSelectedItem();
if(o != null && o instanceof TreePath){
selectTreePath =(TreePath)o;
this.tree.setSelectionPath(selectTreePath);
this.getModel().setSelectedItem(pathToString(selectTreePath));
if(ComparatorUtils.equals(oldText, getSelectedItem()) && !ComparatorUtils.equals(oldPath, selectTreePath)) {
//point的江苏省切换到area的江苏省
listener.doChange();
}
} else if(o instanceof String){//list里面没有
selectTreePath = null;
this.tree.setSelectionPath(null);
this.getModel().setSelectedItem(ChartGEOJSONHelper.getPresentNameWithPath((String) o));
}
}
@Override
protected String pathToString(TreePath path) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
//不显示后缀
return ChartGEOJSONHelper.getPresentNameWithPath(node.toString());
}
@Override
protected boolean customSelectable(DefaultMutableTreeNode node){
return GEOJSONTreeHelper.isSelectableTreeNode(node);
}
};
sourceComboBox.setEditable(true);
sourceComboBox.setOnlyLeafSelectable(false);
sourceComboBox.addPopupMenuListener(popupMenuListener);
sourceTitleLabel = createSourceTitleLabel();
boolean hasRefreshButton = !WorkContext.getCurrent().isLocal();
UIButton button = new UIButton(IOUtils.readIcon("/com/fr/design/images/control/refresh.png"));
button.setToolTipText(Toolkit.i18nText("Fine-Design_Chart_Update_Remote_Map_JSON"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
GEOJSONHelper.reset();
GEOJSONHelper.getInstance();
}
});
double p = TableLayout.PREFERRED;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double[] rowSize = {p, p};
double[] columnSize = hasRefreshButton ? new double[]{d + 10, e - 20, 20} : new double[]{d, e};
Component[] comps = hasRefreshButton ? new Component[]{sourceTitleLabel, sourceComboBox, button} : new Component[]{sourceTitleLabel, sourceComboBox};
double hGap = hasRefreshButton ? 0 : TableLayout4VanChartHelper.COMPONENT_INTERVAL;
Component[][] components = new Component[][]{
new Component[]{null,null},
comps,
};
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, hGap, LayoutConstants.VGAP_LARGE);
}
private JPanel createGISLayerPane() {
JPanel panel = new JPanel(new BorderLayout(0, 8));
gisLayer = new UIComboBox(layers);
gisLayer.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
refreshZoomLevel();
}
});
gisLayer.addPopupMenuListener(new PopupMenuListener() {
public void popupMenuCanceled(PopupMenuEvent e) {
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
String selected = Utils.objectToString(gisLayer.getSelectedItem());
ZoomLevel zoomSelected = (ZoomLevel) zoomLevel.getSelectedItem();
gisLayer.setModel(new DefaultComboBoxModel(MapLayerConfigManager.getLayerItems()));
gisLayer.setSelectedItem(selected);
zoomLevel.setSelectedItem(zoomSelected);
}
});
gisLayer.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
checkLayerCardPane();
}
}
});
final JPanel tileLyaerPane = createCustomTileLayer();
final JPanel wmsLayerPane = createWMSPanel();
layerCardPane = new JPanel(new CardLayout()){
@Override
public Dimension getPreferredSize() {
String itemName = Utils.objectToString(gisLayer.getSelectedItem());
if (MapLayerConfigManager.isCustomLayer(itemName)) {
return tileLyaerPane.getPreferredSize();
} else if (MapLayerConfigManager.isCustomWmsLayer(itemName)) {
return wmsLayerPane.getPreferredSize();
}
return new Dimension(0,0);
}
};
for(String itemName : layers){
JPanel pane = new JPanel();
if (MapLayerConfigManager.isCustomLayer(itemName)) {
pane = tileLyaerPane;
} else if (MapLayerConfigManager.isCustomWmsLayer(itemName)) {
pane = wmsLayerPane;
}
layerCardPane.add(pane, itemName);
}
JPanel panel1 = TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Gis_Layer"), gisLayer);
panel.add(panel1, BorderLayout.CENTER);
panel.add(layerCardPane, BorderLayout.SOUTH);
return panel;
}
private void refreshZoomLevel(){
//gis图层不同,对应的缩放等级不同。
ZoomLevel[] levels;
if (ComparatorUtils.equals(gisLayer.getSelectedItem(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Layer_Blue"))) {
levels = BLUE_ZOOM_LEVELS;
} else if (ComparatorUtils.equals(gisLayer.getSelectedItem(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Layer_GaoDe"))) {
levels = GAODE_ZOOM_LEVELS;
} else {
levels = ZOOM_LEVELS;
}
zoomLevel.setModel(new DefaultComboBoxModel(levels));
}
private JPanel createCustomTileLayer() {
double p = TableLayout.PREFERRED;
double[] rowSize = {p, p};
double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH-3};
customTileLayer = new UITextArea();
attribution = new UITextArea();
Component[][] comps = new Component[][]{
new Component[]{new UILabel("url"), customTileLayer},
new Component[]{new UILabel("Attribution"), attribution}
};
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE);
panel.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER);
return panel;
}
private JPanel createWMSPanel() {
final double p = TableLayout.PREFERRED;
double[] rowSize = {p};
double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, 84,44};
wmsUrl = new UITextArea();
connectButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Connect_WMP"));
Component[][] comps = new Component[][]{
new Component[]{new UILabel("url"), wmsUrl, connectButton}
};
JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE);
northPane.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER);
JPanel wmsPanel = new JPanel(new BorderLayout(0, 4));
wmsLayerPane = new JPanel(new BorderLayout());
resetWMSLayerPane(new ArrayList<WMSLayer>());
wmsPanel.add(northPane, BorderLayout.NORTH);
wmsPanel.add(wmsLayerPane, BorderLayout.CENTER);
connectButton.addActionListener(actionListener);
addMouseListener();
return wmsPanel;
}
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new SwingWorker<Void, Double>() {
private java.util.List<WMSLayer> list = new ArrayList<>();
@Override
protected Void doInBackground() throws Exception {
HttpClient httpClient = new HttpClient(wmsUrl.getText() + "service=WMS&request=GetCapabilities");
httpClient.asGet();
if (!httpClient.isServerAlive()) {
return null;
}
String res = httpClient.getResponseText();
List<String> layers = WMSFactory.readLayers(res);
list.clear();
for (String layer : layers) {
list.add(new WMSLayer(layer, false));
}
return null;
}
@Override
protected void done() {
connectButton.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Connect_WMP"));
if(list != null && list.size() > 0) {
resetWMSLayerPane(list);
} else {
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Invalid_WMS"));
}
}
}.execute();
}
};
private void addMouseListener() {
connectButton.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
connectButton.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Connecting_WMP"));
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
@Override
public void registerChangeListener(UIObserverListener listener) {
geoUrlPane.registerChangeListener(listener);
gisLayerPane.registerChangeListener(listener);
}
private void resetWMSLayerPane(java.util.List<WMSLayer> wmsLayers) {
int size = wmsLayers.size();
double[] rowSize = new double[size];
Component[][] comps = new Component[size][2];
wmsLayerCheckBoxs.clear();
wmsLayerPane.removeAll();
for(int i =0; i < size; i++){
rowSize[i] = TableLayout.PREFERRED;
comps[i][0] = i == 0 ? new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_WMS_Layers"), SwingConstants.RIGHT) : null;
WMSLayer layer = wmsLayers.get(i);
UICheckBox checkBox = new UICheckBox(layer.getLayer());
checkBox.registerChangeListener(listener);
checkBox.setToolTipText(layer.getLayer());
checkBox.setSelected(layer.isSelected());
comps[i][1] = checkBox;
wmsLayerCheckBoxs.add(checkBox);
}
wmsLayerPane.add(TableLayoutHelper.createCommonTableLayoutPane(comps,rowSize, COLUMN_SIZE,0), BorderLayout.CENTER);
VanChartMapSourceChoosePane.this.updateUI();
@Override
public boolean shouldResponseChangeListener() {
return true;
}
private JPanel createMapInitStatusPane() {
zoomLevel = new UIComboBox(ZOOM_LEVELS);
viewCenterCom = new UIButtonGroup(new String[]{AUTO_CENTER_STRING, CUSTOM_CENTER_STRING});
longitude = new UISpinner(-Double.MAX_VALUE,Double.MAX_VALUE,1,0.0);
latitude = new UISpinner(-Double.MAX_VALUE,Double.MAX_VALUE,1,0.0);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double d = TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH;
double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH;
double[] rowSize = {p,p,p};
double[] columnSize = {d, e};
double[] column = {d, s};
Component[][] comps = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Zoom_Layer")), zoomLevel},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_View_Center")), viewCenterCom},
};
final JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps,rowSize,columnSize);
Component[][] longAndLatComps = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Longitude")), longitude},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Latitude")), latitude}
};
longAndLatPane =TableLayout4VanChartHelper.createGapTableLayoutPane(longAndLatComps,rowSize,column);
longAndLatPane.setBorder(BorderFactory.createEmptyBorder(0,12,0,0));
longAndLatPane.setVisible(false);
JPanel contentPane = new JPanel(new BorderLayout(0, 6)){
@Override
public Dimension getPreferredSize() {
if(longAndLatPane.isVisible()) {
return super.getPreferredSize();
} else {
return northPane.getPreferredSize();
}
}
};
contentPane.add(northPane, BorderLayout.NORTH);
contentPane.add(longAndLatPane, BorderLayout.CENTER);
viewCenterCom.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
longAndLatPane.setVisible(!isAutoViewCenter());
}
});
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Init_Status"), contentPane);
protected void initGeoUrlPane() {
geoUrlPane = new GeoUrlPane();
}
private boolean isAutoViewCenter() {
return viewCenterCom.getSelectedIndex()==0;
private void initGisLayerPane() {
gisLayerPane = new GisLayerPane();
gisLayerPane.registerZoomLevel(mapStatusPane.getZoomLevel());
}
private PopupMenuListener popupMenuListener = new PopupMenuListener() {
public void popupMenuCanceled(PopupMenuEvent e) {
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
}
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
GEOJSONTreeHelper.reset();
mapDataTree.changeRootNode(VanChartMapSourceChoosePane.this.getRootNode());
GEOJSONTreeHelper.getInstance().updateParamRootNode(VanChartMapSourceChoosePane.this.getParams());
if(selectTreePath != null){
mapDataTree.setSelectNodePath(CompatibleGEOJSONHelper.completeJSONName(selectTreePath.getLastPathComponent().toString()));
selectTreePath = mapDataTree.getSelectionPath();
}
mapDataTree.updateUI();//因为服务器那边可能随时编辑,所以这边要重画
mapDataTree.setSelectionPath(selectTreePath);
mapDataTree.scrollPathToVisible(selectTreePath);
}
};
private void checkLayerCardPane() {
CardLayout cardLayout = (CardLayout) layerCardPane.getLayout();
cardLayout.show(layerCardPane, Utils.objectToString(gisLayer.getSelectedItem()));
private void initMapStatusPane() {
mapStatusPane = new MapStatusPane();
}
public void resetComponentValue(VanChartMapPlot mapPlot) {
resetComponentValue(mapPlot, true);
geoUrlPane.resetComponentValue(mapPlot, true);
//重置图层属性
resetGisLayer(mapPlot);
gisLayerPane.resetGisLayer(mapPlot);
//重置缩放等级
resetZoomLevel(mapPlot);
mapStatusPane.resetZoomLevel(mapPlot);
//重置中心点位置
resetViewCenter(mapPlot);
mapStatusPane.resetViewCenter(mapPlot);
}
protected void resetComponentValue(VanChartMapPlot mapPlot, boolean samePlotChange) {
MapType mapType = mapPlot.getMapType();
//获取最新的参数
String[] params = getParams();
if (!ComparatorUtils.equals(oldParams, params)){
oldParams = params;
GEOJSONTreeHelper.getInstance().updateParamRootNode(params);
}
mapDataTree.changeRootNode(this.getRootNode());
if(samePlotChange) {
String nodePath = ChartGEOJSONHelper.getDefaultJSONURL();
mapPlot.setGeoUrl(nodePath);
mapDataTree.setSelectNodePath(nodePath);
selectTreePath = mapDataTree.getSelectionPath();
sourceComboBox.setSelectedItem(selectTreePath);
}
switch (mapType){
case CUSTOM:
sourceTitleLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Area_And_Point"));
break;
case POINT:
sourceTitleLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Point"));
break;
case LINE:
sourceTitleLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Point"));
break;
default:
sourceTitleLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Area"));
}
}
private String[] getParams() {
JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jTemplate == null){
return new String[0];
}
return getParamsName((jTemplate.getJTemplateParameters()));
}
private String[] getParamsName(Parameter[] parameters) {
String[] names = new String[parameters.length];
for (int i = 0; i < parameters.length; i++){
names[i] = parameters[i].getName();
}
return names;
}
private void resetViewCenter(VanChartMapPlot mapPlot) {
mapPlot.setViewCenter(new ViewCenter());
viewCenterCom.setSelectedIndex(0);
longitude.setValue(0);
latitude.setValue(0);
longAndLatPane.setVisible(false);
}
private void resetZoomLevel(VanChartMapPlot mapPlot) {
mapPlot.setZoomLevel(ZoomLevel.AUTO);
zoomLevel.setSelectedItem(mapPlot.getZoomLevel());
}
private void resetGisLayer(VanChartMapPlot mapPlot) {
//TODO Bjorn 地图gis图层自动逻辑
/* mapPlot.getGisLayer().setGisLayerType(GISLayerType.AUTO);
mapPlot.getGisLayer().setLayerName(GISLayerType.getLocString(GISLayerType.AUTO));*/
String layerName = mapPlot.getDefaultGisLayerName();
mapPlot.getGisLayer().setGisLayerType(GISLayerType.PREDEFINED_LAYER);
mapPlot.getGisLayer().setLayerName(layerName);
gisLayer.setSelectedItem(mapPlot.getGisLayer().getShowItemName());
}
public void populateBean(VanChartMapPlot mapPlot) {
resetComponentValue(mapPlot, false);
mapDataTree.setSelectNodePath(mapPlot.getGeoUrl());
selectTreePath = mapDataTree.getSelectionPath();
if(selectTreePath == null){//此url当前环境没有
sourceComboBox.setSelectedItem(mapPlot.getGeoUrl());
} else {
sourceComboBox.setSelectedItem(selectTreePath);
}
GisLayer layer = mapPlot.getGisLayer();
gisLayer.setSelectedItem(layer.getShowItemName());
wmsUrl.setText(layer.getWmsUrl());
resetWMSLayerPane(layer.getWmsLayers());
customTileLayer.setText(layer.getCustomTileLayer());
attribution.setText(layer.getAttribution());
refreshZoomLevel();
zoomLevel.setSelectedItem(mapPlot.getZoomLevel());
ViewCenter viewCenter = mapPlot.getViewCenter();
if(viewCenter.isAuto()){
viewCenterCom.setSelectedIndex(0);
longitude.setValue(0);
latitude.setValue(0);
} else {
viewCenterCom.setSelectedIndex(1);
longitude.setValue(viewCenter.getLongitude());
latitude.setValue(viewCenter.getLatitude());
}
longAndLatPane.setVisible(!isAutoViewCenter());
checkLayerCardPane();
geoUrlPane.populate(mapPlot);
gisLayerPane.populate(mapPlot.getGisLayer());
mapStatusPane.populate(mapPlot);
}
public void updateBean(VanChartMapPlot mapPlot) {
if(!CompatibleGEOJSONHelper.isDeprecated(mapPlot.getGeoUrl())){
mapPlot.setGeoUrl(mapDataTree.getSelectNodeJSONPath());
}
GisLayer layer = mapPlot.getGisLayer();
String layerName = Utils.objectToString(gisLayer.getSelectedItem());
layer.setLayerName(layerName);
layer.setGisLayerType(MapLayerConfigManager.getGisLayerType(layerName));
switch (layer.getGisLayerType()){
case CUSTOM_WMS_LAYER:
layer.setWmsUrl(wmsUrl.getText());
layer.setWmsLayers(new ArrayList<WMSLayer>());
for(UICheckBox checkBox : wmsLayerCheckBoxs){
layer.addWmsLayer(new WMSLayer(checkBox.getText(), checkBox.isSelected()));
}
break;
case CUSTOM_TILE_LAYER:
layer.setCustomTileLayer(customTileLayer.getText());
layer.setAttribution(attribution.getText());
break;
if (!CompatibleGEOJSONHelper.isDeprecated(mapPlot.getGeoUrl())) {
mapPlot.setGeoUrl(geoUrlPane.update());
}
mapPlot.setZoomLevel((ZoomLevel) zoomLevel.getSelectedItem());
ViewCenter viewCenter = mapPlot.getViewCenter();
if(isAutoViewCenter()){
viewCenter.setAuto(true);
} else {
viewCenter.setAuto(false);
viewCenter.setLongitude(longitude.getValue());
viewCenter.setLatitude(latitude.getValue());
}
}
public UIComboBox getSourceComboBox(){
return this.sourceComboBox;
gisLayerPane.update(mapPlot.getGisLayer());
mapStatusPane.update(mapPlot);
}
}

165
designer-chart/src/main/java/com/fr/van/chart/map/designer/type/WMSLayerPane.java

@ -0,0 +1,165 @@
package com.fr.van.chart.map.designer.type;
import com.fr.decision.webservice.v10.map.WMSFactory;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
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.itextarea.UITextArea;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.http.HttpClient;
import com.fr.plugin.chart.base.GisLayer;
import com.fr.plugin.chart.map.layer.WMSLayer;
import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;
import java.util.ArrayList;
import java.util.List;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-07
*/
public class WMSLayerPane extends JPanel implements UIObserver {
private static final double[] COLUMN_SIZE = {48, TableLayout.FILL, TableLayout.PREFERRED};
private UITextArea wmsUrl;
private UIButton connectButton;
private JPanel wmsLayerPane;
private List<UICheckBox> wmsLayerCheckBoxs = new ArrayList<>();
private UIObserverListener listener;
@Override
public void registerChangeListener(UIObserverListener listener) {
this.listener = listener;
}
@Override
public boolean shouldResponseChangeListener() {
return true;
}
public WMSLayerPane() {
final double p = TableLayout.PREFERRED;
double[] rowSize = {p};
double[] COLUMN_SIZE = {TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, 84, 44};
wmsUrl = new UITextArea();
connectButton = new UIButton(Toolkit.i18nText("Fine-Design_Chart_Connect_WMP"));
Component[][] comps = new Component[][]{
new Component[]{new UILabel("url"), wmsUrl, connectButton}
};
JPanel northPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, rowSize, COLUMN_SIZE);
northPane.setBorder(TableLayout4VanChartHelper.SECOND_EDIT_AREA_BORDER);
wmsLayerPane = new JPanel(new BorderLayout());
resetWMSLayerPane(new ArrayList<>());
this.setLayout(new BorderLayout(0, 6));
this.add(northPane, BorderLayout.NORTH);
this.add(wmsLayerPane, BorderLayout.CENTER);
addListener();
}
private void addListener() {
connectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new SwingWorker<Void, Double>() {
private java.util.List<WMSLayer> list = new ArrayList<>();
@Override
protected Void doInBackground() {
HttpClient httpClient = new HttpClient(wmsUrl.getText() + "service=WMS&request=GetCapabilities");
httpClient.asGet();
if (!httpClient.isServerAlive()) {
return null;
}
String res = httpClient.getResponseText();
List<String> layers = WMSFactory.readLayers(res);
list.clear();
for (String layer : layers) {
list.add(new WMSLayer(layer, false));
}
return null;
}
@Override
protected void done() {
connectButton.setText(Toolkit.i18nText("Fine-Design_Chart_Connect_WMP"));
if (list != null && list.size() > 0) {
resetWMSLayerPane(list);
} else {
FineJOptionPane.showMessageDialog(null, Toolkit.i18nText("Fine-Design_Chart_Invalid_WMS"));
}
}
}.execute();
}
});
connectButton.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
connectButton.setText(Toolkit.i18nText("Fine-Design_Chart_Connecting_WMP"));
}
});
}
private void resetWMSLayerPane(java.util.List<WMSLayer> wmsLayers) {
int size = wmsLayers.size();
double[] rowSize = new double[size];
Component[][] comps = new Component[size][2];
wmsLayerCheckBoxs.clear();
wmsLayerPane.removeAll();
for (int i = 0; i < size; i++) {
rowSize[i] = TableLayout.PREFERRED;
comps[i][0] = i == 0 ? new UILabel(Toolkit.i18nText("Fine-Design_Chart_WMS_Layers"), SwingConstants.RIGHT) : null;
WMSLayer layer = wmsLayers.get(i);
UICheckBox checkBox = new UICheckBox(layer.getLayer());
checkBox.registerChangeListener(listener);
checkBox.setToolTipText(layer.getLayer());
checkBox.setSelected(layer.isSelected());
comps[i][1] = checkBox;
wmsLayerCheckBoxs.add(checkBox);
}
wmsLayerPane.add(TableLayoutHelper.createCommonTableLayoutPane(comps, rowSize, COLUMN_SIZE, 0), BorderLayout.CENTER);
updateUI();
}
public void populate(GisLayer layer) {
wmsUrl.setText(layer.getWmsUrl());
resetWMSLayerPane(layer.getWmsLayers());
}
public void update(GisLayer layer) {
layer.setWmsUrl(wmsUrl.getText());
layer.setWmsLayers(new ArrayList<>());
for (UICheckBox checkBox : wmsLayerCheckBoxs) {
layer.addWmsLayer(new WMSLayer(checkBox.getText(), checkBox.isSelected()));
}
}
}

130
designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieCategoryLabelContentPane.java

@ -0,0 +1,130 @@
package com.fr.van.chart.pie.style;
import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane;
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.plugin.chart.pie.attr.PieCategoryLabelContent;
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.SummaryValueFormatPaneWithCheckBox;
import com.fr.van.chart.designer.component.format.SummaryValueFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithoutCheckBox;
import com.fr.van.chart.designer.style.VanChartStylePane;
import javax.swing.JPanel;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-10
*/
public class VanChartPieCategoryLabelContentPane extends VanChartLabelContentPane {
private SummaryValueFormatPaneWithCheckBox summaryValueFormatPane;
private SummaryValueFormatPaneWithoutCheckBox richTextSummaryValueFormatPane;
public VanChartPieCategoryLabelContentPane(VanChartStylePane parent, JPanel showOnPane, boolean inCondition) {
super(parent, showOnPane, inCondition);
}
@Override
protected JPanel getLabelContentPane(JPanel contentPane) {
return contentPane;
}
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
setCategoryNameFormatPane(new CategoryNameFormatPaneWithCheckBox(parent, showOnPane));
summaryValueFormatPane = new SummaryValueFormatPaneWithCheckBox(parent, showOnPane);
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
setRichTextCategoryNameFormatPane(new CategoryNameFormatPaneWithoutCheckBox(parent, showOnPane));
richTextSummaryValueFormatPane = new SummaryValueFormatPaneWithoutCheckBox(parent, showOnPane);
}
@Override
protected Component[][] getPaneComponents() {
return new Component[][]{
new Component[]{getCategoryNameFormatPane(), null},
new Component[]{summaryValueFormatPane, null},
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{getRichTextCategoryNameFormatPane(), null},
new Component[]{richTextSummaryValueFormatPane, null},
};
}
@Override
protected double[] getRowSize(double p) {
return new double[]{p, p};
}
public JPanel createCommonStylePane() {
setTextAttrPane(new ChartTextAttrPane());
return getTextAttrPane();
}
@Override
protected void populateFormatPane(AttrTooltipContent attrTooltipContent) {
PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
super.populateFormatPane(pieCategoryLabelContent);
summaryValueFormatPane.populate(pieCategoryLabelContent.getSummaryValueFormat());
}
protected void populateRichEditor(AttrTooltipContent attrTooltipContent) {
PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
VanChartFormatPaneWithoutCheckBox[] formatPaneGroup = new VanChartFormatPaneWithoutCheckBox[]{
getRichTextCategoryNameFormatPane(),
richTextSummaryValueFormatPane
};
AttrTooltipFormat[] formatGroup = new AttrTooltipFormat[]{
pieCategoryLabelContent.getRichTextCategoryFormat(),
pieCategoryLabelContent.getRichTextSummaryValueFormat()
};
setRichTextAttr(new AttrTooltipRichText());
populateRichTextFormat(formatPaneGroup, formatGroup);
populateRichText(pieCategoryLabelContent.getRichTextAttr());
checkRichEditorState(pieCategoryLabelContent);
}
@Override
protected void updateFormatPane(AttrTooltipContent attrTooltipContent) {
PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
super.updateFormatPane(pieCategoryLabelContent);
summaryValueFormatPane.update(pieCategoryLabelContent.getSummaryValueFormat());
}
protected void updateRichEditor(AttrTooltipContent attrTooltipContent) {
PieCategoryLabelContent pieCategoryLabelContent = (PieCategoryLabelContent) attrTooltipContent;
super.updateRichEditor(pieCategoryLabelContent);
richTextSummaryValueFormatPane.update(pieCategoryLabelContent.getRichTextSummaryValueFormat());
}
@Override
public void setDirty(boolean isDirty) {
getCategoryNameFormatPane().setDirty(isDirty);
summaryValueFormatPane.setDirty(isDirty);
}
@Override
public boolean isDirty() {
return getCategoryNameFormatPane().isDirty() || summaryValueFormatPane.isDirty();
}
protected AttrTooltipContent createAttrTooltip() {
return new PieCategoryLabelContent();
}
}

79
designer-chart/src/main/java/com/fr/van/chart/pie/style/VanChartPieValueLabelContentPane.java

@ -0,0 +1,79 @@
package com.fr.van.chart.pie.style;
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.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;
import java.awt.Component;
/**
* @author Bjorn
* @version 10.0
* Created by Bjorn on 2020-12-09
*/
public class VanChartPieValueLabelContentPane extends VanChartLabelContentPane {
public VanChartPieValueLabelContentPane(VanChartStylePane parent, JPanel showOnPane, boolean inCondition) {
super(parent, showOnPane, inCondition);
}
@Override
protected JPanel getLabelContentPane(JPanel contentPane) {
return contentPane;
}
@Override
protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane) {
setSeriesNameFormatPane(new SeriesNameFormatPaneWithCheckBox(parent, showOnPane));
setValueFormatPane(new ValueFormatPaneWithCheckBox(parent, showOnPane));
setPercentFormatPane(new PercentFormatPaneWithCheckBox(parent, showOnPane));
}
@Override
protected void initRichTextFormatPane(VanChartStylePane parent, JPanel showOnPane) {
setRichTextSeriesNameFormatPane(new SeriesNameFormatPaneWithoutCheckBox(parent, showOnPane));
setRichTextValueFormatPane(new ValueFormatPaneWithoutCheckBox(parent, showOnPane));
setRichTextPercentFormatPane(new PercentFormatPaneWithoutCheckBox(parent, showOnPane));
}
@Override
protected double[] getRowSize(double p) {
return new double[]{p, p, p};
}
@Override
protected Component[][] getPaneComponents() {
return new Component[][]{
new Component[]{getSeriesNameFormatPane(), null},
new Component[]{getValueFormatPane(), null},
new Component[]{getPercentFormatPane(), null},
};
}
@Override
protected Component[][] getRichTextComponents() {
return new Component[][]{
new Component[]{getRichTextSeriesNameFormatPane(), null},
new Component[]{getRichTextValueFormatPane(), null},
new Component[]{getRichTextPercentFormatPane(), null}
};
}
@Override
public void setDirty(boolean isDirty) {
getSeriesNameFormatPane().setDirty(isDirty);
getValueFormatPane().setDirty(isDirty);
getPercentFormatPane().setDirty(isDirty);
}
@Override
public boolean isDirty() {
return getSeriesNameFormatPane().isDirty() || getValueFormatPane().isDirty() || getPercentFormatPane().isDirty();
}
}

3
designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java

@ -267,6 +267,9 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
if (editingMouseListener.stopEditing()) {
if (this != (XCreator) designer.getRootComponent()) {
ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this);
if (isEditing) {
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS);
}
editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter);
if (isEditing) {
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS);

16
designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java

@ -194,7 +194,7 @@ public class EditingMouseListener extends MouseInputAdapter {
e.translatePoint(oldX - e.getX(), oldY - e.getY());
}
private void offsetEventPoint(MouseEvent e){
private void offsetEventPoint(MouseEvent e) {
int x = designer.getRelativeX(e.getX());
int y = designer.getRelativeY(e.getY());
e.translatePoint(x - e.getX(), y - e.getY());
@ -206,8 +206,8 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件
*/
public void mouseReleased(MouseEvent e) {
MouseEvent transEvent = new MouseEvent(e.getComponent(), MouseEvent.MOUSE_CLICKED, e.getWhen(), e.getModifiers(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
MouseEvent clickEvent = new MouseEvent(e.getComponent(), MouseEvent.MOUSE_CLICKED, e.getWhen(), e.getModifiers(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
MouseEvent transEvent = new MouseEvent(e.getComponent(), MouseEvent.MOUSE_CLICKED, e.getWhen(), e.getModifiers(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
MouseEvent clickEvent = new MouseEvent(e.getComponent(), MouseEvent.MOUSE_CLICKED, e.getWhen(), e.getModifiers(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), e.getButton());
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
@ -240,7 +240,7 @@ public class EditingMouseListener extends MouseInputAdapter {
}
}
private boolean isAutoFire(MouseEvent transEvent, MouseEvent clickEvent ) {
private boolean isAutoFire(MouseEvent transEvent, MouseEvent clickEvent) {
offsetEventPoint(transEvent);
XCreator xCreator = designer.getComponentAt(transEvent);
return (pressX != clickEvent.getX() || pressY != clickEvent.getY())
@ -728,15 +728,15 @@ public class EditingMouseListener extends MouseInputAdapter {
/**
* 刷新顶层组件
* */
public void refreshTopXCreator(boolean isEditing){
*/
public void refreshTopXCreator(boolean isEditing) {
designer.refreshTopXCreator(isEditing);
}
/**
* 刷新顶层组件
* */
public void refreshTopXCreator(){
*/
public void refreshTopXCreator() {
refreshTopXCreator(false);
}

11
designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormBasicWidgetPropertyPane.java

@ -1,9 +1,12 @@
package com.fr.design.mainframe.widget.ui;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
import com.fr.form.ui.Widget;
import javax.swing.BorderFactory;
import java.awt.Component;
/**
* Created by ibm on 2017/7/26.
@ -16,13 +19,17 @@ public class FormBasicWidgetPropertyPane extends BasicSetVisiblePropertyPane {
}
public UICheckBox createOtherConfig() {
enableCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Enabled"), true);
enableCheckBox.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Basic"));
enableCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Enabled"), true);
enableCheckBox.setGlobalName(Toolkit.i18nText("Fine-Design_Report_Basic"));
enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
return enableCheckBox;
}
public String obtainBasicName(){
return Toolkit.i18nText("Fine-Design_Basic_Widget_Name");
}
@Override
public String title4PopupWindow() {
return "basicProperty";

7
designer-realize/src/main/java/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java

@ -4,6 +4,7 @@ import com.fr.design.designer.IntervalConstants;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.dialog.BasicPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.form.ui.NoneWidget;
@ -25,16 +26,16 @@ public class BasicWidgetPropertySettingPane extends BasicPane {
public BasicWidgetPropertySettingPane() {
this.setLayout(new BorderLayout());
enableCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Enabled"), true);
enableCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Enabled"), true);
enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
visibleCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Visible"), true);
visibleCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Form_Widget_Visible"), true);
visibleCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
widgetNameComboBox = new ParameterTreeComboBox();
widgetNameComboBox.refreshTree();
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form-Widget_Name")), widgetNameComboBox},
new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Basic_Widget_Name")), widgetNameComboBox},
new Component[]{enableCheckBox, null},
new Component[]{visibleCheckBox, null},
};

4
designer-realize/src/main/java/com/fr/design/write/submit/SmartInsertDBManipulationPane.java

@ -456,7 +456,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
newAdd.clear();
for (int i = 0; i < cs; i++) {
for (int j = 0; j < rs; j++) {
TemplateCellElement cellElement = ePane.getEditingElementCase().getTemplateCellElement(c + i, r + j );
TemplateCellElement cellElement = ePane.getEditingElementCase().getTemplateCellElement(c + i, r + j);
if (cellElement != null && ((i + c) != 0 || (r + j) != 0)) {
String value = cellElement.toString();
if (!newAdd.contains(value) && !allColumnRow.contains(value)) {
@ -512,7 +512,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
private SmartJTablePaneAction a = new AbstractSmartJTablePaneAction(this, SmartInsertDBManipulationPane.this) {
@Override
public void doOk() {
((KeyColumnTableModel)keyColumnValuesTable.getModel()).refreshNameValueList((KeyColumnTableModel)model);
((KeyColumnTableModel) keyColumnValuesTable.getModel()).refreshNameValueList((KeyColumnTableModel) model);
}
@Override

5
designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

@ -99,6 +99,7 @@ import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.report.cell.painter.BiasTextPainter;
import com.fr.report.cell.painter.CellImagePainter;
import com.fr.stable.ArrayUtils;
import com.fr.stable.EssentialUtils;
import com.fr.stable.ParameterProvider;
import com.fr.stable.bridge.StableFactory;
import com.fr.stable.os.support.OSBasedAction;
@ -191,8 +192,8 @@ public class DesignerActivator extends Activator {
justStartModules4Designer();
CalculatorProviderContext.setValueConverter(valueConverter());
GeneralXMLTools.Object_Tokenizer = startXMLReadObjectTokenizer();
GeneralXMLTools.Object_XML_Writer_Finder = startObjectXMLWriterFinder();
EssentialUtils.Object_Tokenizer = startXMLReadObjectTokenizer();
EssentialUtils.Object_XML_Writer_Finder = startObjectXMLWriterFinder();
addAdapterForPlate();
designerRegister();

Loading…
Cancel
Save