Browse Source

Merge branch 'feature/9.0' of http://cloud.finedevelop.com:2015/scm/~kerry/design into feature/9.0

kerry 7 years ago
parent
commit
487fd1eed0
  1. 2
      designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java
  2. 5
      designer/src/com/fr/design/actions/package.html
  3. 8
      designer/src/com/fr/design/cell/editor/package.html
  4. 5
      designer/src/com/fr/design/condition/package.html
  5. 55
      designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java
  6. 4
      designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java
  7. 55
      designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java
  8. 5
      designer/src/com/fr/design/dscolumn/package.html
  9. 5
      designer/src/com/fr/design/expand/package.html
  10. 85
      designer/src/com/fr/design/mainframe/ElementCasePane.java
  11. 3
      designer/src/com/fr/design/mainframe/InformationCollector.java
  12. 5
      designer/src/com/fr/design/mainframe/ReportComponentComposite.java
  13. 92
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java
  14. 5
      designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java
  15. 34
      designer/src/com/fr/design/module/DesignerModule.java
  16. 56
      designer/src/com/fr/design/present/BarCodePane.java
  17. 7
      designer/src/com/fr/design/present/ConditionAttributesGroupPane.java
  18. 5
      designer/src/com/fr/design/report/package.html
  19. 1251
      designer/src/com/fr/design/webattr/EditToolBar.java
  20. 16
      designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java
  21. 2
      designer/src/com/fr/design/webattr/ToolBarDragPane.java
  22. 5
      designer/src/com/fr/design/webattr/package.html
  23. 5
      designer/src/com/fr/design/widget/package.html
  24. 8
      designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java
  25. 3
      designer/src/com/fr/grid/event/package.html
  26. 5
      designer/src/com/fr/grid/package.html
  27. 58
      designer/src/com/fr/grid/selection/CellSelection.java
  28. 4
      designer/src/com/fr/grid/selection/FloatSelection.java
  29. 5
      designer/src/com/fr/grid/selection/package.html
  30. 5
      designer/src/com/fr/poly/package.html
  31. 28
      designer/src/com/fr/quickeditor/FloatQuickEditor.java
  32. 32
      designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java
  33. 5
      designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java
  34. 2
      designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java
  35. 6
      designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java
  36. 8
      designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java
  37. 66
      designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java
  38. 5
      designer/src/com/fr/quickeditor/package.html
  39. 5
      designer_base/src/com/fr/common/inputevent/package.html
  40. 14
      designer_base/src/com/fr/design/actions/core/ActionFactory.java
  41. 10
      designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java
  42. 5
      designer_base/src/com/fr/design/bbs/package.html
  43. 5
      designer_base/src/com/fr/design/border/package.html
  44. 5
      designer_base/src/com/fr/design/bridge/package.html
  45. 3
      designer_base/src/com/fr/design/condition/ConditionAttributesPane.java
  46. 5
      designer_base/src/com/fr/design/constants/package.html
  47. 5
      designer_base/src/com/fr/design/data/package.html
  48. 4
      designer_base/src/com/fr/design/dialog/package.html
  49. 5
      designer_base/src/com/fr/design/editor/package.html
  50. 5
      designer_base/src/com/fr/design/event/package.html
  51. 10
      designer_base/src/com/fr/design/extra/PluginTask.java
  52. 5
      designer_base/src/com/fr/design/extra/package.html
  53. 14
      designer_base/src/com/fr/design/extra/ucenter/Client.java
  54. 5
      designer_base/src/com/fr/design/file/package.html
  55. 22
      designer_base/src/com/fr/design/foldablepane/HeaderPane.java
  56. 5
      designer_base/src/com/fr/design/foldablepane/package.html
  57. 5
      designer_base/src/com/fr/design/formula/package.html
  58. 5
      designer_base/src/com/fr/design/fun/package.html
  59. 9
      designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java
  60. 1
      designer_base/src/com/fr/design/gui/imenu/UIPopupMenu.java
  61. 5
      designer_base/src/com/fr/design/gui/package.html
  62. 5
      designer_base/src/com/fr/design/icon/package.html
  63. 5
      designer_base/src/com/fr/design/javascript/package.html
  64. 5
      designer_base/src/com/fr/design/layout/package.html
  65. 26
      designer_base/src/com/fr/design/locale/designer.properties
  66. 36
      designer_base/src/com/fr/design/locale/designer_en_US.properties
  67. 38
      designer_base/src/com/fr/design/locale/designer_zh_CN.properties
  68. 34
      designer_base/src/com/fr/design/locale/designer_zh_TW.properties
  69. 23
      designer_base/src/com/fr/design/mainframe/DesignerFrame.java
  70. 3
      designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java
  71. 80
      designer_base/src/com/fr/design/mainframe/JFormSliderPane.java
  72. 35
      designer_base/src/com/fr/design/mainframe/JSliderPane.java
  73. 5
      designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java
  74. 35
      designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  75. 5
      designer_base/src/com/fr/design/menu/package.html
  76. 5
      designer_base/src/com/fr/design/module/package.html
  77. 5
      designer_base/src/com/fr/design/object/package.html
  78. 5
      designer_base/src/com/fr/design/preview/package.html
  79. 5
      designer_base/src/com/fr/design/roleAuthority/package.html
  80. 5
      designer_base/src/com/fr/design/scrollruler/package.html
  81. 9
      designer_base/src/com/fr/design/selection/QuickEditor.java
  82. 5
      designer_base/src/com/fr/design/selection/package.html
  83. 3
      designer_base/src/com/fr/design/style/background/gradient/GradientBar.java
  84. 2
      designer_base/src/com/fr/design/style/color/ColorSelectDialog.java
  85. 5
      designer_base/src/com/fr/design/style/package.html
  86. 5
      designer_base/src/com/fr/design/utils/package.html
  87. 5
      designer_base/src/com/fr/design/web/package.html
  88. 1
      designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java
  89. 9
      designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java
  90. 3
      designer_base/src/com/fr/env/RemoteEnv.java
  91. 5
      designer_base/src/com/fr/env/package.html
  92. 5
      designer_base/src/com/fr/file/filter/package.html
  93. 5
      designer_base/src/com/fr/file/package.html
  94. 5
      designer_base/src/com/fr/start/package.html
  95. 20
      designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java
  96. 5
      designer_chart/src/com/fr/design/chart/package.html
  97. 14
      designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperRelateFloatLinkPane.java
  98. 6
      designer_chart/src/com/fr/plugin/chart/column/VanChartCustomStackAndAxisConditionPane.java
  99. BIN
      designer_chart/src/com/fr/plugin/chart/map/images/marker-icon.png
  100. BIN
      designer_chart/src/com/fr/plugin/chart/map/images/marker-iconx2.png
  101. Some files were not shown because too many files have changed in this diff Show More

2
designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java

@ -39,7 +39,7 @@ public class EditFloatElementNameAction extends FloatSelectionAction {
if (report.getFloatElement(name) == null) { if (report.getFloatElement(name) == null) {
selectedFloatElement.setName(name); selectedFloatElement.setName(name);
} }
reportPane.setSelection(new FloatSelection(name)); ((FloatSelection) reportPane.getSelection()).setFloatName(name);
} }
}); });
nameDialog.setVisible(true); nameDialog.setVisible(true);

5
designer/src/com/fr/design/actions/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
定义了响应各种事件的 Action
</body>
</html>

8
designer/src/com/fr/design/cell/editor/package.html

@ -1,13 +1,9 @@
<html> <html>
<body bgcolor="white"> <body bgcolor="white">
<!CN[这个包中定义了单元格编辑器.包括 这个包中定义了单元格编辑器.包括
单元格编辑器({@link com.fr.cell.editor.CellEditor CellEditor})接口, 单元格编辑器({@link com.fr.cell.editor.CellEditor CellEditor})接口,
抽象实现该接口的{@link com.fr.cell.editor.AbstractCellEditor AbstractCellEditor}类, 抽象实现该接口的{@link com.fr.cell.editor.AbstractCellEditor AbstractCellEditor}类,
继承这个类的数字单元格编辑器({@link com.fr.cell.editor.NumberCellEditor NumberCellEditor})类和 继承这个类的数字单元格编辑器({@link com.fr.cell.editor.NumberCellEditor NumberCellEditor})类和
文本单元格编辑器({@link com.fr.cell.editor.GeneralCellEditor GeneralCellEditor})类.]!> 文本单元格编辑器({@link com.fr.cell.editor.GeneralCellEditor GeneralCellEditor})类.
<!EN[This package defines cell element editor,including {@link com.fr.cell.editor.CellEditor CellEditor}
interface, abstract class {@link com.fr.cell.editor.AbstractCellEditor AbstractCellEditor},
and {@link com.fr.cell.editor.NumberCellEditor NumberCellEditor},
{@link com.fr.cell.editor.GeneralCellEditor GeneralCellEditor} implement the abstract class.]!>
</body> </body>
</html> </html>

5
designer/src/com/fr/design/condition/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
条件属性悬浮编辑框中的相关面板
</body>
</html>

55
designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java

@ -14,8 +14,9 @@ import com.fr.report.cell.CellElement;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.TemplateCellElement;
import com.fr.report.cell.cellattr.CellExpandAttr; import com.fr.report.cell.cellattr.CellExpandAttr;
import javax.swing.*; import javax.swing.BorderFactory;
import java.awt.*; import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -27,6 +28,29 @@ public class DSColumnBasicPane extends BasicPane {
private ExpandDirectionPane expandDirectionPane; private ExpandDirectionPane expandDirectionPane;
private CellElement cellElement; private CellElement cellElement;
private ActionListener summaryDirectionActionlistener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (expandDirectionPane != null) {
expandDirectionPane.setNoneRadioButtonSelected(true);
}
}
};
private ActionListener othergroupDirectionActionlistener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (expandDirectionPane != null) {
expandDirectionPane.setNoneRadioButtonSelected(false);
}
}
};
private ActionListener sdcupdateActionlistener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
selectDataColumnPane.update(cellElement);
}
};
public DSColumnBasicPane() { public DSColumnBasicPane() {
this(DSColumnPane.SETTING_ALL); this(DSColumnPane.SETTING_ALL);
} }
@ -78,7 +102,7 @@ public class DSColumnBasicPane extends BasicPane {
this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER); this.add(TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize), BorderLayout.CENTER);
this.resultSetGroupPane.addListeners(summary_direction_ActionListener, otherGroup_direction_ActionListener, sdcUpdate_ActionListener); this.resultSetGroupPane.addListeners(summaryDirectionActionlistener, othergroupDirectionActionlistener, sdcupdateActionlistener);
} }
@Override @Override
@ -93,7 +117,7 @@ public class DSColumnBasicPane extends BasicPane {
this.cellElement = cellElement; this.cellElement = cellElement;
selectDataColumnPane.populate(source, cellElement); selectDataColumnPane.populate(source, cellElement, null);
CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr();
if (conditionParentPane != null) { if (conditionParentPane != null) {
@ -134,29 +158,6 @@ public class DSColumnBasicPane extends BasicPane {
resultSetGroupPane.update(); resultSetGroupPane.update();
} }
ActionListener summary_direction_ActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (expandDirectionPane != null) {
expandDirectionPane.setNoneRadioButtonSelected(true);
}
}
};
ActionListener otherGroup_direction_ActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (expandDirectionPane != null) {
expandDirectionPane.setNoneRadioButtonSelected(false);
}
}
};
ActionListener sdcUpdate_ActionListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
selectDataColumnPane.update(cellElement);
}
};
public void putElementcase(ElementCasePane t) { public void putElementcase(ElementCasePane t) {
if (conditionParentPane != null) { if (conditionParentPane != null) {
conditionParentPane.putElementcase(t); conditionParentPane.putElementcase(t);

4
designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java

@ -6,7 +6,7 @@ import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper;
import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBook;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.TemplateCellElement;
import java.awt.*; import java.awt.Dimension;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.util.Iterator; import java.util.Iterator;
@ -32,7 +32,7 @@ public class SelectedConfirmedDataColumnPane extends SelectedDataColumnPane {
tableNameComboBox.refresh(source); tableNameComboBox.refresh(source);
tableNameComboBox.setEditable(false); tableNameComboBox.setEditable(false);
tableNameComboBox.setEnabled(false); tableNameComboBox.setEnabled(false);
super.populate(source, cell); super.populate(source, cell, null);
try { try {
Iterator it = source.getTableDataNameIterator(); Iterator it = source.getTableDataNameIterator();
String name = (String) it.next(); String name = (String) it.next();

55
designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java

@ -26,14 +26,19 @@ import com.fr.report.cell.cellattr.core.group.DSColumn;
import com.fr.stable.ParameterProvider; import com.fr.stable.ParameterProvider;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.DefaultComboBoxModel;
import java.awt.*; import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
@ -41,7 +46,7 @@ import java.util.regex.Pattern;
* *
* @author yaoh.wu * @author yaoh.wu
* @version 2017年8月3日 * @version 2017年8月3日
* 复用对话框代码保留对话框原始布局 * 复用对话框代码保留对话框原始布局
* @since 8.0 * @since 8.0
*/ */
public class SelectedDataColumnPane extends BasicPane { public class SelectedDataColumnPane extends BasicPane {
@ -53,19 +58,21 @@ public class SelectedDataColumnPane extends BasicPane {
private ItemListener itemListener; private ItemListener itemListener;
private UIButton paramButton; private UIButton paramButton;
private ElementCasePane casePane;
private CellElement cellElement; // 保存当前选中的 CE
public SelectedDataColumnPane() { public SelectedDataColumnPane() {
this(true, false, null, null); this(true, false, null);
} }
public SelectedDataColumnPane(boolean showParameterButton) { public SelectedDataColumnPane(boolean showParameterButton) {
this(showParameterButton, false, null, null); this(showParameterButton, false, null);
} }
public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout, ElementCasePane casePane, TemplateCellElement cellElement) { public SelectedDataColumnPane(boolean showParameterButton, boolean verticalLayout, TemplateCellElement cellElement) {
if (verticalLayout) { if (verticalLayout) {
initComponentVerticalLayout(casePane, cellElement); initComponentVerticalLayout(cellElement);
} else { } else {
initComponent(showParameterButton); initComponent(showParameterButton);
} }
@ -119,9 +126,9 @@ public class SelectedDataColumnPane extends BasicPane {
/** /**
* 初始化竖直布局的组件 * 初始化竖直布局的组件
*/ */
public void initComponentVerticalLayout(ElementCasePane casePane, TemplateCellElement cellElement) { private void initComponentVerticalLayout(TemplateCellElement cellElement) {
initTableNameComboBox(); initTableNameComboBox();
initWithParameterButton(casePane, cellElement); initWithParameterButton(cellElement);
columnNameComboBox = new LazyComboBox() { columnNameComboBox = new LazyComboBox() {
@Override @Override
public Object[] load() { public Object[] load() {
@ -149,10 +156,13 @@ public class SelectedDataColumnPane extends BasicPane {
} }
public void populate(TableDataSource source, TemplateCellElement cellElement) { public void populate(TableDataSource source, TemplateCellElement cellElement, ElementCasePane casePane) {
tableNameComboBox.refresh(source);
this.casePane = casePane;
if (cellElement == null) { if (cellElement == null) {
return; return;
} }
this.cellElement = cellElement;
if (itemListener != null) { if (itemListener != null) {
removeListener(itemListener); removeListener(itemListener);
} }
@ -191,6 +201,14 @@ public class SelectedDataColumnPane extends BasicPane {
dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null); dsColumn.setParameters((ps != null && ps.length > 0) ? ps : null);
} }
/**
* 释放模板对象
*/
public void release() {
this.casePane = null;
this.tableNameComboBox.setModel(new DefaultComboBoxModel());
}
/** /**
* 更新面板 * 更新面板
* *
@ -245,10 +263,20 @@ public class SelectedDataColumnPane extends BasicPane {
protected void initTableNameComboBox() { protected void initTableNameComboBox() {
tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource());
final ExecutorService executorService = Executors.newSingleThreadExecutor();
tableNameComboBox.addItemListener(new ItemListener() { tableNameComboBox.addItemListener(new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
columnNameComboBox.setLoaded(false); if (e.getStateChange() == ItemEvent.SELECTED) {
executorService.execute(new Runnable() {
@Override
public void run() {
synchronized (columnNameComboBox) {
columnNameComboBox.loadInstant();
}
}
});
}
} }
}); });
tableNameComboBox.setPreferredSize(new Dimension(100, 20)); tableNameComboBox.setPreferredSize(new Dimension(100, 20));
@ -279,8 +307,7 @@ public class SelectedDataColumnPane extends BasicPane {
}); });
} }
private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) { private void initWithParameterButton(final TemplateCellElement cellElement) {
final SelectedDataColumnPane that = this;
editorPane = new UITableEditorPane<ParameterProvider>(new ParameterTableModel()); editorPane = new UITableEditorPane<ParameterProvider>(new ParameterTableModel());
paramButton = new UIButton(Inter.getLocText("FR-Designer-Basic_Dynamic_Parameter_Injection")); paramButton = new UIButton(Inter.getLocText("FR-Designer-Basic_Dynamic_Parameter_Injection"));
paramButton.addActionListener(new ActionListener() { paramButton.addActionListener(new ActionListener() {
@ -290,7 +317,7 @@ public class SelectedDataColumnPane extends BasicPane {
public void doOk() { public void doOk() {
List<ParameterProvider> parameterList = editorPane.update(); List<ParameterProvider> parameterList = editorPane.update();
ps = parameterList.toArray(new Parameter[parameterList.size()]); ps = parameterList.toArray(new Parameter[parameterList.size()]);
that.update(cellElement); update(SelectedDataColumnPane.this.cellElement);
casePane.fireTargetModified(); casePane.fireTargetModified();
} }
}); });

5
designer/src/com/fr/design/dscolumn/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
数据列相关面板
</body>
</html>

5
designer/src/com/fr/design/expand/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
"单元格属性"->"扩展"的界面
</body>
</html>

85
designer/src/com/fr/design/mainframe/ElementCasePane.java

@ -3,7 +3,13 @@
*/ */
package com.fr.design.mainframe; package com.fr.design.mainframe;
import com.fr.base.*; import com.fr.base.BaseFormula;
import com.fr.base.BaseUtils;
import com.fr.base.DynamicUnitList;
import com.fr.base.FRContext;
import com.fr.base.Formula;
import com.fr.base.ScreenResolution;
import com.fr.base.Style;
import com.fr.design.DesignState; import com.fr.design.DesignState;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
@ -12,8 +18,30 @@ import com.fr.design.actions.ExitAuthorityEditAction;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.cell.BorderAction; import com.fr.design.actions.cell.BorderAction;
import com.fr.design.actions.cell.CleanAuthorityAction; import com.fr.design.actions.cell.CleanAuthorityAction;
import com.fr.design.actions.cell.style.*; import com.fr.design.actions.cell.style.AlignmentAction;
import com.fr.design.actions.columnrow.*; import com.fr.design.actions.cell.style.ReportFontBoldAction;
import com.fr.design.actions.cell.style.ReportFontForegroundAction;
import com.fr.design.actions.cell.style.ReportFontItalicAction;
import com.fr.design.actions.cell.style.ReportFontNameAction;
import com.fr.design.actions.cell.style.ReportFontSizeAction;
import com.fr.design.actions.cell.style.ReportFontUnderlineAction;
import com.fr.design.actions.cell.style.StyleBackgroundAction;
import com.fr.design.actions.columnrow.CancelColumnAction;
import com.fr.design.actions.columnrow.CancelRowAction;
import com.fr.design.actions.columnrow.ColumnHideAction;
import com.fr.design.actions.columnrow.ColumnWidthAction;
import com.fr.design.actions.columnrow.DeleteColumnAction;
import com.fr.design.actions.columnrow.DeleteRowAction;
import com.fr.design.actions.columnrow.FootColumnAction;
import com.fr.design.actions.columnrow.FootRowAction;
import com.fr.design.actions.columnrow.HeadColumnAction;
import com.fr.design.actions.columnrow.HeadRowAction;
import com.fr.design.actions.columnrow.InsertColumnAction;
import com.fr.design.actions.columnrow.InsertRowAction;
import com.fr.design.actions.columnrow.ResetColumnHideAction;
import com.fr.design.actions.columnrow.ResetRowHideAction;
import com.fr.design.actions.columnrow.RowHeightAction;
import com.fr.design.actions.columnrow.RowHideAction;
import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.core.ActionFactory;
import com.fr.design.actions.edit.CopyAction; import com.fr.design.actions.edit.CopyAction;
import com.fr.design.actions.edit.CutAction; import com.fr.design.actions.edit.CutAction;
@ -24,8 +52,17 @@ import com.fr.design.cell.bar.DynamicScrollBar;
import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.CellElementsClip;
import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.ElementsTransferable;
import com.fr.design.cell.clipboard.FloatElementsClip; import com.fr.design.cell.clipboard.FloatElementsClip;
import com.fr.design.cell.editor.*; import com.fr.design.cell.editor.BiasTextPainterCellEditor;
import com.fr.design.cell.editor.CellEditor; import com.fr.design.cell.editor.CellEditor;
import com.fr.design.cell.editor.ChartCellEditor;
import com.fr.design.cell.editor.ChartFloatEditor;
import com.fr.design.cell.editor.DSColumnCellEditor;
import com.fr.design.cell.editor.FormulaCellEditor;
import com.fr.design.cell.editor.FormulaFloatEditor;
import com.fr.design.cell.editor.ImageCellEditor;
import com.fr.design.cell.editor.ImageFloatEditor;
import com.fr.design.cell.editor.RichTextCellEditor;
import com.fr.design.cell.editor.SubReportCellEditor;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.designer.EditingState; import com.fr.design.designer.EditingState;
import com.fr.design.designer.TargetComponent; import com.fr.design.designer.TargetComponent;
@ -35,7 +72,11 @@ import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.mainframe.cell.QuickEditorRegion; import com.fr.design.mainframe.cell.QuickEditorRegion;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.menu.*; import com.fr.design.menu.KeySetUtils;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.NameSeparator;
import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef;
import com.fr.design.selection.QuickEditor; import com.fr.design.selection.QuickEditor;
import com.fr.design.selection.Selectedable; import com.fr.design.selection.Selectedable;
import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionEvent;
@ -43,7 +84,11 @@ import com.fr.design.selection.SelectionListener;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.grid.*; import com.fr.grid.Grid;
import com.fr.grid.GridColumn;
import com.fr.grid.GridCorner;
import com.fr.grid.GridRow;
import com.fr.grid.GridUtils;
import com.fr.grid.dnd.ElementCasePaneDropTarget; import com.fr.grid.dnd.ElementCasePaneDropTarget;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.Selection; import com.fr.grid.selection.Selection;
@ -65,12 +110,27 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.ColumnRow; import com.fr.stable.ColumnRow;
import com.fr.stable.unit.FU; import com.fr.stable.unit.FU;
import javax.swing.*; import javax.swing.AbstractAction;
import java.awt.*; import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollBar;
import javax.swing.KeyStroke;
import java.awt.AWTEvent;
import java.awt.Adjustable;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable; import java.awt.datatransfer.Transferable;
import java.awt.event.*; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.Set; import java.util.Set;
@ -462,8 +522,15 @@ public abstract class ElementCasePane<T extends TemplateElementCase> extends Tar
* 因为这边判断selection是一个selection所以不会触发fireSelectionChanged * 因为这边判断selection是一个selection所以不会触发fireSelectionChanged
*/ */
public void setSelection(Selection selection) { public void setSelection(Selection selection) {
if (!ComparatorUtils.equals(this.selection, selection) || if (!ComparatorUtils.equals(this.selection, selection) ||
!ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) {
try {
//旧选中内容编辑器释放模板对象
this.getCurrentEditor().release();
} catch (UnsupportedOperationException e) {
FRLogger.getLogger().info("Nothing to release");
}
this.selection = selection; this.selection = selection;
fireSelectionChanged(); fireSelectionChanged();
} }

3
designer/src/com/fr/design/mainframe/InformationCollector.java

@ -344,7 +344,8 @@ public class InformationCollector implements XMLReadable, XMLWriter {
} }
private void sendUserInfoInOtherThread(){ private void sendUserInfoInOtherThread(){
if (!DesignerEnvManager.getEnvManager().isJoinProductImprove() || !FRContext.isChineseEnv()) {
if (!DesignerEnvManager.getEnvManager().isJoinProductImprove() || !FRContext.isChineseEnv() || !FRContext.getCurrentEnv().isLocalEnv()) {
return; return;
} }

5
designer/src/com/fr/design/mainframe/ReportComponentComposite.java

@ -127,9 +127,8 @@ public class ReportComponentComposite extends JComponent {
templateStateList.add(null); templateStateList.add(null);
} }
centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement()); centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement());
if (jSliderContainer != null){ jSliderContainer=JSliderPane.getInstance();
jSliderContainer.reset(); jSliderContainer.reset();
}
} }
if (centerCardPane.editingComponet.elementCasePane == null) { if (centerCardPane.editingComponet.elementCasePane == null) {

92
designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java

@ -15,15 +15,12 @@ import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.InputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -40,6 +37,7 @@ public class FileSearchManager implements AlphaFineSearchProvider {
private SearchResult filterModelList; private SearchResult filterModelList;
private SearchResult lessModelList; private SearchResult lessModelList;
private SearchResult moreModelList; private SearchResult moreModelList;
private String searchText;
private List<FileNode> fileNodes = null; private List<FileNode> fileNodes = null;
//停止搜索 //停止搜索
private boolean stopSearch = false; private boolean stopSearch = false;
@ -75,8 +73,8 @@ public class FileSearchManager implements AlphaFineSearchProvider {
this.filterModelList = new SearchResult(); this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult(); this.lessModelList = new SearchResult();
this.moreModelList = new SearchResult(); this.moreModelList = new SearchResult();
searchText = dealWithSearchText(searchText); this.searchText = dealWithSearchText(searchText);
if (StringUtils.isBlank(searchText) || ComparatorUtils.equals(searchText, DS_NAME)) { if (StringUtils.isBlank(this.searchText) || ComparatorUtils.equals(this.searchText, DS_NAME)) {
lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates"))); lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates")));
return lessModelList; return lessModelList;
} }
@ -86,7 +84,7 @@ public class FileSearchManager implements AlphaFineSearchProvider {
AlphaFineHelper.checkCancel(); AlphaFineHelper.checkCancel();
isContainCpt = true; isContainCpt = true;
isContainFrm = true; isContainFrm = true;
doSearch(searchText, true, env); doSearch(this.searchText, true, env);
if (stopSearch) { if (stopSearch) {
lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE));
lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE));
@ -107,14 +105,12 @@ public class FileSearchManager implements AlphaFineSearchProvider {
return moreModelList; return moreModelList;
} }
this.filterModelList = new SearchResult(); this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult();
this.moreModelList = new SearchResult(); this.moreModelList = new SearchResult();
searchText = dealWithSearchText(searchText);
Env env = FRContext.getCurrentEnv(); Env env = FRContext.getCurrentEnv();
AlphaFineHelper.checkCancel(); AlphaFineHelper.checkCancel();
isContainCpt = true; isContainCpt = true;
isContainFrm = true; isContainFrm = true;
doSearch(searchText, false, env); doSearch(this.searchText, false, env);
moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size()));
return moreModelList; return moreModelList;
} }
@ -122,10 +118,13 @@ public class FileSearchManager implements AlphaFineSearchProvider {
private void doSearch(String searchText, boolean needMore, Env env) { private void doSearch(String searchText, boolean needMore, Env env) {
for (FileNode node : fileNodes) { for (FileNode node : fileNodes) {
boolean isAlreadyContain = false; boolean isAlreadyContain = false;
String fileEnvPath = node.getEnvPath();
String filePath = StableUtils.pathJoin(env.getPath(), fileEnvPath);
isAlreadyContain = searchFile(searchText, node, isAlreadyContain, needMore); isAlreadyContain = searchFile(searchText, node, isAlreadyContain, needMore);
searchFileContent(searchText, node, isAlreadyContain, filePath, needMore); if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent() && node.getLock() == null) {
searchFileContent(env, searchText, node, isAlreadyContain, needMore);
}
if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && stopSearch) {
return;
}
} }
} }
@ -147,40 +146,36 @@ public class FileSearchManager implements AlphaFineSearchProvider {
* @param searchText * @param searchText
* @param node * @param node
* @param isAlreadyContain * @param isAlreadyContain
* @param filePath
*/ */
private void searchFileContent(String searchText, FileNode node, boolean isAlreadyContain, String filePath, boolean needMore) { private void searchFileContent(Env env, String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) {
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent()) { try {
InputStream inputStream = env.readBean(node.getEnvPath().substring(ProjectConstants.REPORTLETS_NAME.length() + 1), ProjectConstants.REPORTLETS_NAME);
try { InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8");
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File(filePath)), "UTF-8"); BufferedReader reader = new BufferedReader(isr);
BufferedReader reader = new BufferedReader(isr); String line;
String line; int columnNumber;
int columnNumber; boolean isFoundInContent = false;
boolean isFoundInContent = false; while ((line = reader.readLine()) != null) {
while ((line = reader.readLine()) != null) { columnNumber = line.toLowerCase().indexOf(searchText);
columnNumber = line.toLowerCase().indexOf(searchText); if (columnNumber != -1) {
if (columnNumber != -1) { isFoundInContent = true;
isFoundInContent = true; break;
break;
}
} }
if (isFoundInContent && !isAlreadyContain) { }
FileModel model = new FileModel(node.getName(), node.getEnvPath()); if (isFoundInContent && !isAlreadyContain) {
if (!AlphaFineHelper.getFilterResult().contains(model)) { FileModel model = new FileModel(node.getName(), node.getEnvPath());
filterModelList.add(model); if (!AlphaFineHelper.getFilterResult().contains(model)) {
} AlphaFineHelper.checkCancel();
if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { filterModelList.add(model);
stopSearch = true; }
} if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
stopSearch = true;
} }
isr.close();
reader.close();
} catch (FileNotFoundException e) {
FRLogger.getLogger().error(e.getMessage());
} catch (IOException e) {
FRLogger.getLogger().error(e.getMessage());
} }
isr.close();
reader.close();
} catch (Exception e) {
FRLogger.getLogger().error("file read error: " + e.getMessage());
} }
} }
@ -197,9 +192,10 @@ public class FileSearchManager implements AlphaFineSearchProvider {
if (node.getName().toLowerCase().contains(searchText)) { if (node.getName().toLowerCase().contains(searchText)) {
FileModel model = new FileModel(node.getName(), node.getEnvPath()); FileModel model = new FileModel(node.getName(), node.getEnvPath());
if (!AlphaFineHelper.getFilterResult().contains(model)) { if (!AlphaFineHelper.getFilterResult().contains(model)) {
AlphaFineHelper.checkCancel();
filterModelList.add(model); filterModelList.add(model);
} }
if(filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
stopSearch = true; stopSearch = true;
} }
isAlreadyContain = true; isAlreadyContain = true;
@ -286,4 +282,12 @@ public class FileSearchManager implements AlphaFineSearchProvider {
public void setMoreModelList(SearchResult moreModelList) { public void setMoreModelList(SearchResult moreModelList) {
this.moreModelList = moreModelList; this.moreModelList = moreModelList;
} }
public String getSearchText() {
return searchText;
}
public void setSearchText(String searchText) {
this.searchText = searchText;
}
} }

5
designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java

@ -120,4 +120,9 @@ public abstract class AbstractDSCellEditorPane extends JPanel {
scrollBar.setBlockIncrement(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP); scrollBar.setBlockIncrement(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP);
scrollBar.setBorder(BorderFactory.createMatteBorder(0, CONTENT_PANE_WIDTH_GAP, 0, 0, this.getBackground())); scrollBar.setBorder(BorderFactory.createMatteBorder(0, CONTENT_PANE_WIDTH_GAP, 0, 0, this.getBackground()));
} }
/**
* 释放tc
*/
protected abstract void release();
} }

34
designer/src/com/fr/design/module/DesignerModule.java

@ -140,23 +140,21 @@ public class DesignerModule extends DesignModule {
* kunsnat:注册单元格选中Editor * kunsnat:注册单元格选中Editor
*/ */
private void registerCellEditor() { private void registerCellEditor() {
ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor());
ActionFactory.registerCellEditorClass(String.class, CellStringQuickEditor.class); ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor());
ActionFactory.registerCellEditorClass(Number.class, CellStringQuickEditor.class); ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor());
ActionFactory.registerCellEditorClass(BaseFormula.class, CellFormulaQuickEditor.class); ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor());
ActionFactory.registerCellEditorClass(SubReport.class, CellSubReportEditor.class); ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor());
ActionFactory.registerCellEditorClass(RichText.class, CellRichTextEditor.class); ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor());
ActionFactory.registerCellEditorClass(DSColumn.class, CellDSColumnEditor.class); ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor());
ActionFactory.registerCellEditorClass(Image.class, CellImageQuickEditor.class); ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor());
ActionFactory.registerCellEditorClass(BiasTextPainter.class, CellBiasTextPainterEditor.class); ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor());
ActionFactory.registerCellEditorClass(BufferedImage.class, CellImageQuickEditor.class); //todo 图表编辑器populate没能实现刷新面板显示
ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class);
Set<ElementUIProvider> providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); Set<ElementUIProvider> providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING);
for (ElementUIProvider provider : providers) { for (ElementUIProvider provider : providers) {
try { try {
ActionFactory.registerCellEditorClass(provider.targetObjectClass(), provider.quickEditor()); ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance());
} catch (Exception e) { } catch (Exception e) {
FRLogger.getLogger().error(e.getMessage(), e); FRLogger.getLogger().error(e.getMessage(), e);
} }
@ -174,11 +172,11 @@ public class DesignerModule extends DesignModule {
*/ */
private void registerFloatEditor() { private void registerFloatEditor() {
ActionFactory.registerFloatEditorClass(String.class, FloatStringQuickEditor.class); ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor());
ActionFactory.registerFloatEditorClass(Formula.class, FloatStringQuickEditor.class); ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor());
ActionFactory.registerFloatEditorClass(Image.class, FloatImageQuickEditor.class); ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor());
ActionFactory.registerFloatEditorClass(BufferedImage.class, FloatImageQuickEditor.class); ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor());
//todo 图表编辑器populate没能实现刷新面板显示
ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class);
} }

