Browse Source

Merge pull request #974 in BA/design from ~NEIL/design:dev to 9.0

* commit 'fc72c48776cc8f0edf9ec715d9acee713809bc2a': (119 commits)
  冲突
  REPORT-2825 训练插件button出现了多个
  CQ-9 没有装插件的设计打开带有插件控件的表单时,需要能正确的打开并提示
  【国际化修改】修改了一处翻译。。。。
  无JIRA任务, dev国际化->release
  【国际化修改】 根据代理商意见修改翻译 syoki
  超链悬浮窗图表,点击确定无效,报null错误
  【国际化修改】 修改几处翻译问题
  BI-5822 调整接口,使用标准的状态码返回给移动端
  REPORT-2561 大屏-数字时钟插件,属性表左移
  REPORT-2561 大屏-数字时钟插件,属性表左移,调整
  更改lib依赖
  REPORT-2561 大屏-数字时钟插件,属性表左移
  【国际化修改】 根据代理商的意见修改design部分的翻译 庄奇20170606
  比较版本号
  版本比较: 10.0 > 9.0 1.10 > 1.9 1.1.2 > 1.1.1 1.1.1 > 1.1
  删除多余类
  去掉部分代码
  去掉多余代码
  去掉接口代码中instnceof,用泛型代替。
  ...
master
superman 8 years ago
parent
commit
bbbf6e08fe
  1. 1
      designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java
  2. 34
      designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java
  3. 8
      designer/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java
  4. 7
      designer/src/com/fr/quickeditor/ChartQuickEditor.java
  5. 2
      designer_base/build.release.gradle
  6. 2
      designer_base/src/com/fr/design/actions/help/AboutPane.java
  7. 4
      designer_base/src/com/fr/design/actions/help/WebDemoAction.java
  8. 530
      designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java
  9. 3
      designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java
  10. 3
      designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java
  11. 33
      designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java
  12. 3
      designer_base/src/com/fr/design/module/DesignModule.java
  13. 246
      designer_base/src/com/fr/design/module/DesignModuleFactory.java
  14. 8
      designer_base/src/com/fr/design/style/color/UsedColorPane.java
  15. 4
      designer_base/src/com/fr/design/utils/DesignUtils.java
  16. 11
      designer_base/src/com/fr/start/BaseDesigner.java
  17. 12
      designer_base/src/com/fr/start/StartServer.java
  18. 2
      designer_chart/build.release.gradle
  19. 188
      designer_chart/src/com/fr/design/ChartEnvManager.java
  20. 6
      designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java
  21. 10
      designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java
  22. 7
      designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java
  23. 103
      designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java
  24. 69
      designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java
  25. 341
      designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java
  26. 68
      designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java
  27. 133
      designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java
  28. 113
      designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java
  29. 79
      designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java
  30. 93
      designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java
  31. 268
      designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java
  32. 244
      designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java
  33. 111
      designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java
  34. 521
      designer_chart/src/com/fr/design/mainframe/ChartArea.java
  35. 230
      designer_chart/src/com/fr/design/mainframe/ChartDesigner.java
  36. 211
      designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java
  37. 18
      designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java
  38. 558
      designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java
  39. 98
      designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java
  40. 203
      designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java
  41. 339
      designer_chart/src/com/fr/design/mainframe/MapArrayPane.java
  42. 210
      designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java
  43. 18
      designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java
  44. 90
      designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java
  45. 91
      designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java
  46. 170
      designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java
  47. 51
      designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java
  48. 25
      designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java
  49. 56
      designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java
  50. 35
      designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java
  51. 74
      designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java
  52. 69
      designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java
  53. 55
      designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java
  54. 2
      designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java
  55. 51
      designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java
  56. 54
      designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java
  57. 238
      designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java
  58. 2
      designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java
  59. 71
      designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java
  60. 48
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java
  61. 124
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java
  62. 123
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java
  63. 117
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java
  64. 101
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java
  65. 18
      designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java
  66. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java
  67. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java
  68. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java
  69. 138
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java
  70. 73
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java
  71. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java
  72. 54
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java
  73. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java
  74. 57
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java
  75. 69
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java
  76. 58
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java
  77. 134
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java
  78. 51
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java
  79. 53
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java
  80. 52
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java
  81. 45
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java
  82. 72
      designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java
  83. 2
      designer_form/build.release.gradle
  84. 28
      designer_form/src/com/fr/design/designer/creator/ErrorCreator.java
  85. 6
      designer_form/src/com/fr/design/designer/creator/NullCreator.java
  86. 38
      designer_form/src/com/fr/design/mainframe/FormArea.java
  87. 189
      designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java

1
designer/src/com/fr/design/actions/file/newReport/NewWorkBookAction.java

@ -30,6 +30,7 @@ public class NewWorkBookAction extends UpdateAction {
/**
* 动作
*
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {

34
designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java

@ -30,7 +30,6 @@ import java.net.URI;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
/**
* @author neil
@ -191,44 +190,11 @@ public class UserInfoLabel extends UILabel {
return;
}
if (StringUtils.isEmpty(this.userName)) {
updateMessageCount();
}
//往designerenvmanger里写一下
DesignerEnvManager.getEnvManager().setBBSName(userName);
this.userName = userName;
}
private void updateMessageCount() {
//启动获取消息更新的线程
//登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数.
Thread updateMessageThread = new Thread(new Runnable() {
@Override
public void run() {
sleep(CHECK_MESSAGE_TIME);
//从env中获取username, 因为如果注销的话, env的里username会被清空.
while (StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())) {
HashMap<String, String> para = new HashMap<String, String>();
para.put("username", encode(encode(userName)));
HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para);
getMessage.asGet();
if (getMessage.isServerAlive()) {
try {
String res = getMessage.getResponseText();
if (StringUtils.isNotEmpty(res)) {
setMessageCount(Integer.parseInt(res));
}
} catch (Exception e) {
}
}
sleep(CHECK_MESSAGE_TIME);
}
}
});
updateMessageThread.start();
}
private String encode(String str) {
try {
return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8);

8
designer/src/com/fr/design/mainframe/templateinfo/JWorkBookProcessInfo.java

@ -2,6 +2,7 @@ package com.fr.design.mainframe.templateinfo;
import com.fr.base.parameter.ParameterUI;
import com.fr.main.impl.WorkBook;
import com.fr.main.parameter.ReportParameterAttr;
import com.fr.report.cellcase.CellCase;
import com.fr.report.poly.PolyWorkSheet;
import com.fr.report.worksheet.WorkSheet;
@ -68,7 +69,12 @@ public class JWorkBookProcessInfo extends TemplateProcessInfo<WorkBook> {
}
// 获取模板控件数
public int getWidgetCount() {
ParameterUI pui = template.getReportParameterAttr().getParameterUI();
ReportParameterAttr attr = template.getReportParameterAttr();
if (attr == null) {
return 0;
}
ParameterUI pui = attr.getParameterUI();
return pui == null ? 0 : (pui.getAllWidgets().length - 1);
}
}

7
designer/src/com/fr/quickeditor/ChartQuickEditor.java

@ -1,24 +1,24 @@
package com.fr.quickeditor;
import com.fr.base.chart.BaseChartCollection;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.design.designer.TargetComponent;
import com.fr.design.gui.chart.BaseChartPropertyPane;
import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.module.DesignModuleFactory;
import com.fr.design.selection.QuickEditor;
import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.FloatSelection;
import com.fr.grid.selection.Selection;
import com.fr.poly.PolyDesigner;
import com.fr.poly.creator.ChartBlockEditor;
import com.fr.report.cell.Elem;
import com.fr.design.selection.QuickEditor;
import java.awt.*;
public class ChartQuickEditor extends QuickEditor<TargetComponent>{
// kunsnat: editingPropertyPane初始化 避开设计器启动, 在用到的时候再初始化.
//private BaseChartPropertyPane editingPropertyPane = null;
public ChartQuickEditor() {
setLayout(new BorderLayout());
setBorder(null);
@ -45,9 +45,8 @@ public class ChartQuickEditor extends QuickEditor<TargetComponent>{
element = ((ElementCasePane)tc).getEditingElementCase().getFloatElement(fs.getSelectedFloatName());
}
collection = (BaseChartCollection) element.getValue();
add(editingPropertyPane = DesignModuleFactory.getChartPropertyPane(), BorderLayout.CENTER);
editingPropertyPane.setSupportCellData(true);
}
editingPropertyPane.populateChartPropertyPane(collection, tc);
}

2
designer_base/build.release.gradle

@ -53,7 +53,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1)
//
dependencies{
compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar')
compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar')
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar")
testCompile 'junit:junit:4.12'

2
designer_base/src/com/fr/design/actions/help/AboutPane.java

@ -47,7 +47,7 @@ public class AboutPane extends JPanel {
BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane(
getBuildTitle(),
GeneralUtils.readBuildNO(),
GeneralUtils.readFullBuildNO(),
new String[]{
Inter.getLocText("FR-Designer-Basic_Copy_Build_NO"),
Inter.getLocText("FR-Designer-Basic_Copy_Build_NO_OK")

4
designer_base/src/com/fr/design/actions/help/WebDemoAction.java

@ -23,7 +23,7 @@ public class WebDemoAction extends UpdateAction {
* @param evt 事件
*/
public void actionPerformed(ActionEvent evt) {
StartServer.browerDemoURL();
StartServer.browserDemoURL();
}
public static final MenuKeySet PRODUCT_DEMO = new MenuKeySet() {
@ -34,7 +34,7 @@ public class WebDemoAction extends UpdateAction {
@Override
public String getMenuName() {
return Inter.getLocText("Product_Demo");
return Inter.getLocText("FR-Product_Demo");
}
@Override

530
designer_base/src/com/fr/design/data/datapane/TreeTableDataDictPane.java

@ -1,21 +1,21 @@
package com.fr.design.data.datapane;
import com.fr.design.data.DesignTableDataManager;
import com.fr.data.impl.RecursionTableData;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.preview.PreviewLabel;
import com.fr.design.data.datapane.preview.PreviewLabel.Previewable;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.dialog.BasicPane;
import com.fr.design.editor.ValueEditorPane;
import com.fr.design.editor.ValueEditorPaneFactory;
import com.fr.design.editor.editor.ColumnIndexEditor;
import com.fr.design.editor.editor.ColumnNameEditor;
import com.fr.design.editor.editor.Editor;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.Inter;
import com.fr.script.Calculator;
import com.fr.stable.StringUtils;
@ -29,271 +29,281 @@ import java.awt.event.ItemListener;
import java.util.List;
public class TreeTableDataDictPane extends BasicPane implements Previewable {
private UILabel selectTableDataLabel;
protected TableDataComboBox tableDataNameComboBox;
private UIRadioButton parentMarkRadio;
private UIRadioButton lengthMarkRadio;
private ButtonGroup markButtonGroup;
UILabel originalMarkedFieldLabel1;
UILabel parentMarkedFieldLabel1;
UILabel treeDataFieldLabel1;
UILabel originalMarkedFieldLabel2;
UILabel treeDataFieldLabel2;
private ValueEditorPane originalMarkedFieldPane1;
private ValueEditorPane parentMarkedFieldPane1;
private ValueEditorPane originalMarkedFieldPane2;
public TreeTableDataDictPane(){
private UILabel selectTableDataLabel;
protected TableDataComboBox tableDataNameComboBox;
private UIRadioButton parentMarkRadio;
private UIRadioButton lengthMarkRadio;
private ButtonGroup markButtonGroup;
private UILabel originFieldDependsOnParentLabel;
private UILabel parentFieldLabel;
private UILabel treeDataFieldLabel1;
private UILabel originFieldDependsOnLengthLabel;
private UILabel treeDataFieldLabel2;
private ValueEditorPane originFieldDependsOnParentPane;
private ValueEditorPane parentFieldPane;
private ValueEditorPane originFieldDependsOnLengthPane;
public TreeTableDataDictPane() {
this(StringUtils.EMPTY);
}
public TreeTableDataDictPane(String treeName) {
this.setLayout(new BorderLayout(5,30));
this.setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 0));
selectTableDataLabel = new UILabel(Inter.getLocText(new String[]{"Please_Select","Single", "DS-TableData"}) + " :");
setTableDataNameComboBox(treeName);
tableDataNameComboBox.setPreferredSize(new Dimension(180, 20));
JPanel tableFlowPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane();
tableFlowPane.add(selectTableDataLabel);
tableFlowPane.add(tableDataNameComboBox);
tableDataNameComboBox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
tdChange();
}
});
tableFlowPane.add(new PreviewLabel(this));
this.add(tableFlowPane, BorderLayout.NORTH);
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
this.add(centerPane,BorderLayout.CENTER);
parentMarkRadio = new UIRadioButton(Inter.getLocText("Build_Tree_Accord_Parent_Marked_Filed"), true);
lengthMarkRadio = new UIRadioButton(Inter.getLocText("Build_Tree_Accord_Marked_Filed_Length"));
parentMarkRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(isBuildByParentFiled()) {
makeParentEnable();
tdChange();
}
}
});
lengthMarkRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(!isBuildByParentFiled()) {
makeLengthEnable();
tdChange();
}
}
});
markButtonGroup = new ButtonGroup();
markButtonGroup.add(parentMarkRadio);
markButtonGroup.add(lengthMarkRadio);
originalMarkedFieldLabel1 = new UILabel(Inter.getLocText("Original_Marked_Filed") + " :", SwingConstants.RIGHT);
parentMarkedFieldLabel1 = new UILabel(" " + Inter.getLocText("Parent_Marked_Field") + " :", SwingConstants.RIGHT);
treeDataFieldLabel1 = new UILabel(" " + Inter.getLocText("Tree_Data_Field") + " :", SwingConstants.RIGHT);
originalMarkedFieldLabel2 = new UILabel(Inter.getLocText("Original_Marked_Filed") + " :", SwingConstants.RIGHT);
treeDataFieldLabel2 = new UILabel(" " + Inter.getLocText("Tree_Data_Field") + " :", SwingConstants.RIGHT);
// originalMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
// parentMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
// originalMarkedFieldPane2 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
originalMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() });
parentMarkedFieldPane1 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() });
originalMarkedFieldPane2 = ValueEditorPaneFactory.createValueEditorPane(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() });
makeParentEnable();
JPanel p1 = createCenterFlowZeroGapBorderPane(originalMarkedFieldLabel1, originalMarkedFieldPane1);
JPanel p2 = createCenterFlowZeroGapBorderPane(parentMarkedFieldLabel1, parentMarkedFieldPane1);
JPanel border1 = new JPanel();
border1.setLayout(new BorderLayout(0, 10));
border1.add(p1, BorderLayout.NORTH);
border1.add(p2, BorderLayout.CENTER);
JPanel p4 = createCenterFlowZeroGapBorderPane(originalMarkedFieldLabel2, originalMarkedFieldPane2);
JPanel border2 = new JPanel();
border2.setLayout(new BorderLayout(0, 20));
border2.add(p4, BorderLayout.NORTH);
JPanel xx = FRGUIPaneFactory.createBorderLayout_S_Pane();
xx.add(parentMarkRadio,BorderLayout.NORTH);
xx.add(border1,BorderLayout.CENTER);
JPanel xxx = FRGUIPaneFactory.createBorderLayout_S_Pane();
xxx.add(lengthMarkRadio,BorderLayout.NORTH);
xxx.add(border2,BorderLayout.CENTER);
JPanel buildTreePanel = new JPanel(new BorderLayout(5, 30));
buildTreePanel.add(xx,BorderLayout.NORTH);
buildTreePanel.add(xxx,BorderLayout.CENTER);
centerPane.add(buildTreePanel, BorderLayout.NORTH);
JPanel previewPanel = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
UIButton treeDataPreviewButton = new UIButton(Inter.getLocText("Preview"));
previewPanel.add(treeDataPreviewButton);
treeDataPreviewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem();
if(tableDataWrappe == null) {
return;
}
RecursionTableData rtd = new RecursionTableData();
rtd.setOriginalTableDataName(tableDataWrappe.getTableDataName());
if(isBuildByParentFiled()) {
rtd.setMarkFields((Integer.parseInt(originalMarkedFieldPane1.update().toString()) - 1) + "");
rtd.setParentmarkFields(Integer.parseInt(parentMarkedFieldPane1.update().toString()) - 1 + "");
} else {
rtd.setMarkFields(Integer.parseInt(originalMarkedFieldPane2.update().toString()) - 1 + "");
rtd.setParentmarkFields("-1");
}
rtd.setTableDataSource(DesignTableDataManager.getEditingTableDataSource());
rtd.createDataModel(Calculator.createCalculator());
PreviewTablePane.previewTableData(rtd);
}
});
centerPane.add(previewPanel, BorderLayout.CENTER);
}
public TreeTableDataDictPane(String treeName) {
this.setLayout(new BorderLayout(5, 30));
this.setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 0));
selectTableDataLabel = new UILabel(Inter.getLocText(new String[]{"Please_Select", "Single", "DS-TableData"}) + " :");
setTableDataNameComboBox(treeName);
tableDataNameComboBox.setPreferredSize(new Dimension(180, 20));
JPanel tableFlowPane = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane();
tableFlowPane.add(selectTableDataLabel);
tableFlowPane.add(tableDataNameComboBox);
tableDataNameComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
tdChange();
}
});
tableFlowPane.add(new PreviewLabel(this));
this.add(tableFlowPane, BorderLayout.NORTH);
JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
this.add(centerPane, BorderLayout.CENTER);
parentMarkRadio = new UIRadioButton(Inter.getLocText("FR-Designer_Build_Tree_Accord_Parent_Marked_Filed"), true);
lengthMarkRadio = new UIRadioButton(Inter.getLocText("FR-Designer_Build_Tree_Accord_Marked_Filed_Length"));
parentMarkRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (isBuildByParentFiled()) {
makeParentEnable();
tdChange();
}
}
});
lengthMarkRadio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!isBuildByParentFiled()) {
makeLengthEnable();
tdChange();
}
}
});
markButtonGroup = new ButtonGroup();
markButtonGroup.add(parentMarkRadio);
markButtonGroup.add(lengthMarkRadio);
originFieldDependsOnParentLabel = new UILabel(Inter.getLocText("FR-Designer_Original_Marked_Filed") + " :", SwingConstants.RIGHT);
parentFieldLabel = new UILabel(" " + Inter.getLocText("FR-Designer_Parent_Marked_Field") + " :", SwingConstants.RIGHT);
treeDataFieldLabel1 = new UILabel(" " + Inter.getLocText("FR-Designer_Tree_Data_Field") + " :", SwingConstants.RIGHT);
originFieldDependsOnLengthLabel = new UILabel(Inter.getLocText("FR-Designer_Original_Marked_Filed") + " :", SwingConstants.RIGHT);
treeDataFieldLabel2 = new UILabel(" " + Inter.getLocText("FR-Designer_Tree_Data_Field") + " :", SwingConstants.RIGHT);
// originFieldDependsOnParentPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
// parentFieldPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
// originFieldDependsOnLengthPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[] {new OldColumnIndexEditor(Inter.getLocText("Columns"))});
originFieldDependsOnParentPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()});
parentFieldPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()});
originFieldDependsOnLengthPane = ValueEditorPaneFactory.createValueEditorPane(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()});
makeParentEnable();
JPanel p1 = createCenterFlowZeroGapBorderPane(originFieldDependsOnParentLabel, originFieldDependsOnParentPane);
JPanel p2 = createCenterFlowZeroGapBorderPane(parentFieldLabel, parentFieldPane);
JPanel border1 = new JPanel();
border1.setLayout(new BorderLayout(0, 10));
border1.add(p1, BorderLayout.NORTH);
border1.add(p2, BorderLayout.CENTER);
JPanel p4 = createCenterFlowZeroGapBorderPane(originFieldDependsOnLengthLabel, originFieldDependsOnLengthPane);
JPanel border2 = new JPanel();
border2.setLayout(new BorderLayout(0, 20));
border2.add(p4, BorderLayout.NORTH);
JPanel xx = FRGUIPaneFactory.createBorderLayout_S_Pane();
xx.add(parentMarkRadio, BorderLayout.NORTH);
xx.add(border1, BorderLayout.CENTER);
JPanel xxx = FRGUIPaneFactory.createBorderLayout_S_Pane();
xxx.add(lengthMarkRadio, BorderLayout.NORTH);
xxx.add(border2, BorderLayout.CENTER);
JPanel buildTreePanel = new JPanel(new BorderLayout(5, 30));
buildTreePanel.add(xx, BorderLayout.NORTH);
buildTreePanel.add(xxx, BorderLayout.CENTER);
centerPane.add(buildTreePanel, BorderLayout.NORTH);
JPanel previewPanel = FRGUIPaneFactory.createRightFlowInnerContainer_S_Pane();
UIButton treeDataPreviewButton = new UIButton(Inter.getLocText("FR-Designer_Preview"));
previewPanel.add(treeDataPreviewButton);
treeDataPreviewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem();
if (tableDataWrappe == null) {
return;
}
RecursionTableData rtd = new RecursionTableData();
rtd.setOriginalTableDataName(tableDataWrappe.getTableDataName());
if (isBuildByParentFiled()) {
Object o = parentFieldPane.update();
rtd.setParentmarkFields((Integer) o - 1 + "");
rtd.setParentmarkFieldName("" + o);
Object o2 = originFieldDependsOnParentPane.update();
rtd.setMarkFields((Integer) o2 - 1 + "");
rtd.setMarkFieldName("" + o2);
} else {
Object o = originFieldDependsOnLengthPane.update();
if (o == null) {
rtd.setMarkFields("-1");
} else {
rtd.setMarkFields((Integer) o - 1 + "");
rtd.setMarkFieldName("" + o);
}
}
rtd.setTableDataSource(DesignTableDataManager.getEditingTableDataSource());
rtd.createDataModel(Calculator.createCalculator());
PreviewTablePane.previewTableData(rtd);
}
});
centerPane.add(previewPanel, BorderLayout.CENTER);
}
protected void setTableDataNameComboBox(String treeName) {
tableDataNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource(),treeName);
tableDataNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource(), treeName);
}
private void tdChange(){
TableDataWrapper tableDataWrappe = this.tableDataNameComboBox.getSelectedItem();
if (tableDataWrappe == null) {
return;
}
ValueEditorPane[] valueEditorPanes;
if(isBuildByParentFiled()) {
valueEditorPanes = new ValueEditorPane[]{originalMarkedFieldPane1, parentMarkedFieldPane1};
} else {
valueEditorPanes = new ValueEditorPane[]{originalMarkedFieldPane2};
}
try {
List<String> namelist = tableDataWrappe.calculateColumnNameList();
int len = namelist.size();
String[] columnNames = new String[len];
namelist.toArray(columnNames);
for(int i = 0; i < valueEditorPanes.length; i ++) {
valueEditorPanes[i].setEditors(new Editor[] { new ColumnNameEditor(columnNames), new ColumnIndexEditor(len) }, columnNames[0]);
}
} catch (Exception e) {
for(int i = 0; i < valueEditorPanes.length; i ++) {
valueEditorPanes[i].setEditors(new Editor[] { new ColumnNameEditor(), new ColumnIndexEditor() }, 1);
}
} finally {
valueEditorPanes = null;
}
}
@Override
protected String title4PopupWindow() {
return "TreeTableDataDictionay";
}
public RecursionTableData update() {
RecursionTableData td = new RecursionTableData();
if(tableDataNameComboBox.getSelectedItem()==null){
td.setOriginalTableDataName(null);
}else{
td.setOriginalTableDataName(tableDataNameComboBox.getSelectedItem().getTableDataName());
}
if(isBuildByParentFiled()) {
Object o = parentMarkedFieldPane1.update(StringUtils.EMPTY);
if(o instanceof Object[]){
Object[] temp = (Object[]) o;
td.setParentmarkFields(((Integer)temp[0]).intValue() - 1 + "");
td.setParentmarkFieldName((String) temp[1]);
}
Object o2 = originalMarkedFieldPane1.update(StringUtils.EMPTY);
if(o2 instanceof Object[]){
Object[] temp = (Object[]) o2;
td.setMarkFields(((Integer)temp[0]).intValue() - 1 + "");
td.setMarkFieldName((String) temp[1]);
}
} else {
Object o = originalMarkedFieldPane2.update(StringUtils.EMPTY);
if(o == null || !(o instanceof Object[])){
td.setMarkFields("-1");
} else {
Object[] temp = (Object[]) o;
td.setMarkFields(((Integer)temp[0]).intValue() - 1 + "");
td.setMarkFieldName((String) temp[1]);
}
}
td.setTableDataSource(DesignTableDataManager.getEditingTableDataSource());
return td;
}
public void populate(RecursionTableData rtb) {
if(StringUtils.isNotEmpty(rtb.getParentmarkFields())) {
makeParentEnable();
parentMarkRadio.setSelected(true);
lengthMarkRadio.setSelected(false);
tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName());
if(StringUtils.isNotEmpty(rtb.getMarkFieldName())){
originalMarkedFieldPane1.populate(rtb.getMarkFieldName());
}else{
originalMarkedFieldPane1.populate(rtb.getMarkFieldIndex() + 1);
}
if(StringUtils.isNotEmpty(rtb.getParentmarkFieldName())){
parentMarkedFieldPane1.populate(rtb.getParentmarkFieldName());
}else{
parentMarkedFieldPane1.populate(rtb.getParentmarkFieldIndex() + 1);
}
} else {
makeLengthEnable();
lengthMarkRadio.setSelected(true);
parentMarkRadio.setSelected(false);
tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName());
if(StringUtils.isNotEmpty(rtb.getMarkFieldName())){
originalMarkedFieldPane2.populate(rtb.getMarkFieldName());
}else{
originalMarkedFieldPane2.populate(rtb.getMarkFieldIndex() + 1);
}
}
}
private void tdChange() {
TableDataWrapper tableDataWrappe = this.tableDataNameComboBox.getSelectedItem();
if (tableDataWrappe == null) {
return;
}
ValueEditorPane[] valueEditorPanes;
if (isBuildByParentFiled()) {
valueEditorPanes = new ValueEditorPane[]{originFieldDependsOnParentPane, parentFieldPane};
} else {
valueEditorPanes = new ValueEditorPane[]{originFieldDependsOnLengthPane};
}
try {
List<String> namelist = tableDataWrappe.calculateColumnNameList();
int len = namelist.size();
String[] columnNames = new String[len];
namelist.toArray(columnNames);
for (int i = 0; i < valueEditorPanes.length; i++) {
valueEditorPanes[i].setEditors(new Editor[]{new ColumnNameEditor(columnNames), new ColumnIndexEditor(len)}, columnNames[0]);
}
} catch (Exception e) {
for (int i = 0; i < valueEditorPanes.length; i++) {
valueEditorPanes[i].setEditors(new Editor[]{new ColumnNameEditor(), new ColumnIndexEditor()}, 1);
}
} finally {
valueEditorPanes = null;
}
}
@Override
protected String title4PopupWindow() {
return "TreeTableDataDictionay";
}
public RecursionTableData update() {
RecursionTableData td = new RecursionTableData();
if (tableDataNameComboBox.getSelectedItem() == null) {
td.setOriginalTableDataName(null);
} else {
td.setOriginalTableDataName(tableDataNameComboBox.getSelectedItem().getTableDataName());
}
if (isBuildByParentFiled()) {
Object o = parentFieldPane.update(StringUtils.EMPTY);
if (o instanceof Object[]) {
Object[] temp = (Object[]) o;
td.setParentmarkFields((Integer) temp[0] - 1 + "");
td.setParentmarkFieldName((String) temp[1]);
}
Object o2 = originFieldDependsOnParentPane.update(StringUtils.EMPTY);
if (o2 instanceof Object[]) {
Object[] temp = (Object[]) o2;
td.setMarkFields((Integer) temp[0] - 1 + "");
td.setMarkFieldName((String) temp[1]);
}
} else {
Object o = originFieldDependsOnLengthPane.update(StringUtils.EMPTY);
if (o == null || !(o instanceof Object[])) {
td.setMarkFields("-1");
} else {
Object[] temp = (Object[]) o;
td.setMarkFields((Integer) temp[0] - 1 + "");
td.setMarkFieldName((String) temp[1]);
}
}
td.setTableDataSource(DesignTableDataManager.getEditingTableDataSource());
return td;
}
public void populate(RecursionTableData rtb) {
if (StringUtils.isNotEmpty(rtb.getParentmarkFields())) {
makeParentEnable();
parentMarkRadio.setSelected(true);
lengthMarkRadio.setSelected(false);
tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName());
if (StringUtils.isNotEmpty(rtb.getMarkFieldName())) {
originFieldDependsOnParentPane.populate(rtb.getMarkFieldName());
} else {
originFieldDependsOnParentPane.populate(rtb.getMarkFieldIndex() + 1);
}
if (StringUtils.isNotEmpty(rtb.getParentmarkFieldName())) {
parentFieldPane.populate(rtb.getParentmarkFieldName());
} else {
parentFieldPane.populate(rtb.getParentmarkFieldIndex() + 1);
}
} else {
makeLengthEnable();
lengthMarkRadio.setSelected(true);
parentMarkRadio.setSelected(false);
tableDataNameComboBox.setSelectedTableDataByName(rtb.getOriginalTableDataName());
if (StringUtils.isNotEmpty(rtb.getMarkFieldName())) {
originFieldDependsOnLengthPane.populate(rtb.getMarkFieldName());
} else {
originFieldDependsOnLengthPane.populate(rtb.getMarkFieldIndex() + 1);
}
}
}
/**
*
*/
public void preview() {
TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem();
if (tableDataWrappe == null) {
return;
}
tableDataWrappe.previewData();
}
private JPanel createCenterFlowZeroGapBorderPane(Component p1, Component p2) {
JPanel p = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
p.add(p1);
p.add(p2);
return p;
}
private boolean isBuildByParentFiled() {
return parentMarkRadio.isSelected();
}
private void makeParentEnable() {
originalMarkedFieldPane1.setEnabled(true);
parentMarkedFieldPane1.setEnabled(true);
originalMarkedFieldLabel1.setEnabled(true);
parentMarkedFieldLabel1.setEnabled(true);
treeDataFieldLabel1.setEnabled(true);
originalMarkedFieldLabel2.setEnabled(false);
treeDataFieldLabel2.setEnabled(false);
originalMarkedFieldPane2.setEnabled(false);
}
private void makeLengthEnable() {
originalMarkedFieldPane1.setEnabled(false);
parentMarkedFieldPane1.setEnabled(false);
originalMarkedFieldLabel1.setEnabled(false);
parentMarkedFieldLabel1.setEnabled(false);
treeDataFieldLabel1.setEnabled(false);
originalMarkedFieldLabel2.setEnabled(true);
treeDataFieldLabel2.setEnabled(true);
originalMarkedFieldPane2.setEnabled(true);
}
public void preview() {
TableDataWrapper tableDataWrappe = tableDataNameComboBox.getSelectedItem();
if (tableDataWrappe == null) {
return;
}
tableDataWrappe.previewData();
}
private JPanel createCenterFlowZeroGapBorderPane(Component p1, Component p2) {
JPanel p = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
p.add(p1);
p.add(p2);
return p;
}
private boolean isBuildByParentFiled() {
return parentMarkRadio.isSelected();
}
private void makeParentEnable() {
originFieldDependsOnParentPane.setEnabled(true);
parentFieldPane.setEnabled(true);
originFieldDependsOnParentLabel.setEnabled(true);
parentFieldLabel.setEnabled(true);
treeDataFieldLabel1.setEnabled(true);
originFieldDependsOnLengthLabel.setEnabled(false);
treeDataFieldLabel2.setEnabled(false);
originFieldDependsOnLengthPane.setEnabled(false);
}
private void makeLengthEnable() {
originFieldDependsOnParentPane.setEnabled(false);
parentFieldPane.setEnabled(false);
originFieldDependsOnParentLabel.setEnabled(false);
parentFieldLabel.setEnabled(false);
treeDataFieldLabel1.setEnabled(false);
originFieldDependsOnLengthLabel.setEnabled(true);
treeDataFieldLabel2.setEnabled(true);
originFieldDependsOnLengthPane.setEnabled(true);
}
}

