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. 236
      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. 710
      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. 12
      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 eastRegionToolPaneY = 300;
private int eastRegionContainerWidth = 260; private int eastRegionContainerWidth = 260;
private int westRegionToolPaneY = 300;
private int westRegionContainerWidth = 240; private int westRegionContainerWidth = 240;
private double westRegionToolPaneYRate = 0.5;
private String encryptionKey; private String encryptionKey;
private String jdkHome; private String jdkHome;
@ -240,7 +240,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
String installHome = StableUtils.getInstallHome(); String installHome = StableUtils.getInstallHome();
//这里不判断路径是.的情况,放在checkValid方法里面,重新选 //这里不判断路径是.的情况,放在checkValid方法里面,重新选
if (installHome != null) { 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); String envPath = designerEnvManager.getDefaultenvPath(installHome);
designerEnvManager.putEnv(name, LocalDesignerWorkspaceInfo.create(name, envPath)); designerEnvManager.putEnv(name, LocalDesignerWorkspaceInfo.create(name, envPath));
designerEnvManager.setCurEnvName(name); 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 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"); String fileName = StableUtils.pathJoin(logLocation, "fr_" + today + "_%g.log");
if (!new java.io.File(fileName).exists()) { if (!new File(fileName).exists()) {
StableUtils.makesureFileExist(new java.io.File(fileName)); StableUtils.makesureFileExist(new File(fileName));
} }
Handler handler = new FileHandler(fileName, true); Handler handler = new FileHandler(fileName, true);
@ -440,12 +440,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.lastOpenFilePath = lastOpenFilePath; this.lastOpenFilePath = lastOpenFilePath;
} }
/** /**
* 获取西面板的上子面板的高度占容器总高度的比例 * 得到西面板的上下子面板的高度区分
*
* @return * @return
*/ */
public double getLastWestRegionToolPaneYRate() { public int getLastWestRegionToolPaneY() {
return westRegionToolPaneYRate; return this.westRegionToolPaneY;
} }
/** /**
@ -458,11 +460,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
/** /**
* 设置关闭设计器前西面板的上子面板的高度占容器总高度的比例 * 设置西面板的上下子面板的高度区分
* @param westRegionToolPaneYRate *
* @param toolPaneY
*/ */
public void setLastWestRegionToolPaneYRate(double westRegionToolPaneYRate) { public void setLastWestRegionToolPaneY(int toolPaneY) {
this.westRegionToolPaneYRate = westRegionToolPaneYRate; this.westRegionToolPaneY = toolPaneY;
} }
/** /**
@ -526,7 +529,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
return env; 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); LocalDesignerWorkspaceInfo newDefaultEnv = LocalDesignerWorkspaceInfo.create(name, defaultenvPath);
this.putEnv(name, newDefaultEnv); this.putEnv(name, newDefaultEnv);
return 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) { private void readLastWestRegionLayout(XMLableReader reader) {
String tmpVal; String tmpVal;
if ((tmpVal = reader.getAttrAsString("toolPaneYRate", null)) != null) { if ((tmpVal = reader.getAttrAsString("toolPaneY", null)) != null) {
this.setLastWestRegionToolPaneYRate(Double.parseDouble(tmpVal)); this.setLastWestRegionToolPaneY(Integer.parseInt(tmpVal));
} }
if ((tmpVal = reader.getAttrAsString("containerWidth", null)) != null) { if ((tmpVal = reader.getAttrAsString("containerWidth", null)) != null) {
this.setLastWestRegionContainerWidth(Integer.parseInt(tmpVal)); this.setLastWestRegionContainerWidth(Integer.parseInt(tmpVal));
@ -1640,7 +1643,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
if ((tmpVal = reader.getAttrAsString("webinfLocation", null)) != null) { if ((tmpVal = reader.getAttrAsString("webinfLocation", null)) != null) {
// marks:兼容6.1的 // marks:兼容6.1的
// marks:设置默认的目录. // 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); LocalDesignerWorkspaceInfo reportServer = LocalDesignerWorkspaceInfo.create(curReportServerName, tmpVal);
this.putEnv(curReportServerName, reportServer); this.putEnv(curReportServerName, reportServer);
@ -1931,8 +1934,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void writeLastWestRegionLayout(XMLPrintWriter writer) { private void writeLastWestRegionLayout(XMLPrintWriter writer) {
writer.startTAG("LastWestRegionLayout"); writer.startTAG("LastWestRegionLayout");
if (this.getLastWestRegionToolPaneYRate() >= 0) { if (this.getLastWestRegionToolPaneY() >= 0) {
writer.attr("toolPaneYRate", this.getLastWestRegionToolPaneYRate()); writer.attr("toolPaneY ", this.getLastWestRegionToolPaneY());
} }
if (this.getLastWestRegionContainerWidth() >= 0) { if (this.getLastWestRegionContainerWidth() >= 0) {
writer.attr("containerWidth", this.getLastWestRegionContainerWidth()); 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.clear();
this.model.addAll(dependenceList); 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 boolean isDownPaneVisible = true ;
private int paraHeight; private int paraHeight;
private int parentHeight = -1; private int parentHeight = -1;
private double toolPaneYRate;
public UIResizableContainer(int direction) { public UIResizableContainer(int direction) {
this(new JPanel(), new JPanel(), direction); this(new JPanel(), new JPanel(), direction);
@ -157,20 +156,12 @@ public class UIResizableContainer extends JPanel {
return this.toolPaneY; return this.toolPaneY;
} }
/**
* 获取上子面板高度占容器总高度的比例
* @return
*/
public double getToolPaneYRate() {
return toolPaneYRate;
}
/** /**
* 设置关闭设计器前最新的上子面板的高度比例 * 设置关闭设计器前最新的上子面板的高度比例
* @param toolPaneYRate * @param toolPaneY
*/ */
public void setLastToolPaneYRate(double toolPaneYRate) { public void setLastToolPaneY(int toolPaneY) {
this.toolPaneYRate = toolPaneYRate; this.toolPaneY = toolPaneY;
} }
/** /**
@ -248,9 +239,10 @@ public class UIResizableContainer extends JPanel {
if (parentHeight == -1) { if (parentHeight == -1) {
// 初始化下parentheight,存一下当前的父容器height // 初始化下parentheight,存一下当前的父容器height
parentHeight = parent.getHeight(); parentHeight = parent.getHeight();
} else if (parentHeight != parent.getHeight() && parent.getHeight() > 0) { }
// parentHeight与父容器height不等时,代表用户调整分辨率或者dpi或者容器高度发生变化了,此时调整toolPaneY if (parentHeight != parent.getHeight() && (parent.getHeight() - toolPaneHeight) >= 0) {
toolPaneY = Math.min((int) (parent.getHeight() * toolPaneYRate), (parent.getHeight() - toolPaneHeight)); // 调整toolPaneY,保证至少水平的拖拽条horizontToolPane不丢失
toolPaneY = Math.min(toolPaneY, parent.getHeight() - toolPaneHeight);
parentHeight = parent.getHeight(); parentHeight = parent.getHeight();
} }
} }
@ -376,7 +368,6 @@ public class UIResizableContainer extends JPanel {
toolPaneY = e.getYOnScreen() - UIResizableContainer.this.getLocationOnScreen().y; toolPaneY = e.getYOnScreen() - UIResizableContainer.this.getLocationOnScreen().y;
toolPaneY = toolPaneY < 0 ? 0 : toolPaneY; toolPaneY = toolPaneY < 0 ? 0 : toolPaneY;
toolPaneY = toolPaneY > UIResizableContainer.this.getHeight() - toolPaneHeight ? UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight() : toolPaneY - getParameterPaneHeight(); toolPaneY = toolPaneY > UIResizableContainer.this.getHeight() - toolPaneHeight ? UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight() : toolPaneY - getParameterPaneHeight();
adjustToolPaneYRate();
refreshContainer(); refreshContainer();
} }
}); });
@ -398,10 +389,8 @@ public class UIResizableContainer extends JPanel {
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (e.getX() <= ARROW_RANGE) { if (e.getX() <= ARROW_RANGE) {
toolPaneY = 0; toolPaneY = 0;
UIResizableContainer.this.adjustToolPaneYRate();
} else if (e.getX() >= getWidth() - ARROW_RANGE) { } else if (e.getX() >= getWidth() - ARROW_RANGE) {
toolPaneY = UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight(); toolPaneY = UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight();
UIResizableContainer.this.adjustToolPaneYRate();
} else { } else {
return; return;
} }
@ -562,11 +551,4 @@ public class UIResizableContainer extends JPanel {
jf.setSize(500, 500); jf.setSize(500, 500);
jf.setVisible(true); 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().setLastOpenFile(jt.getEditingFILE().getPath());
} }
DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneYRate( DesignerEnvManager.getEnvManager().setLastWestRegionToolPaneY(
WestRegionContainerPane.getInstance().getToolPaneYRate()); WestRegionContainerPane.getInstance().getToolPaneY());
DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth( DesignerEnvManager.getEnvManager().setLastWestRegionContainerWidth(
WestRegionContainerPane.getInstance().getContainerWidth()); WestRegionContainerPane.getInstance().getContainerWidth());
DesignerEnvManager.getEnvManager().setLastEastRegionToolPaneY( 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.GUICoreUtils;
import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.general.FRFont; import com.fr.general.FRFont;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginContext;
import com.fr.plugin.context.PluginRuntime; import com.fr.plugin.context.PluginRuntime;
import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.injectable.PluginModule;
@ -100,14 +101,29 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
REPORT, // 报表 REPORT, // 报表
REPORT_PARA, // 报表参数面板 REPORT_PARA, // 报表参数面板
REPORT_FLOAT, // 报表悬浮元素 REPORT_FLOAT, // 报表悬浮元素
FORM, // 表单 FORM(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Settings")), // 表单
FORM_REPORT, // 表单报表块 FORM_REPORT, // 表单报表块
POLY, // 聚合报表 POLY, // 聚合报表
POLY_REPORT, // 聚合报表-报表块 POLY_REPORT, // 聚合报表-报表块
POLY_CHART, // 聚合报表-图表块 POLY_CHART, // 聚合报表-图表块
AUTHORITY_EDITION, // 权限编辑 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; // 当前模式(根据不同模式,显示不同的可用面板) private PropertyMode currentMode; // 当前模式(根据不同模式,显示不同的可用面板)
@ -400,6 +416,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private void updatePropertyItemMap() { private void updatePropertyItemMap() {
for (PropertyItem item : propertyItemMap.values()) { for (PropertyItem item : propertyItemMap.values()) {
item.updateStatus(); 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() { public void reAddContentArea() {
propertyPanel.add(contentArea, BorderLayout.CENTER); 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() { public static final WestRegionContainerPane getInstance() {
if (THIS == null) { if (THIS == null) {
THIS = new WestRegionContainerPane(); THIS = new WestRegionContainerPane();
THIS.setLastToolPaneYRate(DesignerEnvManager.getEnvManager().getLastWestRegionToolPaneYRate()); THIS.setLastToolPaneY(DesignerEnvManager.getEnvManager().getLastWestRegionToolPaneY());
THIS.setLastContainerWidth(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth()); THIS.setLastContainerWidth(DesignerEnvManager.getEnvManager().getLastWestRegionContainerWidth());
} }
return THIS; 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.dialog.BasicPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; 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 f = TableLayout.FILL;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double[] rowSize = {p}; double[] rowSize = {p};
double[] columnSize = {p, f}; double[] columnSize = {p, f};
int[][] rowCount = {{1, 1}}; int[][] rowCount = {{1, 1}};
Component[][] components = new Component[][]{ 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); JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
this.add(panel, BorderLayout.NORTH); this.add(panel, BorderLayout.NORTH);
} }
public String obtainBasicName(){
return Toolkit.i18nText("Fine-Design_Basic_Component_Name");
}
public UITextField getWidgetNameField() { public UITextField getWidgetNameField() {
return widgetName; return widgetName;
} }

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

@ -1,6 +1,7 @@
package com.fr.design.preview; package com.fr.design.preview;
import com.fr.design.fun.impl.AbstractPreviewProvider; import com.fr.design.fun.impl.AbstractPreviewProvider;
import com.fr.design.i18n.Toolkit;
/** /**
@ -12,7 +13,7 @@ public class FormPreview extends AbstractPreviewProvider {
@Override @Override
public String nameForPopupItem() { 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 @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.beans.BasicBeanPane;
import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.design.menu.MenuKeySet; import com.fr.design.menu.MenuKeySet;
@ -26,7 +27,7 @@ public class ReportFitAttrAction extends JTemplateAction {
@Override @Override
public String getMenuName() { public String getMenuName() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_Fit-Template"); return Toolkit.i18nText("Fine-Designer_PC_Fit_Attr");
} }
@Override @Override
@ -42,7 +43,7 @@ public class ReportFitAttrAction extends JTemplateAction {
@Override @Override
public String getMenuName() { 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 @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.foldablepane.UIExpandablePane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
@ -25,8 +26,8 @@ public class WidgetBoundsPaneFactory {
double f = TableLayout.FILL; double f = TableLayout.FILL;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Size")), createRightPane(width, height)}, new Component[]{FRWidgetFactory.createLineWrapLabel(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[]{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[] rowSize = {p, p};
double[] columnSize = {f, RIGHT_PANE_WIDTH}; 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); final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W5, IntervalConstants.INTERVAL_L6);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
boundsPane.add(panel); 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){ public static JPanel createRightPane(Component com1, Component com2){
double f = TableLayout.FILL; double f = TableLayout.FILL;
@ -53,12 +54,12 @@ public class WidgetBoundsPaneFactory {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
Component[][] northComponents = new Component[][]{ Component[][] northComponents = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Position")), createRightPane(x, y)}, new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Basic_Widget_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[]{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[][]{ Component[][] centerComponents = new Component[][]{
new Component[]{FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Component_Size")), createRightPane(width, height)}, new Component[]{FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Basic_Widget_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[]{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[] rowSize = {p, p};
double[] columnSize = {f, RIGHT_PANE_WIDTH}; double[] columnSize = {f, RIGHT_PANE_WIDTH};
@ -70,7 +71,7 @@ public class WidgetBoundsPaneFactory {
centerPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); centerPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
boundsPane.add(northPanel, BorderLayout.NORTH); boundsPane.add(northPanel, BorderLayout.NORTH);
boundsPane.add(centerPanel, BorderLayout.CENTER); 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 f = TableLayout.FILL;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{ 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[] rowSize = {p};
double[] columnSize = {p, f}; 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); final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L6);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
boundsPane.add(panel); 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);
} }
} }

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

@ -53,7 +53,6 @@ import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor; import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultComboBoxModel;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -74,6 +73,7 @@ import java.awt.Dimension;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.GridLayout; import java.awt.GridLayout;
import java.awt.Image; import java.awt.Image;
import java.awt.Window;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter; import java.awt.event.FocusAdapter;
@ -119,13 +119,9 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
protected JavaScriptActionPane parentPane; protected JavaScriptActionPane parentPane;
private int keyColumnWidth = 100;
private int resizeColumnCount = 4;
private int btnWidth = 110;
private int btnHeight = 20;
private String subMitName; private String subMitName;
private static final String[] DML_CONFIG_TYPES = new String[] { private static final String[] DML_CONFIG_TYPES = new String[]{
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Smart_Submit"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Smart_Submit"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Delete_Submit"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Delete_Submit"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Insert_Submit"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Write_Insert_Submit"),
@ -148,7 +144,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
dmlConfigComboBox = new UIComboBox(DML_CONFIG_TYPES); dmlConfigComboBox = new UIComboBox(DML_CONFIG_TYPES);
JPanel typePane = GUICoreUtils.createFlowPane(new Component[] { new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Write_Choose_Submit_Type") + ":"), dmlConfigComboBox }, JPanel typePane = GUICoreUtils.createFlowPane(new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Write_Choose_Submit_Type") + ":"), dmlConfigComboBox},
FlowLayout.LEFT, 10); FlowLayout.LEFT, 10);
typePane.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Write_Submit_Type"))); typePane.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Write_Submit_Type")));
northPane.add(typePane, BorderLayout.NORTH); northPane.add(typePane, BorderLayout.NORTH);
@ -179,11 +175,11 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
addListeners(); addListeners();
} }
public void setSubMitName(String subMitName){ public void setSubMitName(String subMitName) {
this.subMitName = subMitName; this.subMitName = subMitName;
} }
public String getSubMitName(){ public String getSubMitName() {
return this.subMitName; return this.subMitName;
} }
@ -194,11 +190,11 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
JPanel controlBtnPane = new JPanel(new GridLayout(actions.length + 1, 1, 4, 4)); JPanel controlBtnPane = new JPanel(new GridLayout(actions.length + 1, 1, 4, 4));
editTablePane.add(GUICoreUtils.createBorderPane(controlBtnPane, BorderLayout.NORTH), BorderLayout.EAST); editTablePane.add(GUICoreUtils.createBorderPane(controlBtnPane, BorderLayout.NORTH), BorderLayout.EAST);
for (int i = 0; i < actions.length; i++) { for (UpdateAction action : actions) {
controlBtnPane.add(new UIButton(actions[i])); controlBtnPane.add(new UIButton(action));
} }
checkBoxUpdatePane = new JPanel(new BorderLayout(0, 0)); checkBoxUpdatePane = new JPanel(new BorderLayout(0, 0));
checkBoxUpdatePane.setPreferredSize(new Dimension(120,20)); checkBoxUpdatePane.setPreferredSize(new Dimension(120, 20));
controlBtnPane.add(checkBoxUpdatePane); controlBtnPane.add(checkBoxUpdatePane);
UpdateCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_NotChange_Unmodified")); UpdateCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_NotChange_Unmodified"));
@ -207,21 +203,22 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
helpButton.addActionListener(new ActionListener() { helpButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
FormatExplanationPane formatExplanation = new FormatExplanationPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Help"),com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Help"), 12f); FormatExplanationPane formatExplanation = new FormatExplanationPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Help"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Help"), 12f);
BasicDialog dlg = formatExplanation.showMediumWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this), BasicDialog dlg = formatExplanation.showMediumWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this),
new DialogActionAdapter(){}); new DialogActionAdapter() {
});
dlg.setVisible(true); dlg.setVisible(true);
} }
}); });
helpButton.set4ToolbarButton(); helpButton.set4ToolbarButton();
checkBoxUpdatePane.add(UpdateCheckBox,BorderLayout.WEST); checkBoxUpdatePane.add(UpdateCheckBox, BorderLayout.WEST);
checkBoxUpdatePane.add(helpButton,BorderLayout.EAST); checkBoxUpdatePane.add(helpButton, BorderLayout.EAST);
} }
} }
protected void updateUpdateCheckBoxEnable(){ protected void updateUpdateCheckBoxEnable() {
KeyColumnTableModel model = (KeyColumnTableModel)keyColumnValuesTable.getModel(); KeyColumnTableModel model = (KeyColumnTableModel) keyColumnValuesTable.getModel();
if (model.getRowCount() == 0){ if (model.getRowCount() == 0) {
setUpdateCheckBoxEnable(false); setUpdateCheckBoxEnable(false);
UpdateCheckBox.setSelected(true); UpdateCheckBox.setSelected(true);
return; return;
@ -230,9 +227,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
for (int i = 0; i < model.getRowCount(); i++) { for (int i = 0; i < model.getRowCount(); i++) {
columnObjects.add(model.getKeyColumnNameValue(i).cv.getObj()); columnObjects.add(model.getKeyColumnNameValue(i).cv.getObj());
} }
for (int i = 0;i < columnObjects.size();i++){ for (Object ob : columnObjects) {
Object ob = columnObjects.get(i) ; if (!(ob instanceof ColumnRow || ob instanceof ColumnRowGroup)) {
if (!( ob instanceof ColumnRow || ob instanceof ColumnRowGroup)){
setUpdateCheckBoxEnable(false); setUpdateCheckBoxEnable(false);
UpdateCheckBox.setSelected(false); UpdateCheckBox.setSelected(false);
return; return;
@ -241,7 +237,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
setUpdateCheckBoxEnable(true); setUpdateCheckBoxEnable(true);
} }
private void setUpdateCheckBoxEnable( boolean b){ private void setUpdateCheckBoxEnable(boolean b) {
UpdateCheckBox.setEnabled(b); UpdateCheckBox.setEnabled(b);
} }
@ -251,9 +247,9 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
JPanel conditionPane = this.createConditionPane(); JPanel conditionPane = this.createConditionPane();
JPanel btPane =new JPanel( FRGUIPaneFactory.createBorderLayout()); JPanel btPane = new JPanel(FRGUIPaneFactory.createBorderLayout());
btPane.add(eventPane,BorderLayout.CENTER); btPane.add(eventPane, BorderLayout.CENTER);
btPane.add(conditionPane,BorderLayout.NORTH); btPane.add(conditionPane, BorderLayout.NORTH);
this.add(btPane, BorderLayout.SOUTH); this.add(btPane, BorderLayout.SOUTH);
} }
@ -261,6 +257,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
UIButton addSubmitEventButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Event")); UIButton addSubmitEventButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Event"));
addSubmitEventButton.addActionListener(new ActionListener() { addSubmitEventButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
final SubmitJobListPane jobsPane = createSubmitJobListPane(); final SubmitJobListPane jobsPane = createSubmitJobListPane();
@ -293,7 +290,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
DefaultTreeCellRenderer cr = (DefaultTreeCellRenderer) conditionsTree.getCellRenderer(); DefaultTreeCellRenderer cr = (DefaultTreeCellRenderer) conditionsTree.getCellRenderer();
cr.setForeground(UIConstants.NORMAL_BACKGROUND); cr.setForeground(UIConstants.NORMAL_BACKGROUND);
JScrollPane jp = new JScrollPane(conditionsTree); JScrollPane jp = new JScrollPane(conditionsTree);
addComponent(conditionPane,jp); addComponent(conditionPane, jp);
UIButton addSubmitConditionButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Condition")); UIButton addSubmitConditionButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Condition"));
addSubmitConditionButton.addActionListener(new ActionListener() { addSubmitConditionButton.addActionListener(new ActionListener() {
@ -325,32 +322,32 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
JPanel controlBtnPane = new JPanel(new GridLayout(1, 1, 4, 4)); JPanel controlBtnPane = new JPanel(new GridLayout(1, 1, 4, 4));
controlBtnPane.setPreferredSize(createControlBtnPanePreferredSize()); controlBtnPane.setPreferredSize(createControlBtnPanePreferredSize());
conditionPane.add(GUICoreUtils.createBorderPane(controlBtnPane, BorderLayout.NORTH),setControlBtnPanePosition()); conditionPane.add(GUICoreUtils.createBorderPane(controlBtnPane, BorderLayout.NORTH), setControlBtnPanePosition());
controlBtnPane.add(addSubmitConditionButton); controlBtnPane.add(addSubmitConditionButton);
return conditionPane; return conditionPane;
} }
protected void setBorderAndLayout(JPanel jPanel){ protected void setBorderAndLayout(JPanel jPanel) {
jPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); jPanel.setLayout(FRGUIPaneFactory.createBorderLayout());
jPanel.setBorder(BorderFactory.createTitledBorder( jPanel.setBorder(BorderFactory.createTitledBorder(
new ModLineBorder(ModLineBorder.TOP), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Submit_Condition"))); new ModLineBorder(ModLineBorder.TOP), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Submit_Condition")));
} }
protected void addComponent(JPanel mainPane,JScrollPane addPane){ protected void addComponent(JPanel mainPane, JScrollPane addPane) {
mainPane.add(addPane,BorderLayout.CENTER); mainPane.add(addPane, BorderLayout.CENTER);
} }
protected Dimension createConditionPanePreferredSize(){ protected Dimension createConditionPanePreferredSize() {
return new Dimension(454, 80); return new Dimension(454, 80);
} }
protected Dimension createControlBtnPanePreferredSize(){ protected Dimension createControlBtnPanePreferredSize() {
return new Dimension(110, 20); return new Dimension(110, 20);
} }
protected String setControlBtnPanePosition(){ protected String setControlBtnPanePosition() {
return BorderLayout.EAST; return BorderLayout.EAST;
} }
@ -409,6 +406,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
*/ */
keyColumnValuesTable.addFocusListener(new FocusAdapter() { keyColumnValuesTable.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) { public void focusGained(FocusEvent e) {
refreshColumnsComboBox(); refreshColumnsComboBox();
} }
@ -417,7 +415,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
protected UpdateAction[] getActions() { protected UpdateAction[] getActions() {
return new UpdateAction[] { new SmartAddFieldsAction(), new AddFieldAction(), new RemoveFieldAction() }; return new UpdateAction[]{new SmartAddFieldsAction(), new AddFieldAction(), new RemoveFieldAction()};
} }
protected SubmitJobListPane createSubmitJobListPane() { protected SubmitJobListPane createSubmitJobListPane() {
@ -438,6 +436,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Smart_Add_Fields")); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Smart_Add_Fields"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
BasicPane bPane = new BasicPane() { BasicPane bPane = new BasicPane() {
@ -449,9 +448,10 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
bPane.setLayout(FRGUIPaneFactory.createBorderLayout()); bPane.setLayout(FRGUIPaneFactory.createBorderLayout());
final CheckBoxList list = new CheckBoxList(currentColumnNames(), CheckBoxList.SelectedState.ALL, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Chart_Field_Name")) { final CheckBoxList list = new CheckBoxList(currentColumnNames(), CheckBoxList.SelectedState.ALL, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Chart_Field_Name")) {
@Override
public String value2Text(Object value) { public String value2Text(Object value) {
if (value instanceof ColumnName) { if (value instanceof ColumnName) {
return ((ColumnName)value).name; return ((ColumnName) value).name;
} }
return super.value2Text(value); return super.value2Text(value);
@ -460,6 +460,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
bPane.add(new JScrollPane(list), BorderLayout.CENTER); bPane.add(new JScrollPane(list), BorderLayout.CENTER);
BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this), new DialogActionAdapter() { BasicDialog dlg = bPane.showSmallWindow(SwingUtilities.getWindowAncestor(DBManipulationPane.this), new DialogActionAdapter() {
@Override
public void doOk() { public void doOk() {
addFields(list); addFields(list);
updateUpdateCheckBoxEnable(); updateUpdateCheckBoxEnable();
@ -469,8 +470,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
} }
private void addFields (CheckBoxList list) { private void addFields(CheckBoxList list) {
KeyColumnTableModel model = (KeyColumnTableModel)keyColumnValuesTable.getModel(); KeyColumnTableModel model = (KeyColumnTableModel) keyColumnValuesTable.getModel();
List<KeyColumnNameValue> keyColumnNameValueList = new ArrayList<KeyColumnNameValue>(); List<KeyColumnNameValue> keyColumnNameValueList = new ArrayList<KeyColumnNameValue>();
keyColumnNameValueList.clear(); keyColumnNameValueList.clear();
for (int i = 0; i < model.getRowCount(); i++) { for (int i = 0; i < model.getRowCount(); i++) {
@ -481,9 +482,9 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
// Richie:用了存储新的KeyColumnNameValue的List. // Richie:用了存储新的KeyColumnNameValue的List.
List<KeyColumnNameValue> newKeyColumnNameValueList = new ArrayList<KeyColumnNameValue>(); List<KeyColumnNameValue> newKeyColumnNameValueList = new ArrayList<KeyColumnNameValue>();
if (!keyColumnNameValueList.isEmpty()) { if (!keyColumnNameValueList.isEmpty()) {
for (int i = 0; i < selected.length; i++) { for (Object o : selected) {
// Richie:先填上空的. // Richie:先填上空的.
newKeyColumnNameValueList.add(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false)); newKeyColumnNameValueList.add(new KeyColumnNameValue(false, (ColumnName) o, new ColumnValue(""), false));
} }
} }
// Richie:初始化 // Richie:初始化
@ -492,17 +493,17 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
if (!keyColumnNameValueList.isEmpty()) { if (!keyColumnNameValueList.isEmpty()) {
//如果存在先前项,设置状态为5 //如果存在先前项,设置状态为5
returnValue = 5 ; returnValue = 5;
} }
for (int i = 0; i < selected.length; i++) { for (int i = 0; i < selected.length; i++) {
if (returnValue == 0 || returnValue == 3) { if (returnValue == 0 || returnValue == 3) {
break; break;
} }
for (int j = 0; j < keyColumnNameValueList.size(); j++) { for (KeyColumnNameValue keyColumnNameValue : keyColumnNameValueList) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) { if (ComparatorUtils.equals(selected[i], keyColumnNameValue.cn)) {
Object[] options = { com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Covered_All"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Yes"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_No"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_None") }; Object[] options = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Covered_All"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Yes"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_No"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_None")};
returnValue = JOptionPane.showOptionDialog(DBManipulationPane.this, returnValue = JOptionPane.showOptionDialog(DBManipulationPane.this,
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_Tips", keyColumnNameValueList.get(j).cn.name), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Cover_Tips", keyColumnNameValue.cn.name),
"", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]); "", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, options[0]);
// Richie:全部覆盖 // Richie:全部覆盖
if (returnValue == 0) { if (returnValue == 0) {
@ -514,7 +515,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} else if (returnValue == 2) { } else if (returnValue == 2) {
coverNumber = i; coverNumber = i;
newKeyColumnNameValueList.remove(i); newKeyColumnNameValueList.remove(i);
newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j)); newKeyColumnNameValueList.add(i, keyColumnNameValue);
// Richie:全部不覆盖 // Richie:全部不覆盖
} else if (returnValue == 3) { } else if (returnValue == 3) {
coverNumber = i; coverNumber = i;
@ -526,7 +527,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
checkTableModel(returnValue, coverNumber, model, selected, keyColumnNameValueList, newKeyColumnNameValueList); checkTableModel(returnValue, coverNumber, model, selected, keyColumnNameValueList, newKeyColumnNameValueList);
} }
private void checkTableModel (int returnValue, int coverNumber, KeyColumnTableModel model, Object[] selected, List<KeyColumnNameValue> keyColumnNameValueList, List<KeyColumnNameValue> newKeyColumnNameValueList) { private void checkTableModel(int returnValue, int coverNumber, KeyColumnTableModel model, Object[] selected, List<KeyColumnNameValue> keyColumnNameValueList, List<KeyColumnNameValue> newKeyColumnNameValueList) {
if (returnValue == 0) { if (returnValue == 0) {
model.removeAllKeyColumnNameValue(); model.removeAllKeyColumnNameValue();
// Richie:全部覆盖,按selected的长度添加默认的行 // Richie:全部覆盖,按selected的长度添加默认的行
@ -538,10 +539,10 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
model.removeAllKeyColumnNameValue(); model.removeAllKeyColumnNameValue();
// Richie:全部不覆盖,已经存在的就保留,不存在的添加默认行 // Richie:全部不覆盖,已经存在的就保留,不存在的添加默认行
for (int i = coverNumber; i < selected.length; i++) { for (int i = coverNumber; i < selected.length; i++) {
for (int j = 0; j < keyColumnNameValueList.size(); j++) { for (KeyColumnNameValue keyColumnNameValue : keyColumnNameValueList) {
if (ComparatorUtils.equals(selected[i], keyColumnNameValueList.get(j).cn)) { if (ComparatorUtils.equals(selected[i], keyColumnNameValue.cn)) {
newKeyColumnNameValueList.remove(i); newKeyColumnNameValueList.remove(i);
newKeyColumnNameValueList.add(i, keyColumnNameValueList.get(j)); newKeyColumnNameValueList.add(i, keyColumnNameValue);
} }
} }
@ -555,7 +556,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
for (int i = 0; i < selected.length; i++) { for (int i = 0; i < selected.length; i++) {
model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i)); model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i));
} }
} else if (returnValue == 5){ } else if (returnValue == 5) {
//新选项和原来没有重复项的情况,产品确认:只做全量增加,原有的清除 //新选项和原来没有重复项的情况,产品确认:只做全量增加,原有的清除
for (int i = 0; i < selected.length; i++) { for (int i = 0; i < selected.length; i++) {
model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i)); model.addKeyColumnNameValue(newKeyColumnNameValueList.get(i));
@ -565,8 +566,8 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
// Richie:初始化 // Richie:初始化
if (keyColumnNameValueList.isEmpty()) { if (keyColumnNameValueList.isEmpty()) {
model.removeAllKeyColumnNameValue(); model.removeAllKeyColumnNameValue();
for (int i = 0; i < selected.length; i++) { for (Object o : selected) {
model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName)selected[i], new ColumnValue(""), false)); model.addKeyColumnNameValue(new KeyColumnNameValue(false, (ColumnName) o, new ColumnValue(""), false));
} }
} }
@ -579,9 +580,10 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Add_Field")); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Add_Field"));
} }
@Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
KeyColumnTableModel model = (KeyColumnTableModel)keyColumnValuesTable.getModel(); KeyColumnTableModel model = (KeyColumnTableModel) keyColumnValuesTable.getModel();
model.addKeyColumnNameValue(new KeyColumnNameValue(false, new ColumnName(""), new ColumnValue(""), false)); model.addKeyColumnNameValue(new KeyColumnNameValue(false, new ColumnName(""), new ColumnValue(""), false));
updateUpdateCheckBoxEnable(); updateUpdateCheckBoxEnable();
@ -596,6 +598,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Remove_Field")); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_RWA_Remove_Field"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
// DBManipulationPane target = this.getDBManipulationPane(); // DBManipulationPane target = this.getDBManipulationPane();
@ -608,7 +611,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_sure_remove_item") + "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Remove"), JOptionPane.OK_CANCEL_OPTION, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_sure_remove_item") + "?", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Base_Remove"), JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE); JOptionPane.QUESTION_MESSAGE);
if (returnVal == JOptionPane.OK_OPTION) { if (returnVal == JOptionPane.OK_OPTION) {
KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel)keyColumnValuesTable.getModel(); KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel) keyColumnValuesTable.getModel();
// 把selectedRows从小到大排个序,先删大的再删小的 // 把selectedRows从小到大排个序,先删大的再删小的
java.util.Arrays.sort(selectedRows); java.util.Arrays.sort(selectedRows);
@ -632,12 +635,12 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
* 刷新columnsComboBox * 刷新columnsComboBox
*/ */
private void refreshColumnsComboBox() { private void refreshColumnsComboBox() {
DefaultComboBoxModel model = (DefaultComboBoxModel)this.columnsComboBox.getModel(); DefaultComboBoxModel model = (DefaultComboBoxModel) this.columnsComboBox.getModel();
model.removeAllElements(); model.removeAllElements();
ColumnName[] columnNames = currentColumnNames(); ColumnName[] columnNames = currentColumnNames();
for (int i = 0; i < columnNames.length; i++) { for (ColumnName columnName : columnNames) {
model.addElement(columnNames[i]); model.addElement(columnName);
} }
} }
@ -673,11 +676,12 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
columnsComboBox = new UIComboBox(new DefaultComboBoxModel()); columnsComboBox = new UIComboBox(new DefaultComboBoxModel());
columnsComboBox.setRenderer(new UIComboBoxRenderer() { columnsComboBox.setRenderer(new UIComboBoxRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof ColumnName) { if (value instanceof ColumnName) {
this.setText(((ColumnName)value).name); this.setText(((ColumnName) value).name);
} }
return this; return this;
@ -685,20 +689,18 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}); });
column1.setCellEditor(new DefaultCellEditor(columnsComboBox) { column1.setCellEditor(new DefaultCellEditor(columnsComboBox) {
@Override
public boolean stopCellEditing() { public boolean stopCellEditing() {
if (super.stopCellEditing()) { return super.stopCellEditing();
return true;
}
return false;
} }
}); });
((DefaultCellEditor)column1.getCellEditor()).setClickCountToStart(2); ((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(2);
//设置Column 2的Editor //设置Column 2的Editor
column2.setCellEditor(new ColumnValueEditor()); column2.setCellEditor(new ColumnValueEditor());
} }
@Override
public void populateBean(DBManipulation dbManipulation) { public void populateBean(DBManipulation dbManipulation) {
if (dbManipulation == null) { if (dbManipulation == null) {
dbManipulation = new DBManipulation(); dbManipulation = new DBManipulation();
@ -750,7 +752,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
private void populateKeyColumnValueTable(DMLConfig dmlConfig) { private void populateKeyColumnValueTable(DMLConfig dmlConfig) {
KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel)this.keyColumnValuesTable.getModel(); KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel) this.keyColumnValuesTable.getModel();
keyColumnNameValueTableModel.removeAllKeyColumnNameValue(); keyColumnNameValueTableModel.removeAllKeyColumnNameValue();
if (dmlConfig != null) { if (dmlConfig != null) {
@ -766,7 +768,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
String columnName = column.getColumnName(); String columnName = column.getColumnName();
if (!acceptPara && column.getColumnValue() instanceof Parameter) { if (!acceptPara && column.getColumnValue() instanceof Parameter) {
// 表单中,将以前的参数转换为公式 // 表单中,将以前的参数转换为公式
column.setColumnValue(BaseFormula.createFormulaBuilder().build(((Parameter)column.getColumnValue()).getName())); column.setColumnValue(BaseFormula.createFormulaBuilder().build(((Parameter) column.getColumnValue()).getName()));
} }
KeyColumnNameValue newColumnNameValue = new KeyColumnNameValue(column.isKey(), new ColumnName(columnName), new ColumnValue(column.getColumnValue()), KeyColumnNameValue newColumnNameValue = new KeyColumnNameValue(column.isKey(), new ColumnName(columnName), new ColumnValue(column.getColumnValue()),
@ -782,6 +784,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
} }
@Override
public DBManipulation updateBean() { public DBManipulation updateBean() {
DataBaseItems para = chooseTable.updateBean(true); DataBaseItems para = chooseTable.updateBean(true);
DBManipulation dbMani = new DBManipulation(); DBManipulation dbMani = new DBManipulation();
@ -801,19 +804,19 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
dmlConfig.setTable(new Table(para.getSchemaName(), para.getTableName())); dmlConfig.setTable(new Table(para.getSchemaName(), para.getTableName()));
KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel)this.keyColumnValuesTable.getModel(); KeyColumnTableModel keyColumnNameValueTableModel = (KeyColumnTableModel) this.keyColumnValuesTable.getModel();
int rowCount = keyColumnNameValueTableModel.keyColumnNameValueList.size(); int rowCount = keyColumnNameValueTableModel.keyColumnNameValueList.size();
for (int i = 0; i < rowCount; i++) { for (int i = 0; i < rowCount; i++) {
KeyColumnNameValue newKeyColumnNameValue = keyColumnNameValueTableModel.keyColumnNameValueList.get(i); KeyColumnNameValue newKeyColumnNameValue = keyColumnNameValueTableModel.keyColumnNameValueList.get(i);
// peter:先添加key column name. // peter:先添加key column name.
dmlConfig.addColumnConfig(new ColumnConfig(newKeyColumnNameValue.cn.name, newKeyColumnNameValue.cv.obj, newKeyColumnNameValue.isKey,false)); dmlConfig.addColumnConfig(new ColumnConfig(newKeyColumnNameValue.cn.name, newKeyColumnNameValue.cv.obj, newKeyColumnNameValue.isKey, false));
} }
dmlConfig.setUpdateSelected(UpdateCheckBox.isSelected()); dmlConfig.setUpdateSelected(UpdateCheckBox.isSelected());
if (jobs != null) { if (jobs != null) {
for (int i = 0; i < jobs.length; i++) { for (NameSubmitJob job : jobs) {
dmlConfig.addSubmitJob(jobs[i]); dmlConfig.addSubmitJob(job);
} }
} }
dmlConfig.setCondition(condition); dmlConfig.setCondition(condition);
@ -840,6 +843,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Values_Editor"); return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Values_Editor");
} }
@Override
public void populateBean(Object object) { public void populateBean(Object object) {
vPane.populate(object); vPane.populate(object);
} }
@ -855,55 +859,67 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
* alex:ColumnValue的编辑器,弹出对话框来编辑...个人觉得不大好 * alex:ColumnValue的编辑器,弹出对话框来编辑...个人觉得不大好
*/ */
protected class ColumnValueEditor extends AbstractCellEditor implements TableCellEditor { protected class ColumnValueEditor extends AbstractCellEditor implements TableCellEditor {
/** The Swing component being edited. */ /**
private UILabel textLabel; * The Swing component being edited.
private ValuePane vPane; */
private BasicDialog vPaneDLG; private final UILabel textLabel;
private final ValuePane vPane;
protected ColumnValueEditor() { protected ColumnValueEditor() {
this(v_Types); this(v_Types);
} }
/**
* 列值编辑器
*
* @param types 编辑器类型
*/
protected ColumnValueEditor(Editor<?>[] types) { protected ColumnValueEditor(Editor<?>[] types) {
textLabel = new UILabel(); textLabel = new UILabel();
textLabel.addMouseListener(new MouseAdapter() { DialogActionAdapter adapter = new DialogActionAdapter() {
public void mousePressed(MouseEvent e) { @Override
vPaneDLG.setAlwaysOnTop(true);
vPaneDLG.setVisible(true);
}
});
vPane = new ValuePane(types);
vPaneDLG = vPane.showSmallWindow(new JFrame(), new DialogActionAdapter() {
public void doOk() { public void doOk() {
fireEditingStopped(); // Make the renderer fireEditingStopped(); // Make the renderer
// reappear. // reappear.
updateUpdateCheckBoxEnable(); updateUpdateCheckBoxEnable();
} }
@Override
public void doCancel() { public void doCancel() {
fireEditingCanceled(); fireEditingCanceled();
} }
};
textLabel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
Window window = e.getComponent() == null
? DesignerContext.getDesignerFrame()
: SwingUtilities.getWindowAncestor(e.getComponent());
vPane.showSmallWindow(window, adapter)
.setVisible(true);
}
}); });
vPane = new ValuePane(types);
} }
/* /*
* 双击以编辑 * 双击以编辑
*/ */
@Override
public boolean isCellEditable(EventObject anEvent) { public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) { if (anEvent instanceof MouseEvent) {
return ((MouseEvent)anEvent).getClickCount() >= 2; return ((MouseEvent) anEvent).getClickCount() >= 2;
} }
return true; return true;
} }
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (value instanceof ColumnValue) { if (value instanceof ColumnValue) {
vPane.populateBean(((ColumnValue)value).obj); vPane.populateBean(((ColumnValue) value).obj);
if (((ColumnValue)value).obj != null) { if (((ColumnValue) value).obj != null) {
textLabel.setText(((ColumnValue)value).obj.toString()); textLabel.setText(((ColumnValue) value).obj.toString());
} else { } else {
textLabel.setText(""); textLabel.setText("");
} }
@ -912,6 +928,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return textLabel; return textLabel;
} }
@Override
public Object getCellEditorValue() { public Object getCellEditorValue() {
return new ColumnValue(vPane.updateBean()); return new ColumnValue(vPane.updateBean());
} }
@ -924,12 +941,13 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.name = name; this.name = name;
} }
@Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (!(obj instanceof ColumnName)) { if (!(obj instanceof ColumnName)) {
return false; return false;
} }
return ComparatorUtils.equals(this.name, ((ColumnName)obj).name); return ComparatorUtils.equals(this.name, ((ColumnName) obj).name);
} }
@Override @Override
@ -945,16 +963,17 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
this.obj = obj; this.obj = obj;
} }
public Object getObj(){ public Object getObj() {
return obj; return obj;
} }
@Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (!(obj instanceof ColumnValue)) { if (!(obj instanceof ColumnValue)) {
return false; return false;
} }
return ComparatorUtils.equals(this.obj, ((ColumnValue)obj).obj); return ComparatorUtils.equals(this.obj, ((ColumnValue) obj).obj);
} }
@Override @Override
@ -998,14 +1017,17 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
} }
@Override
public String getColumnName(int col) { public String getColumnName(int col) {
return COLUMN_NAMES[col]; return COLUMN_NAMES[col];
} }
@Override
public int getColumnCount() { public int getColumnCount() {
return COLUMN_NAMES.length; return COLUMN_NAMES.length;
} }
@Override
public int getRowCount() { public int getRowCount() {
return keyColumnNameValueList.size(); return keyColumnNameValueList.size();
} }
@ -1034,12 +1056,13 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
} }
protected static class KeyColumnValueTableModel extends KeyColumnTableModel implements Cloneable{ protected static class KeyColumnValueTableModel extends KeyColumnTableModel implements Cloneable {
public KeyColumnValueTableModel(KeyColumnTableModel model) { public KeyColumnValueTableModel(KeyColumnTableModel model) {
super(model); super(model);
} }
@Override
public Object getValueAt(int row, int col) { public Object getValueAt(int row, int col) {
KeyColumnNameValue knv = keyColumnNameValueList.get(row); KeyColumnNameValue knv = keyColumnNameValueList.get(row);
@ -1054,18 +1077,20 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return null; return null;
} }
@Override
public void setValueAt(Object value, int row, int col) { public void setValueAt(Object value, int row, int col) {
KeyColumnNameValue knv = keyColumnNameValueList.get(row); KeyColumnNameValue knv = keyColumnNameValueList.get(row);
if (col == 0 && value instanceof Boolean) { if (col == 0 && value instanceof Boolean) {
knv.isKey = ((Boolean)value).booleanValue(); knv.isKey = ((Boolean) value).booleanValue();
} else if (col == 1 && value instanceof ColumnName) { } else if (col == 1 && value instanceof ColumnName) {
knv.cn = (ColumnName)value; knv.cn = (ColumnName) value;
} else if (col == 2 && value instanceof ColumnValue) { } else if (col == 2 && value instanceof ColumnValue) {
knv.cv = (ColumnValue)value; knv.cv = (ColumnValue) value;
} }
} }
@Override
public Class<?> getColumnClass(int c) { public Class<?> getColumnClass(int c) {
switch (c) { switch (c) {
case 0: case 0:
@ -1078,6 +1103,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return String.class; return String.class;
} }
@Override
public boolean isCellEditable(int row, int col) { public boolean isCellEditable(int row, int col) {
return true; return true;
} }
@ -1094,7 +1120,6 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
public static class KeyColumnNameValue { public static class KeyColumnNameValue {
private boolean isKey = false; private boolean isKey = false;
private ColumnName cn; private ColumnName cn;
@ -1111,6 +1136,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
* *
* @return 字符串z * @return 字符串z
*/ */
@Override
public String toString() { public String toString() {
return (isKey ? "* " : "") + cn + ":" + cv; return (isKey ? "* " : "") + cn + ":" + cv;
} }
@ -1124,12 +1150,13 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
/* /*
* ColumnNameTableCellRenderer * ColumnNameTableCellRenderer
*/ */
public class ColumnNameTableCellRenderer extends DefaultTableCellRenderer { public static class ColumnNameTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value instanceof ColumnName) { if (value instanceof ColumnName) {
this.setText(((ColumnName)value).name); this.setText(((ColumnName) value).name);
} }
return this; return this;
@ -1139,16 +1166,17 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
/* /*
* ColumnValueTableCellRenderer * ColumnValueTableCellRenderer
*/ */
private class ColumnValueTableCellRenderer extends DefaultTableCellRenderer { private static class ColumnValueTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value instanceof ColumnValue) { if (value instanceof ColumnValue) {
if (((ColumnValue)value).obj != null) { if (((ColumnValue) value).obj != null) {
if (((ColumnValue)value).obj instanceof Date) { if (((ColumnValue) value).obj instanceof Date) {
this.setText(DateUtils.DATEFORMAT2.format(((ColumnValue)value).obj)); this.setText(DateUtils.DATEFORMAT2.format(((ColumnValue) value).obj));
} else { } else {
this.setText(((ColumnValue)value).obj.toString()); this.setText(((ColumnValue) value).obj.toString());
} }
} else { } else {
this.setText(""); this.setText("");

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.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.drillmap.designer.data.comp.MapDataTree; 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.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -154,7 +154,7 @@ public class DrillMapLayerPane extends BasicBeanPane<VanChartDrillMapPlot> {
rowSize[i + 1] = p; rowSize[i + 1] = p;
int d = i + 1; 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"))); 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); level.setEnabled(i != 0);
UIComboBox type = new UIComboBox(items); UIComboBox type = new UIComboBox(items);
detailComps[i + 1] = new Component[]{label, level, type}; 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.VanChartStylePane;
import com.fr.van.chart.designer.style.VanLegendPaneWidthOutHighlight; 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.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.VanChartPlotLabelDetailPane;
import com.fr.van.chart.designer.style.label.VanChartPlotLabelPane; import com.fr.van.chart.designer.style.label.VanChartPlotLabelPane;
import com.fr.van.chart.designer.style.tooltip.VanChartPlotRefreshTooltipPane; 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) { public static VanChartPlotLabelPane createPlotLabelPane(Plot plot, VanChartStylePane stylePane, boolean inCondition) {
if (plot instanceof VanChartGaugePlot) { if (plot instanceof VanChartGaugePlot) {
return new VanChartGaugePlotLabelPane(plot, stylePane); return new VanChartGaugePlotLabelPane(plot, stylePane);
} else if (plot instanceof PiePlot4VanChart) {
return new VanChartPiePlotLabelPane(plot, stylePane, inCondition);
} }
return new VanChartPlotLabelPane(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(); createBorderPane();
} }
public LineComboBox getLineTypeBox() {
return lineTypeBox;
}
private void initComponents() { private void initComponents() {
lineTypeBox = new LineComboBox(CoreConstants.STRIKE_LINE_STYLE_ARRAY_4_CHART); lineTypeBox = new LineComboBox(CoreConstants.STRIKE_LINE_STYLE_ARRAY_4_CHART);
lineColorButton = new UIButtonGroup<>(new String[]{ lineColorButton = new UIButtonGroup<>(new String[]{
@ -106,7 +110,7 @@ public class VanChartBorderWithShapePane extends BasicPane {
borderRadius.setEnabled(borderShape.getSelectedIndex() == RECTANGULAR_INDEX || borderShape.getSelectedIndex() == DIALOG_INDEX); borderRadius.setEnabled(borderShape.getSelectedIndex() == RECTANGULAR_INDEX || borderShape.getSelectedIndex() == DIALOG_INDEX);
} }
private JPanel createLineTypePane() { protected JPanel createLineTypePane() {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; 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; 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) { protected void initLabelDetailPane(Plot plot) {
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
initToolTipContentPane(plot); initToolTipContentPane(plot);
@ -122,8 +135,7 @@ public class VanChartPlotLabelDetailPane extends BasicPane {
return new Component[][]{ return new Component[][]{
new Component[]{dataLabelContentPane, null}, new Component[]{dataLabelContentPane, null},
new Component[]{createLabelPositionPane(Toolkit.i18nText("Fine-Design_Chart_Layout_Position"), plot), null}, new Component[]{createLabelPositionPane(Toolkit.i18nText("Fine-Design_Chart_Layout_Position"), plot), null},
new Component[]{createLabelBorderPane(), null}, new Component[]{createBorderAndBackgroundPane(), null},
new Component[]{createLabelBackgroundPane(), 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() { private JPanel createLabelBorderPane() {
borderPane = new VanChartBorderWithShapePane(); borderPane = new VanChartBorderWithShapePane();
borderPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Border"), borderPane); 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(); addComponents();
} }
public boolean isInCondition() {
return inCondition;
}
public VanChartPlotLabelDetailPane getLabelDetailPane() { public VanChartPlotLabelDetailPane getLabelDetailPane() {
return labelDetailPane; 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.MapType;
import com.fr.plugin.chart.type.ZoomLevel; import com.fr.plugin.chart.type.ZoomLevel;
import com.fr.van.chart.designer.TableLayout4VanChartHelper; 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.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -105,7 +105,7 @@ public class DrillMapLayerPane extends BasicScrollPane<ChartCollection> {
rowSize[i + 1] = p; rowSize[i + 1] = p;
int d = i + 1; 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"))); 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); level.setEnabled(i != 0);
UIComboBox type = new UIComboBox(TEMP.get(oldMapType)); UIComboBox type = new UIComboBox(TEMP.get(oldMapType));
detailComps[i + 1] = new Component[]{label, level, type}; 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.DrillMapIndependentVanChart;
import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot;
import com.fr.plugin.chart.drillmap.data.DrillMapDefinition; 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.MapType;
import com.fr.plugin.chart.type.ZoomLevel; 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.VanChartMapPlotPane;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane; import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
import javax.swing.tree.TreeNode;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@ -30,10 +33,15 @@ public class VanChartDrillMapPlotPane extends VanChartMapPlotPane {
@Override @Override
protected VanChartMapSourceChoosePane createSourceChoosePane() { protected VanChartMapSourceChoosePane createSourceChoosePane() {
return new VanChartMapSourceChoosePane(){ return new VanChartMapSourceChoosePane() {
@Override @Override
protected boolean supportParam(){ protected void initGeoUrlPane() {
return false; 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) { protected void resetAttr(Plot plot) {
super.resetAttr(plot); super.resetAttr(plot);
if(plot instanceof VanChartDrillMapPlot) { if (plot instanceof VanChartDrillMapPlot) {
resetLayerTypeAndZoomLevel((VanChartDrillMapPlot) plot); 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.Chart;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.chartx.data.ChartDataDefinitionProvider; 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.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.attr.plot.VanChartPlot; 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.heatmap.VanChartHeatMapPlot;
import com.fr.plugin.chart.map.server.CompatibleGEOJSONHelper; import com.fr.plugin.chart.map.server.CompatibleGEOJSONHelper;
import com.fr.plugin.chart.vanchart.VanChart; 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.VanChartMapPlotPane;
import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane; import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane;
@ -27,18 +30,27 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane {
@Override @Override
protected VanChartMapSourceChoosePane createSourceChoosePane() { 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) { public void populateBean(VanChart chart) {
typeDemo.get(0).isPressing = true; typeDemo.get(0).isPressing = true;
VanChartHeatMapPlot plot = (VanChartHeatMapPlot)chart.getPlot(); VanChartHeatMapPlot plot = (VanChartHeatMapPlot) chart.getPlot();
populateSourcePane(plot); populateSourcePane(plot);
boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl()); boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl());
GUICoreUtils.setEnabled(this.getTypePane(), enabled); GUICoreUtils.setEnabled(this.getTypePane(), enabled);
GUICoreUtils.setEnabled(this.getSourceChoosePane().getSourceComboBox(), enabled);
checkDemosBackground(); checkDemosBackground();
} }
@ -53,13 +65,13 @@ public class VanChartHeatMapTypePane extends VanChartMapPlotPane {
return tools; return tools;
} }
protected Plot getSelectedClonedPlot(){ protected Plot getSelectedClonedPlot() {
Chart chart = getDefaultChart(); Chart chart = getDefaultChart();
VanChartHeatMapPlot newPlot = (VanChartHeatMapPlot)chart.getPlot(); VanChartHeatMapPlot newPlot = (VanChartHeatMapPlot) chart.getPlot();
Plot cloned = null; Plot cloned = null;
try { try {
cloned = (Plot)newPlot.clone(); cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), 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()); boolean enabled = !CompatibleGEOJSONHelper.isDeprecated(plot.getGeoUrl());
GUICoreUtils.setEnabled(this.getTypePane(), enabled); GUICoreUtils.setEnabled(this.getTypePane(), enabled);
GUICoreUtils.setEnabled(this.sourceChoosePane.getSourceComboBox(), enabled);
checkDemosBackground(); checkDemosBackground();
} }

710
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; 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.UIObserver;
import com.fr.design.event.UIObserverListener; 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.i18n.Toolkit;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; 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.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.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.designer.TableLayout4VanChartHelper;
import com.fr.van.chart.drillmap.designer.data.comp.MapDataTree;
import com.fr.workspace.WorkContext;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel; 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.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component; 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. * Created by Mitisky on 16/5/11.
* 地图类型选择面板,关于json资源路径/gis图层等设置面板 * 地图类型选择面板,关于json资源路径/gis图层等设置面板
*/ */
public class VanChartMapSourceChoosePane extends JPanel implements UIObserver { 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 UIComboBox gisLayer;
private JPanel layerCardPane;
private UITextArea wmsUrl;
private UIButton connectButton;
private JPanel wmsLayerPane;
private java.util.List<UICheckBox> wmsLayerCheckBoxs = new ArrayList<UICheckBox>(); private GeoUrlPane geoUrlPane;
private UITextArea customTileLayer; private GisLayerPane gisLayerPane;
private UITextArea attribution;
private UIComboBox zoomLevel; private MapStatusPane mapStatusPane;
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;
}
public VanChartMapSourceChoosePane() { public VanChartMapSourceChoosePane() {
initGeoUrlPane();
initMapStatusPane();
initGisLayerPane();
this.setLayout(new BorderLayout()); 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 p = TableLayout.PREFERRED;
double[] columnSize = {230}; 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()); 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);
Component[][] comps = new Component[][]{ JPanel basePane = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Report_Basic"), panel);
new Component[]{BasePane},
new Component[]{createMapInitStatusPane()}
};
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();
}
protected UILabel createSourceTitleLabel() { JPanel mapStatusPaneWithTitle = TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Map_Init_Status"), mapStatusPane);
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[][]{ Component[][] comps = new Component[][]{
new Component[]{new UILabel("url"), customTileLayer}, new Component[]{basePane},
new Component[]{new UILabel("Attribution"), attribution} new Component[]{mapStatusPaneWithTitle}
};
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();
}
}; };
JPanel contentPane = TableLayoutHelper.createTableLayoutPane(comps, rowSize, columnSize);
private void addMouseListener() { this.add(contentPane, BorderLayout.CENTER);
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) {
}
});
}
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); public void setGeoUrlPane(GeoUrlPane geoUrlPane) {
this.geoUrlPane = geoUrlPane;
VanChartMapSourceChoosePane.this.updateUI();
} }
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 @Override
public Dimension getPreferredSize() { public void registerChangeListener(UIObserverListener listener) {
if(longAndLatPane.isVisible()) { geoUrlPane.registerChangeListener(listener);
return super.getPreferredSize(); gisLayerPane.registerChangeListener(listener);
} else {
return northPane.getPreferredSize();
}
} }
};
contentPane.add(northPane, BorderLayout.NORTH);
contentPane.add(longAndLatPane, BorderLayout.CENTER);
viewCenterCom.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public boolean shouldResponseChangeListener() {
longAndLatPane.setVisible(!isAutoViewCenter()); return true;
}
});
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Init_Status"), contentPane);
}
private boolean isAutoViewCenter() {
return viewCenterCom.getSelectedIndex()==0;
} }
private PopupMenuListener popupMenuListener = new PopupMenuListener() { protected void initGeoUrlPane() {
public void popupMenuCanceled(PopupMenuEvent e) { geoUrlPane = new GeoUrlPane();
} }
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { private void initGisLayerPane() {
gisLayerPane = new GisLayerPane();
gisLayerPane.registerZoomLevel(mapStatusPane.getZoomLevel());
} }
public void popupMenuWillBecomeVisible(PopupMenuEvent e) { private void initMapStatusPane() {
mapStatusPane = new MapStatusPane();
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()));
} }
public void resetComponentValue(VanChartMapPlot mapPlot) { 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) { public void populateBean(VanChartMapPlot mapPlot) {
resetComponentValue(mapPlot, false); geoUrlPane.populate(mapPlot);
gisLayerPane.populate(mapPlot.getGisLayer());
mapDataTree.setSelectNodePath(mapPlot.getGeoUrl()); mapStatusPane.populate(mapPlot);
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();
} }
public void updateBean(VanChartMapPlot mapPlot) { public void updateBean(VanChartMapPlot mapPlot) {
if(!CompatibleGEOJSONHelper.isDeprecated(mapPlot.getGeoUrl())){ if (!CompatibleGEOJSONHelper.isDeprecated(mapPlot.getGeoUrl())) {
mapPlot.setGeoUrl(mapDataTree.getSelectNodeJSONPath()); mapPlot.setGeoUrl(geoUrlPane.update());
}
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;
}
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(){ gisLayerPane.update(mapPlot.getGisLayer());
return this.sourceComboBox; 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 (editingMouseListener.stopEditing()) {
if (this != (XCreator) designer.getRootComponent()) { if (this != (XCreator) designer.getRootComponent()) {
ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this); ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, this);
if (isEditing) {
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS);
}
editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter); editingMouseListener.startEditing(this, isEditing ? adapter.getDesignerEditor() : null, adapter);
if (isEditing) { if (isEditing) {
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS);

12
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()); 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 x = designer.getRelativeX(e.getX());
int y = designer.getRelativeY(e.getY()); int y = designer.getRelativeY(e.getY());
e.translatePoint(x - e.getX(), y - e.getY()); e.translatePoint(x - e.getX(), y - e.getY());
@ -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); offsetEventPoint(transEvent);
XCreator xCreator = designer.getComponentAt(transEvent); XCreator xCreator = designer.getComponentAt(transEvent);
return (pressX != clickEvent.getX() || pressY != clickEvent.getY()) 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); designer.refreshTopXCreator(isEditing);
} }
/** /**
* 刷新顶层组件 * 刷新顶层组件
* */ */
public void refreshTopXCreator(){ public void refreshTopXCreator() {
refreshTopXCreator(false); 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; package com.fr.design.mainframe.widget.ui;
import com.fr.design.gui.icheckbox.UICheckBox; 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 com.fr.form.ui.Widget;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import java.awt.Component;
/** /**
* Created by ibm on 2017/7/26. * Created by ibm on 2017/7/26.
@ -16,13 +19,17 @@ public class FormBasicWidgetPropertyPane extends BasicSetVisiblePropertyPane {
} }
public UICheckBox createOtherConfig() { public UICheckBox createOtherConfig() {
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.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Basic")); enableCheckBox.setGlobalName(Toolkit.i18nText("Fine-Design_Report_Basic"));
enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
return enableCheckBox; return enableCheckBox;
} }
public String obtainBasicName(){
return Toolkit.i18nText("Fine-Design_Basic_Widget_Name");
}
@Override @Override
public String title4PopupWindow() { public String title4PopupWindow() {
return "basicProperty"; 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.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.form.ui.NoneWidget; import com.fr.form.ui.NoneWidget;
@ -25,16 +26,16 @@ public class BasicWidgetPropertySettingPane extends BasicPane {
public BasicWidgetPropertySettingPane() { public BasicWidgetPropertySettingPane() {
this.setLayout(new BorderLayout()); 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)); 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)); visibleCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
widgetNameComboBox = new ParameterTreeComboBox(); widgetNameComboBox = new ParameterTreeComboBox();
widgetNameComboBox.refreshTree(); widgetNameComboBox.refreshTree();
double f = TableLayout.FILL; double f = TableLayout.FILL;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{ 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[]{enableCheckBox, null},
new Component[]{visibleCheckBox, 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(); newAdd.clear();
for (int i = 0; i < cs; i++) { for (int i = 0; i < cs; i++) {
for (int j = 0; j < rs; j++) { 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)) { if (cellElement != null && ((i + c) != 0 || (r + j) != 0)) {
String value = cellElement.toString(); String value = cellElement.toString();
if (!newAdd.contains(value) && !allColumnRow.contains(value)) { if (!newAdd.contains(value) && !allColumnRow.contains(value)) {
@ -512,7 +512,7 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
private SmartJTablePaneAction a = new AbstractSmartJTablePaneAction(this, SmartInsertDBManipulationPane.this) { private SmartJTablePaneAction a = new AbstractSmartJTablePaneAction(this, SmartInsertDBManipulationPane.this) {
@Override @Override
public void doOk() { public void doOk() {
((KeyColumnTableModel)keyColumnValuesTable.getModel()).refreshNameValueList((KeyColumnTableModel)model); ((KeyColumnTableModel) keyColumnValuesTable.getModel()).refreshNameValueList((KeyColumnTableModel) model);
} }
@Override @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.BiasTextPainter;
import com.fr.report.cell.painter.CellImagePainter; import com.fr.report.cell.painter.CellImagePainter;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.EssentialUtils;
import com.fr.stable.ParameterProvider; import com.fr.stable.ParameterProvider;
import com.fr.stable.bridge.StableFactory; import com.fr.stable.bridge.StableFactory;
import com.fr.stable.os.support.OSBasedAction; import com.fr.stable.os.support.OSBasedAction;
@ -191,8 +192,8 @@ public class DesignerActivator extends Activator {
justStartModules4Designer(); justStartModules4Designer();
CalculatorProviderContext.setValueConverter(valueConverter()); CalculatorProviderContext.setValueConverter(valueConverter());
GeneralXMLTools.Object_Tokenizer = startXMLReadObjectTokenizer(); EssentialUtils.Object_Tokenizer = startXMLReadObjectTokenizer();
GeneralXMLTools.Object_XML_Writer_Finder = startObjectXMLWriterFinder(); EssentialUtils.Object_XML_Writer_Finder = startObjectXMLWriterFinder();
addAdapterForPlate(); addAdapterForPlate();
designerRegister(); designerRegister();

Loading…
Cancel
Save