56
designer/src/com/fr/design/present/BarCodePane.java

@ -8,7 +8,6 @@ import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UIBasicSpinner;
import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
@ -22,11 +21,18 @@ import com.fr.report.cell.painter.barcode.BarcodeImpl;
import com.fr.report.cell.painter.barcode.core.BarCodeUtils; import com.fr.report.cell.painter.barcode.core.BarCodeUtils;
import com.fr.stable.pinyin.ChineseHelper; import com.fr.stable.pinyin.ChineseHelper;
import javax.swing.*; import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.*; import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.awt.font.FontRenderContext; import java.awt.font.FontRenderContext;
@ -49,10 +55,10 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
private UIComboBox typeComboBox; private UIComboBox typeComboBox;
private UISpinner barWidthSpinner; private UISpinner barWidthSpinner;
private UISpinner barHeightSpinner; private UISpinner barHeightSpinner;
private UISpinner RCodesizespinner; private UISpinner sizeSpinner;
private UICheckBox drawingTextCheckBox; private UICheckBox drawingTextCheckBox;
private UIComboBox RCodeVersionComboBox; private UIComboBox versionComboBox;
private UIComboBox RCodeErrorCorrectComboBox; private UIComboBox errorCorrectComboBox;
private UILabel typeSetLabel; private UILabel typeSetLabel;
private String testText = "12345"; private String testText = "12345";
@ -74,9 +80,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
borderPane.add(barCodePreviewPane, BorderLayout.CENTER); borderPane.add(barCodePreviewPane, BorderLayout.CENTER);
setTypeComboBox(); setTypeComboBox();
setSome(); setSome();
RCodesizespinner = new UISpinner(1,6,1,2); sizeSpinner = new UISpinner(1,6,1,2);
RCodeVersionComboBox = new UIComboBox(); versionComboBox = new UIComboBox();
RCodeErrorCorrectComboBox = new UIComboBox(); errorCorrectComboBox = new UIComboBox();
typeSetLabel = new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT); typeSetLabel = new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT);
initVersionComboBox(); initVersionComboBox();
initErrorCorrectComboBox(); initErrorCorrectComboBox();
@ -170,13 +176,13 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
UILabel uiLabel = new UILabel(Inter.getLocText("RCodeVersion"), UILabel.LEFT); UILabel uiLabel = new UILabel(Inter.getLocText("RCodeVersion"), UILabel.LEFT);
uiLabel.setPreferredSize(typeSetLabel.getPreferredSize()); uiLabel.setPreferredSize(typeSetLabel.getPreferredSize());
RCodeVersionComboBox.setPreferredSize(new Dimension(155,20)); versionComboBox.setPreferredSize(new Dimension(155,20));
RCodeErrorCorrectComboBox.setPreferredSize(new Dimension(155,20)); errorCorrectComboBox.setPreferredSize(new Dimension(155,20));
RCodesizespinner.setPreferredSize(new Dimension(155,20)); sizeSpinner.setPreferredSize(new Dimension(155,20));
Component[][] components_special = new Component[][]{ Component[][] components_special = new Component[][]{
new Component[]{uiLabel, RCodeVersionComboBox}, new Component[]{uiLabel, versionComboBox},
new Component[]{new UILabel(Inter.getLocText("RCodeErrorCorrect"), UILabel.LEFT), RCodeErrorCorrectComboBox}, new Component[]{new UILabel(Inter.getLocText("RCodeErrorCorrect"), UILabel.LEFT), errorCorrectComboBox},
new Component[]{new UILabel(Inter.getLocText("RCodeDrawPix"), UILabel.LEFT), RCodesizespinner} new Component[]{new UILabel(Inter.getLocText("RCodeDrawPix"), UILabel.LEFT), sizeSpinner}
}; };
JPanel specialPane = TableLayoutHelper.createGapTableLayoutPane(components_special, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE); JPanel specialPane = TableLayoutHelper.createGapTableLayoutPane(components_special, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE);
@ -184,17 +190,17 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
} }
private void addlistener() { private void addlistener() {
RCodesizespinner.addChangeListener(new ChangeListener() { sizeSpinner.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
repaintPreviewBarCode(); repaintPreviewBarCode();
} }
}); });
RCodeVersionComboBox.addItemListener(new ItemListener() { versionComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
repaintPreviewBarCode(); repaintPreviewBarCode();
} }
}); });
RCodeErrorCorrectComboBox.addItemListener(new ItemListener() { errorCorrectComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
repaintPreviewBarCode(); repaintPreviewBarCode();
} }
@ -227,12 +233,12 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
private void initVersionComboBox() { private void initVersionComboBox() {
String[] array = {Inter.getLocText(new String[]{"Auto", "Choose"}), "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"}; String[] array = {Inter.getLocText(new String[]{"Auto", "Choose"}), "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"};
initcombobox(this.RCodeVersionComboBox, array, 0); initcombobox(this.versionComboBox, array, 0);
} }
private void initErrorCorrectComboBox() { private void initErrorCorrectComboBox() {
String[] array = {"L" + Inter.getLocText("Level") + "7%", "M" + Inter.getLocText("Level") + "15%", "Q" + Inter.getLocText("Level") + "25%", "H" + Inter.getLocText("Level") + "30%"}; String[] array = {"L" + Inter.getLocText("Level") + "7%", "M" + Inter.getLocText("Level") + "15%", "Q" + Inter.getLocText("Level") + "25%", "H" + Inter.getLocText("Level") + "30%"};
initcombobox(this.RCodeErrorCorrectComboBox, array, 1); initcombobox(this.errorCorrectComboBox, array, 1);
} }
private void initcombobox(UIComboBox combobox, String[] array, int index) { private void initcombobox(UIComboBox combobox, String[] array, int index) {
@ -270,10 +276,12 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
} }
this.setTestText(BarCodeUtils.getTestTextByBarCode(barcodeAttr.getType())); this.setTestText(BarCodeUtils.getTestTextByBarCode(barcodeAttr.getType()));
this.typeComboBox.setSelectedIndex(barcodeAttr.getType()); this.typeComboBox.setSelectedIndex(barcodeAttr.getType());
this.versionComboBox.setSelectedIndex(barcodeAttr.getRCodeVersion());
this.errorCorrectComboBox.setSelectedIndex(barcodeAttr.getRCodeErrorCorrect());
this.barWidthSpinner.setValue(new Double(barcodeAttr.getBarWidth()) * 10); this.barWidthSpinner.setValue(new Double(barcodeAttr.getBarWidth()) * 10);
this.barHeightSpinner.setValue(new Integer(barcodeAttr.getBarHeight())); this.barHeightSpinner.setValue(new Integer(barcodeAttr.getBarHeight()));
this.drawingTextCheckBox.setSelected(barcodeAttr.isDrawingText()); this.drawingTextCheckBox.setSelected(barcodeAttr.isDrawingText());
this.RCodesizespinner.setValue(new Integer(barcodeAttr.getRcodeDrawPix())); this.sizeSpinner.setValue(new Integer(barcodeAttr.getRcodeDrawPix()));
this.repaintPreviewBarCode(); this.repaintPreviewBarCode();
} }
@ -281,9 +289,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
public BarcodePresent updateBean() { public BarcodePresent updateBean() {
BarcodeAttr barcodeAttr = new BarcodeAttr(); BarcodeAttr barcodeAttr = new BarcodeAttr();
if ((typeComboBox.getSelectedIndex() == NUM16)) { if ((typeComboBox.getSelectedIndex() == NUM16)) {
barcodeAttr.setRCodeVersion(this.RCodeVersionComboBox.getSelectedIndex()); barcodeAttr.setRCodeVersion(this.versionComboBox.getSelectedIndex());
barcodeAttr.setRCodeErrorCorrect(this.RCodeErrorCorrectComboBox.getSelectedIndex()); barcodeAttr.setRCodeErrorCorrect(this.errorCorrectComboBox.getSelectedIndex());
barcodeAttr.setRcodeDrawPix((int) this.RCodesizespinner.getValue()); barcodeAttr.setRcodeDrawPix((int) this.sizeSpinner.getValue());
} }
barcodeAttr.setType(this.typeComboBox.getSelectedIndex()); barcodeAttr.setType(this.typeComboBox.getSelectedIndex());
barcodeAttr.setBarWidth(((Double) this.barWidthSpinner.getValue()).doubleValue() / 10); barcodeAttr.setBarWidth(((Double) this.barWidthSpinner.getValue()).doubleValue() / 10);

7
designer/src/com/fr/design/present/ConditionAttributesGroupPane.java

@ -16,6 +16,7 @@ import com.fr.design.gui.controlpane.NameObjectCreator;
import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.Selection;
import com.fr.report.cell.CellElement; import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.TemplateCellElement;
@ -29,6 +30,7 @@ import com.fr.stable.Nameable;
public class ConditionAttributesGroupPane extends UIListControlPane { public class ConditionAttributesGroupPane extends UIListControlPane {
private static ConditionAttributesGroupPane singleton; private static ConditionAttributesGroupPane singleton;
private TemplateCellElement editCellElement; // 当前单元格对象 private TemplateCellElement editCellElement; // 当前单元格对象
private Selection editSelection; // 当前编辑对象
private ElementCasePane ePane; private ElementCasePane ePane;
private ConditionAttributesGroupPane() { private ConditionAttributesGroupPane() {
@ -52,10 +54,8 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
if (isPopulating) { if (isPopulating) {
return; return;
} }
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase(); final TemplateElementCase tplEC = ePane.getEditingElementCase();
ReportActionUtils.actionIterateWithCellSelection((CellSelection) editSelection, tplEC, new ReportActionUtils.IterAction() {
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) { public void dealWith(CellElement editCellElement) {
((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup()); ((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup());
} }
@ -75,6 +75,7 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
public void populate(ElementCasePane ePane) { public void populate(ElementCasePane ePane) {
this.ePane = ePane; this.ePane = ePane;
this.editSelection = ePane.getSelection();
CellSelection cs = (CellSelection) ePane.getSelection(); CellSelection cs = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase(); final TemplateElementCase tplEC = ePane.getEditingElementCase();
editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow()); editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow());

5
designer/src/com/fr/design/report/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
包含制作模版过程中可能用到的各种面板(如页面设置、富文本编辑、Excel导出、移动端自适应等)
</body>
</html>

1251
designer/src/com/fr/design/webattr/EditToolBar.java

File diff suppressed because it is too large Load Diff

16
designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java

@ -32,7 +32,8 @@ public class ReportWebWidgetConstants {
public static WidgetOption[] getWriteToolBarInstance() { public static WidgetOption[] getWriteToolBarInstance() {
return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE, return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE,
APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED}; APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, WRITEOFFLINEHTML, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED,
IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND};
} }
public static WidgetOption[] getFormToolBarInstance() { public static WidgetOption[] getFormToolBarInstance() {
@ -148,5 +149,16 @@ public class ReportWebWidgetConstants {
// 数据清空 // 数据清空
public static final WidgetOption WRITESTASHCLEAR = WidgetOptionFactory public static final WidgetOption WRITESTASHCLEAR = WidgetOptionFactory
.createByWidgetClass(Inter.getLocText("FR-Engine-Write_Clear"), BaseUtils.readIcon("/com/fr/web/images/edit/clearstash.png"), ClearStashedButton.class); .createByWidgetClass(Inter.getLocText("FR-Engine-Write_Clear"), BaseUtils.readIcon("/com/fr/web/images/edit/clearstash.png"), ClearStashedButton.class);
//Excel导入
public static final WidgetOption IMPORTEXCEL= WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Excel_Import_Repeat"),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ExcelImport.class);
//Excel导入_覆盖
public static final WidgetOption IMPORTEXCEL_COVER= WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Excel_Import_Cover"),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ImExcelCover.class);
//Excel导入_清空
public static final WidgetOption IMPORTEXCEL_CLEAN= WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Excel_Import_Clean"),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ImExcelClean.class);
//Excel导入_增量
public static final WidgetOption IMPORTEXCEL_APPEND= WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Engine_Excel_Import_Append"),
BaseUtils.readIcon("/com/fr/web/images/excel.png"), ImExcelAppend.class);
} }

2
designer/src/com/fr/design/webattr/ToolBarDragPane.java

@ -34,7 +34,7 @@ import java.awt.image.ImageObserver;
public class ToolBarDragPane extends WidgetToolBarPane { public class ToolBarDragPane extends WidgetToolBarPane {
private static final int COLUMN = 4; private static final int COLUMN = 4;
private int row = 6; private int row = 7;
private DefaultTableModel toolbarButtonTableModel; private DefaultTableModel toolbarButtonTableModel;
private JTable layoutTable; private JTable layoutTable;
private UICheckBox isUseToolBarCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Use_ToolBar") + ":"); // 是否使用工具栏 private UICheckBox isUseToolBarCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Use_ToolBar") + ":"); // 是否使用工具栏

5
designer/src/com/fr/design/webattr/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
模版web属性相关界面
</body>
</html>

5
designer/src/com/fr/design/widget/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
控件设置相关面板
</body>
</html>

8
designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java

@ -68,7 +68,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane {
return; return;
} }
List<NameObject> nameObjectList = new ArrayList<>(); List<NameObject> nameObjectList = new ArrayList<NameObject>();
int submiterCount = reportWriteAttr.getSubmitVisitorCount(); int submiterCount = reportWriteAttr.getSubmitVisitorCount();
for (int i = 0; i < submiterCount; i++) { for (int i = 0; i < submiterCount; i++) {
@ -169,8 +169,8 @@ public class SubmitVisitorListPane extends ObjectJControlPane {
public CustomPane() { public CustomPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
customSubmitPanes = new HashMap<>(); customSubmitPanes = new HashMap<String, BasicBeanPane>();
comboItemsMap = new HashMap<>(); comboItemsMap = new HashMap<String, String>();
Set<SubmitProvider> providers = ExtraDesignClassManager.getInstance().getArray(SubmitProvider.MARK_STRING); Set<SubmitProvider> providers = ExtraDesignClassManager.getInstance().getArray(SubmitProvider.MARK_STRING);
addSubmitPane(new DefaultSubmit()); addSubmitPane(new DefaultSubmit());
@ -178,7 +178,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane {
addSubmitPane(provider); addSubmitPane(provider);
} }
configTypes = new ArrayList<>(); configTypes = new ArrayList<String>();
for (Map.Entry<String, BasicBeanPane> entry : customSubmitPanes.entrySet()) { for (Map.Entry<String, BasicBeanPane> entry : customSubmitPanes.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
configTypes.add(comboItemsMap.get(key)); configTypes.add(comboItemsMap.get(key));

3
designer/src/com/fr/grid/event/package.html

@ -1,6 +1,5 @@
<html> <html>
<body bgcolor="white"> <body bgcolor="white">
<!CN[这个包中定义了监听单元格变化的接口和类.]!> 这个包中定义了监听单元格变化的接口和类.
<!EN[This package defines cell element listener classes and event classes.]!>
</body> </body>
</html> </html>

5
designer/src/com/fr/grid/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
表格相关
</body>
</html>

58
designer/src/com/fr/grid/selection/CellSelection.java

@ -49,8 +49,9 @@ import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.unit.FU; import com.fr.stable.unit.FU;
import javax.swing.*; import javax.swing.JOptionPane;
import java.awt.*; import javax.swing.SwingUtilities;
import java.awt.Rectangle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -114,6 +115,7 @@ public class CellSelection extends Selection {
/** /**
* 增加选中的区域 * 增加选中的区域
*
* @param cellRectangle 区域 * @param cellRectangle 区域
*/ */
public void addCellRectangle(Rectangle cellRectangle) { public void addCellRectangle(Rectangle cellRectangle) {
@ -164,6 +166,7 @@ public class CellSelection extends Selection {
/** /**
* 清除区域块 * 清除区域块
*
* @param i 区域块 * @param i 区域块
*/ */
public void clearCellRectangles(int i) { public void clearCellRectangles(int i) {
@ -172,8 +175,9 @@ public class CellSelection extends Selection {
/** /**
* 包含单元格 * 包含单元格
* @param column *
* @param row * @param column
* @param row
* @return 若不包含返回-1 * @return 若不包含返回-1
*/ */
public int containsCell(int column, int row) { public int containsCell(int column, int row) {
@ -205,6 +209,7 @@ public class CellSelection extends Selection {
/** /**
* 转换成矩形 * 转换成矩形
*
* @return 矩形 * @return 矩形
*/ */
public Rectangle toRectangle() { public Rectangle toRectangle() {
@ -213,6 +218,7 @@ public class CellSelection extends Selection {
/** /**
* 是否选择一个单元格 * 是否选择一个单元格
*
* @param ePane 区域 * @param ePane 区域
* @return 是则返回rue * @return 是则返回rue
*/ */
@ -239,8 +245,9 @@ public class CellSelection extends Selection {
/** /**
* 作为可传输的 * 作为可传输的
*
* @param transferable 传输介质 * @param transferable 传输介质
* @param ePane 区域 * @param ePane 区域
*/ */
public void asTransferable(ElementsTransferable transferable, ElementCasePane ePane) { public void asTransferable(ElementsTransferable transferable, ElementCasePane ePane) {
java.util.List<TemplateCellElement> list = new java.util.ArrayList<TemplateCellElement>(); java.util.List<TemplateCellElement> list = new java.util.ArrayList<TemplateCellElement>();
@ -251,12 +258,12 @@ public class CellSelection extends Selection {
TemplateCellElement cellElement = (TemplateCellElement) cells.next(); TemplateCellElement cellElement = (TemplateCellElement) cells.next();
list.add((TemplateCellElement) cellElement.deriveCellElement(cellElement.getColumn() - column, cellElement.getRow() - row)); list.add((TemplateCellElement) cellElement.deriveCellElement(cellElement.getColumn() - column, cellElement.getRow() - row));
} }
FU [] columnWidth = new FU[columnSpan]; FU[] columnWidth = new FU[columnSpan];
FU [] rowHeight = new FU[rowSpan]; FU[] rowHeight = new FU[rowSpan];
for (int i = 0; i < columnSpan; i++){ for (int i = 0; i < columnSpan; i++) {
columnWidth[i] = ec.getColumnWidth(this.column + i); columnWidth[i] = ec.getColumnWidth(this.column + i);
} }
for (int j = 0; j < rowSpan; j++){ for (int j = 0; j < rowSpan; j++) {
rowHeight[j] = ec.getRowHeight(this.row + j); rowHeight[j] = ec.getRowHeight(this.row + j);
} }
transferable.addObject(new CellElementsClip(this.columnSpan, this.rowSpan, columnWidth, rowHeight, list.toArray(new TemplateCellElement[list.size()]))); transferable.addObject(new CellElementsClip(this.columnSpan, this.rowSpan, columnWidth, rowHeight, list.toArray(new TemplateCellElement[list.size()])));
@ -264,9 +271,10 @@ public class CellSelection extends Selection {
/** /**
* 黏贴单元格 * 黏贴单元格
*
* @param ceClip 单元格 * @param ceClip 单元格
* @param ePane 区域 * @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@Override @Override
public boolean pasteCellElementsClip(CellElementsClip ceClip, ElementCasePane ePane) { public boolean pasteCellElementsClip(CellElementsClip ceClip, ElementCasePane ePane) {
@ -281,8 +289,9 @@ public class CellSelection extends Selection {
/** /**
* 黏贴字符串 * 黏贴字符串
* @param str 字符串 *
* @param ePane 区域 * @param str 字符串
* @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@Override @Override
@ -329,7 +338,8 @@ public class CellSelection extends Selection {
/** /**
* 黏贴其他 * 黏贴其他
* @param ob 要黏贴的东西 *
* @param ob 要黏贴的东西
* @param ePane 区域 * @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@ -352,6 +362,7 @@ public class CellSelection extends Selection {
/** /**
* 是否能合并单元格 * 是否能合并单元格
*
* @param ePane 区域 * @param ePane 区域
* @return 是则返回true * @return 是则返回true
*/ */
@ -363,6 +374,7 @@ public class CellSelection extends Selection {
/** /**
* 合并单元格 * 合并单元格
*
* @param ePane 区域 * @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@ -386,6 +398,7 @@ public class CellSelection extends Selection {
/** /**
* 是否撤销合并单元格 * 是否撤销合并单元格
*
* @param ePane 区域 * @param ePane 区域
* @return 是则返回true * @return 是则返回true
*/ */
@ -407,6 +420,7 @@ public class CellSelection extends Selection {
/** /**
* 撤销合并单元格 * 撤销合并单元格
*
* @param ePane 区域 * @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@ -443,6 +457,7 @@ public class CellSelection extends Selection {
/** /**
* 创建弹出菜单 * 创建弹出菜单
*
* @param ePane 区域 * @param ePane 区域
* @return 菜单 * @return 菜单
*/ */
@ -477,7 +492,7 @@ public class CellSelection extends Selection {
popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu()); popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu());
popup.add(new CellAttributeAction().createMenuItem()); popup.add(new CellAttributeAction().createMenuItem());
JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 控件设置 if (jTemplate.isJWorkBook()) { //表单中报表块编辑屏蔽掉 控件设置
popup.add(new CellWidgetAttrAction().createMenuItem()); popup.add(new CellWidgetAttrAction().createMenuItem());
} }
popup.add(new ConditionAttributesAction().createMenuItem()); popup.add(new ConditionAttributesAction().createMenuItem());
@ -497,8 +512,9 @@ public class CellSelection extends Selection {
/** /**
* 清除 * 清除
* @param type 要清除的类型 *
* @param ePane 区域 * @param type 要清除的类型
* @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@Override @Override
@ -581,6 +597,7 @@ public class CellSelection extends Selection {
/** /**
* 向左移动 * 向左移动
*
* @param ePane 区域 * @param ePane 区域
*/ */
public void moveLeft(ElementCasePane ePane) { public void moveLeft(ElementCasePane ePane) {
@ -592,6 +609,7 @@ public class CellSelection extends Selection {
/** /**
* 向右移动 * 向右移动
*
* @param ePane 区域 * @param ePane 区域
*/ */
public void moveRight(ElementCasePane ePane) { public void moveRight(ElementCasePane ePane) {
@ -600,6 +618,7 @@ public class CellSelection extends Selection {
/** /**
* 向上移动 * 向上移动
*
* @param ePane 区域 * @param ePane 区域
*/ */
public void moveUp(ElementCasePane ePane) { public void moveUp(ElementCasePane ePane) {
@ -611,6 +630,7 @@ public class CellSelection extends Selection {
/** /**
* 向下移动 * 向下移动
*
* @param ePane 区域 * @param ePane 区域
*/ */
public void moveDown(ElementCasePane ePane) { public void moveDown(ElementCasePane ePane) {
@ -626,6 +646,7 @@ public class CellSelection extends Selection {
/** /**
* 触发删除动作 * 触发删除动作
*
* @param ePane 区域 * @param ePane 区域
* @return 成功返回true * @return 成功返回true
*/ */
@ -657,6 +678,7 @@ public class CellSelection extends Selection {
/** /**
* 包含行列 * 包含行列
*
* @param cr 行列 * @param cr 行列
* @return 包含返回true * @return 包含返回true
*/ */
@ -716,7 +738,7 @@ public class CellSelection extends Selection {
CellElementPropertyPane.getInstance().reInit(ePane); CellElementPropertyPane.getInstance().reInit(ePane);
} }
public void populateWidgetPropertyPane(ElementCasePane ePane){ public void populateWidgetPropertyPane(ElementCasePane ePane) {
CellWidgetPropertyPane.getInstance().reInit(ePane); CellWidgetPropertyPane.getInstance().reInit(ePane);
} }

4
designer/src/com/fr/grid/selection/FloatSelection.java

@ -149,8 +149,9 @@ public class FloatSelection extends Selection {
TemplateElementCase ec = ePane.getEditingElementCase(); TemplateElementCase ec = ePane.getEditingElementCase();
FloatElement fe = ec.getFloatElement(selectedFloatName); FloatElement fe = ec.getFloatElement(selectedFloatName);
if (fe != null) { if (fe != null) {
ec.removeFloatElement(fe); // REPORT-5955 [Report]删除悬浮元素后,设计器卡死;之前wu做了释放内存,删除悬浮元素会报npe;删除悬浮元素逻辑改为先setSelection 再 remove
ePane.setSelection(new CellSelection(0, 0, 1, 1)); ePane.setSelection(new CellSelection(0, 0, 1, 1));
ec.removeFloatElement(fe);
return true; return true;
} }
@ -240,7 +241,6 @@ public class FloatSelection extends Selection {
} }
public void populateWidgetPropertyPane(ElementCasePane ePane){ public void populateWidgetPropertyPane(ElementCasePane ePane){
return;
} }
} }

5
designer/src/com/fr/grid/selection/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
定义了表格的选择模型
</body>
</html>

5
designer/src/com/fr/poly/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
聚合报表的设计器、控件、事件处理等
</body>
</html>

28
designer/src/com/fr/quickeditor/FloatQuickEditor.java

@ -1,24 +1,32 @@
package com.fr.quickeditor; package com.fr.quickeditor;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.selection.QuickEditor;
import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.FloatSelection;
import com.fr.report.cell.FloatElement; import com.fr.report.cell.FloatElement;
import com.fr.design.selection.QuickEditor;
/** /**
*
* @author zhou * @author zhou
* @since 2012-7-23下午5:17:23 * @since 2012-7-23下午5:17:23
*/ */
public abstract class FloatQuickEditor extends QuickEditor<ElementCasePane> { public abstract class FloatQuickEditor extends QuickEditor<ElementCasePane> {
protected FloatElement floatElement; protected FloatElement floatElement;
@Override
protected void refresh() {
FloatSelection fs = (FloatSelection) tc.getSelection();
floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName());
refreshDetails();
}
@Override /**
protected void refresh() { * 刷新详细信息
FloatSelection fs = (FloatSelection)tc.getSelection(); */
floatElement = tc.getEditingElementCase().getFloatElement(fs.getSelectedFloatName()); protected abstract void refreshDetails();
refreshDetails();
}
protected abstract void refreshDetails(); @Override
public void release() {
super.release();
floatElement = null;
}
} }

32
designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java

@ -141,17 +141,6 @@ public class CellDSColumnEditor extends CellQuickEditor {
} }
/**
* 关闭时候释放
*/
@Override
public void release() {
super.release();
dsColumnRegion = null;
centerPane = null;
}
/** /**
* 初始化基本和高级设置切换tab * 初始化基本和高级设置切换tab
*/ */
@ -187,6 +176,12 @@ public class CellDSColumnEditor extends CellQuickEditor {
paneList.add(cellDSColumnAdvancedPane); paneList.add(cellDSColumnAdvancedPane);
} }
@Override
public void release() {
super.release();
cellDSColumnBasicPane.release();
cellDSColumnAdvancedPane.release();
}
/** /**
* 单元格元素 数据列 高级设置内容面板 * 单元格元素 数据列 高级设置内容面板
@ -252,7 +247,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
}; };
DSColumnBasicEditorPane() { DSColumnBasicEditorPane() {
dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); dataPane = new SelectedDataColumnPane(true, true, cellElement);
groupPane = new ResultSetGroupDockingPane(); groupPane = new ResultSetGroupDockingPane();
dataPane.addListener(dataListener); dataPane.addListener(dataListener);
groupPane.setListener(groupListener); groupPane.setListener(groupListener);
@ -297,13 +292,19 @@ public class CellDSColumnEditor extends CellQuickEditor {
@Override @Override
public void populate() { public void populate() {
dataPane.populate(null, cellElement); dataPane.populate(DesignTableDataManager.getEditingTableDataSource(), cellElement, tc);
groupPane.populate(cellElement); groupPane.populate(cellElement);
if (tc != null) { if (tc != null) {
condition.setEditingComponent(tc); condition.setEditingComponent(tc);
} }
} }
@Override
protected void release() {
condition.setEditingComponent(null);
dataPane.release();
}
/** /**
* 创建有内容的面板显示信息 * 创建有内容的面板显示信息
@ -434,6 +435,11 @@ public class CellDSColumnEditor extends CellQuickEditor {
} }
} }
@Override
protected void release() {
}
/** /**
* 更新单元格扩展属性 * 更新单元格扩展属性
*/ */

5
designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java

@ -58,4 +58,9 @@ public class CellRichTextEditor extends CellQuickEditor {
return true; return true;
} }
@Override
public void release() {
super.release();
richTextButton.setAction(null);
}
} }

2
designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java

@ -3,7 +3,6 @@ package com.fr.quickeditor.cellquick;
import com.fr.base.BaseFormula; import com.fr.base.BaseFormula;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.base.TextFormat; import com.fr.base.TextFormat;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextarea.UITextArea; import com.fr.design.gui.itextarea.UITextArea;
import com.fr.grid.GridKeyListener; import com.fr.grid.GridKeyListener;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
@ -18,7 +17,6 @@ import javax.swing.JPanel;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;

6
designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java

@ -56,4 +56,10 @@ public class CellSubReportEditor extends CellQuickEditor {
public boolean isScrollAll() { public boolean isScrollAll() {
return true; return true;
} }
@Override
public void release() {
super.release();
subReportButton.setAction(null);
}
} }

8
designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java

@ -12,8 +12,10 @@ import com.fr.general.Inter;
import com.fr.quickeditor.FloatQuickEditor; import com.fr.quickeditor.FloatQuickEditor;
import com.fr.report.cell.cellattr.CellImage; import com.fr.report.cell.cellattr.CellImage;
import javax.swing.*; import javax.swing.BorderFactory;
import java.awt.*; import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -70,8 +72,6 @@ public class FloatImageQuickEditor extends FloatQuickEditor {
@Override @Override
protected void refreshDetails() { protected void refreshDetails() {
// TODO Auto-generated method stub
} }
} }

66
designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java

@ -12,10 +12,16 @@ import com.fr.quickeditor.FloatQuickEditor;
import com.fr.report.ReportHelper; import com.fr.report.ReportHelper;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.*; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
@ -27,6 +33,25 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
private boolean reserveInResult = false; private boolean reserveInResult = false;
private boolean reserveOnWriteOrAnaly = true; private boolean reserveOnWriteOrAnaly = true;
private DocumentListener documentListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void removeUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void changedUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
};
public FloatStringQuickEditor() { public FloatStringQuickEditor() {
super(); super();
stringTextField = new JTextArea(); stringTextField = new JTextArea();
@ -34,11 +59,17 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
formulaButton = new UIButton(); formulaButton = new UIButton();
formulaButton.setPreferredSize(new Dimension(25, 23)); formulaButton.setPreferredSize(new Dimension(25, 23));
formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); formulaButton.setIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png"));
ActionListener getFormulaActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing();
}
};
formulaButton.addActionListener(getFormulaActionListener); formulaButton.addActionListener(getFormulaActionListener);
JPanel pane = new JPanel(new BorderLayout(5, 0)); JPanel pane = new JPanel(new BorderLayout(5, 0));
pane.add(stringTextField, BorderLayout.CENTER); pane.add(stringTextField, BorderLayout.CENTER);
pane.add(formulaButton, BorderLayout.EAST); pane.add(formulaButton, BorderLayout.EAST);
pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,5)); pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
formulaButton.setVisible(false); formulaButton.setVisible(false);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
@ -55,16 +86,10 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
stringTextField.setBackground(Color.WHITE); stringTextField.setBackground(Color.WHITE);
} }
ActionListener getFormulaActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing();
}
};
@Override @Override
protected void refreshDetails() { protected void refreshDetails() {
String str = null; String str;
Object value = floatElement.getValue(); Object value = floatElement.getValue();
if (value == null) { if (value == null) {
str = StringUtils.EMPTY; str = StringUtils.EMPTY;
@ -89,26 +114,8 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
stringTextField.getDocument().addDocumentListener(documentListener); stringTextField.getDocument().addDocumentListener(documentListener);
} }
DocumentListener documentListener = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void removeUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
@Override
public void changedUpdate(DocumentEvent e) {
changeReportPaneCell(stringTextField.getText().trim());
}
};
protected void changeReportPaneCell(String tmpText) { private void changeReportPaneCell(String tmpText) {
if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) { if (tmpText != null && (tmpText.length() > 0 && tmpText.charAt(0) == '=')) {
BaseFormula textFormula = BaseFormula.createFormulaBuilder().build(tmpText); BaseFormula textFormula = BaseFormula.createFormulaBuilder().build(tmpText);
textFormula.setReserveInResult(reserveInResult); textFormula.setReserveInResult(reserveInResult);
@ -125,5 +132,4 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
fireTargetModified(); fireTargetModified();
stringTextField.requestFocus(); stringTextField.requestFocus();
} }
} }

5
designer/src/com/fr/quickeditor/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
这个包定义了各种单元格元素(如数据列、公式、富文本等)、图表块以及悬浮元素的编辑器
</body>
</html>

5
designer_base/src/com/fr/common/inputevent/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
处理输入事件的工具类
</body>
</html>

14
designer_base/src/com/fr/design/actions/core/ActionFactory.java

@ -56,6 +56,20 @@ public class ActionFactory {
private ActionFactory() { private ActionFactory() {
} }
/**
* 元素编辑器释放模板对象
*/
public static void editorRelease() {
for (Map.Entry<Class, QuickEditor> entry : cellEditor.entrySet()) {
entry.getValue().release();
}
for (Map.Entry<Class, QuickEditor> entry : floatEditor.entrySet()) {
entry.getValue().release();
}
}
/** /**
* 注册无需每次实例化的单元格元素编辑器 * 注册无需每次实例化的单元格元素编辑器
* *

10
designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java

@ -34,15 +34,17 @@ public final class WebPreviewUtils {
if (map == null || map == Collections.EMPTY_MAP) { if (map == null || map == Collections.EMPTY_MAP) {
map = new HashMap<>(); map = new HashMap<>();
} }
map.put("mode", DesignerMode.getMode().toString()); if (DesignerMode.isVcsMode()) {
map.put("mode", DesignerMode.getMode().toString());
}
DesignerContext.getDesignerFrame().refreshToolbar(); DesignerContext.getDesignerFrame().refreshToolbar();
jt.stopEditing(); jt.stopEditing();
/* /*
* alex:如果没有保存,先保存到Env * alex:如果没有保存,先保存到Env
* *
* 如果保存失败,不执行下面的WebPreview * 如果保存失败,不执行下面的WebPreview
*/ */
if (!jt.isSaved() && !jt.saveTemplate2Env()) { if (!jt.isSaved() && !jt.saveTemplate2Env()) {
return; return;
} }

5
designer_base/src/com/fr/design/bbs/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
论坛相关的工具类
</body>
</html>

5
designer_base/src/com/fr/design/border/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
边框组件
</body>
</html>

5
designer_base/src/com/fr/design/bridge/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
沟通 designer 和 designer_form 的接口类
</body>
</html>

3
designer_base/src/com/fr/design/condition/ConditionAttributesPane.java

@ -11,10 +11,12 @@ import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*; import javax.swing.*;
import java.awt.*;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> { public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> {
private static final int MIN_HEIGHT = 60;
protected CellHighlightAddMenuDef menuDef; protected CellHighlightAddMenuDef menuDef;
protected JPanel selectedItemPane; protected JPanel selectedItemPane;
@ -61,6 +63,7 @@ public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> {
JScrollPane selectedItemScrollPane = new JScrollPane(); JScrollPane selectedItemScrollPane = new JScrollPane();
selectedItemScrollPane.setViewportView(selectedItemPane); selectedItemScrollPane.setViewportView(selectedItemPane);
selectedItemScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); selectedItemScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
selectedItemScrollPane.setMinimumSize(new Dimension((int) selectedItemScrollPane.getPreferredSize().getWidth(), MIN_HEIGHT));
propertyChangePane.add(selectedItemScrollPane); propertyChangePane.add(selectedItemScrollPane);
} }

5
designer_base/src/com/fr/design/constants/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
全局常量
</body>
</html>

5
designer_base/src/com/fr/design/data/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
数据集相关的面板和组件
</body>
</html>

4
designer_base/src/com/fr/design/dialog/package.html

@ -1,8 +1,8 @@
<html> <html>
<body bgcolor="white"> <body bgcolor="white">
Defined some dialogs that can be used in your applications of applets, For example: 定义了一些对话框,使用示例:
PageSetupDialog({@link com.fr.dialog.PageSetupDialog PageSetupDialog}), PageSetupDialog({@link com.fr.dialog.PageSetupDialog PageSetupDialog}),
StyleDialog({@link com.fr.dialog.core.ColorSelectBox ColorSelectBox}), StyleDialog({@link com.fr.dialog.core.ColorSelectBox ColorSelectBox}),
CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog}).]!> CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog})>
</body> </body>
</html> </html>

5
designer_base/src/com/fr/design/editor/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
各种编辑器(文本、日期、数字等)组件
</body>
</html>

5
designer_base/src/com/fr/design/event/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
事件处理的工具类
</body>
</html>

10
designer_base/src/com/fr/design/extra/PluginTask.java

@ -74,6 +74,9 @@ public class PluginTask<T> extends Task<T> {
* 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接 * 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接
* 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大 * 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大
* 这边建议去除所有的html标签 * 这边建议去除所有的html标签
* 字符\在java中实际存储的是\\,替换字符串\\n, 需要用\\\\n;
* "\t""\n""\t" 转义成"";
* "\\"需要转换成"\\\";
* *
* @param old 原始字符串 * @param old 原始字符串
* @return 处理之后的字符串 * @return 处理之后的字符串
@ -81,7 +84,12 @@ public class PluginTask<T> extends Task<T> {
private String trimText(String old) { private String trimText(String old) {
if (StringUtils.isNotBlank(old)) { if (StringUtils.isNotBlank(old)) {
String b = filterHtmlTag(old); String b = filterHtmlTag(old);
return b.replaceAll("\\\\n", StringUtils.EMPTY).replaceAll("\\\\t", StringUtils.EMPTY).replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'").replaceAll("\\\\\\\\", "\\\\\\\\\\\\"); return b.replaceAll("\\\\n", StringUtils.EMPTY)
.replaceAll("\\\\r", StringUtils.EMPTY)
.replaceAll("\\\\t", StringUtils.EMPTY)
.replaceAll("\"", "\\\\\"")
.replaceAll("\'", "\\\\\'")
.replaceAll("\\\\\\\\", "\\\\\\\\\\\\");
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }

5
designer_base/src/com/fr/design/extra/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
用户登录、插件商城等功能
</body>
</html>

14
designer_base/src/com/fr/design/extra/ucenter/Client.java

@ -15,17 +15,21 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** /**
* 用于和Ucenter通信的客户端
* *
* @author lp * @author lp
* @date 2016/9/9 * @date 2016/9/9
* 1.client借用的是id为9的应用信息为fanruan官网http://www.fanruan.com,
* 2.借用当前的应用id就会导致无法同步登陆到该应用所在的网站权衡之后这个影响是比较小的
* 3.key和appid是成对匹配的
*/ */
public class Client extends AbstractClient { public class Client extends AbstractClient {
private static String UC_IP = ""; private static String UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi");
private static String UC_API = ""; private static String UC_IP = SiteCenter.getInstance().acquireUrlByKind("bbs.ip");
private static String UC_CONNECT = ""; private static String UC_CONNECT = "";
private static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; private static String UC_KEY = SiteCenter.getInstance().acquireUrlByKind("bbs.uc.key", "1v12H473J2Y99935473T4360w5L014522281007621223O1708wv870273fB0200");
private static String UC_APPID = "4"; private static String UC_APPID = SiteCenter.getInstance().acquireUrlByKind("bbs.uc.appid", "9");
private static String UC_CLIENT_RELEASE = "20090212"; private static String UC_CLIENT_RELEASE = "20090212";
public static String UC_ROOT = ""; public static String UC_ROOT = "";
private static String UC_API_FUNC = "mysql".equals(UC_CONNECT) ? UC_API_MYSQL : UC_API_POST; private static String UC_API_FUNC = "mysql".equals(UC_CONNECT) ? UC_API_MYSQL : UC_API_POST;
@ -92,8 +96,6 @@ public class Client extends AbstractClient {
sep = "&"; sep = "&";
} }
String postData = ucApiRequestdata(module, action, str.toString(), ""); String postData = ucApiRequestdata(module, action, str.toString(), "");
UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi");
UC_IP = SiteCenter.getInstance().acquireUrlByKind("bbs.ip");
return ucFopen2(UC_API + "/index.php", 500000, postData, "", true, UC_IP, 20, true); return ucFopen2(UC_API + "/index.php", 500000, postData, "", true, UC_IP, 20, true);
} }

5
designer_base/src/com/fr/design/file/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
历史模版、新建模版、保存模版、模版tab、模版树等界面和功能
</body>
</html>

22
designer_base/src/com/fr/design/foldablepane/HeaderPane.java

@ -2,12 +2,16 @@ package com.fr.design.foldablepane;
import com.fr.base.GraphHelper; import com.fr.base.GraphHelper;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxUtilities; import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*; import java.awt.BorderLayout;
import java.awt.*; import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.Map;
/** /**
* Created by MoMeak on 2017/7/5. * Created by MoMeak on 2017/7/5.
@ -55,26 +59,20 @@ public class HeaderPane extends JPanel {
@Override @Override
protected void paintComponent(Graphics g) { protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create(); Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
BufferedImage panelImage = createPanelImage(); BufferedImage panelImage = createPanelImage();
g2d.drawImage(panelImage, null, 0, 0); g2d.drawImage(panelImage, null, 0, 0);
GraphHelper.applyRenderingHints(g2d);
GraphHelper.drawString(g2d, this.title, TITLE_X, headHeight - fontSize / 2 - 1); GraphHelper.drawString(g2d, this.title, TITLE_X, headHeight - fontSize / 2 - 1);
} }
private BufferedImage createPanelImage() { private BufferedImage createPanelImage() {
BufferedImage panelImage = new BufferedImage(getWidth(), headHeight, BufferedImage.TYPE_INT_ARGB); BufferedImage panelImage = new BufferedImage(getWidth(), headHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = panelImage.createGraphics(); Graphics2D g2d = panelImage.createGraphics();
g2d.setColor(isPressed ? UIConstants.POPUP_TITLE_BACKGROUND : UIConstants.COMPONENT_BACKGROUND_COLOR); g2d.setColor(isPressed ? UIConstants.POPUP_TITLE_BACKGROUND : UIConstants.COMPONENT_BACKGROUND_COLOR);
headWidth = this.getWidth(); headWidth = this.getWidth();
g2d.fillRect(0, 0, headWidth, headHeight); g2d.fillRect(0, 0, headWidth, headHeight);
g2d.setFont(new Font("SimSun", 0, fontSize)); g2d.setFont(new Font("SimSun", 0, fontSize));
g2d.setPaint(bgColor); g2d.setPaint(bgColor);
Map<?, ?> desktopHints = RSyntaxUtilities.getDesktopAntiAliasHints();
if (desktopHints != null) {
g2d.setRenderingHints(desktopHints);
}
int leftWdith = headWidth - LEFT_X; int leftWdith = headWidth - LEFT_X;
if (this.isShow) { if (this.isShow) {
image = UIConstants.DRAG_DOWN_SELECTED_SMALL; image = UIConstants.DRAG_DOWN_SELECTED_SMALL;

5
designer_base/src/com/fr/design/foldablepane/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
可折叠面板组件
</body>
</html>

5
designer_base/src/com/fr/design/formula/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
公式编辑相关面板
</body>
</html>

5
designer_base/src/com/fr/design/fun/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
提供一些 UI 接口
</body>
</html>

9
designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java

@ -59,14 +59,11 @@ public abstract class LazyComboBox extends UIComboBox implements PopupMenuListen
} }
/** /**
* 通过调用该方法在点击下拉框按钮之前就加载好数据 * 通过调用该方法在点击下拉框按钮之前就加载好数据,不需要出现loading了
*/ */
public void loadInstant() { public void loadInstant() {
if (loaded) { setLoaded(true);
return; loadList();
}
setModel(new DefaultComboBoxModel(load()));
loaded = true;
} }
@Override @Override

1
designer_base/src/com/fr/design/gui/imenu/UIPopupMenu.java

@ -10,6 +10,7 @@ import com.fr.design.constants.UIConstants;
public class UIPopupMenu extends JPopupMenu{ public class UIPopupMenu extends JPopupMenu{
private static final float REC = 8f; private static final float REC = 8f;
private boolean onlyText = false; private boolean onlyText = false;
public static UIPopupMenu EMPTY = new UIPopupMenu();
public UIPopupMenu() { public UIPopupMenu() {
super(); super();
setBackground(UIConstants.NORMAL_BACKGROUND); setBackground(UIConstants.NORMAL_BACKGROUND);

5
designer_base/src/com/fr/design/gui/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
包含一些 UI 组件
</body>
</html>

5
designer_base/src/com/fr/design/icon/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
定义一些 icon
</body>
</html>

5
designer_base/src/com/fr/design/javascript/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
javascript 编辑面板
</body>
</html>

5
designer_base/src/com/fr/design/layout/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
这个包定义了一些布局
</body>
</html>

26
designer_base/src/com/fr/design/locale/designer.properties

@ -107,10 +107,10 @@ FR-Designer_Font-Size=
FR-Designer_Forbid_Drag_into_Adapt_Pane=Forbid Drag into Para Pane FR-Designer_Forbid_Drag_into_Adapt_Pane=Forbid Drag into Para Pane
FR-Designer_Forbid_Drag_into_Para_Pane=Forbid Drag into Para Pane FR-Designer_Forbid_Drag_into_Para_Pane=Forbid Drag into Para Pane
FR-Designer_Foreground= FR-Designer_Foreground=
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form authority editing can not be supported FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Dashboard authority editing can not be supported
FR-Designer_Form-Report= FR-Designer_Form-Report=
FR-Designer_Form_EmbeddedTD= FR-Designer_Form_EmbeddedTD=
FR-Designer_Form_Module=Form Module FR-Designer_Form_Module=Dashboard Module
FR-Designer_Format_explan= FR-Designer_Format_explan=
FR-Designer_Formula= FR-Designer_Formula=
FR-Designer_Forum= FR-Designer_Forum=
@ -562,7 +562,7 @@ FR-Designer_DS_TableData=Data Set
FR-Designer_Parameter-Formula=Formula FR-Designer_Parameter-Formula=Formula
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update. FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update.
FR-Designer_WidgetOrder=Widget Order FR-Designer_WidgetOrder=Widget Order
FR-Designer_Mobile_Form_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the form in the APP. FR-Designer_Mobile_Form_Analysis_Annotation=annotation: You can use this attribute to control the analysis of the dashboard in the APP.
FR-Designer_Mobile_Report_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the report in the APP, only to support the paging preview, fill in the preview of the property is invalid. FR-Designer_Mobile_Report_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the report in the APP, only to support the paging preview, fill in the preview of the property is invalid.
FR-Designer_Background_Null= FR-Designer_Background_Null=
FR-Designer_Background_Color= FR-Designer_Background_Color=
@ -620,7 +620,7 @@ Tree-Width=Tree Width
alert_word= alert_word=
PageSetup-Paper_Size=Paper Size PageSetup-Paper_Size=Paper Size
M-Page_Setup=Page Setup M-Page_Setup=Page Setup
DashBoard-FormBook=Form DashBoard-FormBook=Dashboard
X-Coordinate=X Coordinate X-Coordinate=X Coordinate
Style-Line_Spacing=Line Spacing Style-Line_Spacing=Line Spacing
FR-Designer_Plugin_Should_Update_Title=Warning FR-Designer_Plugin_Should_Update_Title=Warning
@ -696,7 +696,7 @@ WF-Name=Name
RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value
Utils-Row_Height=Row Height Utils-Row_Height=Row Height
ReportD-Excel_Export=ReportD Excel Export ReportD-Excel_Export=ReportD Excel Export
Form-Please_Select_A_Kind_Of_Form_Container=Select Form Container Form-Please_Select_A_Kind_Of_Form_Container=Select Dashboard Container
Column_Does_Not_Exsit=Column Does Not Exsit Column_Does_Not_Exsit=Column Does Not Exsit
M_Insert-Hyperlink=Hyperlink M_Insert-Hyperlink=Hyperlink
can_not_include_underline=can not contain "_" can_not_include_underline=can not contain "_"
@ -831,7 +831,7 @@ Values=Values
Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing
Root=Root Root=Root
cycle=cycle cycle=cycle
open-new-form-tip=open new form tip open-new-form-tip=open new dashboard tip
Support-Current_Auto_Complete_Shortcut=Current Shortcut Support-Current_Auto_Complete_Shortcut=Current Shortcut
GROUPING_MODE=Grouping GROUPING_MODE=Grouping
DBCP_MAX_IDLE=MaxIdle DBCP_MAX_IDLE=MaxIdle
@ -1088,7 +1088,7 @@ Form-View_Tree=Tree View
M_Insert-Chart=Insert Chart M_Insert-Chart=Insert Chart
HF-Even_Page=Even Page HF-Even_Page=Even Page
ReportServerP-Report_server_parameter=Report Server Parameter ReportServerP-Report_server_parameter=Report Server Parameter
JavaScript-Form_Submit=Form Submit JavaScript-Form_Submit=Dashboard Submit
Horizontal-Split_Layout=Horizontal Split Layout Horizontal-Split_Layout=Horizontal Split Layout
BorderLayout-Center=Center BorderLayout-Center=Center
INFO-Reset_Webapp=Reset Webapp INFO-Reset_Webapp=Reset Webapp
@ -1439,7 +1439,7 @@ ReportColumns-Columns_after=Columns after
FR-Designer_Undo= FR-Designer_Undo=
DBCP_MIN_IDLE=MinIdle DBCP_MIN_IDLE=MinIdle
M-Data_Analysis_Settings=Data Analysis Settings M-Data_Analysis_Settings=Data Analysis Settings
M-Form_Preview=Form Preview M-Form_Preview=Dashboard Preview
Form-Basic_Properties=Basic Properties Form-Basic_Properties=Basic Properties
quote= quote=
Thu=Thu Thu=Thu
@ -1594,7 +1594,7 @@ FS_Report_Type=Report Type
HF-New_Line=New Line HF-New_Line=New Line
Privilege=Privilege Privilege=Privilege
Export-Offline-Html=Export Offline HTML Export-Offline-Html=Export Offline HTML
FR-Designer_open-new-form-tip=open new form tip FR-Designer_open-new-form-tip=open new dashboard tip
FR-Designer-Widget-Style_Frame_Style= FR-Designer-Widget-Style_Frame_Style=
Present-No_Present=No Present Present-No_Present=No Present
FR-Designer_Form-Password=Password FR-Designer_Form-Password=Password
@ -1618,7 +1618,7 @@ Above=Above
Utils-The-Chart= Utils-The-Chart=
FRFont-plain=plain FRFont-plain=plain
Calculating=Calculating Calculating=Calculating
Form-Object=Form Object Form-Object=Dashboard Object
May=May May=May
FR-Designer_Plugin_Normal_Update=Update FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet= FR-Hyperlink_Reportlet=
@ -1753,7 +1753,7 @@ ReportServerP-Last=Last
FR-Base_Columns= FR-Base_Columns=
SpecifiedG-Leave_in_their_own_groups=Leave in their own groups SpecifiedG-Leave_in_their_own_groups=Leave in their own groups
LOG-Please_Wait=Please Waiting LOG-Please_Wait=Please Waiting
Form-ToolBar=Form ToolBar Form-ToolBar=Dashboard ToolBar
FR-Base_sure_remove_item= FR-Base_sure_remove_item=
Component_Scale=Component Scale Component_Scale=Component Scale
Hyperlink-Use_CJK_to_encode_parameter=Use CJK to encode parameter Hyperlink-Use_CJK_to_encode_parameter=Use CJK to encode parameter
@ -1798,7 +1798,7 @@ Only_selected_cell_can_paste_only=Only selected cell can paste only
M_Report-Report_Columns=Report Columns M_Report-Report_Columns=Report Columns
Unit_Hundred=Hundred Unit_Hundred=Hundred
FR-Designer_DataTable-Build= FR-Designer_DataTable-Build=
Widget-Form_Widget_Config=Form Widget Widget-Form_Widget_Config=Dashboard Widget
Server-version-tip-moreInfo=Your own team of our FineReport Designer version number of the product as well as the deployment server version number is consistent, in order to avoid the problems caused by inconsistent versions of risk.If you open a template produced higher Designer version, may open the error may be missing the original template properties. If you create the template used Designer Version higher than your final deployment with the server version, the server may not be able to properly load the template you create. Server-version-tip-moreInfo=Your own team of our FineReport Designer version number of the product as well as the deployment server version number is consistent, in order to avoid the problems caused by inconsistent versions of risk.If you open a template produced higher Designer version, may open the error may be missing the original template properties. If you create the template used Designer Version higher than your final deployment with the server version, the server may not be able to properly load the template you create.
Actions=Actions Actions=Actions
FR-Designer-Dependence_Connect_Server_Error=connect error FR-Designer-Dependence_Connect_Server_Error=connect error
@ -1951,7 +1951,7 @@ ReportServerP-Import_JavaScript=Import JavaScript
Form-TableTree=Table Tree Form-TableTree=Table Tree
Opened=Opened Opened=Opened
M_Edit-Delete=Delete M_Edit-Delete=Delete
Widget-Form_Widget_Container=Form Container Widget-Form_Widget_Container=Dashboard Container
BindColumn-Summary=Summary BindColumn-Summary=Summary
Sche-Second=Second Sche-Second=Second
Server-Open_Service_Manager=Open Service Manager Server-Open_Service_Manager=Open Service Manager

36
designer_base/src/com/fr/design/locale/designer_en_US.properties

@ -103,13 +103,13 @@ FR-Designer_Fit-App=App self-adaption
FR-Designer_Fit=self-adaption FR-Designer_Fit=self-adaption
FR-Designer_Font-Family=Font name FR-Designer_Font-Family=Font name
FR-Designer_Font-Size=Font size FR-Designer_Font-Size=Font size
FR-Designer_Forbid_Drag_into_Adapt_Pane=Form body cannot be dragged into the object FR-Designer_Forbid_Drag_into_Adapt_Pane=Dashboard body cannot be dragged into the object
FR-Designer_Forbid_Drag_into_Para_Pane=The object cannot be dragged into the parameter panel FR-Designer_Forbid_Drag_into_Para_Pane=The object cannot be dragged into the parameter panel
FR-Designer_Foreground=Foreground FR-Designer_Foreground=Foreground
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Form permissions edition is not supported FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=Dashboard permissions edition is not supported
FR-Designer_Form-Report=Report block FR-Designer_Form-Report=Report block
FR-Designer_Form_EmbeddedTD=Form(built-in data) FR-Designer_Form_EmbeddedTD=Dashboard(built-in data)
FR-Designer_Form_Module=Form Module FR-Designer_Form_Module=Dashboard Module
FR-Designer_Format_explan=Format explain FR-Designer_Format_explan=Format explain
FR-Designer_Allow-Blank=Allow Blank FR-Designer_Allow-Blank=Allow Blank
FR-Designer_Formula=Formula FR-Designer_Formula=Formula
@ -500,7 +500,7 @@ FR-Designer_Properties_Mobile=MobileProperties
FR-Designer_Button_OK=OK FR-Designer_Button_OK=OK
FR-Designer_Button_Cancel=Cancel FR-Designer_Button_Cancel=Cancel
FR-Designer_JavaScript=JavaScript FR-Designer_JavaScript=JavaScript
FR-Designer_JavaScript_Form_Submit=Form Submit FR-Designer_JavaScript_Form_Submit=Dashboard Submit
FR-Designer_JavaScript_Commit_to_Database=Commit to DB FR-Designer_JavaScript_Commit_to_Database=Commit to DB
FR-Designer_JavaScript_Custom=Custom FR-Designer_JavaScript_Custom=Custom
FR-Designer_RWA_Submit=Submit FR-Designer_RWA_Submit=Submit
@ -563,7 +563,7 @@ FR-Designer_DS_TableData=Data Set
FR-Designer_Parameter-Formula=Formula FR-Designer_Parameter-Formula=Formula
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update. FR-Designer_Plugin_Should_Update_Please_Contact_Developer=Plugin version is too low, and is not compatible with current API. Please contact the developer to update.
FR-Designer_WidgetOrder=Widget Order FR-Designer_WidgetOrder=Widget Order
FR-Designer_Mobile_Form_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the form in the APP. FR-Designer_Mobile_Form_Analysis_Annotation=annotation: You can use this attribute to control the analysis of the dashboard in the APP.
FR-Designer_Mobile_Report_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the report in the APP, only to support the paging preview, fill in the preview of the property is invalid. FR-Designer_Mobile_Report_Analysis_Annotation=annotation\: You can use this attribute to control the analysis of the report in the APP, only to support the paging preview, fill in the preview of the property is invalid.
FR-Designer_Background_Null=No Background FR-Designer_Background_Null=No Background
FR-Designer_Background_Color=Color FR-Designer_Background_Color=Color
@ -622,7 +622,7 @@ Tree-Width=Tree Width
alert_word=Export without fixed height, cell hight will change according to the content and pagination position will different from the preview result. alert_word=Export without fixed height, cell hight will change according to the content and pagination position will different from the preview result.
PageSetup-Paper_Size=Paper Size PageSetup-Paper_Size=Paper Size
M-Page_Setup=Page Setup M-Page_Setup=Page Setup
DashBoard-FormBook=Form DashBoard-FormBook=Dashboard
X-Coordinate=Horizontal axis X-Coordinate=Horizontal axis
Style-Line_Spacing=Line Spacing Style-Line_Spacing=Line Spacing
FR-Designer_Plugin_Should_Update_Title=Warning FR-Designer_Plugin_Should_Update_Title=Warning
@ -698,7 +698,7 @@ WF-Name=Name
RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value RWA-Click_Cell_To_Edit_Value=Click Cell to Edit Value
Utils-Row_Height=Row Height Utils-Row_Height=Row Height
ReportD-Excel_Export=Export Attributes ReportD-Excel_Export=Export Attributes
Form-Please_Select_A_Kind_Of_Form_Container=Select A Form Container Form-Please_Select_A_Kind_Of_Form_Container=Select A Dashboard Container
Column_Does_Not_Exsit=Column Does Not Exsit Column_Does_Not_Exsit=Column Does Not Exsit
M_Insert-Hyperlink=Hyperlink M_Insert-Hyperlink=Hyperlink
can_not_include_underline=Can not contain "_" can_not_include_underline=Can not contain "_"
@ -833,7 +833,7 @@ Values=Values
Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing Not_use_a_cell_attribute_table_editing=You may not use a cell attribute table editing
Root=Root node Root=Root node
cycle=Cycle cycle=Cycle
open-new-form-tip=open new form tip open-new-form-tip=open new dashboard tip
Support-Current_Auto_Complete_Shortcut=Current Shortcut key Support-Current_Auto_Complete_Shortcut=Current Shortcut key
GROUPING_MODE=Ordinary Grouping GROUPING_MODE=Ordinary Grouping
DBCP_MAX_IDLE=Max Idle Connections DBCP_MAX_IDLE=Max Idle Connections
@ -1090,7 +1090,7 @@ Form-View_Tree=View Tree
M_Insert-Chart=Insert Chart M_Insert-Chart=Insert Chart
HF-Even_Page=Even Page HF-Even_Page=Even Page
ReportServerP-Report_server_parameter=Report Server Parameter ReportServerP-Report_server_parameter=Report Server Parameter
JavaScript-Form_Submit=Form Submit JavaScript-Form_Submit=Dashboard Submit
Horizontal-Split_Layout=Horizontal partitioning layout Horizontal-Split_Layout=Horizontal partitioning layout
BorderLayout-Center=Center BorderLayout-Center=Center
INFO-Reset_Webapp=Reset Application Server INFO-Reset_Webapp=Reset Application Server
@ -1440,7 +1440,7 @@ ReportColumns-Columns_after=Over
FR-Designer_Undo=Undo FR-Designer_Undo=Undo
DBCP_MIN_IDLE=Min Idle Connections DBCP_MIN_IDLE=Min Idle Connections
M-Data_Analysis_Settings=Data Analysis Settings M-Data_Analysis_Settings=Data Analysis Settings
M-Form_Preview=Form Preview M-Form_Preview=Dashboard Preview
Form-Basic_Properties=Basic Property Form-Basic_Properties=Basic Property
quote=quote quote=quote
Thu=Thu Thu=Thu
@ -1518,7 +1518,7 @@ FR-Template-Path_chooseRightPath=Please choose a right path
FR-Remote_Re_Connect_to_Server=The server is down, whether to reconnect it FR-Remote_Re_Connect_to_Server=The server is down, whether to reconnect it
Nation=Country Nation=Country
DBCP_MAX_WAIT=Max wait time DBCP_MAX_WAIT=Max wait time
FR-App-Template_Form=Form FR-App-Template_Form=Dashboard
Address=Address Address=Address
Sub_Report=Sub Report Sub_Report=Sub Report
FR-Import-Export_Word=Word FR-Import-Export_Word=Word
@ -1561,7 +1561,7 @@ Sub_Report_Description=The sub-report should exist in the runtime environment of
T_Insert-Float=Insert Float Element T_Insert-Float=Insert Float Element
BackgroundTexture-FishFossil=Fish Fossil BackgroundTexture-FishFossil=Fish Fossil
My_Computer=My Computer My_Computer=My Computer
FORMLET=Path parameter when accessing different forms FORMLET=Path parameter when accessing different dashboards
HF-Undefined=Undefined HF-Undefined=Undefined
Widget-User_Defined_Widget_Config=Predefined control Widget-User_Defined_Widget_Config=Predefined control
Report-Write_Attributes_Group_Warning=Number of cells in each field in all cell group must be the same Report-Write_Attributes_Group_Warning=Number of cells in each field in all cell group must be the same
@ -1595,7 +1595,7 @@ FS_Report_Type=Report Type
HF-New_Line=Line breaks HF-New_Line=Line breaks
Privilege=Permission Privilege=Permission
Export-Offline-Html=Output offline HTML report Export-Offline-Html=Output offline HTML report
FR-Designer_open-new-form-tip=The form is created by the designer older than 711 vision, it cannot be opened. Please use the corresponding designer. FR-Designer_open-new-form-tip=The dashboard is created by the designer older than 711 vision, it cannot be opened. Please use the corresponding designer.
FR-Designer-Widget-Style_Frame_Style=Frame Style FR-Designer-Widget-Style_Frame_Style=Frame Style
Present-No_Present=Cancel Present Settings Present-No_Present=Cancel Present Settings
FR-Designer_Form-Password=Password FR-Designer_Form-Password=Password
@ -1619,7 +1619,7 @@ Above=Above Version
Utils-The-Chart=Chart Utils-The-Chart=Chart
FRFont-plain=General FRFont-plain=General
Calculating=Calculating Calculating=Calculating
Form-Object=Form Object\: Form-Object=Dashboard Object:
May=May May=May
FR-Designer_Plugin_Normal_Update=Update FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet=Webreport FR-Hyperlink_Reportlet=Webreport
@ -1754,7 +1754,7 @@ ReportServerP-Last=Last
FR-Base_Columns=Columns FR-Base_Columns=Columns
SpecifiedG-Leave_in_their_own_groups=Leave in their own groups SpecifiedG-Leave_in_their_own_groups=Leave in their own groups
LOG-Please_Wait=Please Waiting LOG-Please_Wait=Please Waiting
Form-ToolBar=Form ToolBar Form-ToolBar=Dashboard ToolBar
FR-Base_sure_remove_item=Are you sure to delete the selected item FR-Base_sure_remove_item=Are you sure to delete the selected item
Component_Scale=Component Scale Component_Scale=Component Scale
Hyperlink-Use_CJK_to_encode_parameter=Use CJK to process parameter Hyperlink-Use_CJK_to_encode_parameter=Use CJK to process parameter
@ -1799,7 +1799,7 @@ Only_selected_cell_can_paste_only=Paste when cell is selected
M_Report-Report_Columns=Multi-columns/lines M_Report-Report_Columns=Multi-columns/lines
Unit_Hundred=Hundred Unit_Hundred=Hundred
FR-Designer_DataTable-Build=Speed layered construction FR-Designer_DataTable-Build=Speed layered construction
Widget-Form_Widget_Config=Form control Widget-Form_Widget_Config=Dashboard control
Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template. Server-version-tip-moreInfo=Conform the version numbers of FineReport Designer and the deployment server are consistent, in order to avoid the problems caused by inconsistent versions. If you open the template produced by higher designer vision, error may occurs or the original template properties missed. If the Designer Version you used to create the template is higher than the final deployment server version, the server may not be able to properly load the template.
Actions=Task Actions=Task
FR-Designer-Dependence_Connect_Server_Error=connect error FR-Designer-Dependence_Connect_Server_Error=connect error
@ -1952,7 +1952,7 @@ ReportServerP-Import_JavaScript=Reference JavaScript
Form-TableTree=Table Tree Form-TableTree=Table Tree
Opened=Opened Opened=Opened
M_Edit-Delete=Delete M_Edit-Delete=Delete
Widget-Form_Widget_Container=Form Container Widget-Form_Widget_Container=Dashboard Container
BindColumn-Summary=Summary BindColumn-Summary=Summary
Sche-Second=Second Sche-Second=Second
Server-Open_Service_Manager=Open Service Manager Server-Open_Service_Manager=Open Service Manager

38
designer_base/src/com/fr/design/locale/designer_zh_CN.properties

@ -104,13 +104,13 @@ FR-Designer_Fit-App=App\u81EA\u9002\u5E94
FR-Designer_Fit=\u81EA\u9002\u5E94 FR-Designer_Fit=\u81EA\u9002\u5E94
FR-Designer_Font-Family=\u5B57\u4F53\u540D\u79F0 FR-Designer_Font-Family=\u5B57\u4F53\u540D\u79F0
FR-Designer_Font-Size=\u5B57\u4F53\u5927\u5C0F FR-Designer_Font-Size=\u5B57\u4F53\u5927\u5C0F
FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u8868\u5355\u4E3B\u4F53 FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u5141\u8BB8\u62D6\u5165\u51B3\u7B56\u62A5\u8868\u4E3B\u4F53
FR-Designer_Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F FR-Designer_Forbid_Drag_into_Para_Pane=\u8BE5\u5BF9\u8C61\u4E0D\u80FD\u62D6\u5165\u53C2\u6570\u9762\u677F
FR-Designer_Foreground=\u989C\u8272 FR-Designer_Foreground=\u989C\u8272
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u6682\u4E0D\u652F\u6301\u8868\u5355\u6743\u9650\u7F16\u8F91 FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u6682\u4E0D\u652F\u6301\u51B3\u7B56\u62A5\u8868\u6743\u9650\u7F16\u8F91
FR-Designer_Form-Report=\u62A5\u8868\u5757 FR-Designer_Form-Report=\u62A5\u8868\u5757
FR-Designer_Form_EmbeddedTD=\u8868\u5355(\u5185\u7F6E\u6570\u636E) FR-Designer_Form_EmbeddedTD=\u51B3\u7B56\u62A5\u8868(\u5185\u7F6E\u6570\u636E)
FR-Designer_Form_Module=\u8868\u5355\u6A21\u5757 FR-Designer_Form_Module=\u51B3\u7B56\u62A5\u8868\u6A21\u5757
FR-Designer_Format_explan=\u683C\u5F0F\u8BF4\u660E FR-Designer_Format_explan=\u683C\u5F0F\u8BF4\u660E
FR-Designer_Formula=\u516C\u5F0F FR-Designer_Formula=\u516C\u5F0F
FR-Designer_Forum=\u8BBA\u575B FR-Designer_Forum=\u8BBA\u575B
@ -119,7 +119,7 @@ FR-Designer_Help=\u5E2E\u52A9
FR-Designer_Hide=\u9690\u85CF FR-Designer_Hide=\u9690\u85CF
FR-Designer_Show=\u663E\u793A FR-Designer_Show=\u663E\u793A
FR-Designer_Hyperlink=\u8D85\u7EA7\u94FE\u63A5 FR-Designer_Hyperlink=\u8D85\u7EA7\u94FE\u63A5
FR-Designer_Hyperlink-Form_link=\u5F53\u524D\u8868\u5355\u5BF9\u8C61 FR-Designer_Hyperlink-Form_link=\u5F53\u524D\u51B3\u7B56\u62A5\u8868\u5BF9\u8C61
FR-Designer_IDCard=\u8EAB\u4EFD\u8BC1 FR-Designer_IDCard=\u8EAB\u4EFD\u8BC1
FR-Designer_Icon=\u56FE\u6807 FR-Designer_Icon=\u56FE\u6807
FR-Designer_Index=\u5217\u8F74/\u6307\u6807 FR-Designer_Index=\u5217\u8F74/\u6307\u6807
@ -507,7 +507,7 @@ FR-Designer_Properties_Mobile=\u624B\u673A\u5C5E\u6027
FR-Designer_Button_OK=\u786E\u5B9A FR-Designer_Button_OK=\u786E\u5B9A
FR-Designer_Button_Cancel=\u53D6\u6D88 FR-Designer_Button_Cancel=\u53D6\u6D88
FR-Designer_JavaScript=JavaScript\u811A\u672C FR-Designer_JavaScript=JavaScript\u811A\u672C
FR-Designer_JavaScript_Form_Submit=\u8868\u5355\u63D0\u4EA4 FR-Designer_JavaScript_Form_Submit=\u51B3\u7B56\u62A5\u8868\u63D0\u4EA4
FR-Designer_JavaScript_Commit_to_Database=\u63D0\u4EA4\u5165\u5E93 FR-Designer_JavaScript_Commit_to_Database=\u63D0\u4EA4\u5165\u5E93
FR-Designer_JavaScript_Custom=\u81EA\u5B9A\u4E49 FR-Designer_JavaScript_Custom=\u81EA\u5B9A\u4E49
FR-Designer_RWA_Submit=\u63D0\u4EA4 FR-Designer_RWA_Submit=\u63D0\u4EA4
@ -574,7 +574,7 @@ FR-Designer_DS_TableData=\u6570\u636E\u96C6
FR-Designer_Parameter-Formula=\u516C\u5F0F FR-Designer_Parameter-Formula=\u516C\u5F0F
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E, \u5B58\u5728API\u4E0D\u517C\u5BB9, \u8BF7\u8054\u7CFB\u5F00\u53D1\u8005\u5347\u7EA7\u63D2\u4EF6 FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u63D2\u4EF6\u7248\u672C\u8FC7\u4F4E, \u5B58\u5728API\u4E0D\u517C\u5BB9, \u8BF7\u8054\u7CFB\u5F00\u53D1\u8005\u5347\u7EA7\u63D2\u4EF6
FR-Designer_WidgetOrder=\u63A7\u4EF6\u987A\u5E8F FR-Designer_WidgetOrder=\u63A7\u4EF6\u987A\u5E8F
FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CA\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5C5E\u6027\u63A7\u5236\u8868\u5355\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002 FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CA\uFF1A\u53EF\u4EE5\u901A\u8FC7\u8BE5\u5C5E\u6027\u63A7\u5236\u51B3\u7B56\u62A5\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002
FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CA: \u53EF\u4EE5\u901A\u8FC7\u8BE5\u5C5E\u6027\u63A7\u5236\u62A5\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9875\u9884\u89C8\uFF0C\u586B\u62A5\u9884\u89C8\u65F6\u5C5E\u6027\u65E0\u6548\u3002 FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CA: \u53EF\u4EE5\u901A\u8FC7\u8BE5\u5C5E\u6027\u63A7\u5236\u62A5\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9875\u9884\u89C8\uFF0C\u586B\u62A5\u9884\u89C8\u65F6\u5C5E\u6027\u65E0\u6548\u3002
FR-Designer_Background_Null=\u6CA1\u6709\u80CC\u666F FR-Designer_Background_Null=\u6CA1\u6709\u80CC\u666F
FR-Designer_Background_Color=\u989C\u8272 FR-Designer_Background_Color=\u989C\u8272
@ -624,7 +624,7 @@ Tree-Width=\u5BBD\u5EA6
alert_word=\u9009\u62E9\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA\u65F6, \u7F16\u8F91\u5BFC\u51FA\u7684word, \u5355\u5143\u683C\u884C\u9AD8\u4F1A\u968F\u7740\u5185\u5BB9\u81EA\u52A8\u62C9\u4F38, \u6B64\u60C5\u51B5\u4E0B\u5BFC\u51FA\u7ED3\u679C\u5206\u9875\u4F4D\u7F6E\u4E0E\u9884\u89C8\u7ED3\u679C\u53EF\u80FD\u4F1A\u4E0D\u518D\u4E00\u81F4. alert_word=\u9009\u62E9\u4E0D\u56FA\u5B9A\u884C\u9AD8\u5BFC\u51FA\u65F6, \u7F16\u8F91\u5BFC\u51FA\u7684word, \u5355\u5143\u683C\u884C\u9AD8\u4F1A\u968F\u7740\u5185\u5BB9\u81EA\u52A8\u62C9\u4F38, \u6B64\u60C5\u51B5\u4E0B\u5BFC\u51FA\u7ED3\u679C\u5206\u9875\u4F4D\u7F6E\u4E0E\u9884\u89C8\u7ED3\u679C\u53EF\u80FD\u4F1A\u4E0D\u518D\u4E00\u81F4.
PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F
M-Page_Setup=\u9875\u9762\u8BBE\u7F6E M-Page_Setup=\u9875\u9762\u8BBE\u7F6E
DashBoard-FormBook=\u8868\u5355 DashBoard-FormBook=\u51B3\u7B56\u62A5\u8868
X-Coordinate=\u6A2A\u5750\u6807 X-Coordinate=\u6A2A\u5750\u6807
Style-Line_Spacing=\u884C\u95F4\u8DDD Style-Line_Spacing=\u884C\u95F4\u8DDD
FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7EA7\u63D0\u9192 FR-Designer_Plugin_Should_Update_Title=\u63D2\u4EF6\u5347\u7EA7\u63D0\u9192
@ -700,7 +700,7 @@ WF-Name=\u540D\u79F0
RWA-Click_Cell_To_Edit_Value=\u5355\u51FB\u6A21\u677F\u5355\u5143\u683C\u4FEE\u6539\u503C RWA-Click_Cell_To_Edit_Value=\u5355\u51FB\u6A21\u677F\u5355\u5143\u683C\u4FEE\u6539\u503C
Utils-Row_Height=\u884C\u9AD8 Utils-Row_Height=\u884C\u9AD8
ReportD-Excel_Export=\u6A21\u677F\u5BFC\u51FA\u5C5E\u6027 ReportD-Excel_Export=\u6A21\u677F\u5BFC\u51FA\u5C5E\u6027
Form-Please_Select_A_Kind_Of_Form_Container=\u8BF7\u9009\u62E9\u4E00\u79CD\u8868\u5355\u5BB9\u5668 Form-Please_Select_A_Kind_Of_Form_Container=\u8BF7\u9009\u62E9\u4E00\u79CD\u51B3\u7B56\u62A5\u8868\u5BB9\u5668
Column_Does_Not_Exsit=\u5217\u4E0D\u5B58\u5728 Column_Does_Not_Exsit=\u5217\u4E0D\u5B58\u5728
M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5 M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5
can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_"
@ -835,7 +835,7 @@ Values=\u503C
Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91 Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5355\u5143\u683C\u5C5E\u6027\u8868\u7F16\u8F91
Root=\u6839\u8282\u70B9 Root=\u6839\u8282\u70B9
cycle=\u5468\u671F cycle=\u5468\u671F
open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u8868\u5355\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002 open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u51B3\u7B56\u62A5\u8868\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002
Support-Current_Auto_Complete_Shortcut=\u5F53\u524D\u5FEB\u6377\u952E Support-Current_Auto_Complete_Shortcut=\u5F53\u524D\u5FEB\u6377\u952E
GROUPING_MODE=\u666E\u901A\u5206\u7EC4 GROUPING_MODE=\u666E\u901A\u5206\u7EC4
DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\u6570 DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\u6570
@ -1092,7 +1092,7 @@ Form-View_Tree=\u89C6\u56FE\u6811
M_Insert-Chart=\u63D2\u5165\u56FE\u8868 M_Insert-Chart=\u63D2\u5165\u56FE\u8868
HF-Even_Page=\u5076\u6570\u9875 HF-Even_Page=\u5076\u6570\u9875
ReportServerP-Report_server_parameter=\u62A5\u8868\u670D\u52A1\u5668\u53C2\u6570 ReportServerP-Report_server_parameter=\u62A5\u8868\u670D\u52A1\u5668\u53C2\u6570
JavaScript-Form_Submit=\u8868\u5355\u63D0\u4EA4 JavaScript-Form_Submit=\u51B3\u7B56\u62A5\u8868\u63D0\u4EA4
Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40
BorderLayout-Center=\u4E2D BorderLayout-Center=\u4E2D
INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668 INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668
@ -1442,7 +1442,7 @@ ReportColumns-Columns_after=\u8D85\u8FC7
FR-Designer_Undo=\u64A4\u9500 FR-Designer_Undo=\u64A4\u9500
DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570 DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570
M-Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E M-Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E
M-Form_Preview=\u8868\u5355\u9884\u89C8 M-Form_Preview=\u51B3\u7B56\u62A5\u8868\u9884\u89C8
Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027 Form-Basic_Properties=\u57FA\u672C\u5C5E\u6027
quote=\u5F15\u7528 quote=\u5F15\u7528
Thu=\u56DB Thu=\u56DB
@ -1519,7 +1519,7 @@ FR-Template-Path_chooseRightPath=\u8BF7\u9009\u62E9\u6B63\u786E\u8DEF\u5F84
FR-Remote_Re_Connect_to_Server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668? FR-Remote_Re_Connect_to_Server=\u670D\u52A1\u5668\u5DF2\u5173\u95ED\uFF0C\u662F\u5426\u91CD\u65B0\u8FDE\u63A5\u670D\u52A1\u5668?
Nation=\u56FD\u5BB6 Nation=\u56FD\u5BB6
DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u65F6\u95F4 DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u65F6\u95F4
FR-App-Template_Form=\u8868\u5355 FR-App-Template_Form=\u51B3\u7B56\u62A5\u8868
Address=\u5730\u5740 Address=\u5730\u5740
Sub_Report=\u5B50\u62A5\u8868 Sub_Report=\u5B50\u62A5\u8868
FR-Import-Export_Word=Word\u683C\u5F0F FR-Import-Export_Word=Word\u683C\u5F0F
@ -1562,7 +1562,7 @@ Sub_Report_Description=\u5B50\u62A5\u8868\u9700\u8981\u5B58\u5728\u4E8E\u7236\u8
T_Insert-Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20 T_Insert-Float=\u63D2\u5165\u60AC\u6D6E\u5143\u7D20
BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3 BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3
My_Computer=\u6211\u7684\u7535\u8111 My_Computer=\u6211\u7684\u7535\u8111
FORMLET=\u8BBF\u95EE\u4E0D\u540C\u8868\u5355\u7684\u8DEF\u5F84\u7684\u53C2\u6570 FORMLET=\u8BBF\u95EE\u4E0D\u540C\u51B3\u7B56\u62A5\u8868\u7684\u8DEF\u5F84\u7684\u53C2\u6570
HF-Undefined=\u6CA1\u6709\u5B9A\u4E49 HF-Undefined=\u6CA1\u6709\u5B9A\u4E49
Widget-User_Defined_Widget_Config=\u9884\u5B9A\u4E49\u63A7\u4EF6 Widget-User_Defined_Widget_Config=\u9884\u5B9A\u4E49\u63A7\u4EF6
Report-Write_Attributes_Group_Warning=\u8BBE\u7F6E\u4E3A\u5355\u5143\u683C\u7EC4\u7684\u5404\u5B57\u6BB5\u4E2D\u7684\u5355\u5143\u683C\u4E2A\u6570\u5FC5\u987B\u76F8\u540C Report-Write_Attributes_Group_Warning=\u8BBE\u7F6E\u4E3A\u5355\u5143\u683C\u7EC4\u7684\u5404\u5B57\u6BB5\u4E2D\u7684\u5355\u5143\u683C\u4E2A\u6570\u5FC5\u987B\u76F8\u540C
@ -1596,7 +1596,7 @@ FS_Report_Type=\u7C7B\u578B
HF-New_Line=\u6362\u884C\u7B26 HF-New_Line=\u6362\u884C\u7B26
Privilege=\u6743\u9650 Privilege=\u6743\u9650
Export-Offline-Html=\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868 Export-Offline-Html=\u8F93\u51FA\u79BB\u7EBFhtml\u62A5\u8868
FR-Designer_open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u8868\u5355\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002 FR-Designer_open-new-form-tip=\u5F53\u524D\u6A21\u677F\u4E3A711\u4EE5\u4E0B\u7248\u672C\u5236\u4F5C\uFF0C\u65E0\u6CD5\u517C\u5BB9\uFF0C\u4E0D\u80FD\u6253\u5F00\u3002\u5047\u5982\u60F3\u6253\u5F00\u4FEE\u6539\u6B64\u51B3\u7B56\u62A5\u8868\uFF0C\u8BF7\u4F7F\u7528\u5BF9\u5E94\u7248\u672C\u8BBE\u8BA1\u5668\u6253\u5F00\u3002
FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6837\u5F0F FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6837\u5F0F
Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E
FR-Designer_Form-Password=\u5BC6\u7801 FR-Designer_Form-Password=\u5BC6\u7801
@ -1620,7 +1620,7 @@ Above=\u4EE5\u4E0A\u7248\u672C
Utils-The-Chart=\u56FE\u8868 Utils-The-Chart=\u56FE\u8868
FRFont-plain=\u5E38\u89C4 FRFont-plain=\u5E38\u89C4
Calculating=\u5904\u7406\u4E2D Calculating=\u5904\u7406\u4E2D
Form-Object=\u8868\u5355\u5BF9\u8C61\: Form-Object=\u51B3\u7B56\u62A5\u8868\u5BF9\u8C61\:
May=\u4E94\u6708 May=\u4E94\u6708
FR-Designer_Plugin_Normal_Update=\u66F4\u65B0 FR-Designer_Plugin_Normal_Update=\u66F4\u65B0
FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868 FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868
@ -1755,7 +1755,7 @@ ReportServerP-Last=\u672B\u9875
FR-Base_Columns=\u5217 FR-Base_Columns=\u5217
SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185 SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185
LOG-Please_Wait=\u8BF7\u7A0D\u5019 LOG-Please_Wait=\u8BF7\u7A0D\u5019
Form-ToolBar=\u8868\u5355\u5DE5\u5177\u680F Form-ToolBar=\u51B3\u7B56\u62A5\u8868\u5DE5\u5177\u680F
FR-Base_sure_remove_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879 FR-Base_sure_remove_item=\u4F60\u786E\u5B9E\u51B3\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u9879
Component_Scale=\u7EC4\u4EF6\u7F29\u653E Component_Scale=\u7EC4\u4EF6\u7F29\u653E
Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u5904\u7406\u53C2\u6570 Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u5904\u7406\u53C2\u6570
@ -1800,7 +1800,7 @@ Only_selected_cell_can_paste_only=\u53EA\u6709\u9009\u4E2D\u5355\u5143\u683C\u65
M_Report-Report_Columns=\u62A5\u8868\u5206\u680F M_Report-Report_Columns=\u62A5\u8868\u5206\u680F
Unit_Hundred=\u767E Unit_Hundred=\u767E
FR-Designer_DataTable-Build=\u6781\u901F\u5206\u5C42\u6784\u5EFA FR-Designer_DataTable-Build=\u6781\u901F\u5206\u5C42\u6784\u5EFA
Widget-Form_Widget_Config=\u8868\u5355\u63A7\u4EF6 Widget-Form_Widget_Config=\u51B3\u7B56\u62A5\u8868\u63A7\u4EF6
Server-version-tip-moreInfo=\u5EFA\u8BAE\u60A8\u6240\u5C5E\u56E2\u961F\u4F7F\u7528\u7684\u6211\u65B9FineReport\u4EA7\u54C1\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\u4EE5\u53CA\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u53F7\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u95EE\u9898\u98CE\u9669\u3002\n\u5047\u5982\u60A8\u6253\u5F00\u66F4\u9AD8\u8BBE\u8BA1\u5668\u7248\u672C\u5236\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u5F00\u51FA\u9519\uFF0C\u4E5F\u53EF\u80FD\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u3002\u5047\u5982\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u9AD8\u4E8E\u60A8\u6700\u7EC8\u90E8\u7F72\u6240\u7528\u7684\u670D\u52A1\u5668\u7248\u672C\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u65E0\u6CD5\u6B63\u5E38\u8F7D\u5165\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u3002 Server-version-tip-moreInfo=\u5EFA\u8BAE\u60A8\u6240\u5C5E\u56E2\u961F\u4F7F\u7528\u7684\u6211\u65B9FineReport\u4EA7\u54C1\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u53F7\u4EE5\u53CA\u90E8\u7F72\u7684\u670D\u52A1\u5668\u7248\u672C\u53F7\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u95EE\u9898\u98CE\u9669\u3002\n\u5047\u5982\u60A8\u6253\u5F00\u66F4\u9AD8\u8BBE\u8BA1\u5668\u7248\u672C\u5236\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u5F00\u51FA\u9519\uFF0C\u4E5F\u53EF\u80FD\u4E22\u5931\u539F\u6709\u6A21\u677F\u5C5E\u6027\u3002\u5047\u5982\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8BBE\u8BA1\u5668\u7248\u672C\u9AD8\u4E8E\u60A8\u6700\u7EC8\u90E8\u7F72\u6240\u7528\u7684\u670D\u52A1\u5668\u7248\u672C\uFF0C\u670D\u52A1\u5668\u53EF\u80FD\u65E0\u6CD5\u6B63\u5E38\u8F7D\u5165\u60A8\u5236\u4F5C\u7684\u6A21\u677F\u3002
Actions=\u4EFB\u52A1 Actions=\u4EFB\u52A1
FR-Designer-Dependence_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u5668\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5 FR-Designer-Dependence_Connect_Server_Error=\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u5668\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5
@ -1953,7 +1953,7 @@ ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript
Form-TableTree=\u8868\u683C\u6811 Form-TableTree=\u8868\u683C\u6811
Opened=\u5DF2\u5F00\u542F Opened=\u5DF2\u5F00\u542F
M_Edit-Delete=\u5220\u9664(D) M_Edit-Delete=\u5220\u9664(D)
Widget-Form_Widget_Container=\u8868\u5355\u5BB9\u5668 Widget-Form_Widget_Container=\u51B3\u7B56\u62A5\u8868\u5BB9\u5668
BindColumn-Summary=\u6C47\u603B BindColumn-Summary=\u6C47\u603B
Sche-Second=\u79D2 Sche-Second=\u79D2
Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668 Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668

34
designer_base/src/com/fr/design/locale/designer_zh_TW.properties

@ -103,10 +103,10 @@ FR-Designer_Fit-App=App\u81EA\u9069\u61C9
FR-Designer_Fit=\u81EA\u9069\u61C9 FR-Designer_Fit=\u81EA\u9069\u61C9
FR-Designer_Font-Family=\u5B57\u9AD4\u540D\u7A31 FR-Designer_Font-Family=\u5B57\u9AD4\u540D\u7A31
FR-Designer_Font-Size=\u5B57\u9AD4\u5927\u5C0F FR-Designer_Font-Size=\u5B57\u9AD4\u5927\u5C0F
FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8A72\u5C0D\u8C61\u4E0D\u5141\u8A31\u62D6\u5165\u8868\u55AE\u4E3B\u9AD4 FR-Designer_Forbid_Drag_into_Adapt_Pane=\u8A72\u5C0D\u8C61\u4E0D\u5141\u8A31\u62D6\u5165\u6C7A\u7B56\u5831\u8868\u4E3B\u9AD4
FR-Designer_Forbid_Drag_into_Para_Pane=\u8A72\u5C0D\u8C61\u4E0D\u80FD\u62D6\u5165\u53C3\u6578\u9762\u677F FR-Designer_Forbid_Drag_into_Para_Pane=\u8A72\u5C0D\u8C61\u4E0D\u80FD\u62D6\u5165\u53C3\u6578\u9762\u677F
FR-Designer_Foreground=\u984F\u8272 FR-Designer_Foreground=\u984F\u8272
FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u6301\u8868\u55AE\u6B0A\u9650\u7DE8\u8F2F FR-Designer_Form-AuthorityEdited_Cannot_be_Supported=\u66AB\u4E0D\u652F\u6301\u6C7A\u7B56\u5831\u8868\u6B0A\u9650\u7DE8\u8F2F
FR-Designer_Form-Report=\u5831\u8868\u683C\u5F0F FR-Designer_Form-Report=\u5831\u8868\u683C\u5F0F
FR-Designer_Form_EmbeddedTD=\u5167\u5D01\u683C\u5F0F FR-Designer_Form_EmbeddedTD=\u5167\u5D01\u683C\u5F0F
FR-Designer_Form_Module=\u6A21\u7D44\u683C\u5F0F FR-Designer_Form_Module=\u6A21\u7D44\u683C\u5F0F
@ -117,7 +117,7 @@ FR-Designer_Get-Cube=\u6B63\u5728\u7372\u53D6cube
FR-Designer_Help=\u8AAA\u660E FR-Designer_Help=\u8AAA\u660E
FR-Designer_Hide=\u96B1\u85CF FR-Designer_Hide=\u96B1\u85CF
FR-Designer_Hyperlink=\u8D85\u7D1A\u93C8\u63A5 FR-Designer_Hyperlink=\u8D85\u7D1A\u93C8\u63A5
FR-Designer_Hyperlink-Form_link=\u7576\u524D\u8868\u55AE\u5C0D\u8C61 FR-Designer_Hyperlink-Form_link=\u7576\u524D\u6C7A\u7B56\u5831\u8868\u5C0D\u8C61
FR-Designer_IDCard=\u8EAB\u4EFD\u8B49 FR-Designer_IDCard=\u8EAB\u4EFD\u8B49
FR-Designer_Icon=\u5716\u793A FR-Designer_Icon=\u5716\u793A
FR-Designer_Index=\u7D22\u5F15 FR-Designer_Index=\u7D22\u5F15
@ -493,7 +493,7 @@ FR-Designer_Properties_Mobile=\u624B\u6A5F\u5C6C\u6027
FR-Designer_Button_OK=\u78BA\u5B9A FR-Designer_Button_OK=\u78BA\u5B9A
FR-Designer_Button_Cancel=\u53D6\u6D88 FR-Designer_Button_Cancel=\u53D6\u6D88
FR-Designer_JavaScript=JavaScript\u8173\u672C FR-Designer_JavaScript=JavaScript\u8173\u672C
FR-Designer_JavaScript_Form_Submit=\u8868\u55AE\u63D0\u4EA4 FR-Designer_JavaScript_Form_Submit=\u6C7A\u7B56\u5831\u8868\u63D0\u4EA4
FR-Designer_JavaScript_Commit_to_Database=\u63D0\u4EA4\u5165\u5EAB FR-Designer_JavaScript_Commit_to_Database=\u63D0\u4EA4\u5165\u5EAB
FR-Designer_JavaScript_Custom=\u81EA\u5B9A\u7FA9 FR-Designer_JavaScript_Custom=\u81EA\u5B9A\u7FA9
FR-Designer_RWA_Submit=\u63D0\u4EA4 FR-Designer_RWA_Submit=\u63D0\u4EA4
@ -560,7 +560,7 @@ FR-Designer_DS_TableData=\u8CC7\u6599\u96C6
FR-Designer_Parameter-Formula=\u516C\u5F0F FR-Designer_Parameter-Formula=\u516C\u5F0F
FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u633F\u4EF6\u7248\u672C\u904E\u4F4E\uFF0C\u5B58\u5728API\u4E0D\u76F8\u5BB9\uFF0C\u8ACB\u806F\u7CFB\u958B\u767C\u8005\u965E\u7D1A\u633F\u4EF6 FR-Designer_Plugin_Should_Update_Please_Contact_Developer=\u633F\u4EF6\u7248\u672C\u904E\u4F4E\uFF0C\u5B58\u5728API\u4E0D\u76F8\u5BB9\uFF0C\u8ACB\u806F\u7CFB\u958B\u767C\u8005\u965E\u7D1A\u633F\u4EF6
FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F FR-Designer_WidgetOrder=\u63A7\u4EF6\u9806\u5E8F
FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u8868\u55AE\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002 FR-Designer_Mobile_Form_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u6C7A\u7B56\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\u3002
FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002 FR-Designer_Mobile_Report_Analysis_Annotation=\u6CE8\u91CB\uFF1A\u53EF\u4EE5\u901A\u904E\u8A72\u5C6C\u6027\u63A7\u5236\u5831\u8868\u5728APP\u4E2D\u7684\u89E3\u6790\u65B9\u5F0F\uFF0C\u53EA\u652F\u6301\u5206\u9801\u9810\u89BD\uFF0C\u586B\u5831\u9810\u89BD\u6642\u5C6C\u6027\u7121\u6548\u3002
FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F FR-Designer_Background_Null=\u6C92\u6709\u80CC\u666F
FR-Designer_Background_Color=\u984F\u8272 FR-Designer_Background_Color=\u984F\u8272
@ -622,7 +622,7 @@ Tree-Width=\u5BEC\u5EA6
alert_word=\u9078\u64C7\u4E0D\u56FA\u5B9A\u5217\u9AD8\u532F\u51FA\u6642, \u7DE8\u8F2F\u532F\u51FA\u7684word, \u5132\u5B58\u683C\u5217\u9AD8\u6703\u96A8\u8457\u5167\u5BB9\u81EA\u52D5\u62C9\u4F38, \u6B64\u60C5\u6CC1\u4E0B\u532F\u51FA\u7D50\u679C\u8207\u9810\u89BD\u7D50\u679C\u53EF\u80FD\u6703\u4E0D\u518D\u4E00\u81F4. alert_word=\u9078\u64C7\u4E0D\u56FA\u5B9A\u5217\u9AD8\u532F\u51FA\u6642, \u7DE8\u8F2F\u532F\u51FA\u7684word, \u5132\u5B58\u683C\u5217\u9AD8\u6703\u96A8\u8457\u5167\u5BB9\u81EA\u52D5\u62C9\u4F38, \u6B64\u60C5\u6CC1\u4E0B\u532F\u51FA\u7D50\u679C\u8207\u9810\u89BD\u7D50\u679C\u53EF\u80FD\u6703\u4E0D\u518D\u4E00\u81F4.
PageSetup-Paper_Size=\u7D19\u5F35\u5927\u5C0F PageSetup-Paper_Size=\u7D19\u5F35\u5927\u5C0F
M-Page_Setup=\u9801\u9762\u8A2D\u5B9A M-Page_Setup=\u9801\u9762\u8A2D\u5B9A
DashBoard-FormBook=\u8868\u55AE DashBoard-FormBook=\u6C7A\u7B56\u5831\u8868
X-Coordinate=\u6A6B\u5EA7\u6A19 X-Coordinate=\u6A6B\u5EA7\u6A19
Style-Line_Spacing=\u5217\u9593\u8DDD Style-Line_Spacing=\u5217\u9593\u8DDD
FR-Designer_Plugin_Should_Update_Title=Warning FR-Designer_Plugin_Should_Update_Title=Warning
@ -698,7 +698,7 @@ WF-Name=\u540D\u7A31
RWA-Click_Cell_To_Edit_Value=\u55AE\u64CA\u6A21\u677F\u5132\u5B58\u683C\u4FEE\u6539\u503C RWA-Click_Cell_To_Edit_Value=\u55AE\u64CA\u6A21\u677F\u5132\u5B58\u683C\u4FEE\u6539\u503C
Utils-Row_Height=\u5217\u9AD8 Utils-Row_Height=\u5217\u9AD8
ReportD-Excel_Export=\u5831\u8868\u532F\u51FA\u5C6C\u6027 ReportD-Excel_Export=\u5831\u8868\u532F\u51FA\u5C6C\u6027
Form-Please_Select_A_Kind_Of_Form_Container=\u8ACB\u9078\u64C7\u4E00\u7A2E\u8868\u55AE\u5BB9\u5668 Form-Please_Select_A_Kind_Of_Form_Container=\u8ACB\u9078\u64C7\u4E00\u7A2E\u6C7A\u7B56\u5831\u8868\u5BB9\u5668
Column_Does_Not_Exsit=\u6B04\u4E0D\u5B58\u5728 Column_Does_Not_Exsit=\u6B04\u4E0D\u5B58\u5728
M_Insert-Hyperlink=\u8D85\u7D1A\u93C8\u63A5 M_Insert-Hyperlink=\u8D85\u7D1A\u93C8\u63A5
can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_" can_not_include_underline=\u4E0D\u80FD\u5305\u542B"_"
@ -833,7 +833,7 @@ Values=\u503C
Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5132\u5B58\u683C\u5C6C\u6027\u8868\u7DE8\u8F2F Not_use_a_cell_attribute_table_editing=\u60A8\u4E0D\u53EF\u4EE5\u7528\u5132\u5B58\u683C\u5C6C\u6027\u8868\u7DE8\u8F2F
Root=\u6839\u7BC0\u9EDE Root=\u6839\u7BC0\u9EDE
cycle=\u5468\u671F cycle=\u5468\u671F
open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u6C7A\u7B56\u5831\u8868, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B.
Support-Current_Auto_Complete_Shortcut=Current Shortcut Support-Current_Auto_Complete_Shortcut=Current Shortcut
GROUPING_MODE=\u666E\u901A\u5206\u7D44 GROUPING_MODE=\u666E\u901A\u5206\u7D44
DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578 DBCP_MAX_IDLE=\u6700\u5927\u7A7A\u9591\u9023\u63A5\u6578
@ -1090,7 +1090,7 @@ Form-View_Tree=\u6AA2\u8996\u8868\u6A39
M_Insert-Chart=\u63D2\u5165\u5716\u8868 M_Insert-Chart=\u63D2\u5165\u5716\u8868
HF-Even_Page=\u5076\u6578\u9801 HF-Even_Page=\u5076\u6578\u9801
ReportServerP-Report_server_parameter=\u5831\u8868\u4F3A\u670D\u5668\u53C3\u6578 ReportServerP-Report_server_parameter=\u5831\u8868\u4F3A\u670D\u5668\u53C3\u6578
JavaScript-Form_Submit=\u8868\u55AE\u63D0\u4EA4 JavaScript-Form_Submit=\u6C7A\u7B56\u5831\u8868\u63D0\u4EA4
Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40 Horizontal-Split_Layout=\u6C34\u5E73\u5206\u5272\u5E03\u5C40
BorderLayout-Center=\u4E2D BorderLayout-Center=\u4E2D
INFO-Reset_Webapp=\u91CD\u7F6E\u61C9\u7528\u4F3A\u670D\u5668 INFO-Reset_Webapp=\u91CD\u7F6E\u61C9\u7528\u4F3A\u670D\u5668
@ -1439,7 +1439,7 @@ ReportColumns-Columns_after=\u8D85\u904E
FR-Designer_Undo=\u5FA9\u539F FR-Designer_Undo=\u5FA9\u539F
DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u9591\u9023\u63A5\u6578 DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u9591\u9023\u63A5\u6578
M-Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A M-Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A
M-Form_Preview=\u8868\u55AE\u9810\u89BD M-Form_Preview=\u6C7A\u7B56\u5831\u8868\u9810\u89BD
Form-Basic_Properties=\u57FA\u672C\u5C6C\u6027 Form-Basic_Properties=\u57FA\u672C\u5C6C\u6027
quote=\u5F15\u7528 quote=\u5F15\u7528
Thu=\u56DB Thu=\u56DB
@ -1517,7 +1517,7 @@ FR-Template-Path_chooseRightPath=\u8ACB\u9078\u64C7\u6B63\u78BA\u8DEF\u5F91
FR-Remote_Re_Connect_to_Server=\u4F3A\u670D\u5668\u5DF2\u95DC\u9589\uFF0C\u662F\u5426\u91CD\u65B0\u9023\u63A5\u4F3A\u670D\u5668? FR-Remote_Re_Connect_to_Server=\u4F3A\u670D\u5668\u5DF2\u95DC\u9589\uFF0C\u662F\u5426\u91CD\u65B0\u9023\u63A5\u4F3A\u670D\u5668?
Nation=\u570B\u5BB6 Nation=\u570B\u5BB6
DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u6642\u9593 DBCP_MAX_WAIT=\u6700\u5927\u7B49\u5F85\u6642\u9593
FR-App-Template_Form=\u8868\u55AE FR-App-Template_Form=\u6C7A\u7B56\u5831\u8868
Address=\u5730\u5740 Address=\u5730\u5740
Sub_Report=\u5B50\u5831\u8868 Sub_Report=\u5B50\u5831\u8868
FR-Import-Export_Word=Word\u683C\u5F0F FR-Import-Export_Word=Word\u683C\u5F0F
@ -1560,7 +1560,7 @@ Sub_Report_Description=\u5B50\u5831\u8868\u9700\u8981\u5B58\u5728\u65BC\u7236\u8
T_Insert-Float=\u63D2\u5165\u61F8\u6D6E\u5143\u7D20 T_Insert-Float=\u63D2\u5165\u61F8\u6D6E\u5143\u7D20
BackgroundTexture-FishFossil=\u9B5A\u985E\u5316\u77F3 BackgroundTexture-FishFossil=\u9B5A\u985E\u5316\u77F3
My_Computer=\u6211\u7684\u96FB\u8166 My_Computer=\u6211\u7684\u96FB\u8166
FORMLET=\u8A2A\u554F\u4E0D\u540C\u8868\u55AE\u7684\u8DEF\u5F91\u7684\u53C3\u6578 FORMLET=\u8A2A\u554F\u4E0D\u540C\u6C7A\u7B56\u5831\u8868\u7684\u8DEF\u5F91\u7684\u53C3\u6578
HF-Undefined=\u6C92\u6709\u5B9A\u7FA9 HF-Undefined=\u6C92\u6709\u5B9A\u7FA9
Widget-User_Defined_Widget_Config=\u9810\u5B9A\u7FA9\u63A7\u5236\u9805 Widget-User_Defined_Widget_Config=\u9810\u5B9A\u7FA9\u63A7\u5236\u9805
Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u7232\u5132\u5B58\u683C\u7D44\u7684\u5404\u6B04\u4F4D\u4E2D\u7684\u5132\u5B58\u683C\u500B\u6578\u5FC5\u9808\u76F8\u540C Report-Write_Attributes_Group_Warning=\u8A2D\u5B9A\u7232\u5132\u5B58\u683C\u7D44\u7684\u5404\u6B04\u4F4D\u4E2D\u7684\u5132\u5B58\u683C\u500B\u6578\u5FC5\u9808\u76F8\u540C
@ -1594,7 +1594,7 @@ FS_Report_Type=\u985E\u578B
HF-New_Line=\u63DB\u5217\u7B26 HF-New_Line=\u63DB\u5217\u7B26
Privilege=\u6B0A\u9650 Privilege=\u6B0A\u9650
Export-Offline-Html=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868 Export-Offline-Html=\u8F38\u51FA\u96E2\u7DDAhtml\u5831\u8868
FR-Designer_open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u8868\u55AE, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B. FR-Designer_open-new-form-tip=\u7576\u524D\u6A21\u677F\u70BA711\u4EE5\u4E0B\u7248\u672C\u88FD\u4F5C, \u7121\u6CD5\u517C\u5BB9, \u4E0D\u80FD\u6253\u958B. \u5047\u5982\u60F3\u6253\u958B\u4FEE\u6539\u6B64\u6C7A\u7B56\u5831\u8868, \u8ACB\u4F7F\u7528\u5C0D\u61C9\u7248\u672C\u8A2D\u8A08\u5668\u6253\u958B.
FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6A23\u5F0F FR-Designer-Widget-Style_Frame_Style=\u6846\u67B6\u6A23\u5F0F
Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A
FR-Designer_Form-Password=\u5BC6\u78BC FR-Designer_Form-Password=\u5BC6\u78BC
@ -1618,7 +1618,7 @@ Above=\u4EE5\u4E0A\u7248\u672C
Utils-The-Chart=\u5716\u8868 Utils-The-Chart=\u5716\u8868
FRFont-plain=\u5E38\u898F FRFont-plain=\u5E38\u898F
Calculating=\u8655\u7406\u4E2D Calculating=\u8655\u7406\u4E2D
Form-Object=\u8868\u55AE\u5C0D\u8C61 Form-Object=\u6C7A\u7B56\u5831\u8868\u5C0D\u8C61
May=\u4E94\u6708 May=\u4E94\u6708
FR-Designer_Plugin_Normal_Update=Update FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868 FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868
@ -1753,7 +1753,7 @@ ReportServerP-Last=\u672B\u9801
FR-Base_Columns=\u6B04 FR-Base_Columns=\u6B04
SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7D44\u5167 SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7D44\u5167
LOG-Please_Wait=\u8ACB\u7A0D\u5019 LOG-Please_Wait=\u8ACB\u7A0D\u5019
Form-ToolBar=\u8868\u55AE\u5DE5\u5177\u6B04 Form-ToolBar=\u6C7A\u7B56\u5831\u8868\u5DE5\u5177\u6B04
FR-Base_sure_remove_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805 FR-Base_sure_remove_item=\u4F60\u78BA\u5BE6\u6C7A\u5B9A\u522A\u9664\u9078\u4E2D\u7684\u9805
Component_Scale=\u5143\u4EF6\u7E2E\u653E Component_Scale=\u5143\u4EF6\u7E2E\u653E
Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u8655\u7406\u53C3\u6578 Hyperlink-Use_CJK_to_encode_parameter=\u4F7F\u7528CJK\u8655\u7406\u53C3\u6578
@ -1798,7 +1798,7 @@ Only_selected_cell_can_paste_only=\u53EA\u6709\u9078\u4E2D\u5132\u5B58\u683C\u66
M_Report-Report_Columns=\u5831\u8868\u5206\u6B04 M_Report-Report_Columns=\u5831\u8868\u5206\u6B04
Unit_Hundred=\u4F70 Unit_Hundred=\u4F70
FR-Designer_DataTable-Build=\u6975\u901F\u5206\u5C64\u69CB\u5EFA FR-Designer_DataTable-Build=\u6975\u901F\u5206\u5C64\u69CB\u5EFA
Widget-Form_Widget_Config=\u8868\u55AE\u63A7\u5236\u9805 Widget-Form_Widget_Config=\u6C7A\u7B56\u5831\u8868\u63A7\u5236\u9805
Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u968A\u4F7F\u7528\u7684\u6211\u65B9FineReport\u7522\u54C1\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\u4EE5\u53CA\u90E8\u7F72\u7684\u4F3A\u670D\u5668\u7248\u672C\u865F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u554F\u984C\u98A8\u96AA\u3002\u5047\u5982\u60A8\u6253\u958B\u66F4\u9AD8\u8A2D\u8A08\u5668\u7248\u672C\u88FD\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u958B\u51FA\u932F\uFF0C\u4E5F\u53EF\u80FD\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u3002\u5047\u5982\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u9AD8\u65BC\u60A8\u6700\u7D42\u90E8\u7F72\u6240\u7528\u7684\u4F3A\u670D\u5668\u7248\u672C\uFF0C\u4F3A\u670D\u5668\u53EF\u80FD\u7121\u6CD5\u6B63\u5E38\u8F09\u5165\u60A8\u88FD\u4F5C\u7684\u6A21\u677F Server-version-tip-moreInfo=\u5EFA\u8B70\u60A8\u6240\u5C6C\u5718\u968A\u4F7F\u7528\u7684\u6211\u65B9FineReport\u7522\u54C1\u7684\u8A2D\u8A08\u5668\u7248\u672C\u865F\u4EE5\u53CA\u90E8\u7F72\u7684\u4F3A\u670D\u5668\u7248\u672C\u865F\u4FDD\u6301\u4E00\u81F4\uFF0C\u4EE5\u907F\u514D\u7248\u672C\u4E0D\u4E00\u81F4\u9020\u6210\u7684\u554F\u984C\u98A8\u96AA\u3002\u5047\u5982\u60A8\u6253\u958B\u66F4\u9AD8\u8A2D\u8A08\u5668\u7248\u672C\u88FD\u4F5C\u7684\u6A21\u677F\uFF0C\u53EF\u80FD\u6253\u958B\u51FA\u932F\uFF0C\u4E5F\u53EF\u80FD\u4E1F\u5931\u539F\u6709\u6A21\u677F\u5C6C\u6027\u3002\u5047\u5982\u60A8\u88FD\u4F5C\u7684\u6A21\u677F\u4F7F\u7528\u7684\u8A2D\u8A08\u5668\u7248\u672C\u9AD8\u65BC\u60A8\u6700\u7D42\u90E8\u7F72\u6240\u7528\u7684\u4F3A\u670D\u5668\u7248\u672C\uFF0C\u4F3A\u670D\u5668\u53EF\u80FD\u7121\u6CD5\u6B63\u5E38\u8F09\u5165\u60A8\u88FD\u4F5C\u7684\u6A21\u677F
Actions=\u4EFB\u52D9 Actions=\u4EFB\u52D9
FR-Designer-Dependence_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u670D\u52D9\u5668\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66 FR-Designer-Dependence_Connect_Server_Error=\u7121\u6CD5\u9023\u63A5\u670D\u52D9\u5668\uFF0C\u8ACB\u7A0D\u5F8C\u518D\u8A66
@ -1951,7 +1951,7 @@ ReportServerP-Import_JavaScript=\u5F15\u7528JavaScript
Form-TableTree=\u8868\u683C\u6A39 Form-TableTree=\u8868\u683C\u6A39
Opened=\u5DF2\u958B\u5553 Opened=\u5DF2\u958B\u5553
M_Edit-Delete=\u522A\u9664(D) M_Edit-Delete=\u522A\u9664(D)
Widget-Form_Widget_Container=\u8868\u55AE\u5BB9\u5668 Widget-Form_Widget_Container=\u6C7A\u7B56\u5831\u8868\u5BB9\u5668
BindColumn-Summary=\u532F\u7E3D BindColumn-Summary=\u532F\u7E3D
Sche-Second=\u79D2 Sche-Second=\u79D2
Server-Open_Service_Manager=\u6253\u958B\u4F3A\u670D\u5668\u7BA1\u7406\u5668 Server-Open_Service_Manager=\u6253\u958B\u4F3A\u670D\u5668\u7BA1\u7406\u5668

23
designer_base/src/com/fr/design/mainframe/DesignerFrame.java

@ -10,6 +10,7 @@ import com.fr.design.DesignModelAdapter;
import com.fr.design.DesignState; import com.fr.design.DesignState;
import com.fr.design.DesignerEnvManager; import com.fr.design.DesignerEnvManager;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.data.datapane.TableDataTreePane;
@ -49,9 +50,23 @@ import com.fr.stable.StableUtils;
import com.fr.stable.image4j.codec.ico.ICODecoder; import com.fr.stable.image4j.codec.ico.ICODecoder;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import javax.swing.*; import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.border.MatteBorder; import javax.swing.border.MatteBorder;
import java.awt.*; import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable; import java.awt.datatransfer.Transferable;
import java.awt.dnd.*; import java.awt.dnd.*;
@ -734,6 +749,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
* @param jt 添加的模板. * @param jt 添加的模板.
*/ */
public void addAndActivateJTemplate(JTemplate<?, ?> jt) { public void addAndActivateJTemplate(JTemplate<?, ?> jt) {
//释放模板对象
ActionFactory.editorRelease();
if (jt == null || jt.getEditingFILE() == null) { if (jt == null || jt.getEditingFILE() == null) {
return; return;
} }
@ -750,6 +767,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
* @param jt 模板 * @param jt 模板
*/ */
public void activateJTemplate(JTemplate<?, ?> jt) { public void activateJTemplate(JTemplate<?, ?> jt) {
//释放模板对象
ActionFactory.editorRelease();
if (jt == null || jt.getEditingFILE() == null) { if (jt == null || jt.getEditingFILE() == null) {
return; return;
} }

3
designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java

@ -499,7 +499,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private boolean isEnabled = true; // 是否可用 private boolean isEnabled = true; // 是否可用
private Set<PropertyMode> visibleModes; private Set<PropertyMode> visibleModes;
private Set<PropertyMode> enableModes; private Set<PropertyMode> enableModes;
private static final int MAX_PARA_HEIGHT = 240;
// 完整icon路径为 ICON_BASE_DIR + btnIconName + iconSuffix // 完整icon路径为 ICON_BASE_DIR + btnIconName + iconSuffix
private static final String ICON_BASE_DIR = "/com/fr/design/images/buttonicon/propertiestab/"; private static final String ICON_BASE_DIR = "/com/fr/design/images/buttonicon/propertiestab/";
@ -621,8 +620,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
public void replaceHeaderPane(JComponent pane) { public void replaceHeaderPane(JComponent pane) {
contentArea.remove(headerPane); contentArea.remove(headerPane);
int height = Math.min(pane.getPreferredSize().height, MAX_PARA_HEIGHT);
pane.setPreferredSize(new Dimension(pane.getPreferredSize().width, height));
headerPane = pane; headerPane = pane;
contentArea.add(headerPane, BorderLayout.NORTH); contentArea.add(headerPane, BorderLayout.NORTH);

80
designer_base/src/com/fr/design/mainframe/JFormSliderPane.java

@ -14,13 +14,33 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*; import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.NumberFormatter; import javax.swing.text.NumberFormatter;
import java.awt.*; import java.awt.BorderLayout;
import java.awt.event.*; import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@ -51,7 +71,6 @@ public class JFormSliderPane extends JPanel {
private static final Color BACK_COLOR = new Color(245, 245, 247); private static final Color BACK_COLOR = new Color(245, 245, 247);
public int showValue = 100; public int showValue = 100;
public double resolutionTimes = 1.0; public double resolutionTimes = 1.0;
private static JFormSliderPane THIS;
private UITextField showVal; private UITextField showVal;
private JSpinner showValSpinner; private JSpinner showValSpinner;
private UISlider slider; private UISlider slider;
@ -62,7 +81,7 @@ public class JFormSliderPane extends JPanel {
private UISliderButton showValButton; private UISliderButton showValButton;
private UIRadioButton twoHundredButton; private UIRadioButton twoHundredButton;
private UIRadioButton oneHundredButton; private UIRadioButton oneHundredButton;
private UIRadioButton SevenFiveButton; private UIRadioButton sevenFiveButton;
private UIRadioButton fiveTenButton; private UIRadioButton fiveTenButton;
private UIRadioButton twoFiveButton; private UIRadioButton twoFiveButton;
private UIRadioButton selfAdaptButton; private UIRadioButton selfAdaptButton;
@ -83,7 +102,7 @@ public class JFormSliderPane extends JPanel {
showValSpinner.setEditor(editor); showValSpinner.setEditor(editor);
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField(); JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.setEditable(true); textField.setEditable(true);
DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory(); DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory();
NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter(); NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();
formatter.setAllowsInvalid(false); formatter.setAllowsInvalid(false);
@ -91,7 +110,7 @@ public class JFormSliderPane extends JPanel {
initShowValButton(); initShowValButton();
initUIRadioButton(); initUIRadioButton();
initPane(); initPane();
JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
panel.add(downButton); panel.add(downButton);
panel.add(slider); panel.add(slider);
panel.add(upButton); panel.add(upButton);
@ -100,17 +119,13 @@ public class JFormSliderPane extends JPanel {
this.add(panel, BorderLayout.NORTH); this.add(panel, BorderLayout.NORTH);
} }
public static final JFormSliderPane getInstance() { public static JFormSliderPane getInstance() {
// if (THIS == null) { return new JFormSliderPane();
// THIS = new JSliderPane();
// }
THIS = new JFormSliderPane();
return THIS;
} }
private void initSlider() { private void initSlider() {
slider = new UISlider(0, HUNDRED, HALF_HUNDRED){ slider = new UISlider(0, HUNDRED, HALF_HUNDRED) {
public Point getToolTipLocation(MouseEvent event){ public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y); return new Point(event.getX(), event.getY() - TOOLTIP_Y);
} }
}; };
@ -123,8 +138,8 @@ public class JFormSliderPane extends JPanel {
} }
private void initShowValSpinner() { private void initShowValSpinner() {
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)){ showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)) {
public Point getToolTipLocation(MouseEvent event){ public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y); return new Point(event.getX(), event.getY() - TOOLTIP_Y);
} }
}; };
@ -134,16 +149,16 @@ public class JFormSliderPane extends JPanel {
} }
private void initDownUpButton() { private void initDownUpButton() {
downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")){ downButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverDown20.png")) {
public Point getToolTipLocation(MouseEvent event){ public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y); return new Point(event.getX(), event.getY() - TOOLTIP_Y);
} }
}; };
downButton.setOpaque(false); downButton.setOpaque(false);
downButton.setBorderPainted(false); downButton.setBorderPainted(false);
downButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Down")); downButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Down"));
upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")){ upButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/data/source/normalUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png"), BaseUtils.readIcon("com/fr/design/images/data/source/hoverUp20.png")) {
public Point getToolTipLocation(MouseEvent event){ public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y); return new Point(event.getX(), event.getY() - TOOLTIP_Y);
} }
}; };
@ -164,10 +179,11 @@ public class JFormSliderPane extends JPanel {
showValButton.addActionListener(showValButtonActionListener); showValButton.addActionListener(showValButtonActionListener);
showValButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Grade")); showValButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Grade"));
} }
private void initUIRadioButton() { private void initUIRadioButton() {
twoHundredButton = new UIRadioButton("200%"); twoHundredButton = new UIRadioButton("200%");
oneHundredButton = new UIRadioButton("100%"); oneHundredButton = new UIRadioButton("100%");
SevenFiveButton = new UIRadioButton("75%"); sevenFiveButton = new UIRadioButton("75%");
fiveTenButton = new UIRadioButton("50%"); fiveTenButton = new UIRadioButton("50%");
twoFiveButton = new UIRadioButton("25%"); twoFiveButton = new UIRadioButton("25%");
selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton")); selfAdaptButton = new UIRadioButton(Inter.getLocText("FR-Designer_Scale_selfAdaptButton"));
@ -176,7 +192,7 @@ public class JFormSliderPane extends JPanel {
customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE)); customButton.setFont(new Font("SimSun", Font.PLAIN, FONT_SIZE));
twoHundredButton.addItemListener(radioButtonItemListener); twoHundredButton.addItemListener(radioButtonItemListener);
oneHundredButton.addItemListener(radioButtonItemListener); oneHundredButton.addItemListener(radioButtonItemListener);
SevenFiveButton.addItemListener(radioButtonItemListener); sevenFiveButton.addItemListener(radioButtonItemListener);
fiveTenButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener);
twoFiveButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener);
customButton.addItemListener(new ItemListener() { customButton.addItemListener(new ItemListener() {
@ -194,7 +210,7 @@ public class JFormSliderPane extends JPanel {
ButtonGroup bg = new ButtonGroup();// 初始化按钮组 ButtonGroup bg = new ButtonGroup();// 初始化按钮组
bg.add(twoHundredButton);// 加入按钮组 bg.add(twoHundredButton);// 加入按钮组
bg.add(oneHundredButton); bg.add(oneHundredButton);
bg.add(SevenFiveButton); bg.add(sevenFiveButton);
bg.add(fiveTenButton); bg.add(fiveTenButton);
bg.add(twoFiveButton); bg.add(twoFiveButton);
bg.add(selfAdaptButton); bg.add(selfAdaptButton);
@ -217,7 +233,7 @@ public class JFormSliderPane extends JPanel {
septPane.setBackground(BACK_COLOR); septPane.setBackground(BACK_COLOR);
twoHundredButton.setBackground(BACK_COLOR); twoHundredButton.setBackground(BACK_COLOR);
oneHundredButton.setBackground(BACK_COLOR); oneHundredButton.setBackground(BACK_COLOR);
SevenFiveButton.setBackground(BACK_COLOR); sevenFiveButton.setBackground(BACK_COLOR);
fiveTenButton.setBackground(BACK_COLOR); fiveTenButton.setBackground(BACK_COLOR);
twoFiveButton.setBackground(BACK_COLOR); twoFiveButton.setBackground(BACK_COLOR);
// selfAdaptButton.setBackground(BACK_COLOR); // selfAdaptButton.setBackground(BACK_COLOR);
@ -227,7 +243,7 @@ public class JFormSliderPane extends JPanel {
new Component[]{septPane, null}, new Component[]{septPane, null},
new Component[]{twoHundredButton, null}, new Component[]{twoHundredButton, null},
new Component[]{oneHundredButton, null}, new Component[]{oneHundredButton, null},
new Component[]{SevenFiveButton, null}, new Component[]{sevenFiveButton, null},
new Component[]{fiveTenButton, null}, new Component[]{fiveTenButton, null},
new Component[]{twoFiveButton, null}, new Component[]{twoFiveButton, null},
new Component[]{customButton, createSpinnerPanel()} new Component[]{customButton, createSpinnerPanel()}
@ -247,14 +263,14 @@ public class JFormSliderPane extends JPanel {
return spinnerPanel; return spinnerPanel;
} }
ActionListener showValButtonActionListener = new ActionListener() { private ActionListener showValButtonActionListener = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
popupDialog(); popupDialog();
} }
}; };
ChangeListener showValSpinnerChangeListener = new ChangeListener() { private ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); int val = (int) ((UIBasicSpinner) e.getSource()).getValue();
@ -277,7 +293,7 @@ public class JFormSliderPane extends JPanel {
//定义一个监听器,用于监听所有滑动条 //定义一个监听器,用于监听所有滑动条
ChangeListener listener = new ChangeListener() { private ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent event) { public void stateChanged(ChangeEvent event) {
//取出滑动条的值,并在文本中显示出来 //取出滑动条的值,并在文本中显示出来
if (!isButtonOrIsTxt) { if (!isButtonOrIsTxt) {
@ -296,7 +312,7 @@ public class JFormSliderPane extends JPanel {
} }
}; };
ItemListener radioButtonItemListener = new ItemListener() { private ItemListener radioButtonItemListener = new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
JRadioButton temp = (JRadioButton) e.getSource(); JRadioButton temp = (JRadioButton) e.getSource();
@ -312,7 +328,7 @@ public class JFormSliderPane extends JPanel {
slider.setValue((int) (showValue + TWO_HUNDRED) / SIX); slider.setValue((int) (showValue + TWO_HUNDRED) / SIX);
} else if (showValue < HUNDRED) { } else if (showValue < HUNDRED) {
slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT)); slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT));
} else if (showValue == HUNDRED) { } else {
slider.setValue(HALF_HUNDRED); slider.setValue(HALF_HUNDRED);
} }
} }
@ -336,7 +352,7 @@ public class JFormSliderPane extends JPanel {
return b1.divide(b2, scale).doubleValue(); return b1.divide(b2, scale).doubleValue();
} }
ActionListener buttonActionListener = new ActionListener() { private ActionListener buttonActionListener = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
showValue = (int) showValSpinner.getValue(); showValue = (int) showValSpinner.getValue();

35
designer_base/src/com/fr/design/mainframe/JSliderPane.java

@ -16,7 +16,16 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import javax.swing.*; import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicSliderUI; import javax.swing.plaf.basic.BasicSliderUI;
@ -69,7 +78,9 @@ public class JSliderPane extends JPanel {
private UIRadioButton twoFiveButton; private UIRadioButton twoFiveButton;
private UIRadioButton selfAdaptButton; private UIRadioButton selfAdaptButton;
private UIRadioButton customButton; private UIRadioButton customButton;
//拖动条处理和button、直接输入不一样 /**
* 拖动条处理和button直接输入不一样
*/
private boolean isButtonOrIsTxt = true; private boolean isButtonOrIsTxt = true;
private PopupPane dialog; private PopupPane dialog;
private int upButtonX; private int upButtonX;
@ -93,7 +104,7 @@ public class JSliderPane extends JPanel {
initShowValButton(); initShowValButton();
initUIRadioButton(); initUIRadioButton();
initPane(); initPane();
JPanel panel = new JPanel(new FlowLayout(1, 0, 0)); JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
panel.add(downButton); panel.add(downButton);
panel.add(slider); panel.add(slider);
panel.add(upButton); panel.add(upButton);
@ -103,12 +114,8 @@ public class JSliderPane extends JPanel {
} }
public static final JSliderPane getInstance() { public static JSliderPane getInstance() {
// if (THIS == null) { return new JSliderPane();
// THIS = new JSliderPane();
// }
THIS = new JSliderPane();
return THIS;
} }
private void initSlider() { private void initSlider() {
@ -253,14 +260,14 @@ public class JSliderPane extends JPanel {
return spinnerPanel; return spinnerPanel;
} }
ActionListener showValButtonActionListener = new ActionListener() { private ActionListener showValButtonActionListener = new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
popupDialog(); popupDialog();
} }
}; };
ChangeListener showValSpinnerChangeListener = new ChangeListener() { private ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
int val = (int) ((UIBasicSpinner) e.getSource()).getValue(); int val = (int) ((UIBasicSpinner) e.getSource()).getValue();
@ -283,7 +290,7 @@ public class JSliderPane extends JPanel {
//定义一个监听器,用于监听所有滑动条 //定义一个监听器,用于监听所有滑动条
ChangeListener listener = new ChangeListener() { private ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent event) { public void stateChanged(ChangeEvent event) {
//取出滑动条的值,并在文本中显示出来 //取出滑动条的值,并在文本中显示出来
if (!isButtonOrIsTxt) { if (!isButtonOrIsTxt) {
@ -303,7 +310,7 @@ public class JSliderPane extends JPanel {
} }
}; };
ItemListener radioButtonItemListener = new ItemListener() { private ItemListener radioButtonItemListener = new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
JRadioButton temp = (JRadioButton) e.getSource(); JRadioButton temp = (JRadioButton) e.getSource();
@ -384,7 +391,7 @@ public class JSliderPane extends JPanel {
} else if (value < HALF_HUNDRED) { } else if (value < HALF_HUNDRED) {
times = (int) Math.round(ONEPOINTEIGHT * value + TEN); times = (int) Math.round(ONEPOINTEIGHT * value + TEN);
} else { } else {
times = (int) (SIX * value - TWO_HUNDRED); times = SIX * value - TWO_HUNDRED;
} }
} }

5
designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java

@ -11,6 +11,7 @@ import com.fr.general.FRLogLevel;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.GeneralContext; import com.fr.general.GeneralContext;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.general.LogRecordTime;
import com.fr.log.LogHandler; import com.fr.log.LogHandler;
import com.fr.stable.EnvChangedListener; import com.fr.stable.EnvChangedListener;
import com.fr.stable.xml.LogRecordTimeProvider; import com.fr.stable.xml.LogRecordTimeProvider;
@ -159,6 +160,10 @@ public class DesignerLogHandler {
logHandlerArea.printStackTrace(message, level, date); logHandlerArea.printStackTrace(message, level, date);
} }
public void printRemoteLog(LogRecordTime logRecordTime) {
logHandlerArea.printStackTrace(logRecordTime);
}
private class LogHandlerArea extends JPanel { private class LogHandlerArea extends JPanel {
private static final long serialVersionUID = 8215630927304621660L; private static final long serialVersionUID = 8215630927304621660L;

35
designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java

@ -59,7 +59,6 @@ import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventListener;
import com.fr.plugin.observer.PluginEventType; import com.fr.plugin.observer.PluginEventType;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.*;
@ -133,6 +132,9 @@ public abstract class ToolBarMenuDock {
}; };
private static final String FINEREPORT = "FineReport"; private static final String FINEREPORT = "FineReport";
private static final int MENUBAR_HEIGHT = 22; private static final int MENUBAR_HEIGHT = 22;
private static final List<PluginEventListener> PLUGIN_LISTENERS = new ArrayList<>();
private MenuDef[] menus; private MenuDef[] menus;
private ToolBarDef toolBarDef; private ToolBarDef toolBarDef;
private List<UpdateActionModel> shortCutsList; private List<UpdateActionModel> shortCutsList;
@ -178,7 +180,6 @@ public abstract class ToolBarMenuDock {
return dim; return dim;
} }
}; };
this.menus = menus(plus); this.menus = menus(plus);
for (int i = 0; i < menus.length; i++) { for (int i = 0; i < menus.length; i++) {
menus[i].setHasRecMenu(true); menus[i].setHasRecMenu(true);
@ -203,6 +204,8 @@ public abstract class ToolBarMenuDock {
} }
public MenuDef[] menus(final ToolBarMenuDockPlus plus) { public MenuDef[] menus(final ToolBarMenuDockPlus plus) {
//删除之前创建的插件菜单监听
clearPluginListeners();
java.util.List<MenuDef> menuList = new java.util.ArrayList<MenuDef>(); java.util.List<MenuDef> menuList = new java.util.ArrayList<MenuDef>();
// 添加文件菜单 // 添加文件菜单
menuList.add(createFileMenuDef(plus)); menuList.add(createFileMenuDef(plus));
@ -233,6 +236,14 @@ public abstract class ToolBarMenuDock {
return menuList.toArray(new MenuDef[menuList.size()]); return menuList.toArray(new MenuDef[menuList.size()]);
} }
private static synchronized void clearPluginListeners() {
for (PluginEventListener listener : PLUGIN_LISTENERS) {
GeneralContext.stopListenPlugin(listener);
}
PLUGIN_LISTENERS.clear();
}
/** /**
* 获取所有actionmodel * 获取所有actionmodel
* *
@ -610,7 +621,7 @@ public abstract class ToolBarMenuDock {
} }
private void listenPluginMenuChange(final MenuDef menuDef, final String anchor, final ShortCutMethodAction action) { private static synchronized void listenPluginMenuChange(final MenuDef menuDef, final String anchor, final ShortCutMethodAction action) {
PluginFilter filter = new PluginFilter() { PluginFilter filter = new PluginFilter() {
@ -621,7 +632,7 @@ public abstract class ToolBarMenuDock {
} }
}; };
GeneralContext.listenPlugin(PluginEventType.BeforeStop, new PluginEventListener() { PluginEventListener beforeStop = new PluginEventListener() {
@Override @Override
public void on(PluginEvent event) { public void on(PluginEvent event) {
@ -629,8 +640,9 @@ public abstract class ToolBarMenuDock {
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING); Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
removeExtraMenus(menuDef, anchor, action, menuHandlers); removeExtraMenus(menuDef, anchor, action, menuHandlers);
} }
}, filter); };
GeneralContext.listenPlugin(PluginEventType.AfterRun, new PluginEventListener() {
PluginEventListener afterRun = new PluginEventListener() {
@Override @Override
public void on(PluginEvent event) { public void on(PluginEvent event) {
@ -639,10 +651,15 @@ public abstract class ToolBarMenuDock {
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING); Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
addExtraMenus(menuDef, anchor, action, menuHandlers); addExtraMenus(menuDef, anchor, action, menuHandlers);
} }
}, filter); };
GeneralContext.listenPlugin(PluginEventType.BeforeStop, beforeStop, filter);
GeneralContext.listenPlugin(PluginEventType.AfterRun, afterRun, filter);
PLUGIN_LISTENERS.add(afterRun);
PLUGIN_LISTENERS.add(beforeStop);
} }
private void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) { private static void removeExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) {
List<MenuHandler> target = new ArrayList<>(); List<MenuHandler> target = new ArrayList<>();
@ -665,7 +682,7 @@ public abstract class ToolBarMenuDock {
} }
} }
private void addExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) { private static void addExtraMenus(MenuDef menuDef, String anchor, ShortCutMethodAction action, Set<MenuHandler> set) {
List<MenuHandler> target = new ArrayList<>(); List<MenuHandler> target = new ArrayList<>();
for (MenuHandler handler : set) { for (MenuHandler handler : set) {

5
designer_base/src/com/fr/design/menu/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
菜单组件
</body>
</html>

5
designer_base/src/com/fr/design/module/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
设计器模块相关
</body>
</html>

5
designer_base/src/com/fr/design/object/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
包含与对象有关的工具类
</body>
</html>

5
designer_base/src/com/fr/design/preview/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
模版预览方式
</body>
</html>

5
designer_base/src/com/fr/design/roleAuthority/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
权限编辑相关代码
</body>
</html>

5
designer_base/src/com/fr/design/scrollruler/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
标尺的实现类
</body>
</html>

9
designer_base/src/com/fr/design/selection/QuickEditor.java

@ -2,7 +2,7 @@ package com.fr.design.selection;
import com.fr.design.designer.TargetComponent; import com.fr.design.designer.TargetComponent;
import javax.swing.*; import javax.swing.JComponent;
/** /**
* 快速编辑区域 * 快速编辑区域
@ -39,11 +39,15 @@ public abstract class QuickEditor<T extends TargetComponent> extends JComponent
tc.fireTargetModified(); tc.fireTargetModified();
} }
/**
* 刷新面板
*/
protected abstract void refresh(); protected abstract void refresh();
/** /**
* for 关闭时候释放 * 关闭模板时释放模板对象
* 所有持有tc的对象也必须置空或者丢弃对于tc的引用
*/ */
public void release() { public void release() {
tc = null; tc = null;
@ -53,7 +57,6 @@ public abstract class QuickEditor<T extends TargetComponent> extends JComponent
@Override @Override
protected void refresh() { protected void refresh() {
} }
}; };

5
designer_base/src/com/fr/design/selection/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
与选择模型有关的接口和抽象类
</body>
</html>

3
designer_base/src/com/fr/design/style/background/gradient/GradientBar.java

@ -180,7 +180,8 @@ public class GradientBar extends JComponent implements UIObserver,ColorSelectabl
} }
float[] dist = new float[list.size()]; float[] dist = new float[list.size()];
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
dist[i] = (float) ((list.get(i).getX() - 4) / (max - 4)); float value = (float) ((list.get(i).getX() - 4) / (max - 4));
dist[i] = Math.min(Math.max(0, value), 1);
} }
LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, c); LinearGradientPaint paint = new LinearGradientPaint(start, end, dist, c);

2
designer_base/src/com/fr/design/style/color/ColorSelectDialog.java

@ -84,7 +84,7 @@ public class ColorSelectDialog extends MiddleChartDialog{
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(pane,BorderLayout.NORTH); this.add(pane,BorderLayout.NORTH);
this.setBasicDialogSize(545,500); this.setBasicDialogSize(545,500);
this.setResizable(false);
JPanel buttonPane = new JPanel(); JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));

5
designer_base/src/com/fr/design/style/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
与样式(颜色、边框、字体、对齐方式等)有关的面板和功能
</body>
</html>

5
designer_base/src/com/fr/design/utils/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
提供一些工具类
</body>
</html>

5
designer_base/src/com/fr/design/web/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
定义与web端展示有关的类
</body>
</html>

1
designer_base/src/com/fr/design/widget/component/BackgroundCompPane.java

@ -10,7 +10,6 @@ import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.widget.accessibles.AccessibleImgBackgroundEditor; import com.fr.design.mainframe.widget.accessibles.AccessibleImgBackgroundEditor;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.vividsolutions.jts.index.bintree.Interval;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;

9
designer_base/src/com/fr/design/widget/component/NumberEditorValidatePane.java

@ -3,7 +3,6 @@ package com.fr.design.widget.component;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UIBasicSpinner;
import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.ispinner.UISpinner;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
@ -13,11 +12,13 @@ import com.fr.form.ui.NumberEditor;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultFormatter; import java.awt.BorderLayout;
import java.awt.*; import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;

3
designer_base/src/com/fr/env/RemoteEnv.java vendored

@ -25,6 +25,7 @@ import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.fun.DesignerEnvProcessor;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.DesignerFrameFileDealerPane;
import com.fr.design.mainframe.loghandler.DesignerLogHandler;
import com.fr.file.CacheManager; import com.fr.file.CacheManager;
import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManager;
import com.fr.file.DatasourceManagerProvider; import com.fr.file.DatasourceManagerProvider;
@ -1843,7 +1844,7 @@ public class RemoteEnv extends AbstractEnv {
} }
LogRecordTime[] records = LogUtils.readXMLLogRecords(input); LogRecordTime[] records = LogUtils.readXMLLogRecords(input);
for (LogRecordTime logRecordTime : records) { for (LogRecordTime logRecordTime : records) {
//TODO DesignerLogHandler.getInstance().printRemoteLog(logRecordTime);
} }
} }

5
designer_base/src/com/fr/env/package.html vendored

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
报表工作环境相关(本地设计、远程设计)
</body>
</html>

5
designer_base/src/com/fr/file/filter/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
文件过滤器
</body>
</html>

5
designer_base/src/com/fr/file/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
与文件有关的工具类
</body>
</html>

5
designer_base/src/com/fr/start/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
包含启动设计器的相关类(其中 Designer 是整个设计器程序的入口)
</body>
</html>

20
designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java

@ -81,8 +81,12 @@ import com.fr.plugin.chart.treemap.VanChartTreeMapPlot;
import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent; import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent;
import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot; import com.fr.plugin.chart.wordcloud.VanChartWordCloudPlot;
import com.fr.plugin.chart.wordcloud.designer.WordCloudIndependentVanChartInterface; import com.fr.plugin.chart.wordcloud.designer.WordCloudIndependentVanChartInterface;
import com.fr.plugin.context.PluginContext;
import com.fr.plugin.injectable.PluginModule; import com.fr.plugin.injectable.PluginModule;
import com.fr.plugin.injectable.PluginSingleInjection; import com.fr.plugin.injectable.PluginSingleInjection;
import com.fr.plugin.manage.PluginFilter;
import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener;
import com.fr.plugin.solution.closeable.CloseableContainedMap; import com.fr.plugin.solution.closeable.CloseableContainedMap;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.EnvChangedListener; import com.fr.stable.EnvChangedListener;
@ -125,12 +129,26 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
GeneralContext.addEnvChangedListener(new EnvChangedListener() { GeneralContext.addEnvChangedListener(new EnvChangedListener() {
@Override @Override
public void envChanged() { public void envChanged() {
//重新注册designModuleFactory
DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption()); DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption());
DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance()); DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance());
DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper());
} }
}); });
GeneralContext.listenPluginRunningChanged(new PluginEventListener(1) {
@Override
public void on(PluginEvent event) {
//重新注册designModuleFactory
DesignModuleFactory.registerExtraWidgetOptions(initWidgetOption());
}
}, new PluginFilter() {
@Override
public boolean accept(PluginContext context) {
//图表插件变化时
return context.contain(PluginModule.ExtraChartType);
}
});
} }
private static WidgetOption[] initWidgetOption() { private static WidgetOption[] initWidgetOption() {

5
designer_chart/src/com/fr/design/chart/package.html

@ -0,0 +1,5 @@
<html>
<body bgcolor="white">
图表相关的代码
</body>
</html>

14
designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperRelateFloatLinkPane.java

@ -19,6 +19,7 @@ import javax.swing.border.Border;
import javax.swing.border.LineBorder; import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import java.awt.*; import java.awt.*;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -92,9 +93,16 @@ public class ChartHyperRelateFloatLinkPane extends AbstractHyperLinkPane<ChartHy
if (itemNameTextField != null) { if (itemNameTextField != null) {
itemNameTextField.setText(ob.getItemName()); itemNameTextField.setText(ob.getItemName());
} }
floatNameBox.removeAllItems();
floatNameBox.setSelectedItem(ob.getRelateCCName()); String[] floatNames = getFloatNames();
for (int i = 0, size = floatNames.length; i < size; i++) {
floatNameBox.addItem(floatNames[i]);
}
if (ob.getRelateCCName() == null || !Arrays.asList(floatNames).contains(ob.getRelateCCName())) {
floatNameBox.setSelectedIndex(-1);
} else {
floatNameBox.setSelectedItem(ob.getRelateCCName());
}
List parameterList = this.parameterViewPane.update(); List parameterList = this.parameterViewPane.update();
parameterList.clear(); parameterList.clear();

6
designer_chart/src/com/fr/plugin/chart/column/VanChartCustomStackAndAxisConditionPane.java

@ -31,6 +31,8 @@ public class VanChartCustomStackAndAxisConditionPane extends BasicBeanPane<Condi
protected UIButtonGroup<Integer> isStacked; protected UIButtonGroup<Integer> isStacked;
protected UIButtonGroup<Integer> isPercentStacked; protected UIButtonGroup<Integer> isPercentStacked;
private ConditionAttr conditionAttr;
private LiteConditionPane liteConditionPane; private LiteConditionPane liteConditionPane;
public VanChartCustomStackAndAxisConditionPane() { public VanChartCustomStackAndAxisConditionPane() {
@ -94,6 +96,7 @@ public class VanChartCustomStackAndAxisConditionPane extends BasicBeanPane<Condi
} }
public void populateBean(ConditionAttr conditionAttr) { public void populateBean(ConditionAttr conditionAttr) {
this.conditionAttr = conditionAttr;
AttrSeriesStackAndAxis seriesStackAndAxis = (AttrSeriesStackAndAxis) conditionAttr.getExisted(AttrSeriesStackAndAxis.class); AttrSeriesStackAndAxis seriesStackAndAxis = (AttrSeriesStackAndAxis) conditionAttr.getExisted(AttrSeriesStackAndAxis.class);
XAxis = new UIButtonGroup<Integer>(seriesStackAndAxis.getXAxisNamesArray()); XAxis = new UIButtonGroup<Integer>(seriesStackAndAxis.getXAxisNamesArray());
YAxis = new UIButtonGroup<Integer>(seriesStackAndAxis.getYAxisNameArray()); YAxis = new UIButtonGroup<Integer>(seriesStackAndAxis.getYAxisNameArray());
@ -123,8 +126,7 @@ public class VanChartCustomStackAndAxisConditionPane extends BasicBeanPane<Condi
} }
public ConditionAttr updateBean() { public ConditionAttr updateBean() {
ConditionAttr conditionAttr = new ConditionAttr(); AttrSeriesStackAndAxis seriesStackAndAxis = (AttrSeriesStackAndAxis)conditionAttr.getExisted(AttrSeriesStackAndAxis.class);
AttrSeriesStackAndAxis seriesStackAndAxis = new AttrSeriesStackAndAxis();
seriesStackAndAxis.setXAxisIndex(XAxis.getSelectedIndex()); seriesStackAndAxis.setXAxisIndex(XAxis.getSelectedIndex());
seriesStackAndAxis.setYAxisIndex(YAxis.getSelectedIndex()); seriesStackAndAxis.setYAxisIndex(YAxis.getSelectedIndex());

BIN
designer_chart/src/com/fr/plugin/chart/map/images/marker-icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
designer_chart/src/com/fr/plugin/chart/map/images/marker-iconx2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save