3
designer_base/src/com/fr/design/fun/impl/AbstractDsinFrameUpButtonProvider.java

@ -2,6 +2,7 @@ package com.fr.design.fun.impl;
import com.fr.design.fun.DesignerFrameUpButtonProvider;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API;
/**
@ -10,7 +11,7 @@ import com.fr.stable.fun.mark.API;
* Time: 15:50
*/
@API(level = DesignerFrameUpButtonProvider.CURRENT_LEVEL)
public abstract class AbstractDsinFrameUpButtonProvider implements DesignerFrameUpButtonProvider {
public abstract class AbstractDsinFrameUpButtonProvider extends AbstractProvider implements DesignerFrameUpButtonProvider {
@Override
public UIButton[] getUpButtons(int menuState) {
return new UIButton[0];

3
designer_base/src/com/fr/design/gui/chart/BaseChartPropertyPane.java

@ -2,7 +2,6 @@ package com.fr.design.gui.chart;
import com.fr.base.chart.BaseChartCollection;
import com.fr.design.designer.TargetComponent;
import com.fr.design.mainframe.BaseWidgetPropertyPane;
import com.fr.design.mainframe.DockingView;
/**
@ -23,5 +22,7 @@ public abstract class BaseChartPropertyPane extends DockingView {
public abstract ChartEditPaneProvider getChartEditPane();
public abstract void addChartEditPane(String plotID);
//public abstract void clear();
}

33
designer_base/src/com/fr/design/gui/style/BackgroundSpecialPane.java

@ -1,6 +1,12 @@
package com.fr.design.gui.style;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.event.UIObserverListener;
import com.fr.design.fun.BackgroundQuickUIProvider;
import com.fr.design.mainframe.backgroundpane.*;
/**
@ -40,11 +46,26 @@ public class BackgroundSpecialPane extends BackgroundPane{
fireStateChanged();
}
});
return new BackgroundQuickPane[] {
new NullBackgroundQuickPane(),
colorBackgroundPane,
imageBackgroundPane,
gradientPane
};
//hugh:表单支持背景接口
List<BackgroundQuickPane> kinds = new ArrayList<BackgroundQuickPane>();
kinds.add(new NullBackgroundQuickPane());
kinds.add(colorBackgroundPane);
kinds.add(imageBackgroundPane);
kinds.add(gradientPane);
Set<BackgroundQuickUIProvider> providers = ExtraDesignClassManager.getInstance().getArray(BackgroundQuickUIProvider.MARK_STRING);
for (BackgroundQuickUIProvider provider : providers) {
BackgroundQuickPane newTypePane = provider.appearanceForBackground();
newTypePane.registerChangeListener(new UIObserverListener() {
@Override
public void doChange() {
fireStateChanged();
}
});
kinds.add(newTypePane);
}
return kinds.toArray(new BackgroundQuickPane[kinds.size()]);
}
}

3
designer_base/src/com/fr/design/module/DesignModule.java

@ -33,6 +33,7 @@ import java.util.Set;
* 所有设计器模块的父类
*/
public abstract class DesignModule extends TopModule {
public static final String LOCALE_FILE_PATH = "com/fr/design/locale/designer";
public void start() {
super.start();
App<?>[] apps = apps4TemplateOpener();
@ -62,7 +63,7 @@ public abstract class DesignModule extends TopModule {
* @return 国际化文件路径
*/
public String[] getLocaleFile() {
return new String[]{"com/fr/design/locale/designer"};
return new String[]{LOCALE_FILE_PATH};
}
public Class<?>[] actionsForInsertCellElement() {

246
designer_base/src/com/fr/design/module/DesignModuleFactory.java

File diff suppressed because one or more lines are too long

8
designer_base/src/com/fr/design/style/color/UsedColorPane.java

@ -42,7 +42,7 @@ public class UsedColorPane extends BasicPane {
* @param rows
* @param columns
* @param reserveCells 留白的单元格个数
* @param colors 最近使用的颜色
* @param selectable
* @param needPickColorButton 是否需要加上取色器按钮
* @param setColorRealTime 取色器是否实时设定颜色
*/
@ -68,7 +68,6 @@ public class UsedColorPane extends BasicPane {
//最近使用颜色
Color[] colors = ColorSelectConfigManager.getInstance().getColors();
int size = colors.length;
int i = 0;
if (needPickColorButton) {
// 取色按钮
@ -84,7 +83,8 @@ public class UsedColorPane extends BasicPane {
i++;
}
while (i < total) {
Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR;
Color color = i - this.reserveCells < size ? colors[size - (i - this.reserveCells) - 1] :
DEFAULT_COLOR;
panel.add(new ColorCell(color == null ? DEFAULT_COLOR : color, selectable));
i++;
}
@ -100,7 +100,7 @@ public class UsedColorPane extends BasicPane {
int size = colors.length;
for (int i = this.reserveCells; i < total; i++) {
ColorCell cell = (ColorCell) this.pane.getComponent(i);
Color color = i < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR;
Color color = i - this.reserveCells < size ? colors[size - (i - this.reserveCells) - 1] : DEFAULT_COLOR;
cell.setColor(color == null ? DEFAULT_COLOR : color);
}
}

4
designer_base/src/com/fr/design/utils/DesignUtils.java

@ -112,7 +112,7 @@ public class DesignUtils {
String line = null;
while ((line = reader.readLine()) != null) {
if (line.startsWith("demo")) {
StartServer.browerDemoURL();
StartServer.browserDemoURL();
} else if (StringUtils.isNotEmpty(line)) {
File f = new File(line);
String path = f.getAbsolutePath();
@ -320,7 +320,7 @@ public class DesignUtils {
String web = GeneralContext.getCurrentAppNameOfEnv();
String url = "http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
+ postfixOfUri;
StartServer.browerURLWithLocalEnv(url);
StartServer.browserURLWithLocalEnv(url);
} catch (Throwable e) {
//
}

11
designer_base/src/com/fr/start/BaseDesigner.java

@ -17,15 +17,13 @@ import com.fr.design.fun.impl.GlobalListenerProviderManager;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.design.mainframe.TemplatePane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.design.module.DesignModule;
import com.fr.design.utils.DesignUtils;
import com.fr.env.SignIn;
import com.fr.file.FILE;
import com.fr.file.FILEFactory;
import com.fr.file.FileFILE;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.general.ModuleContext;
import com.fr.general.*;
import com.fr.plugin.PluginCollector;
import com.fr.plugin.manage.PluginManager;
import com.fr.stable.*;
@ -68,12 +66,15 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
//下面这两句的位置不能随便调换,因为会影响语言切换的问题
initLanguage();
// 先加载设计器的国际化文件
Inter.loadLocaleFile(GeneralContext.getLocale(), DesignModule.LOCALE_FILE_PATH);
SplashWindow splashWindow = new SplashWindow(createSplashPane());
if (args != null) {
for (String arg : args) {
if (ComparatorUtils.equals(arg, "demo")) {
DesignerEnvManager.getEnvManager().setCurrentEnv2Default();
StartServer.browerDemoURL();
StartServer.browserDemoURL();
break;
}
}

12
designer_base/src/com/fr/start/StartServer.java

@ -45,10 +45,10 @@ public class StartServer {
* 预览Demo
* 找默认工作目录不应该按照名字去找而应该按照安装路径因为默认工作目录的名字可能会改变
*/
public static void browerDemoURL() {
public static void browserDemoURL() {
if (ComparatorUtils.equals(StableUtils.getInstallHome(), ".")) {//august:供代码使用
String web = GeneralContext.getCurrentAppNameOfEnv();
browerURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
browserURLWithLocalEnv("http://localhost:" + DesignerEnvManager.getEnvManager().getJettyServerPort() + "/" + web + "/" + ConfigManager.getProviderInstance().getServletMapping()
+ "?op=fs");
return;
}
@ -65,16 +65,16 @@ public class StartServer {
} catch (Exception e) {
FRContext.getLogger().errorWithServerLevel(e.getMessage());
}
initDemoServerAndBrower();
initDemoServerAndBrowser();
}
}).setVisible(true);
} else {
initDemoServerAndBrower();
initDemoServerAndBrowser();
}
}
private static void initDemoServerAndBrower() {
private static void initDemoServerAndBrowser() {
if (jettyHost != null) {
if (!jettyHost.isDemoAppLoaded()) {
jettyHost.exit();
@ -104,7 +104,7 @@ public class StartServer {
*
* @param url 指定路径
*/
public static void browerURLWithLocalEnv(String url) {
public static void browserURLWithLocalEnv(String url) {
try {
if (jettyHost != null) {
if (NEED_LOAD_ENV) {

2
designer_chart/build.release.gradle

@ -48,7 +48,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1)
//
dependencies{
compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar')
compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar')
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar")
testCompile 'junit:junit:4.12'

188
designer_chart/src/com/fr/design/ChartEnvManager.java

@ -1,188 +0,0 @@
package com.fr.design;
import com.fr.base.FRContext;
import com.fr.base.Utils;
import com.fr.general.ComparatorUtils;
import com.fr.general.DateUtils;
import com.fr.general.IOUtils;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.stable.xml.*;
import java.io.*;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartEnvManager implements XMLReadable, XMLWriter {
public static final String ACTIVE_KEY = "RXWY-A25421-K58F47757-7373";
private static final int ONE_MONTH_SECOND = 30*24*60*60;//30天,以秒为单位
private static final int MS =1000;
boolean isPushUpdateAuto = true; //是否自动推送更新
private String activationKey = null;
private static ChartEnvManager chartEnvManager;
private Date lastCheckDate;
private long checkTimeSpan =ONE_MONTH_SECOND;
/**
* DesignerEnvManager.
*/
public static ChartEnvManager getEnvManager() {
if(chartEnvManager == null){
chartEnvManager = new ChartEnvManager();
try {
XMLTools.readFileXML(chartEnvManager, chartEnvManager.getDesignerEnvFile());
}catch (Exception exp){
FRContext.getLogger().error(exp.getMessage(), exp);
}
}
return chartEnvManager;
}
private static File envFile = new File(ProductConstants.getEnvHome() + File.separator + ProductConstants.APP_NAME + "ChartEnv.xml");
private File getEnvFile() {
return envFile;
}
private File getDesignerEnvFile() {
File envFile = getEnvFile();
if (!envFile.exists()) {
createEnvFile(envFile);
}
return envFile;
}
private void createEnvFile(File envFile) {
try {
FileWriter fileWriter = new FileWriter(envFile);
StringReader stringReader = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Env></Env>");
Utils.copyCharTo(stringReader, fileWriter);
stringReader.close();
fileWriter.close();
} catch (IOException e) {
FRContext.getLogger().error(e.getMessage(), e);
}
}
/**
* 返回激活码
*/
public String getActivationKey() {
return activationKey;
}
/**
* 设置激活码
*/
public void setActivationKey(String activationKey) {
this.activationKey = activationKey;
}
public void setPushUpdateAuto(boolean isPushUpdateAuto){
this.isPushUpdateAuto = isPushUpdateAuto;
if(!this.isPushUpdateAuto){
lastCheckDate = new Date();
}
}
/**
* 是否设置了自动推送图表设计器在线更行
* @return 是则返回true
*/
public boolean isPushUpdateAuto(){
return isPushUpdateAuto;
}
/**
*在设置不自动推送在线更新的情况下每30天自动检测一次
* @return 是否需要检测
*/
public boolean isOverOneMonth(){
return !isPushUpdateAuto && ((new Date().getTime()-lastCheckDate.getTime())/MS>=checkTimeSpan);
}
/***
* 重新设置最新检查的日期
*/
public void resetCheckDate(){
this.lastCheckDate = new Date();
}
@Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String name = reader.getTagName();
if(ComparatorUtils.equals(name,"ChartAttributes")){
activationKey = reader.getAttrAsString("activationKey",null);
isPushUpdateAuto = reader.getAttrAsBoolean("isPushUpdateAuto",true);
checkTimeSpan = reader.getAttrAsLong("checkTimeSpan",ONE_MONTH_SECOND);
String date = reader.getAttrAsString("lastCheckDate", null);
if(!StringUtils.isEmpty(date)){
lastCheckDate = DateUtils.string2Date(date,true);
} else {
lastCheckDate = new Date();
}
}
}
}
@Override
public void writeXML(XMLPrintWriter writer) {
writer.startTAG("ChartDesigner");
writer.startTAG("ChartAttributes").attr("activationKey",activationKey)
.attr("isPushUpdateAuto",isPushUpdateAuto)
.attr("checkTimeSpan",checkTimeSpan)
.attr("lastCheckDate", DateUtils.getDate2LStr(lastCheckDate))
.end();
writer.end();
}
/**
* 保存设计器的配置文件, 该文件不在env的resource目录下
* 而是在Consts.getEnvHome() + File.separator + Consts.APP_NAME
*
*
* @date 2014-9-29-上午11:04:23
*/
public void saveXMLFile() {
File xmlFile = this.getDesignerEnvFile();
if (xmlFile == null) {
return;
}
if (!xmlFile.getParentFile().exists()) {//建立目录.
StableUtils.mkdirs(xmlFile.getParentFile());
}
String tempName = xmlFile.getName() + ProjectConstants.TEMP_SUFFIX;
File tempFile = new File(xmlFile.getParentFile(), tempName);
writeTempFile(tempFile);
IOUtils.renameTo(tempFile, xmlFile);
}
private void writeTempFile(File tempFile){
try{
OutputStream fout = new FileOutputStream(tempFile);
XMLTools.writeOutputStreamXML(this, fout);
fout.flush();
fout.close();
}catch (Exception e) {
FRContext.getLogger().error(e.getMessage());
}
}
}

6
designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java

@ -5,6 +5,8 @@ import com.fr.design.beans.BasicBeanPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.ChartsConfigPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
@ -90,5 +92,9 @@ public interface IndependentChartUIProvider extends Level {
*/
String getPlotTypeTitle4PopupWindow();
ChartEditPane getChartEditPane(String plotID);
ChartsConfigPane getChartConfigPane(String plotID);
}

10
designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUI.java

@ -7,9 +7,12 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.ChartsConfigPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.StableUtils;
/**
@ -30,6 +33,7 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr
public ChartDataPane getChartDataPane(AttributeChangeListener listener){
return new ChartDataPane(listener);
}
/**
* 是否使用默认的界面为了避免界面来回切换
* @return 是否使用默认的界面
@ -53,4 +57,10 @@ public abstract class AbstractIndependentChartUI implements IndependentChartUIPr
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new DataSeriesConditionPane();
}
public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);}
public ChartsConfigPane getChartConfigPane(String plotID){return null;}
}

7
designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java

@ -7,9 +7,12 @@ import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.ChartsConfigPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.StableUtils;
/**
* Created by Mitisky on 16/3/7.
@ -65,4 +68,8 @@ public abstract class AbstractIndependentChartUIWithAPILevel implements Independ
public String getPlotTypeTitle4PopupWindow(){
return getPlotTypePane().title4PopupWindow();
}
public ChartEditPane getChartEditPane(String plotID){ return StableUtils.construct(ChartEditPane.class);}
public ChartsConfigPane getChartConfigPane(String plotID){return null;}
}

103
designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartsUI.java

@ -0,0 +1,103 @@
package com.fr.design.chart.fun.impl;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chart.fun.IndependentChartUIProvider;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.AbstractChartAttrPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.ChartsEditPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
import com.fr.design.mainframe.chart.gui.data.report.CategoryPlotReportDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotTableDataContentPane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.design.mainframe.chart.gui.type.PiePlotPane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API;
/**
* Created by mengao on 2017/4/24.
* 用户使用第三方图表需要继承的面板抽象类
*/
@API(level = IndependentChartUIProvider.CURRENT_API_LEVEL)
public abstract class AbstractIndependentChartsUI extends AbstractProvider implements IndependentChartUIProvider {
public String mark4Provider() {
return getClass().getName();
}
@Override
public AbstractChartTypePane getPlotTypePane() {
return new PiePlotPane();
}
@Override
public ChartDataPane getChartDataPane(AttributeChangeListener listener) {
return new ChartDataPane(listener);
}
@Override
public AbstractTableDataContentPane getTableDataSourcePane(Plot plot, ChartDataPane parent) {
return new CategoryPlotTableDataContentPane(parent);
}
@Override
public AbstractReportDataContentPane getReportDataSourcePane(Plot plot, ChartDataPane parent) {
return new CategoryPlotReportDataContentPane(parent);
}
public BasicBeanPane<Plot> getPlotSeriesPane(ChartStylePane parent, Plot plot){
return null;
}
public BasicBeanPane<Plot> getPlotSeriesPane(){
return null;
}
public boolean equals(Object obj) {
return obj != null && ComparatorUtils.equals(obj.getClass(), this.getClass());
}
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return null;
}
@Override
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){
return new AbstractChartAttrPane[]{};
}
@Override
public boolean isUseDefaultPane(){
return false;
}
@Override
public String getIconPath() {
return "com/fr/design/images/form/toolbar/ChartF-Column.png";
}
@Override
/**
* plot面板的标题
* 插件兼容
*/
public String getPlotTypeTitle4PopupWindow(){
return getPlotTypePane().title4PopupWindow();
}
@Override
public ChartEditPane getChartEditPane(String plotID) {
return new ChartsEditPane();
}
}

69
designer_chart/src/com/fr/design/chart/report/GisMapDataPane4Chart.java

@ -1,69 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import javax.swing.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapDataPane4Chart extends AbstractChartDataPane4Chart {
private GisMapTableDataContentPane4Chart tablePane = new GisMapTableDataContentPane4Chart();
public GisMapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
}
protected JPanel getDataContentPane() {
return tablePane;
}
@Override
public void populate(ChartCollection collection) {
tablePane = new GisMapTableDataContentPane4Chart();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if (tableData != null) {
populateChoosePane(tableData);
fireTableDataChange();
}
}
if (definition instanceof GisMapTableDefinition) {
tablePane.populateBean((GisMapTableDefinition) definition);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(tablePane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(tablePane.updateBean());
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
tablePane.fireTableDataChange(choosePane.getTableDataWrapper());
}
}

341
designer_chart/src/com/fr/design/chart/report/GisMapTableDataContentPane4Chart.java

@ -1,341 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartdata.GisMapTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
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.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class GisMapTableDataContentPane4Chart extends FurtherBasicBeanPane<GisMapTableDefinition> implements UIObserver {
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIButtonGroup<String> addressType;
private UIButtonGroup<String> lnglatOrder;
private UIComboBox addressBox;
private UIComboBox addressNameBox;
private UICorrelationPane titleValuePane;
private JPanel orderPane;
private TableDataWrapper tableDataWrapper;
public GisMapTableDataContentPane4Chart() {
this.setLayout(new BorderLayout());
addressType = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Gis_Address"), Inter.getLocText("Chart-Gis_LatLng")});
lnglatOrder = new UIButtonGroup<String>(new String[]{Inter.getLocText("Chart-Lng_First"), Inter.getLocText("Chart-Lat_First")});
addressBox = new UIComboBox();
addressNameBox = new UIComboBox();
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = new double[]{p, f};
double[] rowSize = new double[]{p, p, p};
orderPane = new JPanel(new BorderLayout(LayoutConstants.VGAP_MEDIUM, 0)) {
@Override
public Dimension getPreferredSize() {
if (this.isVisible()) {
return super.getPreferredSize();
} else {
return new Dimension(0, 0);
}
}
};
orderPane.add(new UILabel(Inter.getLocText("Chart-LatLng_Order")), BorderLayout.WEST);
orderPane.add(lnglatOrder, BorderLayout.CENTER);
orderPane.setVisible(false);
lnglatOrder.setSelectedIndex(0);
addressType.setSelectedIndex(0);
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
Component[][] components = new Component[][]{
new Component[]{addressType, addressBox},
new Component[]{orderPane, null},
new Component[]{new UILabel(Inter.getLocText("Chart-Address_Name") + ":", SwingConstants.RIGHT), addressNameBox},
};
JPanel centerPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(centerPane, BorderLayout.NORTH);
String[] titles = {Inter.getLocText("Chart-Area_Title"), Inter.getLocText("Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles) {
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private void refresh2ComboBox() {// 刷新地址 地址名 名称列表
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
addressBox.removeAllItems();
addressNameBox.removeAllItems();
addressNameBox.addItem(Inter.getLocText("Chart-Use_None"));
for (int i = 0, size = initNames.length; i < size; i++) {
addressBox.addItem(initNames[i]);
addressNameBox.addItem(initNames[i]);
}
if(initNames.length > 0){
addressBox.setSelectedIndex(0);
}
addressNameBox.setSelectedIndex(0);
stopEditing();
}
/**
* 界面接入
*
* @param ob 对象
* @return true表示接受
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
*
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("Chart-DS_TableData");
}
private void stopEditing() {
}
@Override
public void populateBean(GisMapTableDefinition ob) {
stopEditing();
if (ob instanceof GisMapTableDefinition) {
GisMapTableDefinition mapDefinition = (GisMapTableDefinition) ob;
if (ob.isAddress()) {
addressType.setSelectedIndex(0);
orderPane.setVisible(false);
} else {
addressType.setSelectedIndex(1);
orderPane.setVisible(true);
}
if (ob.isLngFirst()) {
lnglatOrder.setSelectedIndex(0);
} else {
lnglatOrder.setSelectedIndex(1);
}
addressBox.setSelectedItem(mapDefinition.getAddress());
if (StringUtils.isEmpty(mapDefinition.getAddressName())) {
addressNameBox.setSelectedItem(Inter.getLocText("Chart-Use_None"));
} else {
addressNameBox.setSelectedItem(mapDefinition.getAddressName());
}
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTittleValueSize();
for (int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTittleValueWithIndex(i);
if (definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if (!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public GisMapTableDefinition updateBean() {// 从一行内容中update
stopEditing();
GisMapTableDefinition definition = new GisMapTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null || addressBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAddress(Utils.objectToString(addressBox.getSelectedItem()));
if (this.addressType.getSelectedIndex() == 0) {
definition.setAddressType(true);
lnglatOrder.setVisible(false);
} else {
definition.setAddressType(false);
lnglatOrder.setVisible(true);
}
if (this.lnglatOrder.getSelectedIndex() == 0) {
definition.setLnglatOrder(true);
} else {
definition.setLnglatOrder(false);
}
if (addressNameBox.getSelectedItem() != null) {
String adName = Utils.objectToString(addressNameBox.getSelectedItem());
if (ArrayUtils.contains(ChartConstants.getNoneKeys(), adName)) {
definition.setAddressName(StringUtils.EMPTY);
} else {
definition.setAddressName(adName);
}
}
java.util.List paneList = titleValuePane.updateBean();
for (int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[]) paneList.get(i);
if (values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTittleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if (editorComponent instanceof UITextField) {
UITextField textField = (UITextField) editorComponent;
return textField.getText();
} else if (editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox) editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if (column == 0) {
UITextField text = new UITextField();
if (value != null) {
text.setText(Utils.objectToString(value));
}
text.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
titleValuePane.stopCellEditing();
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
/**
* 出发数据集改变
* @param wrapper 数据集
*/
public void fireTableDataChange(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
refresh2ComboBox();
}
}

68
designer_chart/src/com/fr/design/chart/report/MapCubeDataPane4Chart.java

@ -1,68 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.general.Inter;
import java.awt.*;
import java.util.*;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapCubeDataPane4Chart extends UIComboBoxPane<TopDefinitionProvider> {
private MapTableCubeDataPane4Chart tablePane;
protected void initLayout() {
this.setLayout(new BorderLayout(0, 0));
this.add(cardPane, BorderLayout.CENTER);
}
@Override
protected List<FurtherBasicBeanPane<? extends TopDefinitionProvider>> initPaneList() {
List list = new ArrayList();
list.add(tablePane = new MapTableCubeDataPane4Chart());
return list;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_LayerData");
}
/**
* 对数据集或者单元格数据加载界面
*/
public void populateBean(TopDefinitionProvider definition) {
if(definition instanceof MapMoreLayerTableDefinition) {
MapMoreLayerTableDefinition tableDefinition = (MapMoreLayerTableDefinition)definition;
this.setSelectedIndex(0);
tablePane.populateBean(tableDefinition);
}
}
/**
* 根据界面 下载保存数据
*/
public TopDefinitionProvider update() {
return tablePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tablePane.setTableDataWrapper(tableDataWrapper);
tablePane.refreshAreaNameBox();
}
}

133
designer_chart/src/com/fr/design/chart/report/MapDataPane4Chart.java

@ -1,133 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.*;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:49
*/
public class MapDataPane4Chart extends AbstractChartDataPane4Chart {
private UIComboBoxPane dataContentPane;
private MapMoreCubeLayerPane4Chart morePane = new MapMoreCubeLayerPane4Chart();
private MapSinglePane4Chart singlePane = new MapSinglePane4Chart();
private ChartCollection currentCollection;
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireTableDataChange();
}
};
public MapDataPane4Chart(AttributeChangeListener listener, ChartDataPane parent) {
super(listener, parent);
dataContentPane = new UIComboBoxPane<Chart>() {
protected void initLayout() {
this.setLayout(new BorderLayout(0, 6));
JPanel northPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
northPane.add(new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":"));
northPane.add(jcb);
this.add(northPane, BorderLayout.NORTH);
this.add(cardPane, BorderLayout.CENTER);
}
protected java.util.List<FurtherBasicBeanPane<? extends Chart>> initPaneList() {
java.util.List list = new ArrayList();
list.add(singlePane);
list.add(morePane);
return list;
}
protected void comboBoxItemStateChanged() {
if(currentCollection == null){
return;
}
fireTableDataChange();
morePane.init4PopuMapTree(currentCollection);
}
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"Chart-Map", "Data"});
}
};
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void populate(ChartCollection collection) {
currentCollection = collection;
morePane.init4PopuMapTree(collection);
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
}
if(definition instanceof MapSingleLayerTableDefinition) {
singlePane.populateBean(definition);
} else if(definition instanceof MapMoreLayerTableDefinition) {
morePane.populateBean(collection);
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
@Override
public void update(ChartCollection collection) {
if(dataContentPane.getSelectedIndex() == 0) {
collection.getSelectedChart().setFilterDefinition(singlePane.updateBean());
} else {
morePane.updateBean(collection);
}
currentCollection = collection;
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane == null) {
return;
}
if(dataContentPane.getSelectedIndex() == 0) {
singlePane.fireTableDataChanged(choosePane.getTableDataWrapper());
} else {
morePane.fireTableDataChanged(choosePane.getTableDataWrapper());
}
}
}

113
designer_chart/src/com/fr/design/chart/report/MapMoreCubeLayerPane4Chart.java

@ -1,113 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.MultiTabPane;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapMoreCubeLayerPane4Chart extends MultiTabPane<ChartCollection> {
private static final long serialVersionUID = -174286187746442527L;
private MapCubeLayerPane layerPane;
private MapCubeDataPane4Chart dataPane;
@Override
protected List<BasicPane> initPaneList() {
List<BasicPane> paneList = new ArrayList<BasicPane>();
paneList.add(layerPane = new MapCubeLayerPane());
paneList.add(dataPane = new MapCubeDataPane4Chart());
return paneList;
}
public ChartCollection updateBean() {
return null;// do nothing
}
public void populateBean(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.populateBean(map.getMapName());
}
// 确认层级关系
dataPane.populateBean(collection.getSelectedChart().getFilterDefinition());
}
public void updateBean(ChartCollection collection) {
collection.getSelectedChart().setFilterDefinition(dataPane.update());
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
layerPane.updateBean(map.getMapName());// 确定更新地图名称所对应的层级关系
}
}
/**
* 刷新层级树 数据中populate 数据的层数
* @param collection 图表收集器.
*/
public void init4PopuMapTree(ChartCollection collection) {
Chart selectChart = collection.getSelectedChart();
if(selectChart != null && selectChart.getPlot() instanceof MapPlot) {
MapPlot map = (MapPlot)selectChart.getPlot();
if(layerPane != null) {
layerPane.initRootTree(map.getMapName());
}
}
}
/**
* 判断是否合格
* @param ob 参数判断
* @return 默认合格.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 界面标题
* @return 返回标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Map_Multilayer");
}
/**
* 重置
*/
public void reset() {
}
/**
* 设置是否支持单元格数据.
*/
public void setSurpportCellData(boolean surpportCellData) {
dataPane.justSupportOneSelect(surpportCellData);
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
dataPane.fireTableDataChanged(tableDataWrapper);
}
}

79
designer_chart/src/com/fr/design/chart/report/MapSinglePane4Chart.java

@ -1,79 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.TopDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapSinglePane4Chart extends FurtherBasicBeanPane<TopDefinitionProvider> {
private MapTableDataSinglePane4Chart tableSinglePane;
public MapSinglePane4Chart() {
initCom();
}
private void initCom() {
this.setLayout(new BorderLayout());
this.add(tableSinglePane = new MapTableDataSinglePane4Chart(), BorderLayout.CENTER);
}
/**
* 判断准许的情况
* @param ob 数据集
* @return 是不是顶层数据
*/
public boolean accept(Object ob) {
return ob instanceof TopDefinition;
}
/**
* 重置
*/
public void reset() {
}
/**
*界面标题
* @return 界面标题
*/
public String title4PopupWindow() {
return Inter.getLocText(new String[]{"SingleLayer", "Chart-Map"});
}
/**
* 加载单层地图时的 数据来源界面
*/
public void populateBean(TopDefinitionProvider ob) {
if(ob instanceof MapSingleLayerTableDefinition) {
tableSinglePane.populateBean((MapSingleLayerTableDefinition)ob);
}
}
/**
* 保存下载 单层数据界面
*/
public TopDefinitionProvider updateBean() {
return tableSinglePane.updateBean();
}
/**
* 出发数据集改变
* @param tableDataWrapper 数据集
*/
public void fireTableDataChanged(TableDataWrapper tableDataWrapper) {
tableSinglePane.setTableDataWrapper(tableDataWrapper);
tableSinglePane.refreshAreaNameBox();
}
}

93
designer_chart/src/com/fr/design/chart/report/MapTableCubeDataPane4Chart.java

@ -1,93 +0,0 @@
package com.fr.design.chart.report;
import com.fr.chart.chartdata.MapMoreLayerTableDefinition;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.general.Inter;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableCubeDataPane4Chart extends FurtherBasicBeanPane<MapMoreLayerTableDefinition> {
private MapMoreTableIndexPane tablePane;
private TableDataWrapper tableDataWrapper;
public MapTableCubeDataPane4Chart() {
this.setLayout(new BorderLayout());
tablePane = new MapMoreTableIndexPane();
this.add(tablePane, BorderLayout.CENTER);
}
/**
* 刷新区域名称列表
*/
public void refreshAreaNameBox() {
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
tablePane.initAreaComBox(columnNameList.toArray(new String[columnNameList.size()]));
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
/**
* 界面接入
* @param ob 界面
* @return 返回接入.
*/
public boolean accept(Object ob) {
return true;
}
/**
* 重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 返回标题.
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
@Override
public void populateBean(MapMoreLayerTableDefinition tableDefinition) {
if (tableDefinition != null) {
MapSingleLayerTableDefinition[] values = tableDefinition.getNameValues();
if(values != null && values.length > 0) {
tablePane.populateBean(values[0]);
}
}
}
@Override
public MapMoreLayerTableDefinition updateBean() {
MapMoreLayerTableDefinition tableDefinition = new MapMoreLayerTableDefinition();
TableDataWrapper tableDataWrappe =tableDataWrapper;
if (tableDataWrappe != null) {
tableDefinition.setTableData(tableDataWrappe.getTableData());
tableDefinition.clearNameValues();
tableDefinition.addNameValue(tablePane.updateBean());
}
return tableDefinition;
}
}

268
designer_chart/src/com/fr/design/chart/report/MapTableDataSinglePane4Chart.java

@ -1,268 +0,0 @@
package com.fr.design.chart.report;
import com.fr.base.Utils;
import com.fr.chart.chartdata.MapSingleLayerTableDefinition;
import com.fr.chart.chartdata.SeriesDefinition;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.UICorrelationPane;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itable.UITableEditor;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class MapTableDataSinglePane4Chart extends FurtherBasicBeanPane<MapSingleLayerTableDefinition> implements UIObserver {
private static final int LABEL_WIDTH_GAP = 5;
private static final int COM_HEIGHT = 20;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private String[] initNames = {""};
private UIComboBox areaNameBox;
private UICorrelationPane titleValuePane;
private TableDataWrapper tableDataWrapper;
public MapTableDataSinglePane4Chart() {
this.setLayout(new BorderLayout());
JPanel pane = new JPanel();
this.add(pane, BorderLayout.CENTER);
pane.setLayout(new BorderLayout());
pane.add(getAreaNamePane(), BorderLayout.NORTH);
String[] titles = {Inter.getLocText("FR-Chart-Area_Title"), Inter.getLocText("FR-Chart-Area_Value")};
titleValuePane = new UICorrelationPane(titles){
public UITableEditor createUITableEditor() {
return new InnerTableEditor();
}
};
pane.add(titleValuePane, BorderLayout.CENTER);
}
private JPanel getAreaNamePane(){
final UILabel label = new BoldFontTextLabel(Inter.getLocText("FR-Chart-Map_ShowWay") + ":");
UILabel nameLabel = new UILabel(Inter.getLocText("FR-Chart-Area_Name") + ":", SwingConstants.RIGHT){
public Dimension getPreferredSize() {
return new Dimension(label.getPreferredSize().width+LABEL_WIDTH_GAP,COM_HEIGHT);
}
};
areaNameBox = new UIComboBox();
areaNameBox.setPreferredSize(new Dimension(80, 20));
double p =TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{nameLabel, areaNameBox},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
*刷新区域名称列表
*/
public void refreshAreaNameBox() {// 刷新区域名称列表
TableDataWrapper tableDataWrappe = tableDataWrapper;
if (tableDataWrappe == null) {
return;
}
java.util.List<String> columnNameList = tableDataWrappe.calculateColumnNameList();
initNames = columnNameList.toArray(new String[columnNameList.size()]);
Object oldSelected = areaNameBox.getSelectedItem();
areaNameBox.removeAllItems();
for(int i = 0, size = initNames.length; i < size; i++) {
areaNameBox.addItem(initNames[i]);
}
areaNameBox.getModel().setSelectedItem(oldSelected);
stopEditing();
}
/**
* 是否接受数据集
* @param ob 具体变量
* @return 不是
*/
public boolean accept(Object ob) {
return false;
}
/**
* 界面重置
*/
public void reset() {
}
/**
* 界面弹出标题
* @return 标题
*/
public String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Table_Data");
}
private void stopEditing() {
}
@Override
public void populateBean(MapSingleLayerTableDefinition ob) {
stopEditing();
if (ob instanceof MapSingleLayerTableDefinition) {
MapSingleLayerTableDefinition mapDefinition = (MapSingleLayerTableDefinition) ob;
// fromTableData.populateBean(((NameTableData) mapDefinition.getTableData()));
areaNameBox.setSelectedItem(mapDefinition.getAreaName());
java.util.List paneList = new ArrayList();
int titleValueSize = mapDefinition.getTitleValueSize();
for(int i = 0; i < titleValueSize; i++) {
SeriesDefinition definition = mapDefinition.getTitleValueWithIndex(i);
if(definition != null && definition.getSeriesName() != null && definition.getValue() != null) {
paneList.add(new Object[]{definition.getSeriesName(), definition.getValue()});
}
}
if(!paneList.isEmpty()) {
titleValuePane.populateBean(paneList);
}
}
}
@Override
public MapSingleLayerTableDefinition updateBean() {// 从一行内容中update
stopEditing();
MapSingleLayerTableDefinition definition = new MapSingleLayerTableDefinition();
TableDataWrapper tableDataWrappe = tableDataWrapper;
// = fromTableData.getTableDataWrapper();
if (tableDataWrappe == null || areaNameBox.getSelectedItem() == null) {
return null;
}
definition.setTableData(tableDataWrapper.getTableData());
definition.setAreaName(Utils.objectToString(areaNameBox.getSelectedItem()));
java.util.List paneList = titleValuePane.updateBean();
for(int i = 0, size = paneList.size(); i < size; i++) {
Object[] values = (Object[])paneList.get(i);
if(values.length == 2) {
SeriesDefinition seriesDefinition = new SeriesDefinition();
seriesDefinition.setSeriesName(values[0]);
seriesDefinition.setValue(values[1]);
definition.addTitleValue(seriesDefinition);
}
}
return definition;
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(final UIObserverListener listener) {
changeListeners.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
listener.doChange();
}
});
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
private class InnerTableEditor extends UITableEditor {
private JComponent editorComponent;
/**
* 返回当前编辑器的值
*/
public Object getCellEditorValue() {
if(editorComponent instanceof UITextField) {
UITextField textField = (UITextField)editorComponent;
return textField.getText();
} else if(editorComponent instanceof UIComboBox) {
UIComboBox boxPane = (UIComboBox)editorComponent;
return boxPane.getSelectedItem();
}
return super.getCellEditorValue();
}
/**
* 返回当前编辑器..
*/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (column == table.getModel().getColumnCount()) {
return null;
}
if(column == 0 ) {
UITextField text = new UITextField();
if(value != null) {
text.setText(Utils.objectToString(value));
}
text.registerChangeListener(new UIObserverListener() {
@Override
public void doChange() {
titleValuePane.fireTargetChanged();
}
});
this.editorComponent = text;
} else {
UIComboBox box = new UIComboBox(initNames);
box.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
titleValuePane.fireTargetChanged();
titleValuePane.stopCellEditing();
}
});
if (value != null && StringUtils.isNotEmpty(value.toString())) {
box.setSelectedItem(value);
} else {
box.setSelectedItem(value);
}
this.editorComponent = box;
}
return this.editorComponent;
}
}
public void setTableDataWrapper(TableDataWrapper wrapper){
this.tableDataWrapper = wrapper;
}
}

244
designer_chart/src/com/fr/design/mainframe/AbstractChartDataPane4Chart.java

@ -1,244 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.TableData;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.*;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 下午6:53
*/
public class AbstractChartDataPane4Chart extends DataContentsPane implements UIObserver {
private static final int DATA_SOURCE_GAP = 18;
private static final int WIDTH = 262;
protected ChartDataPane parentPane;
protected ChartDesignDataLoadPane choosePane;
protected JComponent choose = new UILabel();
protected UIObserverListener observerListener;
protected UIComboBox dataSource = new UIComboBox(
new String[]{"JSON" + Inter.getLocText("Chart-DS_TableData"), Inter.getLocText("Chart-Use_Local") + "EXCEL", Inter.getLocText("Chart-DS_Embedded_TableData")});
protected ItemListener dsListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int index = dataSource.getSelectedIndex();
if (index == 0) {
initJSON();
} else if (index == 1) {
initExcel();
} else {
initEmbbed();
}
remove(leftContentPane);
clearTableDataSetting();
initContentPane();
AbstractChartDataPane4Chart.this.validate();
}
};
protected AttributeChangeListener attributeChangeListener;
public AbstractChartDataPane4Chart(final AttributeChangeListener listener, ChartDataPane parent) {
this.parentPane = parent;
this.attributeChangeListener = listener;
initJSON();
initAll();
}
protected void populateChoosePane(TableData tableData) {
dataSource.removeItemListener(dsListener);
if (tableData instanceof JSONTableData) {
initJSON();
dataSource.setSelectedIndex(0);
} else if (tableData instanceof ExcelTableData) {
initExcel();
dataSource.setSelectedIndex(1);
} else if (tableData instanceof EmbeddedTableData) {
initEmbbed();
dataSource.setSelectedIndex(2);
}
choosePane.populateChartTableData(tableData);
dataSource.addItemListener(dsListener);
}
protected void initJSON() {
choosePane = new JSONDataPane(this);
UILabel url = new UILabel("URL:");
url.setHorizontalAlignment(SwingConstants.RIGHT);
choose = url;
}
protected void initExcel() {
choose = new UIButton(Inter.getLocText("Chart-Select_Path"));
choosePane = new ExcelDataPane(this, choose);
}
protected void initEmbbed() {
choosePane = new EmbbeddDataPane(this);
choose = null;
}
@Override
public void setSupportCellData(boolean supportCellData) {
}
@Override
protected JPanel createContentPane() {
double p = TableLayout.PREFERRED;
double[] columnSize = {WIDTH};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Import"))},
new Component[]{createDataImportPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createDataImportPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p, p};
Component[][] components = new Component[][]{
new Component[]{createDataSourcePane()},
new Component[]{new JSeparator()},
new Component[]{createDataSetPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 数据配置面板
*
* @return
*/
protected JPanel createDataSetPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Chart-Data_Configuration"))},
new Component[]{getDataContentPane()}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected JPanel getDataContentPane() {
return new JPanel();
}
private JPanel createDataSourcePane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {DATA_SOURCE_GAP, f};
double[] rowSize = {p,};
Component[][] components = new Component[][]{
new Component[]{null, createChooseBoxPane()},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
private JPanel createChooseBoxPane() {
UILabel dataSourceLabel = new UILabel(Inter.getLocText("Chart-Data_Resource") + ":");
dataSourceLabel.setHorizontalAlignment(SwingConstants.RIGHT);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p};
Component[][] components = new Component[][]{
new Component[]{dataSourceLabel, dataSource},
new Component[]{choose, choosePane}
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
/**
* 注册观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(UIObserverListener listener) {
this.observerListener = listener;
}
/**
* 使用应该响应listener
*
* @return 应该响应
*/
public boolean shouldResponseChangeListener() {
return true;
}
protected void initSelfListener(Container parentComponent) {
for (int i = 0; i < parentComponent.getComponentCount(); i++) {
Component tmpComp = parentComponent.getComponent(i);
if (tmpComp instanceof Container) {
initListener((Container) tmpComp);
}
if (tmpComp instanceof UIObserver) {
((UIObserver) tmpComp).registerChangeListener(observerListener);
}
}
}
@Override
public void populate(ChartCollection collection) {
}
@Override
public void update(ChartCollection collection) {
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting() {
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
}
}

111
designer_chart/src/com/fr/design/mainframe/AbstractMapPlotPane4ToolBar.java

@ -1,111 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:15
*/
public abstract class AbstractMapPlotPane4ToolBar extends JPanel{
protected static final int COM_HEIGHT = 22;
protected static final int COM_GAP = 14;
protected static final int COMBOX_WIDTH = 230;
protected ChartDesigner chartDesigner;
protected UIComboBox mapTypeComboBox;
protected ItemListener mapTypeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
calculateDetailMaps(mapTypeComboBox.getSelectedIndex());
}
};
public AbstractMapPlotPane4ToolBar(ChartDesigner designer){
this.chartDesigner = designer;
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
this.setBorder(new EmptyBorder(2, 0, 2, 0));
mapTypeComboBox = new UIComboBox(getMapTypes()) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
mapTypeComboBox.addItemListener(mapTypeListener);
this.add(mapTypeComboBox);
}
protected abstract void calculateDetailMaps(int mapType);
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
for (String type : getMapTypes()) {
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(type);
for (Object name : list) {
if(ComparatorUtils.equals(name,mapType)){
mapTypeComboBox.setSelectedItem(type);
break;
}
}
}
mapTypeComboBox.addItemListener(mapTypeListener);
}
public abstract String[] getMapTypes();
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chart.switchPlot(getSelectedClonedPlot());
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
protected abstract Plot getSelectedClonedPlot();
/**
* 触发更新
*/
public void fireTargetModified() {
chartDesigner.fireTargetModified();
}
}

521
designer_chart/src/com/fr/design/mainframe/ChartArea.java

@ -1,521 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.scrollruler.*;
import com.fr.general.FRScreen;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午5:08
*/
public class ChartArea extends JComponent implements ScrollRulerComponent {
private static final int TOPGAP = 8;
private static final int MIN_WIDTH = 36;
private static final int MIN_HEIGHT = 21;
private static final double SLIDER_FLOAT = 120.0;
private static final double SLIDER_MIN = 60.0;
private static final double DEFAULT_SLIDER = 100.0;
private static final int ROTATIONS = 50;
private int designerwidth = 810;
private int designerheight = 500;
private int customWidth = 810;
private int customHeight = 500;
private ChartDesigner designer;
private int horizontalValue = 0;
private int verticalValue = 0;
private int verticalMax = 0;
private int horicalMax = 0;
private FormScrollBar verScrollBar;
private FormScrollBar horScrollBar;
//显示和设置图表界面大小的控件
private UINumberField widthPane;
private UINumberField heightPane;
private boolean isValid = true;
private double START_VALUE = DEFAULT_SLIDER;
public ChartArea(ChartDesigner designer) {
this(designer, true);
}
public ChartArea(ChartDesigner designer, boolean useScrollBar) {
this.designer = designer;
this.designer.setParent(this);
this.customWidth = designer.getTarget().getWidth();
this.customHeight = designer.getTarget().getHeight();
this.designerwidth = this.customWidth;
this.designerheight = this.customHeight;
isValid = useScrollBar;
verScrollBar = new FormScrollBar(Adjustable.VERTICAL, this);
horScrollBar = new FormScrollBar(Adjustable.HORIZONTAL, this);
if (useScrollBar) {
this.setLayout(new FormRulerLayout());
designer.setBorder(new LineBorder(new Color(198, 198, 198)));
this.add(FormRulerLayout.CENTER, designer);
addFormSize();
this.add(FormRulerLayout.VERTICAL, verScrollBar);
this.add(FormRulerLayout.HIRIZONTAL, horScrollBar);
enableEvents(AWTEvent.MOUSE_WHEEL_EVENT_MASK);
} else {
// 报表参数界面只要标尺和中心pane
this.setLayout(new RulerLayout());
this.add(RulerLayout.CENTER, designer);
addFormRuler();
}
this.setFocusTraversalKeysEnabled(false);
}
/**
* 增加表单的页面大小控制界面包括手动修改和滑块拖动
*/
private void addFormSize() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[] rowSize = {f};
double[] columnSize = {p, f, p, p, p, p, p,f,p};
UILabel tipsPane = new UILabel("chart");
tipsPane.setPreferredSize(new Dimension(200, 0));
widthPane = new UINumberField();
widthPane.setPreferredSize(new Dimension(60, 0));
heightPane = new UINumberField();
heightPane.setPreferredSize(new Dimension(60, 0));
JPanel panel = new JPanel(){
public Dimension getPreferredSize(){
return new Dimension(200,0);
}
};
JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(new JComponent[][]{
{tipsPane, new UILabel(), widthPane, new UILabel(Inter.getLocText("Indent-Pixel")), new UILabel("x"),
heightPane, new UILabel(Inter.getLocText("Indent-Pixel")),new UILabel(),panel}},
rowSize, columnSize, 8
);
this.add(FormRulerLayout.BOTTOM, resizePane);
setWidgetsConfig();
// 先初始话滑块及对应事件,然后获取分辨率调整容器的显示大小
initCalculateSize();
}
private void setWidgetsConfig() {
widthPane.setHorizontalAlignment(widthPane.CENTER);
heightPane.setHorizontalAlignment(heightPane.CENTER);
widthPane.setMaxDecimalLength(0);
heightPane.setMaxDecimalLength(0);
//控件初始值就是根节点组件初始的宽和高
widthPane.setValue(designerwidth);
heightPane.setValue(designerheight);
addWidthPaneListener();
addHeightPaneListener();
}
private void initCalculateSize() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize();
double value = FRScreen.getByDimension(scrnsize).getValue();
if (value != DEFAULT_SLIDER) {
reCalculateRoot(value, true);
}
}
//设置宽度的控件及响应事件
private void addWidthPaneListener() {
widthPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateWidth((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
widthPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateWidth((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void addHeightPaneListener() {
heightPane.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reCalculateHeight((int) ((UINumberField) evt.getSource()).getValue());
}
}
);
heightPane.addFocusListener(
new FocusAdapter() {
public void focusLost(FocusEvent e) {
// 失去焦点时,可以认为输入结束
reCalculateHeight((int) ((UINumberField) e.getSource()).getValue());
}
}
);
}
private void reCalculateWidth(int width) {
int dW = width - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(width, designerheight);
designerwidth = width;
customWidth = width;
designer.getTarget().setWidth(width);
ChartArea.this.validate();
designer.fireTargetModified();
}
private void reCalculateHeight(int height) {
int dW = height - designerwidth;
if (dW == 0) {
return;
}
// 图表设计器先设大小为实际的高和当前的宽,然后按此调整内部的组件
designer.setSize(designerwidth, height);
designerheight = height;
customHeight = height;
this.designer.getTarget().setHeight(height);
ChartArea.this.validate();
designer.fireTargetModified();
}
/**
* 按照界面大小的百分比值调整root大小
*
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/
private void reCalculateRoot(double value, boolean needCalculateParaHeight) {
if (value == START_VALUE) {
return;
}
double percent = (value - START_VALUE) / START_VALUE;
Dimension d = new Dimension(designerwidth, designerheight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
ChartArea.this.validate();
START_VALUE = value;
}
/**
* 增加刻度条
*/
public void addFormRuler() {
BaseRuler vRuler = new VerticalRuler(this);
BaseRuler hRuler = new HorizontalRuler(this);
this.add(RulerLayout.VRULER, vRuler);
this.add(RulerLayout.HRULER, hRuler);
}
/**
* 鼠标滚轮事件
* 由于表单设计界面要求 容器大小大于界面时滚动条才可以拖动所以不支持滚动无限往下滚
*/
@Override
protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) {
int id = evt.getID();
switch (id) {
case MouseEvent.MOUSE_WHEEL: {
int rotations = evt.getWheelRotation();
int value = this.verScrollBar.getValue() + rotations * ROTATIONS;
value = Math.min(value, verticalMax);
value = Math.max(0, value);
doLayout(); //加dolayout是因为每次滚动都要重置 Max的大小
this.verScrollBar.setValue(value);
break;
}
}
}
/**
* 容器布局
*/
public void doLayout() {
layout();
if (isValid) {
setScrollBarProperties(customWidth - designer.getWidth(), horScrollBar);
//计算滚动条值的时候应该算上参数面板的高度
setScrollBarProperties(customHeight - designer.getHeight(), verScrollBar);
}
}
/**
* 设置滚动条的属性
*/
private void setScrollBarProperties(int value, FormScrollBar bar) {
if (value <= 0) {
// 界面有滚动条时,手动缩小容器宽度到界面内,重置滚动条值和max
setScrollBarMax(0, bar);
bar.setMaximum(0);
bar.setValue(0);
bar.setEnabled(false);
} else {
//参数面板拖拽过程中value一直为当前value
int oldValue = verticalValue;
setScrollBarMax(value, bar);
bar.setEnabled(true);
bar.setMaximum(value);
bar.setValue(value);
bar.setValue(oldValue);
}
}
private boolean isScrollNotVisible(FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
return verticalMax == 0;
} else {
return horicalMax == 0;
}
}
private void setScrollBarMax(int max, FormScrollBar bar) {
if (bar.getOrientation() == Adjustable.VERTICAL) {
verticalMax = max;
} else {
horicalMax = max;
}
}
/**
* 返回designer的最小高度
*
* @return int
*/
public int getMinHeight() {
return MIN_HEIGHT;
}
/**
* 返回designer的最小宽度
*
* @return int
*/
public int getMinWidth() {
return MIN_WIDTH;
}
/**
* getRulerLengthUnit
*
* @return short
*/
public short getRulerLengthUnit() {
return -1;
}
/**
* 返回水平滚动条的value
*
* @return int
*/
public int getHorizontalValue() {
return horizontalValue;
}
/**
* 设置水平滚动条的value
*
* @param newValue
*/
public void setHorizontalValue(int newValue) {
this.horizontalValue = newValue;
}
/**
* 返回竖直滚动条的value
*
* @return
*/
public int getVerticalValue() {
return verticalValue;
}
/**
* 竖直滚动条赋值
*
* @param newValue
*/
public void setVerticalValue(int newValue) {
this.verticalValue = newValue;
}
/**
* 返回当前designer的高度
*
* @return height
*/
public int getDesignerHeight() {
return designer.getHeight();
}
/**
* 返回当前designer的宽度
*
* @return
*/
public int getDesignerWidth() {
return designer.getWidth();
}
/**
* 返回宽度控件的value
*
* @return 宽度
*/
public double getWidthPaneValue() {
return widthPane.getValue();
}
/**
* 设置宽度值
*
* @param value
*/
public void setWidthPaneValue(int value) {
widthPane.setValue(value);
}
/**
* 设置高度值
*
* @param value
*/
public void setHeightPaneValue(int value) {
heightPane.setValue(value);
}
/**
* 返回高度控件的value
*
* @return 高度
*/
public double getHeightPaneValue() {
return heightPane.getValue();
}
/**
* 返回界面区域大小
*
* @return Dimension
*/
public Dimension getAreaSize() {
return new Dimension(horScrollBar.getMaximum(), verScrollBar.getMaximum());
}
/**
* setAreaSize
*
* @param totalSize
* @param horizontalValue
* @param verticalValue
*/
public void setAreaSize(Dimension totalSize, int horizontalValue, int verticalValue, double width, double height, double slide) {
horScrollBar.setMaximum((int) totalSize.getWidth());
verScrollBar.setMaximum((int) totalSize.getHeight());
horScrollBar.setValue(horizontalValue);
verScrollBar.setValue(verticalValue);
// 撤销会refresh底层容器,需要按照之前的宽高和百分比重置下容器size
if (width != widthPane.getValue()) {
widthPane.setValue(width);
reCalculateWidth((int) width);
}
if (height != heightPane.getValue()) {
heightPane.setValue(height);
reCalculateHeight((int) height);
}
// undo时会重新refreshRoot,需要再次按照百分比调整下
START_VALUE = DEFAULT_SLIDER;
reCalculateRoot(slide, true);
}
public int getCustomWidth(){
return this.customWidth;
}
public int getCustomHeight(){
return this.customHeight;
}
/**
* 计算滚动条的值和max
*
* @param oldmax 之前最大值
* @param max 当前最大值
* @param newValue 当前value
* @param oldValue 之前value
* @param visi designer的大小
* @param orientation 滚动条方向
* @return 计算后的值和max
*/
@Override
public Point calculateScroll(int oldmax, int max, int newValue, int oldValue, int visi, int orientation) {
int scrollMax = orientation == 1 ? verticalMax : horicalMax;
//防止滚动条到达低端还可以继续点击移动(滚动条最大范围不变时,newValue要在范围之内)
if (oldmax == scrollMax + visi && newValue > scrollMax) {
return new Point(oldValue, oldmax);
}
return new Point(newValue, max);
}
private class FormRulerLayout extends RulerLayout {
public FormRulerLayout() {
super();
}
/**
* 表单用的layout当前不需要标尺
*/
public void layoutContainer(Container target) {
synchronized (target.getTreeLock()) {
Insets insets = target.getInsets();
int top = insets.top;
int left = insets.left;
int bottom = target.getHeight() - insets.bottom;
int right = target.getWidth() - insets.right;
Dimension resize = resizePane.getPreferredSize();
Dimension hbarPreferredSize = null;
Dimension vbarPreferredSize = null;
resizePane.setBounds(left, bottom - resize.height, right, resize.height);
if (horScrollBar != null) {
hbarPreferredSize = horScrollBar.getPreferredSize();
vbarPreferredSize = verScrollBar.getPreferredSize();
horScrollBar.setBounds(left, bottom - hbarPreferredSize.height - resize.height, right - BARSIZE, hbarPreferredSize.height);
verScrollBar.setBounds(right - vbarPreferredSize.width, top, vbarPreferredSize.width, bottom - BARSIZE - resize.height);
}
ChartDesigner dg = ((ChartDesigner) designer);
Rectangle rec = new Rectangle(left + (right - designerwidth) / 2, TOPGAP, right, bottom);
//是否为图表
if (isValid) {
int maxHeight = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2;
int maxWidth = right - vbarPreferredSize.width;
designerwidth = designerwidth> maxWidth ? maxWidth : designerwidth;
designerheight = designerheight > maxHeight ? maxHeight : designerheight;
int designerLeft = left + (verScrollBar.getX() - designerwidth) / 2;
rec = new Rectangle(designerLeft, TOPGAP, designerwidth, designerheight);
}
// designer是整个表单设计界面中的面板部分,目前只放自适应布局和参数界面。
designer.setBounds(rec);
}
}
}
}

230
designer_chart/src/com/fr/design/mainframe/ChartDesigner.java

@ -1,230 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.form.ui.ChartBook;
import com.fr.design.designer.TargetComponent;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import javax.swing.*;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:30
*/
public class ChartDesigner extends TargetComponent<ChartBook> implements MouseListener{
private ChartArea chartArea;//上层区域
private boolean hasCalGap = false;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesigner(ChartBook chartBook) {
super(chartBook);
this.addMouseListener(this);
updateUI();// 初始化界面设计工具的UI实例
}
/**
* 设置上层区域
* @param chartArea 图表区域
*/
public void setParent(ChartArea chartArea) {
this.chartArea = chartArea;
}
/**
* 复制
*/
public void copy() {
}
/**
* 黏贴
* @return 成功返回true
*/
public boolean paste() {
return false;
}
/**
* 剪切
* @return 成功返回TRUE
*/
public boolean cut() {
return false;
}
/**
* 停止编辑
*/
public void stopEditing() {
}
/**
* 权限编辑面板
* @return 面板
*/
public AuthorityEditPane createAuthorityEditPane() {
return null;
}
/**
* 工具条
* @return 工具条
*/
public ToolBarMenuDockPlus getToolBarMenuDockPlus() {
return null;
}
/**
* 菜单状态
* @return 状态
*/
public int getMenuState() {
return 0;
}
/**
* 东上面板
* @return 面板
*/
public JPanel getEastUpPane() {
return null;
}
/**
* 东下面板
* @return 面板
*/
public JPanel getEastDownPane() {
return null;
}
/**
* 取消格式
*/
public void cancelFormat() {
}
/**
* 图表设计器得工具条项
* @return 图表设计器得工具条项
*/
public ToolBarDef[] toolbars4Target() {
return new ToolBarDef[0];
}
/**
* 菜单
* @return 菜单
*/
public MenuDef[] menus4Target() {
return new MenuDef[0];
}
/**
* 菜单项
* @return 菜单项
*/
public ShortCut[] shortcut4TemplateMenu() {
return new ShortCut[0];
}
/**
* 权限编辑得菜单项
* @return 菜单项
*/
public ShortCut[] shortCuts4Authority() {
return new ShortCut[0];
}
/**
* 表单得工具条按钮
* @return 表单得工具条按钮
*/
public JComponent[] toolBarButton4Form() {
return new JComponent[0];
}
/**
* 返回表单区域
* @return 表单区域
*/
public ChartArea getArea() {
return chartArea;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标进入
* @param e 事件
*/
public void mouseEntered(MouseEvent e) {
}
/**
* 鼠标退出
* @param e 事件
*/
public void mouseExited(MouseEvent e) {
}
private void registerChangeListener(ChangeListener changeListener){
if(changeListener == null){
return;
}
this.changeListeners.add(changeListener);
}
public void populate(){
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearToolBarStyleChoose(){
}
}

211
designer_chart/src/com/fr/design/mainframe/ChartDesignerUI.java

@ -1,211 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.ScreenResolution;
import com.fr.base.chart.BaseChartGlyph;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午4:55
*/
public class ChartDesignerUI extends ComponentUI {
private static final Icon ADD = BaseUtils.readIcon("/com/fr/design/images/add.png");
private static final Icon DEL = BaseUtils.readIcon("/com/fr/design/images/del.png");
private static final int ICON_SIZE = 22;
private static final int H_GAP = 2;
private static final int V_GAP = 6;
private Rectangle[] iconLocations;
private Rectangle add;
private Rectangle del;
private UILabel tooltipLabel;
private int overIndex = -1;//鼠标悬浮上去的图表的INDEX
// 图表当前的设计器
private ChartDesigner designer;
public ChartDesignerUI() {
}
/**
* 加载界面
*
* @param c 组件
*/
public void installUI(JComponent c) {
designer = (ChartDesigner) c;
}
/**
* 渲染当前的设计界面以及设计辅助状态
*
* @param g 画图类
* @param c 组件
*/
@Override
public void paint(Graphics g, JComponent c) {
ChartCollection chartCollection = (ChartCollection) designer.getTarget().getChartCollection();
Chart editingChart = chartCollection.getSelectedChart();
BaseChartGlyph chartGlyph = null;
if (editingChart != null && editingChart.getPlot() != null) {
chartGlyph = editingChart.createGlyph(editingChart.defaultChartData());
}
int parentWidth = designer.getSize().width;
int parentHeight = designer.getSize().height;
int chartWidth = designer.getArea().getCustomWidth();
int chartHeight = designer.getArea().getCustomHeight();
Graphics clipg;
clipg = g.create(-designer.getArea().getHorizontalValue(), -designer.getArea().getVerticalValue(), parentWidth + designer.getArea().getHorizontalValue(), parentHeight + designer.getArea().getVerticalValue());
clipg = clipg.create(1, 1, designer.getArea().getCustomWidth(), designer.getArea().getCustomHeight());
g.setColor(Color.white);
g.fillRect(0, 0, chartWidth, chartHeight);
chartGlyph.setUseChangeChart(true);
Image chartImage = chartGlyph.toImage(chartWidth, chartHeight, ScreenResolution.getScreenResolution());
clipg.drawImage(chartImage, 0, 0, chartWidth, chartHeight, null);
paintChange(clipg, c);
}
//绘制切换的东西
private void paintChange(Graphics g, JComponent c) {
int chartWidth = designer.getArea().getCustomWidth();
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
int chartCount = collection.getChartCount();
iconLocations = new Rectangle[chartCount];
int startX = chartWidth - V_GAP - ICON_SIZE;
if (chartCount == 1) {
//只有一个时,只绘制新增按钮,不绘制删除按钮
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
del = null;
} else {
DEL.paintIcon(c, g, startX, H_GAP);
del = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
startX -= (V_GAP + ICON_SIZE);
ADD.paintIcon(c, g, startX, H_GAP);
add = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
for (int i = chartCount - 1; i >= 0; i--) {
Plot plot = collection.getChart(i).getPlot();
if (plot == null) {
continue;
}
if (collection.getSelectedIndex() == i) {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_normal.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}else if(overIndex == i){
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_over.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
} else {
Icon ploticon = BaseUtils.readIcon(plot.getPlotSmallIconPath() + "_gray.png");
if (ploticon != null) {
startX -= (V_GAP + ICON_SIZE);
ploticon.paintIcon(c, g, startX, H_GAP);
}
}
iconLocations[i] = new Rectangle(startX, H_GAP, ICON_SIZE, ICON_SIZE);
}
}
/**
* 鼠标点击
*
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
if (i == collection.getSelectedIndex()) {
return;
}
collection.setSelectedIndex(i);
designer.repaint();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
}
if (add.contains(clikPoint)) {
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
try {
Chart newChart = (Chart) barChart[0].clone();
int select = collection.getSelectedIndex();
collection.addNamedChartAtIndex(newChart.getTitle().getTextObject().toString(), newChart,select+1);
collection.setSelectedIndex(select+1);
ChartDesignEditPane.getInstance().populateSelectedTabPane();
} catch (CloneNotSupportedException e1) {
FRLogger.getLogger().error("Error in Clone");
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
if (del != null && del.contains(clikPoint)) {
int selectedIndex = collection.getSelectedIndex();
collection.removeNameObject(selectedIndex);
if (selectedIndex > 0) {
collection.setSelectedIndex(selectedIndex - 1);
} else {
collection.setSelectedIndex(0);
}
designer.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
}
/**
* 鼠标悬浮上时的数据点提示
*
* @param e 事件
*/
public void mouseMoved(MouseEvent e) {
Point clikPoint = new Point(e.getPoint().x + designer.getArea().getHorizontalValue(), e.getPoint().y + designer.getArea().getVerticalValue());
if (clikPoint.getY() < H_GAP || clikPoint.getY() > H_GAP + ICON_SIZE) {
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
return;
}
ChartCollection collection = (ChartCollection) designer.getTarget().getChartCollection();
for (int i = 0; i < iconLocations.length; i++) {
if (iconLocations[i].contains(clikPoint)) {
overIndex = i;
String chartName = collection.getChartName(i);
ToolTip4Chart.getInstance().showToolTip(chartName,e.getXOnScreen(),e.getYOnScreen());
return;
}
}
ToolTip4Chart.getInstance().hideToolTip();
overIndex = -1;
}
}

18
designer_chart/src/com/fr/design/mainframe/ChartPropertyPane.java

@ -3,26 +3,20 @@
*/
package com.fr.design.mainframe;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.SwingConstants;
import com.fr.design.gui.ilable.UILabel;
import javax.swing.*;
import java.awt.*;
public class ChartPropertyPane extends MiddleChartPropertyPane{
/**
* 创建图表属性表实例.
*/
private synchronized static ChartPropertyPane getInstance() {
if(singleton == null) {
singleton = new ChartPropertyPane();
}
singleton.setSureProperty();
//todo
//创建新图表时,创建属性表配置面板
singleton = new ChartPropertyPane();
return singleton;
}

558
designer_chart/src/com/fr/design/mainframe/ChartToolBarPane.java

@ -1,558 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe;
import com.fr.base.ChartPreStyleManagerProvider;
import com.fr.base.ChartPreStyleServerManager;
import com.fr.base.background.ColorBackground;
import com.fr.chart.base.*;
import com.fr.chart.chartattr.*;
import com.fr.chart.chartglyph.ConditionAttr;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.mainframe.chart.gui.type.ColumnPlotPane4ToolBar;
import com.fr.design.mainframe.chart.gui.type.PlotPane4ToolBar;
import com.fr.general.FRFont;
import com.fr.general.Inter;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-13
* Time: 下午8:32
*/
public class ChartToolBarPane extends JPanel {
public static final int TOTAL_HEIGHT = 42;
private static final int COM_HEIGHT = 22;
private static final int GAP = 7;
private static final int COM_GAP = 14;
private static final int COMBOX_WIDTH = 230;
private static final String[] CHOOSEITEM = new String[]{
Inter.getLocText("FR-Chart-Type_Column"),
Inter.getLocText("FR-Chart-Type_Line"),
Inter.getLocText("FR-Chart-Type_Bar"),
Inter.getLocText("FR-Chart-Type_Pie"),
Inter.getLocText("FR-Chart-Type_Area"),
Inter.getLocText("FR-Chart-Type_XYScatter"),
Inter.getLocText("FR-Chart-Chart_BubbleChart"),
Inter.getLocText("FR-Chart-Type_Radar"),
Inter.getLocText("FR-Chart-Type_Stock"),
Inter.getLocText("FR-Chart-Type_Meter"),
Inter.getLocText("FR-Chart-Type_Range"),
Inter.getLocText("FR-Chart-Type_Comb"),
Inter.getLocText("FR-Chart-Type_Gantt"),
Inter.getLocText("FR-Chart-Type_Donut"),
Inter.getLocText("FR-Chart-Map_Map"),
"gis"+Inter.getLocText("FR-Chart-Map_Map")
};
private UIComboBox chooseComboBox = new UIComboBox(CHOOSEITEM) {
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private JPanel stylePane;
private JPanel plotTypeComboBoxPane;
private UIButton topDownShade = new UIButton(Inter.getLocText("FR-Chart-Style_TopDownShade"));
private UIButton transparent = new UIButton(Inter.getLocText("FR-Chart-Style_Transparent"));
private UIButton plane3D = new UIButton(Inter.getLocText("FR-Chart-Style_Plane3D"));
private UIButton gradient = new UIButton(Inter.getLocText("FR-Chart-Style_GradientHighlight"));
private ItemListener itemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.DESELECTED) {
ChartToolBarPane.this.remove(centerPane);
ChartToolBarPane.this.remove(stylePane);
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(subChartTypesPane,BorderLayout.CENTER);
centerPane = subChartTypesPane;
ChartToolBarPane.this.add(stylePane, BorderLayout.EAST);
} else{
calMapSubChartTypesPane(chooseComboBox.getSelectedIndex());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
ChartToolBarPane.this.validate();
fireTypeChange();
if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.MAP.toInt()){
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
}else if(chooseComboBox.getSelectedIndex() == ChartTypeValueCollection.GIS.toInt()){
mapTypePane.populateMapPane(chart.getChartName());
}
}
}
};
private PlotPane4ToolBar subChartTypesPane;//默认柱形图
private AbstractMapPlotPane4ToolBar mapTypePane;//地图类型选择的面板
private JPanel centerPane;
private ChartDesigner chartDesigner;
private int lastStyleIndex = -1;
private MouseAdapter styleListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
Plot newPlot;
int chartType =chart.getPlot().getPlotType().toInt();
if(chartType >= ChartTypeValueCollection.MAP.toInt()){
return;
}
newPlot = subChartTypesPane.setSelectedClonedPlotWithCondition(chart.getPlot());
chartDesigner.fireTargetModified();
UIButton button = (UIButton)e.getSource();
//如果是第二次选中,就是消除
if(button.isSelected()){
button.setSelected(false);
chart.setPlot(newPlot);
resetChart(chart);
lastStyleIndex = -1;
ChartDesignEditPane.getInstance().populateSelectedTabPane();
return;
}
clearStyleChoose();
setStyle(chart,e,newPlot);
lastStyleIndex = chart.getPlot().getPlotStyle();
}
};
private void setStyle( Chart chart,MouseEvent e,Plot newPlot){
if (e.getSource() == topDownShade) {
topDownShade.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_SHADE);
resetChart(chart);
createCondition4Shade(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == transparent) {
transparent.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_TRANSPARENT);
resetChart(chart);
createCondition4Transparent(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == plane3D) {
plane3D.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_3D);
resetChart(chart);
createCondition4Plane3D(chart);
setPlotFillStyle(chart);
} else if (e.getSource() == gradient) {
gradient.setSelected(true);
chart.setPlot(newPlot);
chart.getPlot().setPlotStyle(ChartConstants.STYLE_OUTER);
resetChart(chart);
createCondition4HighLight(chart);
setPlotFillStyle(chart);
}
chart.setStyleGlobal(true);
ChartEditPane pane = ChartDesignEditPane.getInstance();
pane.styleChange(true);
ChartDesignEditPane.getInstance().populate((ChartCollection)chartDesigner.getTarget().getChartCollection());
pane.styleChange(false);
}
public ChartToolBarPane(ChartDesigner designer) {
chartDesigner = designer;
subChartTypesPane = new ColumnPlotPane4ToolBar(designer);//默认柱形图
this.setLayout(new BorderLayout());
this.setBorder(new EmptyBorder(GAP, COM_GAP, GAP, 0));
plotTypeComboBoxPane = new JPanel();
plotTypeComboBoxPane.setBorder(new EmptyBorder(2, 0, 2, 0));
plotTypeComboBoxPane.setLayout(new BorderLayout());
plotTypeComboBoxPane.add(chooseComboBox, BorderLayout.CENTER);
chooseComboBox.addItemListener(itemListener);
//默认选择第一个
chooseComboBox.setSelectedIndex(0);
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
this.add(stylePane, BorderLayout.EAST);
this.add(subChartTypesPane, BorderLayout.CENTER);
this.centerPane = subChartTypesPane;
topDownShade.addMouseListener(styleListener);
transparent.addMouseListener(styleListener);
plane3D.addMouseListener(styleListener);
gradient.addMouseListener(styleListener);
}
private void initStylePane(){
stylePane = new JPanel() {
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
return new Dimension(size.width, COM_HEIGHT);
}
};
stylePane.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
stylePane.setBorder(new EmptyBorder(3, 0, 3, 0));
stylePane.add(topDownShade);
stylePane.add(transparent);
stylePane.add(plane3D);
stylePane.add(gradient);
}
/**
* 清除工具栏上面全局风格按钮的选中
*/
public void clearStyleChoose() {
topDownShade.setSelected(false);
transparent.setSelected(false);
plane3D.setSelected(false);
gradient.setSelected(false);
}
private void calMapSubChartTypesPane(int index){
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
mapTypePane = PlotToolBarFactory.createToolBar4MapPlot(type,chartDesigner);
}
private void calSubChartTypesPane(int index) {
ChartTypeValueCollection type = ChartTypeValueCollection.parse(index);
subChartTypesPane = PlotToolBarFactory.createToolBar4NormalPlot(type,chartDesigner);
}
private void fireTypeChange() {
if(chooseComboBox.getSelectedIndex() < ChartTypeValueCollection.MAP.toInt()){
subChartTypesPane.fireChange();
}else{
mapTypePane.fireChange();
}
}
//图表区属性清空
private void resetChart(Chart chart) {
chart.setTitle(new Title(chart.getTitle().getTextObject()));
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
setPlotFillStyle(chart);
}
//高光渐变的默认属性设置
private void createCondition4HighLight(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(204, 220, 228));
cateAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(138, 140, 139)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.NONE);
valueAxis.setAxisColor(null);
valueAxis.setTickMarkType(Constants.TICK_MARK_INSIDE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(138, 140, 139)));
//绘图区
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(204, 220, 228));
plot.setBackground(ColorBackground.getInstance(new Color(248, 247, 245)));
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
}
}
}
//平面3D的默认属性设置
private void createCondition4Plane3D(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 16f, new Color(51, 51, 51)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.TOP);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(57, 57, 57));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(57, 57, 57)));
//值轴设置
Axis valueAxis = plot.getyAxis();
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.setTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
valueAxis.setShowAxisLabel(false);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
chart.setBorderStyle(Constants.LINE_NONE);
//数据标签
ConditionAttr attrList = plot.getConditionCollection().getDefaultAttr();
DataSeriesCondition attr = attrList.getExisted(AttrContents.class);
if (attr != null) {
attrList.remove(attr);
}
AttrContents attrContents = new AttrContents();
attrContents.setPosition(Constants.OUTSIDE);
attrContents.setSeriesLabel(ChartConstants.VALUE_PARA);
attrContents.setTextAttr(new TextAttr(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(51, 51, 51))));
attrList.addDataSeriesCondition(attrContents);
}
}
}
//透明风格的默认属性设置
private void createCondition4Transparent(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.LEFT);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(192, 192, 192)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(138, 140, 139)));
legend.setPosition(Constants.RIGHT_TOP);
chart.getPlot().setLegend(legend);
Plot plot = chart.getPlot();
//绘图区
chart.setBackground(ColorBackground.getInstance(new Color(51, 51, 51)));
//分类轴,现在只有柱形图,条形图,面积图
if (plot instanceof CategoryPlot) {
//边框
plot.setBorderStyle(Constants.LINE_THIN);
plot.setBorderColor(new Color(65, 65, 65));
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(192, 192, 192));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(150, 150, 150)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.setAxisStyle(Constants.LINE_NONE);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(150, 150, 150)));
valueAxis.setMainGridStyle(Constants.LINE_THIN);
valueAxis.setMainGridColor(new Color(63, 62, 62));
}
}
}
//渐变的默认属性设置
private void createCondition4Shade(Chart chart) {
if (chart != null) {
//标题
Title title = new Title(chart.getTitle().getTextObject());
chart.setTitle(title);
title.setTitleVisible(true);
TextAttr textAttr = title.getTextAttr();
if (textAttr == null) {
textAttr = new TextAttr();
title.setTextAttr(textAttr);
}
title.setPosition(Constants.CENTER);
textAttr.setFRFont(FRFont.getInstance("Microsoft YaHei", Font.BOLD, 16f, new Color(0, 51, 102)));
//图例
Legend legend = new Legend();
legend.setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 9f, new Color(128, 128, 128)));
legend.setPosition(Constants.BOTTOM);
chart.getPlot().setLegend(legend);
//分类轴,现在只有柱形图,条形图,面积图
if (chart.getPlot() instanceof CategoryPlot) {
CategoryPlot plot = (CategoryPlot) chart.getPlot();
//分类轴设置
Axis cateAxis = plot.getxAxis();
cateAxis.setAxisStyle(Constants.LINE_THICK);
cateAxis.setAxisColor(new Color(73, 100, 117));
cateAxis.setTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setSecTickMarkType(Constants.TICK_MARK_NONE);
cateAxis.setShowAxisLabel(true);
cateAxis.getTextAttr().setFRFont(FRFont.getInstance("Microsoft YaHei", Font.PLAIN, 10f, new Color(128, 128, 128)));
//值轴
Axis valueAxis = plot.getyAxis();
valueAxis.setShowAxisLabel(true);
valueAxis.getTextAttr().setFRFont(FRFont.getInstance("SimSun", Font.PLAIN, 10f, new Color(128, 128, 128)));
valueAxis.setAxisStyle(Constants.LINE_NONE);
//绘图区
plot.getyAxis().setMainGridStyle(Constants.LINE_THIN);
plot.getyAxis().setMainGridColor(new Color(192, 192, 192));
plot.setHorizontalIntervalBackgroundColor(new Color(243, 243, 243));
}
}
}
private void setPlotFillStyle(Chart chart) {
ChartPreStyleManagerProvider manager = ChartPreStyleServerManager.getProviderInstance();
Plot plot = chart.getPlot();
Object preStyle = null;
String name = "";
if (topDownShade.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Retro");
preStyle = manager.getPreStyle(name);
} else if (transparent.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Fresh");
preStyle = manager.getPreStyle(name);
} else if (plane3D.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
} else if (gradient.isSelected()) {
name = Inter.getLocText("FR-Chart-Style_Bright");
preStyle = manager.getPreStyle(name);
}else{
preStyle = null;
}
if (preStyle == null) {
plot.getPlotFillStyle().setColorStyle(ChartConstants.COLOR_DEFAULT);
} else {
AttrFillStyle fillStyle = ((ChartPreStyle) preStyle).getAttrFillStyle();
fillStyle.setFillStyleName(name);
plot.setPlotFillStyle(fillStyle);
}
}
public void populate(){
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
chooseComboBox.removeItemListener(itemListener);
chooseComboBox.setSelectedIndex(chart.getPlot().getPlotType().toInt());
int chartType =chart.getPlot().getPlotType().toInt();
this.removeAll();
populateStyle();
this.add(plotTypeComboBoxPane, BorderLayout.WEST);
initStylePane();
if(chartType < ChartTypeValueCollection.MAP.toInt()){
calSubChartTypesPane(chartType);
subChartTypesPane.setSelectedIndex(chart.getPlot().getDetailType());
ChartToolBarPane.this.add(subChartTypesPane, BorderLayout.CENTER);
this.add(subChartTypesPane, BorderLayout.CENTER);
centerPane = subChartTypesPane;
this.add(stylePane, BorderLayout.EAST);
}else if(chartType == ChartTypeValueCollection.MAP.toInt()){
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane(((MapPlot) chart.getPlot()).getMapName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}else{
calMapSubChartTypesPane(chartType);
mapTypePane.populateMapPane((chart.getPlot()).getPlotName());
ChartToolBarPane.this.add(mapTypePane, BorderLayout.CENTER);
centerPane = mapTypePane;
}
ChartToolBarPane.this.validate();
chooseComboBox.addItemListener(itemListener);
}
private void populateStyle() {
clearStyleChoose();
ChartCollection chartCollection = (ChartCollection) chartDesigner.getTarget().getChartCollection();
Chart chart = chartCollection.getSelectedChart();
int plotStyle = chart.getPlot().getPlotStyle();
switch (plotStyle) {
case ChartConstants.STYLE_SHADE:
topDownShade.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_TRANSPARENT:
transparent.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_3D:
plane3D.setSelected(chart.isStyleGlobal() && true);
break;
case ChartConstants.STYLE_OUTER:
gradient.setSelected(chart.isStyleGlobal() && true);
break;
default:
clearStyleChoose();
break;
}
lastStyleIndex = plotStyle;
}
}

98
designer_chart/src/com/fr/design/mainframe/DesignerFrame4Chart.java

@ -1,98 +0,0 @@
package com.fr.design.mainframe;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.actions.UpdateVersion;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class DesignerFrame4Chart extends DesignerFrame {
/**
* Constructor.
*
* @param ad
*/
public DesignerFrame4Chart(ToolBarMenuDock ad) {
super(ad);
}
protected ArrayList<WindowListener> getFrameListeners(){
ArrayList<WindowListener> listeners = super.getFrameListeners();
listeners.add(0, new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
super.windowOpened(e);
judgeFirstUseWhenStart();
}
});
return listeners;
}
/**
* 退出
*/
public void exit() {
ChartEnvManager.getEnvManager().saveXMLFile();
super.exit();
}
//不需要西侧的文件树面板
protected void laoyoutWestPane(){
}
protected void judgeFirstUseWhenStart(){
boolean isNeed2Check =ChartEnvManager.getEnvManager().isPushUpdateAuto() || ChartEnvManager.getEnvManager().isOverOneMonth();
if(!StableUtils.checkDesignerActive(ChartEnvManager.getEnvManager().getActivationKey())
|| isNeed2Check){
ChartEnvManager.getEnvManager().setActivationKey(ChartEnvManager.ACTIVE_KEY);
checkVersion();
if(ChartEnvManager.getEnvManager().isOverOneMonth()){
ChartEnvManager.getEnvManager().resetCheckDate();
}
}
}
private void checkVersion(){
new UpdateVersion(){
protected void done() {
try {
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
if(!ComparatorUtils.equals(ProductConstants.RELEASE_VERSION, version)){
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

203
designer_chart/src/com/fr/design/mainframe/GisMapPlotPane4ToolBar.java

@ -1,203 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartConstants;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GisMapIndependentChart;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 下午3:11
*/
public class GisMapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar {
private static final int BAIDU = 0;
private static final int GOOGLE= 1;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-Map_Baidu"),
Inter.getLocText("FR-Chart-Map_Google")};
private UITextField keyField = new UITextField(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private DocumentListener keyListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void removeUpdate(DocumentEvent e) {
fireKeyChange();
}
@Override
public void changedUpdate(DocumentEvent e) {
fireKeyChange();
}
} ;
private void fireKeyChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot =(GisMapPlot) chart.getPlot();
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
chartDesigner.fireTargetModified();
}
public GisMapPlotPane4ToolBar(final ChartDesigner chartDesigner){
super(chartDesigner);
this.add(getKeyPane());
keyField.getDocument().addDocumentListener(keyListener);
}
private JPanel getKeyPane(){
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p,f};
double[] rowSize = {p};
Component[][] components = new Component[][]{
new Component[]{new UILabel("key"),keyField},
};
return TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
}
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case BAIDU:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
break;
case GOOGLE:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Google"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-Map_Baidu"));
}
fireMapChange();
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
}
protected void populateDetilMaps(String mapType){
mapTypeComboBox.removeItemListener(mapTypeListener);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
GisMapPlot plot = (GisMapPlot) chart.getPlot();
keyField.getDocument().removeDocumentListener(keyListener);
if(plot.isGisType()){
keyField.setText(plot.getBaiduKey());
mapTypeComboBox.setSelectedIndex(0);
}else{
keyField.setText(plot.getGoogleKey());
mapTypeComboBox.setSelectedIndex(1);
}
keyField.getDocument().addDocumentListener(keyListener);
mapTypeComboBox.addItemListener(mapTypeListener);
}
private void fireMapChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().getPlotStyle() != ChartConstants.STYLE_NONE){
resetChart(chart);
}
Chart[] cs = GisMapIndependentChart.gisChartTypes;
GisMapPlot plot;
if (cs.length > 0) {
try {
plot = (GisMapPlot)cs[0].getPlot().clone();
} catch (Exception e) {
plot = new GisMapPlot();
}
} else {
plot = new GisMapPlot();
}
try {
chart.switchPlot((Plot)plot.clone());
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisChart");
chart.switchPlot(new GisMapPlot());
}
plot = (GisMapPlot) chart.getPlot();
boolean index = plot.isGisType();
plot.setGisType(mapTypeComboBox.getSelectedIndex() == 1);
if(index != plot.isGisType()){
if(plot.isGisType()){
this.keyField.setText(plot.getBaiduKey());
}else{
this.keyField.setText(plot.getGoogleKey());
}
}else{
String key = this.keyField.getText().trim();
if(plot.isGisType() && key != plot.getBaiduKey()){
plot.setBaiduKey(key);
}else if(!plot.isGisType() && key != plot.getGoogleKey()){
plot.setGoogleKey(key);
}
}
chartDesigner.fireTargetModified();
}
protected Plot getSelectedClonedPlot() {
Chart[] mapChart = GisMapIndependentChart.gisChartTypes;
GisMapPlot newPlot;
if (mapChart.length > 0) {
try {
newPlot = (GisMapPlot)mapChart[0].getPlot().clone();
} catch (Exception e) {
newPlot = new GisMapPlot();
}
} else {
newPlot = new GisMapPlot();
}
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GisMapChart");
}
return cloned;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

339
designer_chart/src/com/fr/design/mainframe/MapArrayPane.java

@ -1,339 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgAttr;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.design.DesignerEnvManager;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.controlpane.*;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilist.JNameEdList;
import com.fr.design.gui.ilist.ListModelElement;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.stable.CoreConstants;
import com.fr.stable.Nameable;
import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/3
* Time: 上午10:00
*/
public class MapArrayPane extends JListControlPane {
private static final int LEFT_WIDTH = 180;
private static final Color LINE_COLOR = new Color(176, 176, 176);
private static final int TOP_GAP = 5;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String mapType;
private String mapDetailName;
MapPlotPane4ToolBar toolBar;
UIComboBox mapTypeBox;
private ArrayList<String> editedNames = new ArrayList<String>();
private ItemListener typeListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
MapArrayPane.this.updateBeans();
mapType = mapTypeBox.getSelectedItem().toString();
MapArrayPane.this.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapType));
}
};
private ArrayList<String> removeNames = new ArrayList<String>();
private MapEditPane mapEditPane;
private ChartDesigner chartDesigner;
public MapArrayPane(String mapType, String mapDetailName,ChartDesigner chartDesigner) {
this.mapDetailName = mapDetailName;
this.mapType = mapType;
if (mapTypeBox != null) {
mapTypeBox.setSelectedItem(mapType);
}
this.chartDesigner = chartDesigner;
mapTypeBox.addItemListener(typeListener);
this.setBorder(new EmptyBorder(TOP_GAP, 0, 0, 0));
this.addEditingListner(new PropertyChangeAdapter() {
public void propertyChange() {
dealPropertyChange();
}
});
}
public void setToolBarPane(MapPlotPane4ToolBar pane) {
this.toolBar = pane;
}
protected void doWhenPopulate(BasicBeanPane beanPane) {
mapEditPane = (MapEditPane)beanPane;
mapEditPane.dealWidthMap(mapType);
String editingName = ((MapEditPane)beanPane).getCurrentMapName();
if(!editedNames.contains(editingName)){
editedNames.add(editingName);
}
}
protected JPanel getLeftPane() {
JPanel centerPane = super.getLeftPane();
mapTypeBox = new UIComboBox(TYPE_NAMES);
JPanel leftPane = new JPanel();
leftPane.setLayout(new BorderLayout());
leftPane.setBorder(new EmptyBorder(3, 0, 0, 0));
leftPane.add(mapTypeBox, BorderLayout.NORTH);
leftPane.add(centerPane, BorderLayout.CENTER);
return leftPane;
}
private void dealPropertyChange() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
java.util.List nameList =helper.getNamesListWithCateName(mapType);
String[] allListNames = nameableList.getAllNames();
allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY;
String tempName = getEditingName();
if (StringUtils.isEmpty(tempName)) {
String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"};
String[] sign = new String[]{",", "!"};
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this), Inter.getLocText(warning, sign));
setWarnigText(editingIndex);
return;
}
if (!ComparatorUtils.equals(tempName, selectedName)
&& isNameRepeted(new List[]{nameList, Arrays.asList(allListNames)}, tempName)) {
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(MapArrayPane.this),
Inter.getLocText(new String[]{"FR-Chart-Map_NameAlreadyExist", "Please_Rename"}, new String[]{",", "!"}));
setWarnigText(editingIndex);
return;
}
String oldname = mapEditPane.getCurrentMapName();
mapEditPane.setCurrentMapName(tempName);
mapEditPane.dealWidthMap(mapType);
if(editedNames.contains(oldname)){
editedNames.remove(oldname);
editedNames.add(tempName);
}
if(helper.getNewMapAttr(oldname) != null){
MapSvgAttr attr = helper.getNewMapAttr(oldname);
attr.renameMap(tempName);
helper.removeNewMapAttr(oldname);
helper.addNewSvgMaps(tempName,attr);
}
this.toolBar.fireTargetModified();
this.saveMapInfo(tempName);
}
protected void doAfterRemove(){
for(String map2Remove : removeNames){
MapSvgXMLHelper.getInstance().removeMapAttr(map2Remove);
MapSvgXMLHelper.getInstance().removeNewMapAttr(map2Remove);
}
update4AllType();
}
protected void doBeforeRemove(){
removeNames.clear();
for(int index : nameableList.getSelectedIndices()){
removeNames.add(nameableList.getNameAt(index));
}
}
//保存修改过的地图信息
private void saveMapInfo(final String mapName) {
SwingWorker worker = new SwingWorker<Integer, Void>() {
@Override
protected Integer doInBackground() throws Exception {
MapSvgAttr attr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);// 只有在编辑地图时才需要储存相关数据 @kuns
if (attr != null) {
attr.writeBack(mapName);
}
return 0;
}
@Override
protected void done() {
FRLogger.getLogger().info(Inter.getLocText("FR-Chart-Map_Saved")); // 地图已经保存.
}
};
worker.execute();
DesignerEnvManager.addWorkers(worker);
}
private void update4AllType() {
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
helper.clearNames4Cate(mapType);
for(String name : nameableList.getAllNames()){
MapSvgAttr attr = helper.getMapAttr(name);
if(attr == null){
continue;
}
helper.addCateNames(attr.getMapType(),attr.getName());
}
}
/**
* 创建菜单
*
* @return 菜单
*/
public NameableCreator[] createNameableCreators() {
return new NameableCreator[]{
new NameableSelfCreator(Inter.getLocText("FR-Chart-Custom_Map"), MapSvgAttr.class, MapEditPane.class) {
public MapSvgAttr createNameable(UnrepeatedNameHelper helper) {
MapSvgAttr attr = new MapSvgAttr();
attr.setFilePath(MapSvgXMLHelper.customMapPath() + CoreConstants.SEPARATOR + helper.createUnrepeatedName(Inter.getLocText("FR-Chart-Custom_Map")) + ".svg");
MapSvgXMLHelper.getInstance().addNewSvgMaps(attr.getName(), attr);
update4Edited(attr.getName());
// 返回参数设置面板.
return attr;
}
@Override
public String createTooltip() {
return null;
}
public void saveUpdatedBean(ListModelElement wrapper, Object bean) {
wrapper.wrapper = (Nameable)bean;
}
}
};
}
protected boolean isCreatorNeedIocn() {
return false;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
};
}
protected int getLeftPreferredSize() {
return LEFT_WIDTH;
}
@Override
protected String title4PopupWindow() {
return Inter.getLocText(new String[]{"FR-Chart-Map_Map", "FR-Chart-Data_Edit"});
}
/**
* 更新
*/
public void updateBeans() {
super.update();
this.update4AllType();
this.updateAllEditedAttrMaps();
MapSvgXMLHelper.getInstance().clearTempAttrMaps();
//versionID递增
this.toolBar.fireTargetModified();
this.saveMapInfo(selectedName);
}
/**
* 创建list
* @return 返回list
*/
public JNameEdList createJNameList() {
JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) {
public Rectangle createRect(Rectangle rect, int iconWidth) {
return rect;
}
protected void doAfterLostFocus() {
MapArrayPane.this.updateControlUpdatePane();
}
public void setNameAt(String name, int index) {
super.setNameAt(name,index);
update4Edited(name);
}
};
nameEdList.setCellRenderer(new NameableListCellRenderer());
return nameEdList;
}
protected void update4Edited(String editingName){
}
private void updateAllEditedAttrMaps(){
MapSvgXMLHelper helper = MapSvgXMLHelper.getInstance();
for(String editedName : editedNames){
if(helper.getMapAttr(editedName)!=null){
helper.getMapAttr(editedName).writeBack(editedName);
}else if(helper.getNewMapAttr(editedName)!=null){
helper.getNewMapAttr(editedName).writeBack(editedName);
}
}
}
//根据地图的名字返回地图的图片
private Image getMapImage(String mapName) {
if (MapSvgXMLHelper.getInstance().containsMapName(mapName)) {
MapSvgAttr mapAttr = MapSvgXMLHelper.getInstance().getMapAttr(mapName);
if (mapAttr == null) {
return null;
}
return mapAttr.getMapImage();
}
return null;
}
/*
* Nameable的ListCellRenerer
*/
private class NameableListCellRenderer extends
DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
if (value instanceof ListModelElement) {
Nameable wrappee = ((ListModelElement) value).wrapper;
this.setText(((ListModelElement) value).wrapper.getName());
for (NameableCreator creator : MapArrayPane.this.creators()) {
if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) {
this.setIcon(creator.menuIcon());
this.setToolTipText(creator.createTooltip());
break;
}
}
}
return this;
}
}
}

210
designer_chart/src/com/fr/design/mainframe/MapPlotPane4ToolBar.java

@ -1,210 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.MapSvgXMLHelper;
import com.fr.chart.chartattr.*;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.StringUtils;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* Date: 14/12/1
* Time: 上午11:57
*/
public class MapPlotPane4ToolBar extends AbstractMapPlotPane4ToolBar{
private static final int WORLD_MAP = 0;
private static final int STATE_MAP = 1;
private static final int PROVINCE_MAP = 2;
private static final int CUSTOM_MAP = 3;
private static final int BUTTON_WIDTH = 44;
private static final String[] TYPE_NAMES = new String[]{
Inter.getLocText("FR-Chart-World_Map"),
Inter.getLocText("FR-Chart-State_Map"),
Inter.getLocText("FR-Chart-Province_Map"),
Inter.getLocText("FR-Chart-Custom_Map")};
private String lastEditingName =StringUtils.EMPTY;
private UIButton mapEditButton = new UIButton(Inter.getLocText("FR-Chart-Data_Edit")){
public Dimension getPreferredSize() {
return new Dimension(BUTTON_WIDTH, COM_HEIGHT);
}
};
protected UIComboBox detailMaps = new UIComboBox(){
public Dimension getPreferredSize() {
return new Dimension(COMBOX_WIDTH, COM_HEIGHT);
}
};
private ItemListener detailListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireMapChange();
}
};
private ActionListener mapEditListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedName =StringUtils.EMPTY;
if(detailMaps.getSelectedItem() != null){
selectedName = detailMaps.getSelectedItem().toString();
}
final MapArrayPane mapArrayPane = new MapArrayPane(mapTypeComboBox.getSelectedItem().toString(),selectedName,chartDesigner){
public void updateBeans() {
super.updateBeans();
if(reCalculateDetailsMaps(mapTypeComboBox.getSelectedItem().toString(),lastEditingName) ||
ComparatorUtils.equals(StringUtils.EMPTY,lastEditingName)){
detailMaps.setSelectedItem(lastEditingName);
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
com.fr.chart.chartattr.Chart chart =chartCollection.getSelectedChart();
if(chart.getPlot().isMapPlot()){
MapPlot mapPlot = (MapPlot) chart.getPlot();
mapPlot.setMapName(lastEditingName);
}
}
}
protected void update4Edited(String editingName){
lastEditingName = editingName;
}
};
BasicDialog mapArrayDialog = mapArrayPane.showWindow4ChartMapArray(DesignerContext.getDesignerFrame(),
new DialogActionAdapter() {
@Override
public void doOk() {
mapArrayPane.updateBeans();
}
});
mapArrayDialog.setModal(true);
mapArrayPane.setToolBarPane(MapPlotPane4ToolBar.this);
mapArrayPane.populate(MapSvgXMLHelper.getInstance().getAllMapObjects4Cate(mapTypeComboBox.getSelectedItem().toString()));
if(detailMaps.getSelectedItem() != null){
mapArrayPane.setSelectedName(detailMaps.getSelectedItem().toString());
}
mapArrayDialog.setVisible(true);
}
};
public MapPlotPane4ToolBar(ChartDesigner chartDesigner){
super(chartDesigner);
this.add(detailMaps);
detailMaps.addItemListener(detailListener);
mapEditButton.addActionListener(mapEditListener);
this.add(mapEditButton);
}
/**
* 更新地图面板
* @param mapType 地图名字
*/
public void populateMapPane(String mapType){
super.populateMapPane(mapType);
populateDetilMaps(mapTypeComboBox.getSelectedItem().toString());
detailMaps.removeItemListener(detailListener);
detailMaps.setSelectedItem(mapType);
detailMaps.addItemListener(detailListener);
}
/**
* 触发地图改变
*/
public void fireMapChange(){
MapPlot plot = new MapPlot();
String selectedName = StringUtils.EMPTY;
if(detailMaps.getSelectedItem() !=null ){
selectedName = detailMaps.getSelectedItem().toString();
}
plot.setMapName(selectedName);// 名字问题
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.setPlot(plot);
ChartDesignEditPane.getInstance().populate(chartCollection);
chartDesigner.fireTargetModified();
}
//默认选中国家地图
protected void calculateDetailMaps(int mapType){
switch (mapType) {
case WORLD_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-World_Map"));
break;
case STATE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
break;
case PROVINCE_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Province_Map"));
break;
case CUSTOM_MAP:
populateDetilMaps(Inter.getLocText("FR-Chart-Custom_Map"));
break;
default:
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
}
fireMapChange();
}
private boolean reCalculateDetailsMaps(String mapType ,String detailMap){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
boolean isContains = false;
for (Object name : list) {
detailMaps.addItem(name);
if(ComparatorUtils.equals(detailMap,name)){
isContains = true;
}
}
detailMaps.addItemListener(detailListener);
return isContains;
}
protected void populateDetilMaps(String mapType){
detailMaps.removeItemListener(detailListener);
detailMaps.removeAllItems();
java.util.List list = MapSvgXMLHelper.getInstance().getNamesListWithCateName(mapType);
for (Object name : list) {
detailMaps.addItem(name);
}
detailMaps.addItemListener(detailListener);
if(detailMaps.getSelectedItem() != null){
lastEditingName = detailMaps.getSelectedItem().toString();
}
}
protected Plot getSelectedClonedPlot() {
MapPlot mapPlot = new MapPlot();
populateDetilMaps(Inter.getLocText("FR-Chart-State_Map"));
if(detailMaps.getSelectedItem()!= null && !StringUtils.isEmpty(detailMaps.getSelectedItem().toString())){
mapPlot.setMapName(detailMaps.getSelectedItem().toString());
}
return mapPlot;
}
public String[] getMapTypes(){
return TYPE_NAMES;
}
}

18
designer_chart/src/com/fr/design/mainframe/MiddleChartPropertyPane.java

@ -3,14 +3,10 @@
*/
package com.fr.design.mainframe;
import java.awt.BorderLayout;
import javax.swing.Icon;
import javax.swing.JComponent;
import com.fr.base.BaseUtils;
import com.fr.base.chart.BaseChartCollection;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.designer.TargetComponent;
import com.fr.design.gui.chart.BaseChartPropertyPane;
import com.fr.design.gui.chart.ChartEditPaneProvider;
@ -21,6 +17,9 @@ import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.general.Inter;
import com.fr.stable.StableUtils;
import javax.swing.*;
import java.awt.*;
public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{
protected TargetComponentContainer container = new TargetComponentContainer();
@ -38,10 +37,15 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{
createNameLabel();
this.add(createNorthComponent(), BorderLayout.NORTH);
chartEditPane = StableUtils.construct(ChartEditPane.class);
chartEditPane.setSupportCellData(true);
}
public void addChartEditPane(String plotID){
chartEditPane = ChartTypeInterfaceManager.getInstance().getChartEditPane(plotID);
chartEditPane.setSupportCellData(true);
this.createMainPane();
setSureProperty();
}
protected abstract void createNameLabel();
@ -86,6 +90,8 @@ public abstract class MiddleChartPropertyPane extends BaseChartPropertyPane{
* @param ePane 面板
*/
public void populateChartPropertyPane(ChartCollection collection, TargetComponent<?> ePane) {
addChartEditPane(collection.getSelectedChart().getPlot().getPlotID());
setSupportCellData(true);
this.container.setEPane(ePane);
chartEditPane.populate(collection);
}

90
designer_chart/src/com/fr/design/mainframe/PlotToolBarFactory.java

@ -1,90 +0,0 @@
package com.fr.design.mainframe;
import com.fr.chart.base.ChartTypeValueCollection;
import com.fr.design.mainframe.chart.gui.type.*;
import com.fr.general.FRLogger;
import java.lang.reflect.Constructor;
import java.util.HashMap;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器工具栏面板的工厂类
*/
public class PlotToolBarFactory {
private static HashMap<ChartTypeValueCollection,Class<? extends PlotPane4ToolBar>> panes4NormalPlot =
new HashMap<ChartTypeValueCollection, Class<? extends PlotPane4ToolBar>>();
private static HashMap<ChartTypeValueCollection,Class<? extends AbstractMapPlotPane4ToolBar>> panes4MapPlot =
new HashMap<ChartTypeValueCollection, Class<? extends AbstractMapPlotPane4ToolBar>>();
static {
panes4NormalPlot.put(ChartTypeValueCollection.COLUMN, ColumnPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.LINE, LinePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BAR, BarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.PIE, PiePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.AREA,AreaPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.XYSCATTER,XYSCatterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.BUBBLE,BubblePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RADAR,RadarPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.STOCK,StockPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.METER,MeterPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.RANGE,RangePlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.COMB,CustomPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.GANTT,GanttPlotPane4ToolBar.class);
panes4NormalPlot.put(ChartTypeValueCollection.DONUT,DonutPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.MAP,MapPlotPane4ToolBar.class);
panes4MapPlot.put(ChartTypeValueCollection.GIS,GisMapPlotPane4ToolBar.class);
}
private PlotToolBarFactory(){
}
/**
* 为了地图和gis以外的图表类型创建工具栏
* @param type 图表类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static PlotPane4ToolBar createToolBar4NormalPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4NormalPlot.containsKey(type)){
return new ColumnPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends PlotPane4ToolBar> cls = panes4NormalPlot.get(type);
Constructor<? extends PlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new ColumnPlotPane4ToolBar(chartDesigner);
}
}
/**
*为地图和gis创建工具栏
* @param type 类型
* @param chartDesigner 图表设计器
* @return 工具栏
*/
public static AbstractMapPlotPane4ToolBar createToolBar4MapPlot(ChartTypeValueCollection type,ChartDesigner chartDesigner){
if(!panes4MapPlot.containsKey(type)){
return new MapPlotPane4ToolBar(chartDesigner);
}
try {
Class<? extends AbstractMapPlotPane4ToolBar> cls = panes4MapPlot.get(type);
Constructor<? extends AbstractMapPlotPane4ToolBar > constructor = cls.getConstructor(ChartDesigner.class);
return constructor.newInstance(chartDesigner);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return new MapPlotPane4ToolBar(chartDesigner);
}
}
}

91
designer_chart/src/com/fr/design/mainframe/ToolTip4Chart.java

@ -1,91 +0,0 @@
package com.fr.design.mainframe;
import com.fr.base.GraphHelper;
import com.fr.base.background.ColorBackground;
import com.fr.stable.CoreConstants;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.RoundRectangle2D;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-25
* Time: 下午4:11
*/
public class ToolTip4Chart extends JWindow {
private static ToolTip4Chart instance = new ToolTip4Chart();
private static final int HGAP = 5;
private static final int VGAP = 3;
private static final int FONT_SIZE = 12;
private ToolTipStringPane stringPane;
private Font font = new Font("Dialog", Font.PLAIN, FONT_SIZE);
public ToolTip4Chart() {
stringPane = new ToolTipStringPane();
this.getContentPane().add(stringPane);
}
public static ToolTip4Chart getInstance() {
if (instance == null) {
instance = new ToolTip4Chart();
}
return instance;
}
/**
* 现实提示信息
*
* @param toolTip 提示信息
* @param xAbs 绝对位置x
* @param yAbs 绝对位置Y
*/
public void showToolTip(String toolTip, int xAbs, int yAbs) {
stringPane.text = toolTip.trim();
Dimension2D dim = GraphHelper.stringDimensionWithRotation(toolTip, font, 0, CoreConstants.DEFAULT_FRC);
this.setSize(new Dimension((int) dim.getWidth() + HGAP * 2, (int) dim.getHeight() + VGAP * 2));
stringPane.setPreferredSize(new Dimension((int) dim.getWidth(), (int) dim.getHeight()));
if (!this.isVisible()) {
this.setVisible(true);
if (xAbs + this.getWidth() > Toolkit.getDefaultToolkit().getScreenSize().width) {
xAbs -= this.getWidth();
}
this.setLocation(xAbs, yAbs+HGAP*2);
}
}
/**
* 隐藏弹出框
*/
public void hideToolTip() {
this.setVisible(false);
}
private class ToolTipStringPane extends JPanel {
String text;
public ToolTipStringPane() {
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (!isOpaque()) {
return;
}
g.setFont(font);
Rectangle r = new Rectangle(0, 0, this.getWidth(), this.getHeight());
ColorBackground background = ColorBackground.getInstance(Color.white);
background.paint(g, new RoundRectangle2D.Double(r.getX(), r.getY(), r.getWidth(), r.getHeight(), HGAP, HGAP));
Graphics2D g2d = (Graphics2D) g;
g2d.drawString(text, HGAP, this.getHeight() - HGAP);
}
}
}

170
designer_chart/src/com/fr/design/mainframe/actions/ChartDownLoadWorker.java

@ -1,170 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.file.SaveSomeTemplatePane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartDownLoadWorker extends SwingWorker<Void, Double>{
private static final String FILE_PATH = "http://chart.finedevelop.com/update/";
private static final String VERSION = "version";
private static final String TEMP = "_temp";
private static final int BYTE = 153600;
private static final int FILE_BYTE = 1024;
private HashMap<String,String> files = new HashMap<String, String>();
public ChartDownLoadWorker() {
}
private void loadFilesPaths() throws Exception {
files.clear();
final String installHome = StableUtils.getInstallHome();
JSONObject serverVersion = UpdateVersion.getJsonContent();
if(serverVersion == null){
return;
}
Iterator<String> keys = serverVersion.keys();
while (keys.hasNext()){
String jarName = keys.next();
if(!ComparatorUtils.equals(jarName, VERSION)){
String filePath = (String) serverVersion.get(jarName);
String path =installHome + filePath.substring(2);
files.put(jarName,path);
}
}
files.isEmpty();
}
@Override
protected Void doInBackground() throws Exception {
try {
loadFilesPaths();
Set key = files.keySet();
Iterator iterator = key.iterator();
int totalSize = 0;
//先得到所有的长度,方便计算百分比
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
URLConnection connection = url.openConnection();
totalSize += connection.getContentLength();
}
int totalBytesRead = 0;
iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String jarUrl = FILE_PATH + jarName;
URL url = new URL(jarUrl);
InputStream reader = url.openStream();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileOutputStream writer = new FileOutputStream(tmpFilePath);
byte[] buffer = new byte[BYTE];
int bytesRead = 0;
while ((bytesRead = reader.read(buffer)) > 0) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[BYTE];
totalBytesRead += bytesRead;
publish(totalBytesRead/(double)totalSize);
}
}
} catch (Exception e) {
throw new Exception("Update Failed !" + e.getMessage());
}
return null;
}
//替换更新下来的临时文件
protected void replaceFiles(){
try {
Set key = files.keySet();
Iterator iterator = key.iterator();
while (iterator.hasNext()) {
String jarName = (String) iterator.next();
String filePath = files.get(jarName);
int point = filePath.lastIndexOf(".");
//先写临时文件,防止更新一半意外中止
String tmpFilePath = filePath.substring(0,point)+TEMP+filePath.substring(point);
FileInputStream inputStream = new FileInputStream(tmpFilePath);
FileOutputStream writer = new FileOutputStream(filePath);
byte[] buffer = new byte[FILE_BYTE];
int bytesRead = 0;
while ((bytesRead = inputStream.read(buffer))>0){
writer.write(buffer,0,bytesRead);
buffer = new byte[FILE_BYTE];
}
writer.flush();
writer.close();
inputStream.close();
}
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage());
}
}
/**
* 完成时的动作
*/
public void done() {
//检测是否没有保存的模版
SaveSomeTemplatePane saveSomeTempaltePane = new SaveSomeTemplatePane(true);
// 只有一个文件未保存时
if (HistoryTemplateListPane.getInstance().getHistoryCount() == 1) {
int choose = saveSomeTempaltePane.saveLastOneTemplate();
if (choose != JOptionPane.CANCEL_OPTION) {
restartChartDesigner();
}
} else {
if (saveSomeTempaltePane.showSavePane()) {
restartChartDesigner();
}
}
}
private void restartChartDesigner(){
String installHome = StableUtils.getInstallHome();
if(StringUtils.isEmpty(installHome) || ComparatorUtils.equals(".",installHome)){
DesignerContext.getDesignerFrame().exit();
return;
}
try {
String path = installHome + File.separator + "bin" + File.separator + "restart.bat";
ProcessBuilder builder = new ProcessBuilder(path,installHome);
builder.start();
DesignerContext.getDesignerFrame().exit();
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}

51
designer_chart/src/com/fr/design/mainframe/actions/ChartFeedBackAciton.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.help.FeedBackAction;
import com.fr.design.actions.help.FeedBackPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrame;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class ChartFeedBackAciton extends FeedBackAction{
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
final DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
ChartFeedBackPane feedBackPane = new ChartFeedBackPane();
BasicDialog basicDialog =feedBackPane.showWindow(designerFrame,false);
feedBackPane.setFeedbackDialog(basicDialog);
basicDialog.setVisible(true);
}
private class ChartFeedBackPane extends FeedBackPane{
protected JPanel getContactPane() {
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("email") + ":", SwingConstants.RIGHT), email},
new Component[]{new UILabel(Inter.getLocText("mobile_number") + ":", SwingConstants.RIGHT), phone}
};
double[] rowSize = {p, p, p};
double[] columnSize = {p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
}
}
}

25
designer_chart/src/com/fr/design/mainframe/actions/ChartUpdateAction.java

@ -1,25 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.UpdateAction;
import java.awt.event.ActionEvent;
/**
* @author : richie
* @since : 8.0
*/
public class ChartUpdateAction extends UpdateAction {
private static final String DOWNLOAD_DESIGNER="";
private static final String DOWNLOAD_CHART="";
private static final String DOWNLOAD_THIRD="";
public ChartUpdateAction() {
}
@Override
public void actionPerformed(ActionEvent e) {
}
}

56
designer_chart/src/com/fr/design/mainframe/actions/ChartWebAction.java

@ -1,56 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.base.BaseUtils;
import com.fr.design.actions.UpdateAction;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.Inter;
import com.fr.start.StartServer;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* 图表设计器得产品演示
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-27
* Time: 下午9:01
*/
public class ChartWebAction extends UpdateAction {
public ChartWebAction() {
this.setMenuKeySet(getSelfMenuKeySet());
this.setName(getMenuKeySet().getMenuName());
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_help/demo.png"));
}
private MenuKeySet getSelfMenuKeySet(){
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'D';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Product_Demo");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
* 动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
StartServer.browerURLWithLocalEnv("http://www.vancharts.com/demo.html");
return;
}
}

35
designer_chart/src/com/fr/design/mainframe/actions/OpenChartAction.java

@ -1,35 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.actions.file.OpenTemplateAction;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.file.FILEChooserPane4Chart;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-20
* Time: 下午7:35
*/
public class OpenChartAction extends OpenTemplateAction {
/**
* 动作
* @param evt 事件
*/
public void actionPerformed(ActionEvent evt) {
FILEChooserPane fileChooser = FILEChooserPane4Chart.getInstance(true, true);
if (fileChooser.showOpenDialog(DesignerContext.getDesignerFrame(),".crt")
== FILEChooserPane.OK_OPTION) {
final FILE file = fileChooser.getSelectedFILE();
if (file == null) {//选择的文件不能是 null
return;
}
DesignerContext.getDesignerFrame().openTemplate(file);
}
}
}

74
designer_chart/src/com/fr/design/mainframe/actions/UpdateOnlineAction.java

@ -1,74 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.design.ChartEnvManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.chart.UpdateOnLinePane;
import com.fr.design.menu.MenuKeySet;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.json.JSONObject;
import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 图表设计器在线更新
*/
public class UpdateOnlineAction extends UpdateAction {
public UpdateOnlineAction() {
this.setMenuKeySet(getKeySet());
this.setName(getMenuKeySet().getMenuKeySetName() + "...");
this.setMnemonic(getMenuKeySet().getMnemonic());
}
private MenuKeySet getKeySet() {
return new MenuKeySet() {
@Override
public char getMnemonic() {
return 'U';
}
@Override
public String getMenuName() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
@Override
public KeyStroke getKeyStroke() {
return null;
}
};
}
/**
*动作
* @param e 事件
*/
public void actionPerformed(ActionEvent e) {
new UpdateVersion(){
protected void done() {
try {
ChartEnvManager.getEnvManager().resetCheckDate();
JSONObject serverVersion = get();
String version = serverVersion.getString(UpdateVersion.VERSION);
UpdateOnLinePane updateOnLinePane = new UpdateOnLinePane(StringUtils.isEmpty(version)? ProductConstants.RELEASE_VERSION:version);
BasicDialog dg = updateOnLinePane.showWindow4UpdateOnline(DesignerContext.getDesignerFrame());
updateOnLinePane.setParentDialog(dg);
dg.setVisible(true);
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
}
}
}.execute();
}
}

69
designer_chart/src/com/fr/design/mainframe/actions/UpdateVersion.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.actions;
import com.fr.general.FRLogger;
import com.fr.json.JSONObject;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
*/
public class UpdateVersion extends SwingWorker<JSONObject,Void> {
private static final String VERSION_URL ="http://chart.finedevelop.com/update/update.json";
private static final int TIME_OUT = 300;//5s
public static final String VERSION = "version";
public UpdateVersion(){
}
@Override
protected JSONObject doInBackground() throws Exception {
return getJsonContent();
}
public static JSONObject getJsonContent() throws Exception{
String res = null;
try {
res = readVersionFromServer(TIME_OUT);
} catch (IOException e) {
FRLogger.getLogger().error(e.getMessage());
}
return new JSONObject(res);
}
/**
* 从服务器读取版本
*/
private static String readVersionFromServer(int timeOut) throws IOException {
URL getUrl = new URL(VERSION_URL);
// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection();
connection.setReadTimeout(timeOut);
// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到
// 服务器
connection.connect();
// 取得输入流,并使用Reader读取
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf8"));//设置编码,否则中文乱码
String lines;
StringBuffer sb = new StringBuffer();
while ((lines = reader.readLine()) != null) {
sb.append(lines);
}
reader.close();
// 断开连接
connection.disconnect();
return sb.toString();
}
}

55
designer_chart/src/com/fr/design/mainframe/chart/ChartDesignEditPane.java

@ -1,55 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.chart.gui.*;
import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午5:47
*/
public class ChartDesignEditPane extends ChartEditPane {
private static ChartDesignEditPane instance;
private boolean isFromToolBar = false;
public synchronized static ChartEditPane getInstance() {
if (instance == null) {
instance = new ChartDesignEditPane();
}
return instance;
}
public ChartDesignEditPane() {
paneList = new ArrayList<AbstractChartAttrPane>();
dataPane4SupportCell = new ChartDesignerDataPane(listener);
paneList.add(dataPane4SupportCell);
paneList.add(new StylePane4Chart(listener, false));
paneList.add(new ChartDesignerOtherPane());
createTabsPane();
}
protected void dealWithStyleChange(){
if(!isFromToolBar){
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().styleChange();
}
}
/**
*主要用于图表设计器判断样式改变是否来自工具栏的全局样式按钮
* @param isFromToolBar 是否来自工具栏
*/
public void styleChange(boolean isFromToolBar){
this.isFromToolBar = isFromToolBar;
}
}

2
designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java

@ -51,7 +51,6 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4
protected JPanel center;
private TargetComponentContainer container = null;
private TitleChangeListener titleChangeListener = null;
private Calendar lastTime;
protected ChartEditPane() {
@ -108,6 +107,7 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4
}
AbstractChartAttrPane selectedPane = paneList.get(tabsHeaderIconPane.getSelectedIndex());
selectedPane.update(collection);
if (!ComparatorUtils.equals(collection, lastCollection)) {
//此处画图

51
designer_chart/src/com/fr/design/mainframe/chart/ChartsConfigPane.java

@ -0,0 +1,51 @@
package com.fr.design.mainframe.chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Charts;
import com.fr.general.Inter;
import com.fr.stable.StableUtils;
import javax.swing.*;
/**
* Created by mengao on 2017/5/16.
*/
public abstract class ChartsConfigPane <T extends Charts> extends AbstractChartAttrPane {
public final static String CHART_STYLE_TITLE = Inter.getLocText("Chart-Style_Name");
public abstract Class<? extends Charts> accptType();
@Override
public void populate(ChartCollection collection) {
if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) {
populate(collection, (T)collection.getSelectedChart());
}
}
protected abstract void populate(ChartCollection collection, T selectedChart);
@Override
public void update(ChartCollection collection) {
if (StableUtils.classInstanceOf(collection.getSelectedChart().getClass(),accptType())) {
update(collection, (T)collection.getSelectedChart());
}
}
protected abstract void update(ChartCollection collection, T selectedChart);
@Override
protected JPanel createContentPane() {
return new JPanel();
}
@Override
public String getIconPath() {
return "com/fr/design/images/chart/ChartStyle.png";
}
@Override
public String title4PopupWindow() {
return CHART_STYLE_TITLE;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/ChartsEditPane.java

@ -0,0 +1,54 @@
package com.fr.design.mainframe.chart;
import com.fr.chart.chartattr.Chart;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import java.awt.*;
import java.util.ArrayList;
/**
* Created by mengao on 2017/5/3.
*/
public class ChartsEditPane extends ChartEditPane {
protected ChartsConfigPane chartsConfigPane;
public ChartsEditPane() {
this.setLayout(new BorderLayout());
paneList = new ArrayList<AbstractChartAttrPane>();
dataPane4SupportCell = new ChartDataPane(listener);
dataPane4SupportCell.setSupportCellData(true);
paneList.add(dataPane4SupportCell);
createTabsPane();
}
/**
* 重新构造面板
* @param currentChart 图表
*/
public void reLayout(Chart currentChart) {
if (currentChart != null) {
this.removeAll();
this.setLayout(new BorderLayout());
paneList = new ArrayList<AbstractChartAttrPane>();
String plotID = "";
if (currentChart.getPlot() != null) {
plotID = currentChart.getPlot().getPlotID();
}
dataPane4SupportCell = createChartDataPane(plotID);
chartsConfigPane = ChartTypeInterfaceManager.getInstance().getChartConfigPane(plotID);
paneList.add(dataPane4SupportCell);
paneList.add(chartsConfigPane);
createTabsPane();
}
}
}

238
designer_chart/src/com/fr/design/mainframe/chart/UpdateOnLinePane.java

@ -1,238 +0,0 @@
package com.fr.design.mainframe.chart;
import com.fr.design.ChartEnvManager;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
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.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.actions.ChartDownLoadWorker;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter;
import com.fr.stable.ProductConstants;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 7.1.1
* 在线更新面板
*/
public class UpdateOnLinePane extends BasicPane{
private static final int GAP = 40;
private static final int H_GAP = 16;
private static final int SIDE_GAP =30;
private static final int RIGHT_BORDER_GAP = 34;
private static final Color LABEL_COLOR = new Color(114,114,114);
private static final int MESSAGE_FONT_SIZE = 20;
private static final int PUSH_FONT_SIZE = 12;
private static final int PROGRESS_WIDTH = 500;
private static final int PROGRESS_HEIGHT = 14;
private static final NumberFormat NUMBER_FORMAT = new DecimalFormat("##.##");
private static final int PRECENT =100;
private static final Color FOREGROUNG = new Color(23,190,86);
private static final Color BACKGROUND = new Color(210,210,210);
String serverVersion = ProductConstants.RELEASE_VERSION;
UIButton okButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_OK"));
UIButton updateButton = new UIButton(Inter.getLocText("FR-Chart-App_Update"));
UIButton cancleButton = new UIButton(Inter.getLocText("FR-Chart-Dialog_Cancle"));
UICheckBox pushAuto = new UICheckBox(Inter.getLocText("FR-Chart-UpdateMessage_PushAuto"));
private JPanel messagePane;
private JPanel optionsPane;
private BasicDialog parentDialog;
private ChartDownLoadWorker downLoadWorker = null;
private boolean isUpdateCancle = false;
private ActionListener updateListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final JProgressBar progressBar = init4UpdatingPane();
downLoadWorker = new ChartDownLoadWorker(){
protected void process(java.util.List<Double> v) {
progressBar.setValue((int)(v.get(v.size() - 1) * PRECENT));
}
public void done() {
try {
get();
} catch (Exception e1) {
init4UpdateFaild();
return;
}
if(!isUpdateCancle){
replaceFiles();
dialogExit();
super.done();
}
}
};
downLoadWorker.execute();
}
};
private ActionListener okListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialogExit();
}
};
private ActionListener cancleListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(downLoadWorker !=null){
isUpdateCancle = true;
downLoadWorker.cancel(true);
}
dialogExit();
}
};
public void setParentDialog(BasicDialog dialog){
this.parentDialog = dialog;
}
public UpdateOnLinePane(String serverVersion){
this.serverVersion = serverVersion;
this.isUpdateCancle = false;
pushAuto.setSelected(ChartEnvManager.getEnvManager().isPushUpdateAuto());
pushAuto.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
ChartEnvManager.getEnvManager().setPushUpdateAuto(pushAuto.isSelected());
}
});
init4PanesLayout();
initListeners();
judge();
}
private void initListeners(){
updateButton.addActionListener(updateListener);
okButton.addActionListener(okListener);
cancleButton.addActionListener(cancleListener);
}
private void init4PanesLayout(){
this.setLayout(new BorderLayout());
this.messagePane = FRGUIPaneFactory.createBorderLayout_L_Pane();
this.optionsPane = new JPanel(new FlowLayout(FlowLayout.RIGHT,H_GAP ,0)) ;
this.optionsPane.setBorder(new EmptyBorder(0, 0, GAP, RIGHT_BORDER_GAP));
this.add(this.messagePane, BorderLayout.CENTER);
this.add(this.optionsPane, BorderLayout.SOUTH);
pushAuto.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, PUSH_FONT_SIZE));
pushAuto.setForeground(LABEL_COLOR);
this.revalidate();
}
//更新失败的提示
private void init4UpdateFaild(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Version_UpdateFail")+"!");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(okButton);
this.revalidate();
}
private JProgressBar init4UpdatingPane(){
this.messagePane.removeAll();
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel label = new UILabel(Inter.getLocText("FR-Chart-App_UpdateProgress"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
label.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
centerPane.add(label);
JProgressBar progressBar = new JProgressBar();
progressBar.setMaximum(PRECENT);
progressBar.setMinimum(0);
progressBar.setValue(0);
progressBar.setBorder(new EmptyBorder(MESSAGE_FONT_SIZE,SIDE_GAP,SIDE_GAP*2,SIDE_GAP));
centerPane.add(progressBar);
messagePane.add(centerPane,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(cancleButton);
this.revalidate();
return progressBar;
}
private void init4VersionSamePane(){
this.messagePane.removeAll();
UILabel label = new UILabel(Inter.getLocText("FR-Chart-Versions_Lasted"));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
label.setForeground(LABEL_COLOR);
this.messagePane.add(label,BorderLayout.CENTER);
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(okButton);
this.revalidate();
}
private void init4VersionDifferentPane(){
this.messagePane.removeAll();
createPaneShowVersions();
optionsPane.removeAll();
optionsPane.add(pushAuto);
optionsPane.add(updateButton);
optionsPane.add(cancleButton);
this.revalidate();
}
private void createPaneShowVersions(){
JPanel centerPane = new JPanel(new GridLayout(2,1));
UILabel localLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Local")+":"+ ProductConstants.RELEASE_VERSION);
localLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
localLabel.setForeground(LABEL_COLOR);
localLabel.setBorder(new EmptyBorder(PUSH_FONT_SIZE,0,0,0));
UILabel serverLabel = new UILabel(Inter.getLocText("FR-Chart-Version_Lasted")+":"+serverVersion);
serverLabel.setFont(new Font(Inter.getLocText("FR-Designer-All_MSBold"), 0, MESSAGE_FONT_SIZE));
serverLabel.setForeground(LABEL_COLOR);
serverLabel.setBorder(new EmptyBorder(-MESSAGE_FONT_SIZE - PUSH_FONT_SIZE, 0, 0,0));
localLabel.setHorizontalAlignment(SwingConstants.CENTER);
serverLabel.setHorizontalAlignment(SwingConstants.CENTER);
centerPane.add(localLabel);
centerPane.add(serverLabel);
messagePane.add(centerPane,BorderLayout.CENTER);
}
private void judge(){
if(ComparatorUtils.equals(ProductConstants.RELEASE_VERSION,serverVersion)){
//版本一致,提示已经是最新版本
init4VersionSamePane();
}else{
init4VersionDifferentPane();
}
}
/**
* Dialog exit.
*/
private void dialogExit() {
parentDialog.setVisible(false);
parentDialog.dispose();
}
protected String title4PopupWindow() {
return Inter.getLocText("FR-Chart-Help_UpdateOnline");
}
}

2
designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java

@ -28,7 +28,7 @@ public class ChartDataPane extends AbstractChartAttrPane {
super();
this.listener = listener;
}
@Override
protected JPanel createContentPane() {
contentsPane = new NormalChartDataPane(listener, ChartDataPane.this);

71
designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDesignerDataPane.java

@ -1,71 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.GisMapPlot;
import com.fr.chart.chartattr.MapPlot;
import com.fr.design.chart.report.GisMapDataPane4Chart;
import com.fr.design.chart.report.MapDataPane4Chart;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.chart.gui.data.ImportSetChartDataPane;
import com.fr.general.FRLogger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午1:57
*/
public class ChartDesignerDataPane extends ChartDataPane {
private AttributeChangeListener listener;
public ChartDesignerDataPane(AttributeChangeListener listener) {
super(listener);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FRLogger.getLogger().info("SD");
}
});
this.listener = listener;
}
@Override
protected JPanel createContentPane() {
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
return contentsPane;
}
protected void repeatLayout(ChartCollection collection) {
if(contentsPane != null) {
this.remove(contentsPane);
}
this.setLayout(new BorderLayout(0, 0));
if (collection.getSelectedChart().getPlot() instanceof MapPlot) {
contentsPane = new MapDataPane4Chart(listener,this);
}else if(collection.getSelectedChart().getPlot() instanceof GisMapPlot){
contentsPane = new GisMapDataPane4Chart(listener,this);
} else{
contentsPane = new ImportSetChartDataPane(listener,ChartDesignerDataPane.this);
}
}
/**
* 主要用于图表设计器
* @return
*/
public boolean isNeedPresentPaneWhenFilterData(){
return true;
}
}

48
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ChartDesignDataLoadPane.java

@ -1,48 +0,0 @@
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper;
import com.fr.design.dialog.BasicPane;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
/**
* 图表设计器导入 界面
* Created by kunsnat on 14-10-21.
* kunsnat@gmail.com
*/
public abstract class ChartDesignDataLoadPane extends BasicPane {
private AbstractChartDataPane4Chart parentPane;
public ChartDesignDataLoadPane(AbstractChartDataPane4Chart parentPane){
this.parentPane = parentPane;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public abstract void populateChartTableData(TableData tableData);
/**
* 根据界面 获取数据集相关.
*
* @return 返回数据集
*/
public abstract TableData getTableData();
protected abstract String getNamePrefix();
//响应属性事件
protected void fireChange() {
parentPane.fireTableDataChange();
}
public TableDataWrapper getTableDataWrapper(){
return new TemplateTableDataWrapper(getTableData());
}
}

124
designer_chart/src/com/fr/design/mainframe/chart/gui/data/EmbbeddDataPane.java

@ -1,124 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.UIConstants;
import com.fr.data.impl.EmbeddedTableData;
import com.fr.design.data.tabledata.tabledatapane.EmbeddedTableDataPane;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* 图表设计器内置数据集面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 上午12:09
*/
public class EmbbeddDataPane extends ChartDesignDataLoadPane {
private UIButton edit;
private UIButton reviewButton;
private EmbeddedTableData tableData;
public EmbbeddDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
tableData = new EmbeddedTableData();
initEditButton();
initReviewButton();
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 3));
this.add(edit);
this.add(reviewButton);
}
private void initEditButton() {
edit = new UIButton(BaseUtils.readIcon("com/fr/design/images/control/edit.png"));
edit.setBorder(new LineBorder(UIConstants.LINE_COLOR));
edit.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
EmbeddedTableDataPane tableDataPane = new EmbeddedTableDataPane();
tableDataPane.populateBean(tableData);
dgEdit(tableDataPane, getNamePrefix());
}
});
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
//预览图表设计器内置数据集
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
protected String title4PopupWindow() {
return null;
}
@Override
public TableData getTableData() {
return tableData;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof EmbeddedTableData) {
this.tableData =(EmbeddedTableData) tableData;
}
}
protected String getNamePrefix() {
return "Embedded";
}
/**
* 编辑面板
*
* @param uPanel 面板
* @param originalName 原始名字
*/
private void dgEdit(final EmbeddedTableDataPane uPanel, String originalName) {
final BasicPane.NamePane nPanel = uPanel.asNamePane();
nPanel.setObjectName(originalName);
final BasicDialog dg;
dg = nPanel.showLargeWindow(SwingUtilities.getWindowAncestor(EmbbeddDataPane.this), new DialogActionAdapter() {
public void doOk() {
tableData = uPanel.updateBean();
fireChange();
}
});
dg.setVisible(true);
}
}

123
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ExcelDataPane.java

@ -1,123 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.data.impl.ExcelTableData;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.DesignerContext;
import com.fr.file.FILE;
import com.fr.file.FILEChooserPane;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午11:58
*/
public class ExcelDataPane extends ChartDesignDataLoadPane {
private UITextField path = new UITextField();
private UIButton reviewButton;
private ExcelTableData tableData;
private MouseListener listener = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
FILEChooserPane fileChooserPane = new FILEChooserPane(true, true);
if (fileChooserPane.showOpenDialog(DesignerContext.getDesignerFrame(), ".xlsx")
== FILEChooserPane.OK_OPTION) {
FILE chooseFILE = fileChooserPane.getSelectedFILE();
if (chooseFILE != null && chooseFILE.exists()) {
path.setText(chooseFILE.getPath());
} else {
JOptionPane.showConfirmDialog(ExcelDataPane.this, Inter.getLocText("FR-Template-Path_chooseRightPath"),
Inter.getLocText("FR-App-All_Warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
path.setText("");
}
tableData.setFilePath(path.getText().toString());
tableData.setFromEnv(chooseFILE.isEnvFile());
tableData.setNeedColumnName(true);
fireChange();
}
}
};
public ExcelDataPane(AbstractChartDataPane4Chart parentPane, JComponent pathChooseButton) {
super(parentPane);
initReviewButton();
tableData = new ExcelTableData();
tableData.setFilePath(path.getText().toString());
tableData.setNeedColumnName(true);
path.setEditable(false);
pathChooseButton.addMouseListener(listener);
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(path, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//预览本地excel
try {
PreviewTablePane.previewTableData(getTableData());
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
*
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if (tableData instanceof ExcelTableData) {
path.setText(((ExcelTableData) tableData).getFilePath());
this.tableData = (ExcelTableData)tableData;
this.tableData.setNeedColumnName(true);
}
fireChange();
}
}

117
designer_chart/src/com/fr/design/mainframe/chart/gui/data/ImportSetChartDataPane.java

@ -1,117 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.TableData;
import com.fr.base.chart.chartdata.TopDefinitionProvider;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.chart.chartdata.TableDataDefinition;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.CategoryPlotMoreCateTableDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.Factory4TableDataContentPane;
import javax.swing.*;
/**
* 数据导入数据设置面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午2:35
*/
public class ImportSetChartDataPane extends AbstractChartDataPane4Chart {
private AbstractTableDataContentPane dataContentPane;
public ImportSetChartDataPane(final AttributeChangeListener listener, ChartDataPane parent) {
super(listener,parent);
}
/**
* 更新界面 数据内容
*/
public void populate(ChartCollection collection) {
dataContentPane = getContentPane(collection.getSelectedChart().getPlot());
dataContentPane.setNeedSummaryCaculateMethod(false);
dataContentPane.redoLayoutPane();
if (collection != null && collection.getSelectedChart() != null) {
Chart chart = collection.getSelectedChart();
TopDefinitionProvider definition = chart.getFilterDefinition();
if (definition instanceof TableDataDefinition) {
TableData tableData = ((TableDataDefinition) definition).getTableData();
if(tableData != null){
populateChoosePane(tableData);
fireTableDataChange();
}
if (dataContentPane != null) {
dataContentPane.populateBean(collection);
}
}
}
this.remove(leftContentPane);
this.initContentPane();
this.validate();
dataSource.addItemListener(dsListener);
initAllListeners();
initSelfListener(dataContentPane);
this.addAttributeChangeListener(attributeChangeListener);
}
protected JPanel getDataContentPane(){
return dataContentPane;
}
@Override
public void update(ChartCollection collection) {
if (collection != null && collection.getSelectedChart() != null) {
if (dataContentPane != null) {
dataContentPane.updateBean(collection);
}
TableDataDefinition topDefinition =(TableDataDefinition)collection.getSelectedChart().getFilterDefinition();
if(topDefinition !=null){
topDefinition.setTableData(choosePane.getTableData());
}
}
}
private AbstractTableDataContentPane getContentPane(Plot plot) {
if (plot == null || plot.isSupportMoreCate()) {
return new CategoryPlotMoreCateTableDataContentPane(parentPane){
public boolean isNeedSummaryCaculateMethod(){
return false;
}
};
} else{
return Factory4TableDataContentPane.createTableDataContenetPaneWithPlotType(plot, parentPane);
}
}
/**
* 数据集数据改变
*/
public void fireTableDataChange() {
if (dataContentPane != null) {
dataContentPane.onSelectTableData(choosePane.getTableDataWrapper());
}
}
/**
* 清空数据集的设置
*/
public void clearTableDataSetting(){
if(dataContentPane != null){
dataContentPane.clearAllBoxList();
}
}
}

101
designer_chart/src/com/fr/design/mainframe/chart/gui/data/JSONDataPane.java

@ -1,101 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.data;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.TableData;
import com.fr.chart.chartdata.JSONTableData;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.mainframe.AbstractChartDataPane4Chart;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-15
* Time: 下午6:45
*/
public class JSONDataPane extends ChartDesignDataLoadPane {
private UITextField url = new UITextField();
private UIButton reviewButton;
private JSONTableData tableData;
public JSONDataPane(AbstractChartDataPane4Chart parentPane) {
super(parentPane);
initReviewButton();
url.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == KeyEvent.VK_ENTER){
tableData.setFilePath(url.getText());
fireChange();
}
}
});
this.setLayout(new BorderLayout(0, 0));
JPanel pane = new JPanel(new BorderLayout(LayoutConstants.HGAP_LARGE, 0));
pane.add(url, BorderLayout.CENTER);
pane.add(reviewButton, BorderLayout.EAST);
this.add(pane, BorderLayout.CENTER);
tableData = new JSONTableData(url.getText());
}
@Override
protected String title4PopupWindow() {
return null;
}
private void initReviewButton() {
reviewButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/search.png"));
reviewButton.setBorder(new LineBorder(UIConstants.LINE_COLOR));
reviewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
tableData.setFilePath(url.getText());
fireChange();
//预览JSON数据
TableDataWrapper tableDataWrappe = getTableDataWrapper();
if (tableDataWrappe != null) {
try {
tableDataWrappe.previewData();
} catch (Exception e1) {
FRContext.getLogger().error(e1.getMessage(), e1);
}
}
}
});
}
@Override
public TableData getTableData() {
return tableData;
}
@Override
protected String getNamePrefix() {
return null;
}
/**
* 加载数据集
* @param tableData 数据集
*/
public void populateChartTableData(TableData tableData) {
if(tableData instanceof JSONTableData) {
url.setText(((JSONTableData) tableData).getFilePath());
this.tableData = (JSONTableData)tableData;
}
}
}

18
designer_chart/src/com/fr/design/mainframe/chart/gui/data/TableDataPane.java

@ -22,7 +22,7 @@ public class TableDataPane extends FurtherBasicBeanPane<ChartCollection>{
private static final int TOP = -5;
private DatabaseTableDataPane tableDataPane;
private AbstractTableDataContentPane dataContentPane;
private ChartDataPane parent;
protected AbstractTableDataContentPane getDataContentPane() {
@ -33,10 +33,10 @@ public class TableDataPane extends FurtherBasicBeanPane<ChartCollection>{
this.parent = parent;
initDataPane();
}
private void initDataPane() {
UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ;
label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT));
UILabel label = new BoldFontTextLabel(Inter.getLocText("Chart-DS_TableData") + ":", SwingConstants.RIGHT) ;
label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH,ChartDataPane.LABEL_HEIGHT));
tableDataPane = new DatabaseTableDataPane(label) {
@Override
protected void userEvent() {
@ -46,18 +46,18 @@ public class TableDataPane extends FurtherBasicBeanPane<ChartCollection>{
};
tableDataPane.setBorder(BorderFactory.createMatteBorder(0,6,0, 0, getBackground()));
tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1));
tableDataPane.setBorder(BorderFactory.createEmptyBorder(0,1,0,1));
tableDataPane.setPreferredSize(new Dimension(205 , 20));
this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0));
this.setBorder(BorderFactory.createEmptyBorder(TOP,0,0,0));
this.add(tableDataPane, BorderLayout.NORTH);
}
/**
* 检查box是否可用.
*/
public void checkBoxUse() {
TableDataWrapper dataWrap = tableDataPane.getTableDataWrapper();
if(dataContentPane != null) {
dataContentPane.checkBoxUse(dataWrap != null);
}
@ -140,7 +140,7 @@ public class TableDataPane extends FurtherBasicBeanPane<ChartCollection>{
}
onSelectTableData();
checkBoxUse();
tableDataPane.populateBean(tableData);
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/AreaPlotPane4ToolBar.java

@ -1,69 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.AreaIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:55
*/
public class AreaPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STACK_AREA_CHART = 0;
private static final int PERCENT_AREA_LINE_CHART = 1;
private static final int STACK_3D_AREA_CHART = 2;
private static final int PERCENT_3D_AREA_LINE_CHART = 3;
public AreaPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/area/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
String area = Inter.getLocText("FR-Chart-Type_Area");
String stack = Inter.getLocText("FR-Chart-Type_Stacked");
String percent = Inter.getLocText("FR-Chart-Use_Percent");
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STACK_AREA_CHART, stack + area,this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_AREA_LINE_CHART, percent + stack + area,this));
String td = Inter.getLocText("FR-Chart-Chart_3D");
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_3D_AREA_CHART, td + stack + area,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_3D_AREA_LINE_CHART, td + percent + stack + area,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = AreaIndependentChart.areaChartTypes;
Plot newPlot =barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In AreaChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BarPlotPane4ToolBar.java

@ -1,72 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:44
*/
public class BarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public BarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Bar"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Bar","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Bar"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BarIndependentChart.barChartTypes;
BarPlot newPlot = (BarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BarChart");
}
return cloned;
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/BubblePlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.BubbleIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:59
*/
public class BubblePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int BUBBLE_CHART = 0;
public BubblePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/bubble/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), BUBBLE_CHART, Inter.getLocText("FR-Chart-Chart_BubbleChart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = BubbleIndependentChart.bubbleChartTypes;
BubblePlot newPlot = (BubblePlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In BubbleChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(BubblePlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}

138
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ChartDesignerImagePane.java

@ -1,138 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.BaseUtils;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
/**
* 图表设计器工具栏上的图表类型选择用的单个小图面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午4:24
*/
public class ChartDesignerImagePane extends JPanel implements MouseListener{
private static final int SIZE = 28;
private static final String NOMAL = "normal";
private static final String OVER = "over";
private static final String PRESS = "normal";
private String iconPath;
private int chartType;
private String state = NOMAL;//状态,按下、悬浮、正常
private Icon mode;
private boolean isSelected;
private PlotPane4ToolBar parent;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
public ChartDesignerImagePane(String iconPath, int chartType, String tipName,PlotPane4ToolBar parent) {
this.iconPath = iconPath;
this.chartType = chartType;
this.isSelected = false;
addMouseListener(this);
this.setToolTipText(tipName);
this.parent = parent;
}
public Dimension getPreferredSize() {
return new Dimension(SIZE, SIZE);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
mode = BaseUtils.readIcon(iconPath + chartType + "_" + state + ".png");
if(this.isSelected){
Icon border =BaseUtils.readIcon("com/fr/design/images/toolbar/border.png");
border.paintIcon(this,g,0,0);
}
mode.paintIcon(this, g, 3, 3);
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
this.state = isSelected ? PRESS : NOMAL;
}
/**
* 鼠标点击
* @param e 事件
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 鼠标按下
* @param e 事件
*/
public void mousePressed(MouseEvent e) {
parent.clearChoose();
if(parent.getSelectedIndex() != this.chartType){
parent.setSelectedIndex(this.chartType);
this.fireStateChange();
}
this.isSelected = true;
state = PRESS;
this.repaint();
}
/**
* 鼠标释放
* @param e 事件
*/
public void mouseReleased(MouseEvent e) {
}
/**
* 鼠标点击
* @param e 进入
*/
public void mouseEntered(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = OVER;
}
this.repaint();
}
/**
* 鼠标点击
* @param e 离开
*/
public void mouseExited(MouseEvent e) {
if (this.isSelected) {
state = PRESS;
} else {
state = NOMAL;
}
this.repaint();
}
private void fireStateChange() {
for (int i = 0; i < changeListeners.size(); i++) {
changeListeners.get(i).stateChanged(new ChangeEvent(this));
}
}
/**
* 注册事件监听
* @param listener 监听
*/
public void registeChangeListener(ChangeListener listener){
changeListeners.add(listener);
}
}

73
designer_chart/src/com/fr/design/mainframe/chart/gui/type/ColumnPlotPane4ToolBar.java

@ -1,73 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.ColumnIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* 柱形图工具栏小图系列
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:21
*/
public class ColumnPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int COLOMN_CHART = 0;
private static final int STACK_COLOMN_CHART = 1;
private static final int PERCENT_STACK_COLOMN_CHART = 2;
private static final int THREE_D_COLOMN_CHART = 3;
private static final int THREE_D_COLOMN_HORIZON_DRAW_CHART = 4;
private static final int THREE_D_STACK_COLOMN_CHART = 5;
private static final int THREE_D_PERCENT_STACK_COLOMN_CHART = 6;
public ColumnPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/column/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), COLOMN_CHART, Inter.getLocText("FR-Chart-Type_Column"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), STACK_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_COLOMN_HORIZON_DRAW_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Column","FR-Chart-Direction_Horizontal"},new String[]{"","(",")"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PERCENT_STACK_COLOMN_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D","FR-Chart-Use_Percent","FR-Chart-Type_Stacked","FR-Chart-Type_Column"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot(){
Chart[] barChart = ColumnIndependentChart.columnChartTypes;
BarPlot newPlot = (BarPlot)barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot)newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In ColumnChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/CustomPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.CustomIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:39
*/
public class CustomPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int CUSTOM_NO_SHEET = 0;
public CustomPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/custom/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), CUSTOM_NO_SHEET, Inter.getLocText("ChartF-Comb_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = CustomIndependentChart.combChartTypes;
CustomPlot newPlot = (CustomPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In CustomChart");
}
return cloned;
}
}

54
designer_chart/src/com/fr/design/mainframe/chart/gui/type/DonutPlotPane4ToolBar.java

@ -1,54 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.DonutIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:18
*/
public class DonutPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int DONUT_CHART = 0; //2d圆环图
private static final int THREE_D_DONUT_CHART = 1; //3D圆环图
public DonutPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/donut/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), DONUT_CHART, Inter.getLocText("FR-Chart-Type_Donut"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_DONUT_CHART, Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "FR-Chart-Type_Donut"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = DonutIndependentChart.donutChartTypes;
DonutPlot newPlot = (DonutPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In DonutChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/GanttPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.GanttIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:16
*/
public class GanttPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int GANTT = 0;
public GanttPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/gantt/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), GANTT, Inter.getLocText("FR-Chart-Type_Gantt"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = GanttIndependentChart.ganttChartTypes;
GanttPlot newPlot = (GanttPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In GanttChart");
}
return cloned;
}
}

57
designer_chart/src/com/fr/design/mainframe/chart/gui/type/LinePlotPane4ToolBar.java

@ -1,57 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.LineIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : DAISY
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:37
*/
public class LinePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int LINE_CHART = 0;
public LinePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/line/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), LINE_CHART, Inter.getLocText("I-LineStyle_Line"), this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = LineIndependentChart.lineChartTypes;
LinePlot newPlot = (LinePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In LineChart");
}
return cloned;
}
}

69
designer_chart/src/com/fr/design/mainframe/chart/gui/type/MeterPlotPane4ToolBar.java

@ -1,69 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.MeterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:08
*/
public class MeterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int METER = 0;
private static final int BLUE_METER = 1;
private static final int SIMPLE_METER = 2;
public MeterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/meter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), METER, Inter.getLocText("FR-Chart-Type_Meter"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), BLUE_METER, Inter.getLocText("FR-Chart-Type_Meter")+1,this));
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), SIMPLE_METER, Inter.getLocText("FR-Chart-Type_Meter")+2,this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = MeterIndependentChart.meterChartTypes;
MeterPlot newPlot = (MeterPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr4MeterStyle(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In MeterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr4MeterStyle(MeterPlot plot) {
if(plot.getMeterStyle() != null){
plot.getMeterStyle().setTitleTextAttr(new TextAttr(FRContext.getDefaultValues().getFRFont()));
}
}
}

58
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PiePlotPane4ToolBar.java

@ -1,58 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.PieIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:52
*/
public class PiePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int PIE_CHART = 0;
private static final int THREE_D_PIE_CHART = 1;
public PiePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/pie/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), PIE_CHART, Inter.getLocText("I-PieStyle_Normal"),this);
pane.setSelected(true);
demoList.add(pane);
demoList.add(new ChartDesignerImagePane(getTypeIconPath(), THREE_D_PIE_CHART,
Inter.getLocText(new String[]{"FR-Chart-Chart_3D", "I-PieStyle_Normal"}),this));
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = PieIndependentChart.pieChartTypes;
PiePlot newPlot = (PiePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In PieChart");
}
return cloned;
}
}

134
designer_chart/src/com/fr/design/mainframe/chart/gui/type/PlotPane4ToolBar.java

@ -1,134 +0,0 @@
/*
* Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved.
*/
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.Plot;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.design.mainframe.chart.ChartDesignEditPane;
import com.fr.general.ComparatorUtils;
import com.fr.js.NameJavaScriptGroup;
import com.fr.stable.Constants;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.util.List;
/**
* 图表设计器 工具栏面板
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-16
* Time: 下午5:17
*/
public abstract class PlotPane4ToolBar extends JPanel{
private static final int COM_GAP = 14;
protected List<ChartDesignerImagePane> typeDemo;
protected abstract String getTypeIconPath();
protected abstract List<ChartDesignerImagePane> initDemoList();
private int selectedIndex = 0;//默认选中第一个
private ChartDesigner chartDesigner;
private ChangeListener changeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
fireChange();
}
};
public PlotPane4ToolBar(ChartDesigner designer){
chartDesigner = designer;
typeDemo = initDemoList();
this.setLayout(new FlowLayout(FlowLayout.LEFT, COM_GAP, 0));
for(int i = 0; i < typeDemo.size(); i++) {
ChartDesignerImagePane tmp = typeDemo.get(i);
tmp.registeChangeListener(changeListener);
this.add(tmp);
}
this.setSelectedIndex(0);
}
/**
* 清除选中
*/
public void clearChoose(){
if(typeDemo == null){
return;
}
for(int i = 0; i < typeDemo.size(); i++) {
typeDemo.get(i).setSelected(false);
this.repaint();
}
}
public void setSelectedIndex(int selectedIndex){
clearChoose();
this.selectedIndex = selectedIndex;
typeDemo.get(selectedIndex).setSelected(true);
}
public int getSelectedIndex(){
return this.selectedIndex;
}
//子类覆盖
protected Plot getSelectedClonedPlot(){
return null;
}
/**
* 切换图表类型
*/
public void fireChange(){
ChartCollection chartCollection = (ChartCollection)chartDesigner.getTarget().getChartCollection();
Chart chart =chartCollection.getSelectedChart();
chart.switchPlot(getSelectedClonedPlot());
resetChart(chart);
chartDesigner.clearToolBarStyleChoose();
chartDesigner.fireTargetModified();
ChartDesignEditPane.getInstance().populateSelectedTabPane();
}
protected void resetChart(Chart chart){
chart.setBorderStyle(Constants.LINE_NONE);
chart.setBorderColor(new Color(150, 150, 150));
chart.setBackground(null);
}
public Plot setSelectedClonedPlotWithCondition(Plot oldPlot){
Plot newPlot = getSelectedClonedPlot();
if(oldPlot != null && ComparatorUtils.equals(newPlot.getClass(), oldPlot.getClass())){
if(oldPlot.getHotHyperLink() != null){
NameJavaScriptGroup hotHyper = oldPlot.getHotHyperLink();
try {
newPlot.setHotHyperLink((NameJavaScriptGroup)hotHyper.clone());
} catch (CloneNotSupportedException e) {
FRContext.getLogger().error("Error in Hyperlink, Please Check it.", e);
}
}
newPlot.setConditionCollection(oldPlot.getConditionCollection());
newPlot.setSeriesDragEnable(oldPlot.isSeriesDragEnable());
if(newPlot.isSupportZoomCategoryAxis() && newPlot.getxAxis() != null) {
newPlot.getxAxis().setZoom(oldPlot.getxAxis().isZoom());
}
if(newPlot.isSupportTooltipInInteractivePane()) {
newPlot.setHotTooltipStyle(oldPlot.getHotTooltipStyle());
}
if(newPlot.isSupportAutoRefresh()) {
newPlot.setAutoRefreshPerSecond(oldPlot.getAutoRefreshPerSecond());
}
}
return newPlot;
}
}

51
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RadarPlotPane4ToolBar.java

@ -1,51 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RadarIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:02
*/
public class RadarPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RADAR = 0;
public RadarPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/radar/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RADAR, Inter.getLocText("FR-Chart-Type_Radar"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RadarIndependentChart.radarChartTypes;
RadarPlot newPlot = (RadarPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RadarChart");
}
return cloned;
}
}

53
designer_chart/src/com/fr/design/mainframe/chart/gui/type/RangePlotPane4ToolBar.java

@ -1,53 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.RangeIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:13
*/
public class RangePlotPane4ToolBar extends PlotPane4ToolBar {
private static final int RANGE = 0;
public RangePlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/range/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), RANGE, Inter.getLocText("ChartF-Range_Chart"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = RangeIndependentChart.rangeChartTypes;
RangePlot newPlot = (RangePlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In RangeChart");
}
return cloned;
}
}

52
designer_chart/src/com/fr/design/mainframe/chart/gui/type/StockPlotPane4ToolBar.java

@ -1,52 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.StockIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午2:04
*/
public class StockPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int STOCK = 0;
public StockPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/stock/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), STOCK, Inter.getLocText("FR-Chart-Type_Stock"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = StockIndependentChart.stockChartTypes;
StockPlot newPlot = (StockPlot) barChart[this.getSelectedIndex()].getPlot();
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In StockChart");
}
return cloned;
}
}

45
designer_chart/src/com/fr/design/mainframe/chart/gui/type/UserDefinedChartTypePane.java

@ -1,45 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.chart.chartattr.Chart;
/**
* Created by eason on 15/4/23.
*/
public abstract class UserDefinedChartTypePane extends AbstractChartTypePane{
protected String[] getTypeLayoutPath() {
return new String[0];
}
protected String[] getTypeLayoutTipName(){
return new String[0];
}
protected String[] getTypeIconPath(){
return new String[]{"/com/fr/design/images/chart/default.png"};
}
protected String[] getTypeTipName() {
return new String[]{title4PopupWindow()};
}
public void updateBean(Chart chart) {
}
public void populateBean(Chart chart){
typeDemo.get(0).isPressing = true;
checkDemosBackground();
}
/**
* 弹出界面的标题
* @return 标题
*/
public String title4PopupWindow(){
return "";
}
}

72
designer_chart/src/com/fr/design/mainframe/chart/gui/type/XYSCatterPlotPane4ToolBar.java

@ -1,72 +0,0 @@
package com.fr.design.mainframe.chart.gui.type;
import com.fr.base.FRContext;
import com.fr.chart.base.TextAttr;
import com.fr.chart.chartattr.*;
import com.fr.chart.charttypes.XYScatterIndependentChart;
import com.fr.design.mainframe.ChartDesigner;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* Author : daisy
* Version: 6.5.6
* Date: 14-10-29
* Time: 下午1:54
*/
public class XYSCatterPlotPane4ToolBar extends PlotPane4ToolBar {
private static final int XYSCATTER_CHART = 0;
public XYSCatterPlotPane4ToolBar(ChartDesigner designer) {
super(designer);
}
@Override
protected String getTypeIconPath() {
return "com/fr/design/images/toolbar/xyscatter/";
}
@Override
protected List<ChartDesignerImagePane> initDemoList() {
List<ChartDesignerImagePane> demoList = new ArrayList<ChartDesignerImagePane>();
ChartDesignerImagePane pane = new ChartDesignerImagePane(getTypeIconPath(), XYSCATTER_CHART, Inter.getLocText("FR-Chart-Type_XYScatter"),this);
pane.setSelected(true);
demoList.add(pane);
return demoList;
}
protected Plot getSelectedClonedPlot() {
Chart[] barChart = XYScatterIndependentChart.XYScatterChartTypes;
XYPlot newPlot = (XYPlot) barChart[this.getSelectedIndex()].getPlot();
setChartFontAttr(newPlot);
Plot cloned = null;
try {
cloned = (Plot) newPlot.clone();
} catch (CloneNotSupportedException e) {
FRLogger.getLogger().error("Error In XYScatterChart");
}
return cloned;
}
/**
* 设置一些几本的属性
* @param plot 绘图区对象
*/
public static void setChartFontAttr(XYPlot plot) {
if (plot.getxAxis() != null) {
TextAttr categoryTextAttr = new TextAttr();
categoryTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getxAxis().setTextAttr(categoryTextAttr);
}
if (plot.getyAxis() != null) {
TextAttr valueTextAttr = new TextAttr();
valueTextAttr.setFRFont(FRContext.getDefaultValues().getFRFont());
plot.getyAxis().setTextAttr(valueTextAttr);
}
}
}

2
designer_form/build.release.gradle

@ -49,7 +49,7 @@ buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\'))
def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1)
//
dependencies{
compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar')
compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar')
compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar")
testCompile 'junit:junit:4.12'

28
designer_form/src/com/fr/design/designer/creator/ErrorCreator.java

@ -0,0 +1,28 @@
package com.fr.design.designer.creator;
import com.fr.form.ui.ErrorMarker;
import com.fr.form.ui.Widget;
import com.fr.stable.StringUtils;
import java.awt.*;
/**
* Created by richie on 2017/6/28.
*/
public class ErrorCreator extends NullCreator {
public ErrorCreator(Widget widget, Dimension initSize) {
super(widget, initSize);
}
@Override
protected String showText() {
ErrorMarker marker = (ErrorMarker)toData();
String text = marker.getWidgetValue().getDisplayValue();
if (StringUtils.isEmpty(text)) {
return super.showText();
}
return text;
}
}

6
designer_form/src/com/fr/design/designer/creator/NullCreator.java

@ -23,11 +23,15 @@ public class NullCreator extends XWidgetCreator {
@Override
protected JComponent initEditor() {
UILabel l = new UILabel("UNEXPECTED WIDGET");
UILabel l = new UILabel(showText());
l.setForeground(Color.red);
l.setVerticalAlignment(SwingConstants.CENTER);
l.setHorizontalAlignment(SwingConstants.CENTER);
setBorder(DEFALUTBORDER);
return editor = l;
}
protected String showText() {
return "UNEXPECTED WIDGET";
}
}

38
designer_form/src/com/fr/design/mainframe/FormArea.java

@ -184,8 +184,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
reCalculateRoot(screenValue, true);
} else {
// 组件间隔啊
int val = layout.getAcualInterval();
layout.addCompInterval(val);
// REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题
reCalculateDefaultRoot(screenValue, true);
}
}
LayoutUtils.layoutContainer(root);
@ -355,6 +355,40 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
START_VALUE = value;
}
}
/**
* 按照界面大小的百分比值调整root大小
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/
private void reCalculateDefaultRoot(double value, boolean needCalculateParaHeight) {
XLayoutContainer root = FormArea.this.designer.getRootComponent();
if (root.acceptType(XWFitLayout.class)) {
XWFitLayout layout = (XWFitLayout) root;
layout.setContainerPercent(1.0);
traverAndAdjust(layout, 0.0);
layout.adjustCreatorsWhileSlide(0.0);
// 拖动滑块,先将内部组件百分比大小计算,再计算容器大小
Dimension d = new Dimension(layout.getWidth(), layout.getHeight());
// 自适应布局的父层是border
if (layout.getParent() != null) {
int paraHeight = designer.getParaHeight();
if (needCalculateParaHeight && paraHeight > 0) {
designer.setParaHeight(paraHeight);
XWBorderLayout parent = (XWBorderLayout) layout.getParent();
parent.toData().setNorthSize(paraHeight);
parent.removeAll();
parent.add(designer.getParaComponent(),WBorderLayout.NORTH);
parent.add(designer.getRootComponent(),WBorderLayout.CENTER);
}
layout.getParent().setSize(d.width, d.height+paraHeight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
FormArea.this.validate();
}
}
}
//循环遍历布局,按百分比调整子组件大小
private void traverAndAdjust(XCreator creator,double percent){

189
designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java

@ -2,7 +2,6 @@ package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.constants.UIConstants;
import com.fr.design.designer.beans.events.DesignerEditListener;
import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.design.designer.creator.XCreatorUtils;
@ -12,6 +11,7 @@ import com.fr.design.gui.core.WidgetOption;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.module.DesignModuleFactory;
import com.fr.design.utils.gui.LayoutUtils;
import com.fr.form.ui.*;
@ -28,10 +28,12 @@ import java.util.List;
public class FormParaWidgetPane extends JPanel {
private static FormParaWidgetPane THIS;
private final static int BORDER = 5;
private List<WidgetOption> predifinedwidgeList = new ArrayList<WidgetOption>();
private JWindow chartTypeWindow;
private JWindow widgetTypeWindow;
private UIPopupMenu chartTypePopupMenu;
private UIPopupMenu widgetTypePopupMenu;
private WidgetOption[] widgetOptions = null;
private WidgetOption[] chartOptions = null;
private WidgetOption[] layoutOptions = null;
@ -89,6 +91,56 @@ public class FormParaWidgetPane extends JPanel {
initFormParaComponent();
}
private void initWidgetTypePopUp() {
if (widgetTypePopupMenu == null) {
JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
loadPredefinedWidget();
int rowNum = calculateWidgetWindowRowNum();
JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (WidgetOption o : loadWidgetOptions()) {
westPanel.add(new ToolBarButton(o));
}
int x = commonWidgetNum * (widgetButtonWidth + smallGAP) - smallGAP;
westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight())));
JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (WidgetOption no : predifinedwidgeList) {
eastPane.add(new ToolBarButton(no));
}
int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP) - smallGAP;
int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth();
eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight())));
UIScrollPane eastScrollPane = new UIScrollPane(eastPane);
eastScrollPane.setBorder(null);
int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP) - smallGAP;
int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight();
width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth();
eastScrollPane.setPreferredSize(new Dimension(width, height));
widgetPane.add(westPanel);
widgetPane.add(createJSeparator(height));
widgetPane.add(eastScrollPane);
widgetTypePopupMenu = new UIPopupMenu();
widgetTypePopupMenu.add(widgetPane);
}
}
private void initChartTypePopUp() {
if (chartTypePopupMenu == null){
JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT));
WidgetOption[] chartOptions = loadChartOptions();
for (WidgetOption chartOption : chartOptions) {
componentsPara.add(new ToolBarButton(chartOption));
}
int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP);
int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP);
componentsPara.setPreferredSize(new Dimension(x, y));
chartTypePopupMenu = new UIPopupMenu();
chartTypePopupMenu.add(componentsPara);
}
}
private void initFormParaComponent() {
this.removeAll();
@ -200,18 +252,10 @@ public class FormParaWidgetPane extends JPanel {
chartPopUpButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT));
WidgetOption[] chartOptions = loadChartOptions();
for (WidgetOption chartOption : chartOptions) {
componentsPara.add(new ToolBarButton(chartOption));
}
int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP);
int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP);
componentsPara.setPreferredSize(new Dimension(x, y));
chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart"));
chartTypeWindow.setLocation((int) jSeparatorLayout.getLocationOnScreen().getX() + 1, (int) jSeparatorLayout.getLocationOnScreen().getY());
chartTypeWindow.setSize(chartTypeWindow.getPreferredSize());
chartTypeWindow.setVisible(true);
initChartTypePopUp();
chartTypePopupMenu.show(FormParaWidgetPane.this,
(int) jSeparatorLayout.getLocation().getX() + BORDER,
(int) jSeparatorLayout.getLocation().getY());
}
});
labelPane.add(chartPopUpButton, BorderLayout.EAST);
@ -228,40 +272,10 @@ public class FormParaWidgetPane extends JPanel {
chartPopUpButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
loadPredefinedWidget();
int rowNum = calculateWidgetWindowRowNum();
JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (WidgetOption o : loadWidgetOptions()) {
westPanel.add(new ToolBarButton(o));
}
int x = commonWidgetNum * (widgetButtonWidth + smallGAP);
westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight())));
JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
for (WidgetOption no : predifinedwidgeList) {
eastPane.add(new ToolBarButton(no));
}
int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP);
int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth();
eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight())));
UIScrollPane eastScrollPane = new UIScrollPane(eastPane);
eastScrollPane.setBorder(null);
int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP);
int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight();
width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth();
eastScrollPane.setPreferredSize(new Dimension(width, height));
widgetPane.add(westPanel);
widgetPane.add(createJSeparator(height));
widgetPane.add(eastScrollPane);
widgetTypeWindow = new PopUpWindow(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget"));
widgetTypeWindow.setSize(widgetTypeWindow.getPreferredSize());
if (jSeparatorChart != null) {
widgetTypeWindow.setLocation((int) jSeparatorChart.getLocationOnScreen().getX() + 1, (int) jSeparatorChart.getLocationOnScreen().getY());
}
widgetTypeWindow.setVisible(true);
initWidgetTypePopUp();
widgetTypePopupMenu.show(FormParaWidgetPane.this,
(int) jSeparatorChart.getLocation().getX() + BORDER,
(int) jSeparatorChart.getLocation().getY());
}
});
@ -354,83 +368,6 @@ public class FormParaWidgetPane extends JPanel {
}
}
private class PopUpWindow extends JWindow {
private JPanel northPane;
private String typeName;
private int LineWidth = 5;
private int BarWidth = 10;
public PopUpWindow(JPanel northPane, String typeName) {
super();
this.northPane = northPane;
this.typeName = typeName;
this.getContentPane().add(initComponents());
this.doLayout();
Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK);
}
private AWTEventListener awt = new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if (event instanceof MouseEvent) {
MouseEvent mv = (MouseEvent) event;
if (mv.getClickCount() > 0) {
Point point = new Point((int) (mv.getLocationOnScreen().getX()), (int) mv.getLocationOnScreen().getY());
// 直接contains在mac下,点击内部也会消失
Dimension d = PopUpWindow.this.getSize();
Point p = PopUpWindow.this.getLocation();
Rectangle rect = new Rectangle(p, d);
if (!rect.contains(point)) {
PopUpWindow.this.setVisible(false);
}
}
}
}
};
protected JPanel initComponents() {
JPanel rootPane = new EditorChoosePane();
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(17, 0));
contentPane.add(northPane, BorderLayout.CENTER);
JPanel labelPane = new JPanel(new BorderLayout());
labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER);
JButton popUpButton = createPopDownButton();
popUpButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
PopUpWindow.this.setVisible(false);
}
});
labelPane.add(popUpButton, BorderLayout.EAST);
contentPane.add(labelPane, BorderLayout.SOUTH);
rootPane.add(contentPane, BorderLayout.CENTER);
return rootPane;
}
}
private class EditorChoosePane extends JPanel {
public EditorChoosePane() {
super();
((FlowLayout) this.getLayout()).setVgap(1);
}
@Override
public void paintComponent(Graphics g) {
Rectangle r = this.getBounds();
g.setColor(UIConstants.NORMAL_BACKGROUND);
g.fillRoundRect(r.x, r.y, r.width, r.height, 0, 0);
g.setColor(UIConstants.LINE_COLOR);
g.drawLine(r.x, r.y, r.x, r.y + r.height);
g.drawLine(r.x, r.y + r.height - 1, r.x + r.width - 1, r.y + r.height - 1);
g.drawLine(r.x + r.width - 1, r.y, r.x + r.width - 1, r.y + r.height - 1);
}
}
private WidgetOption[] loadWidgetOptions() {
if (widgetOptions == null) {
widgetOptions = (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions());

Loading…
Cancel
Save