Browse Source

Merging in latest from upstream (ST/design:refs/heads/feature/9.0)

* commit 'e57944d7e7040df4338d05b44d8f387dbaff70a7': (96 commits)
  REPORT-6258 tab标签右击时原本的移动功能被覆盖了=>调整代码
  REPORT-3786 短信页面上的超链接跳转到应用中心,暂时无法同步登录 2/2
  REPORT-6270 参数面板里的相关bug=>调整代码
  冲突
  无jira任务,解决冲突
  REPORT-6258 tab标签右击时原本的移动功能被覆盖了=>非绝对布局下,排序按钮灰化
  REPORT-6258 tab标签右击时原本的移动功能被覆盖了
  REPORT-6270 参数面板里的相关bug=>2 frm里,添加了参数面板后,右侧控件树没有实时选中到para;而且添加或者删除了模板参数,也没有选中para
  添加Override注解
  添加Override注解
  REPORT-6270 参数面板里的相关bug=>1 参数面板限高调整
  删除无用import
  REPORT-2615 代码质量修改
  REPORT-6276 cpt里悬浮元素的位置用快捷键无法使用(暂时隐去快捷键)
  REPORT-2615 tab控件树结构调整
  rt
  REPORT-6277 绝对布局下设计器界面调整了组件上下位置后,web端预览没有相应的变化
  0102
  0102
  rt
  ...
MoMeak 7 years ago
parent
commit
1e7788d19d
  1. 2
      designer/src/com/fr/design/actions/edit/DeleteAction.java
  2. 2
      designer/src/com/fr/design/actions/edit/EditFloatElementNameAction.java
  3. 2
      designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java
  4. 2
      designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java
  5. 2
      designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java
  6. 2
      designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java
  7. 5
      designer/src/com/fr/design/actions/package.html
  8. 8
      designer/src/com/fr/design/cell/editor/package.html
  9. 5
      designer/src/com/fr/design/condition/package.html
  10. 55
      designer/src/com/fr/design/dscolumn/DSColumnBasicPane.java
  11. 4
      designer/src/com/fr/design/dscolumn/SelectedConfirmedDataColumnPane.java
  12. 55
      designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java
  13. 5
      designer/src/com/fr/design/dscolumn/package.html
  14. 5
      designer/src/com/fr/design/expand/package.html
  15. 85
      designer/src/com/fr/design/mainframe/ElementCasePane.java
  16. 3
      designer/src/com/fr/design/mainframe/InformationCollector.java
  17. 38
      designer/src/com/fr/design/mainframe/JWorkBook.java
  18. 5
      designer/src/com/fr/design/mainframe/ReportComponentComposite.java
  19. 36
      designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java
  20. 20
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java
  21. 12
      designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java
  22. 5
      designer/src/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java
  23. 34
      designer/src/com/fr/design/module/DesignerModule.java
  24. 56
      designer/src/com/fr/design/present/BarCodePane.java
  25. 7
      designer/src/com/fr/design/present/ConditionAttributesGroupPane.java
  26. 5
      designer/src/com/fr/design/report/package.html
  27. 1251
      designer/src/com/fr/design/webattr/EditToolBar.java
  28. 16
      designer/src/com/fr/design/webattr/ReportWebWidgetConstants.java
  29. 2
      designer/src/com/fr/design/webattr/ToolBarDragPane.java
  30. 5
      designer/src/com/fr/design/webattr/package.html
  31. 5
      designer/src/com/fr/design/widget/package.html
  32. 8
      designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java
  33. 3
      designer/src/com/fr/grid/event/package.html
  34. 5
      designer/src/com/fr/grid/package.html
  35. 58
      designer/src/com/fr/grid/selection/CellSelection.java
  36. 5
      designer/src/com/fr/grid/selection/package.html
  37. 5
      designer/src/com/fr/poly/package.html
  38. 28
      designer/src/com/fr/quickeditor/FloatQuickEditor.java
  39. 32
      designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java
  40. 5
      designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java
  41. 2
      designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java
  42. 6
      designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java
  43. 8
      designer/src/com/fr/quickeditor/floatquick/FloatImageQuickEditor.java
  44. 66
      designer/src/com/fr/quickeditor/floatquick/FloatStringQuickEditor.java
  45. 5
      designer/src/com/fr/quickeditor/package.html
  46. 3
      designer/src/com/fr/start/Designer.java
  47. 5
      designer_base/src/com/fr/common/inputevent/package.html
  48. 33
      designer_base/src/com/fr/design/actions/core/ActionFactory.java
  49. 30
      designer_base/src/com/fr/design/actions/file/WebPreviewUtils.java
  50. 5
      designer_base/src/com/fr/design/bbs/package.html
  51. 5
      designer_base/src/com/fr/design/border/package.html
  52. 5
      designer_base/src/com/fr/design/bridge/package.html
  53. 3
      designer_base/src/com/fr/design/condition/ConditionAttributesPane.java
  54. 5
      designer_base/src/com/fr/design/constants/package.html
  55. 5
      designer_base/src/com/fr/design/data/package.html
  56. 4
      designer_base/src/com/fr/design/dialog/package.html
  57. 5
      designer_base/src/com/fr/design/editor/package.html
  58. 5
      designer_base/src/com/fr/design/event/package.html
  59. 14
      designer_base/src/com/fr/design/extra/PluginOperateUtils.java
  60. 12
      designer_base/src/com/fr/design/extra/PluginTask.java
  61. 18
      designer_base/src/com/fr/design/extra/PluginWebBridge.java
  62. 26
      designer_base/src/com/fr/design/extra/WebViewDlgHelper.java
  63. 17
      designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java
  64. 5
      designer_base/src/com/fr/design/extra/package.html
  65. 14
      designer_base/src/com/fr/design/extra/ucenter/Client.java
  66. 8
      designer_base/src/com/fr/design/file/MutilTempalteTabPane.java
  67. 5
      designer_base/src/com/fr/design/file/package.html
  68. 22
      designer_base/src/com/fr/design/foldablepane/HeaderPane.java
  69. 5
      designer_base/src/com/fr/design/foldablepane/package.html
  70. 5
      designer_base/src/com/fr/design/formula/package.html
  71. 14
      designer_base/src/com/fr/design/fun/TemplateTreeShortCutProvider.java
  72. 26
      designer_base/src/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java
  73. 5
      designer_base/src/com/fr/design/fun/package.html
  74. 9
      designer_base/src/com/fr/design/gui/icombobox/LazyComboBox.java
  75. 8
      designer_base/src/com/fr/design/gui/ilist/ArrayListModel.java
  76. 1
      designer_base/src/com/fr/design/gui/imenu/UIPopupMenu.java
  77. 5
      designer_base/src/com/fr/design/gui/package.html
  78. 5
      designer_base/src/com/fr/design/icon/package.html
  79. BIN
      designer_base/src/com/fr/design/images/chart/EmptyChart.png
  80. 5
      designer_base/src/com/fr/design/javascript/package.html
  81. 5
      designer_base/src/com/fr/design/layout/package.html
  82. 31
      designer_base/src/com/fr/design/locale/designer.properties
  83. 43
      designer_base/src/com/fr/design/locale/designer_en_US.properties
  84. 3
      designer_base/src/com/fr/design/locale/designer_ja_JP.properties
  85. 3
      designer_base/src/com/fr/design/locale/designer_ko_KR.properties
  86. 45
      designer_base/src/com/fr/design/locale/designer_zh_CN.properties
  87. 39
      designer_base/src/com/fr/design/locale/designer_zh_TW.properties
  88. 23
      designer_base/src/com/fr/design/mainframe/DesignerFrame.java
  89. 39
      designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java
  90. 3
      designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java
  91. 80
      designer_base/src/com/fr/design/mainframe/JFormSliderPane.java
  92. 6
      designer_base/src/com/fr/design/mainframe/JTemplate.java
  93. 5
      designer_base/src/com/fr/design/mainframe/loghandler/DesignerLogHandler.java
  94. 61
      designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  95. 36
      designer_base/src/com/fr/design/mainframe/toolbar/ToolBarNewTemplatePane.java
  96. 46
      designer_base/src/com/fr/design/mainframe/toolbar/VcsScene.java
  97. 2
      designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java
  98. 5
      designer_base/src/com/fr/design/menu/package.html
  99. 5
      designer_base/src/com/fr/design/module/package.html
  100. 5
      designer_base/src/com/fr/design/object/package.html
  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/DeleteAction.java

@ -25,7 +25,7 @@ public class DeleteAction extends ElementCaseAction {
this.setMnemonic('D');
//Richie:删除菜单图标
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/delete.png"));
this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0));
// this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0));
}
@Override

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

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

2
designer/src/com/fr/design/actions/edit/order/BringFloatElementForwardAction.java

@ -27,7 +27,7 @@ public class BringFloatElementForwardAction extends AbstractFloatElementOrderAct
this.setName(Inter.getLocText("M_Edit-Bring_Forward"));
this.setMnemonic('F');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/up.png"));
this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER));
// this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER));
}
@Override

2
designer/src/com/fr/design/actions/edit/order/BringFloatElementToFrontAction.java

@ -28,7 +28,7 @@ public class BringFloatElementToFrontAction extends AbstractFloatElementOrderAct
this.setName(Inter.getLocText("M_Edit-Bring_to_Front"));
this.setMnemonic('T');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/to_top.png"));
this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK));
// this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK));
}
@Override

2
designer/src/com/fr/design/actions/edit/order/SendFloatElementBackwardAction.java

@ -27,7 +27,7 @@ public class SendFloatElementBackwardAction extends AbstractFloatElementOrderAct
this.setName(Inter.getLocText("M_Edit-Send_Backward"));
this.setMnemonic('B');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/down.png"));
this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER));
// this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER));
}
@Override

2
designer/src/com/fr/design/actions/edit/order/SendFloatElementToBackAction.java

@ -28,7 +28,7 @@ public class SendFloatElementToBackAction extends AbstractFloatElementOrderActio
this.setName(Inter.getLocText("M_Edit-Send_to_Back"));
this.setMnemonic('K');
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/control/to_bottom.png"));
this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK));
// this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, DEFAULT_MODIFIER + InputEvent.ALT_MASK));
}
@Override

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>
<body bgcolor="white">
<!CN[这个包中定义了单元格编辑器.包括
这个包中定义了单元格编辑器.包括
单元格编辑器({@link com.fr.cell.editor.CellEditor CellEditor})接口,
抽象实现该接口的{@link com.fr.cell.editor.AbstractCellEditor AbstractCellEditor}类,
继承这个类的数字单元格编辑器({@link com.fr.cell.editor.NumberCellEditor NumberCellEditor})类和
文本单元格编辑器({@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.]!>
文本单元格编辑器({@link com.fr.cell.editor.GeneralCellEditor GeneralCellEditor})类.
</body>
</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.cellattr.CellExpandAttr;
import javax.swing.*;
import java.awt.*;
import javax.swing.BorderFactory;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -27,6 +28,29 @@ public class DSColumnBasicPane extends BasicPane {
private ExpandDirectionPane expandDirectionPane;
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() {
this(DSColumnPane.SETTING_ALL);
}
@ -78,7 +102,7 @@ public class DSColumnBasicPane extends BasicPane {
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
@ -93,7 +117,7 @@ public class DSColumnBasicPane extends BasicPane {
this.cellElement = cellElement;
selectDataColumnPane.populate(source, cellElement);
selectDataColumnPane.populate(source, cellElement, null);
CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr();
if (conditionParentPane != null) {
@ -134,29 +158,6 @@ public class DSColumnBasicPane extends BasicPane {
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) {
if (conditionParentPane != null) {
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.report.cell.TemplateCellElement;
import java.awt.*;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Iterator;
@ -32,7 +32,7 @@ public class SelectedConfirmedDataColumnPane extends SelectedDataColumnPane {
tableNameComboBox.refresh(source);
tableNameComboBox.setEditable(false);
tableNameComboBox.setEnabled(false);
super.populate(source, cell);
super.populate(source, cell, null);
try {
Iterator it = source.getTableDataNameIterator();
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.StringUtils;
import javax.swing.*;
import java.awt.*;
import javax.swing.DefaultComboBoxModel;
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.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.regex.Pattern;
/**
@ -41,7 +46,7 @@ import java.util.regex.Pattern;
*
* @author yaoh.wu
* @version 2017年8月3日
* 复用对话框代码保留对话框原始布局
* 复用对话框代码保留对话框原始布局
* @since 8.0
*/
public class SelectedDataColumnPane extends BasicPane {
@ -53,19 +58,21 @@ public class SelectedDataColumnPane extends BasicPane {
private ItemListener itemListener;
private UIButton paramButton;
private ElementCasePane casePane;
private CellElement cellElement; // 保存当前选中的 CE
public SelectedDataColumnPane() {
this(true, false, null, null);
this(true, false, null);
}
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) {
initComponentVerticalLayout(casePane, cellElement);
initComponentVerticalLayout(cellElement);
} else {
initComponent(showParameterButton);
}
@ -119,9 +126,9 @@ public class SelectedDataColumnPane extends BasicPane {
/**
* 初始化竖直布局的组件
*/
public void initComponentVerticalLayout(ElementCasePane casePane, TemplateCellElement cellElement) {
private void initComponentVerticalLayout(TemplateCellElement cellElement) {
initTableNameComboBox();
initWithParameterButton(casePane, cellElement);
initWithParameterButton(cellElement);
columnNameComboBox = new LazyComboBox() {
@Override
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) {
return;
}
this.cellElement = cellElement;
if (itemListener != null) {
removeListener(itemListener);
}
@ -191,6 +201,14 @@ public class SelectedDataColumnPane extends BasicPane {
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() {
tableNameComboBox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource());
final ExecutorService executorService = Executors.newSingleThreadExecutor();
tableNameComboBox.addItemListener(new ItemListener() {
@Override
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));
@ -279,8 +307,7 @@ public class SelectedDataColumnPane extends BasicPane {
});
}
private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) {
final SelectedDataColumnPane that = this;
private void initWithParameterButton(final TemplateCellElement cellElement) {
editorPane = new UITableEditorPane<ParameterProvider>(new ParameterTableModel());
paramButton = new UIButton(Inter.getLocText("FR-Designer-Basic_Dynamic_Parameter_Injection"));
paramButton.addActionListener(new ActionListener() {
@ -290,7 +317,7 @@ public class SelectedDataColumnPane extends BasicPane {
public void doOk() {
List<ParameterProvider> parameterList = editorPane.update();
ps = parameterList.toArray(new Parameter[parameterList.size()]);
that.update(cellElement);
update(SelectedDataColumnPane.this.cellElement);
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;
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.DesignerEnvManager;
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.cell.BorderAction;
import com.fr.design.actions.cell.CleanAuthorityAction;
import com.fr.design.actions.cell.style.*;
import com.fr.design.actions.columnrow.*;
import com.fr.design.actions.cell.style.AlignmentAction;
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.edit.CopyAction;
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.ElementsTransferable;
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.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.designer.EditingState;
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.mainframe.cell.QuickEditorRegion;
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.Selectedable;
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.FRLogger;
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.selection.CellSelection;
import com.fr.grid.selection.Selection;
@ -65,12 +110,27 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.ColumnRow;
import com.fr.stable.unit.FU;
import javax.swing.*;
import java.awt.*;
import javax.swing.AbstractAction;
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.DataFlavor;
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.util.Set;
@ -462,8 +522,15 @@ public abstract class ElementCasePane<T extends TemplateElementCase> extends Tar
* 因为这边判断selection是一个selection所以不会触发fireSelectionChanged
*/
public void setSelection(Selection selection) {
if (!ComparatorUtils.equals(this.selection, selection) ||
!ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) {
try {
//旧选中内容编辑器释放模板对象
this.getCurrentEditor().release();
} catch (UnsupportedOperationException e) {
FRLogger.getLogger().info("Nothing to release");
}
this.selection = selection;
fireSelectionChanged();
}

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

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

38
designer/src/com/fr/design/mainframe/JWorkBook.java

@ -1,12 +1,25 @@
package com.fr.design.mainframe;
import com.fr.base.*;
import com.fr.base.BaseUtils;
import com.fr.base.DynamicUnitList;
import com.fr.base.FRContext;
import com.fr.base.Parameter;
import com.fr.base.ScreenResolution;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.DesignModelAdapter;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.AllowAuthorityEditAction;
import com.fr.design.actions.ExitAuthorityEditAction;
import com.fr.design.actions.file.WebPreviewUtils;
import com.fr.design.actions.file.export.*;
import com.fr.design.actions.file.export.CSVExportAction;
import com.fr.design.actions.file.export.EmbeddedExportExportAction;
import com.fr.design.actions.file.export.ExcelExportAction;
import com.fr.design.actions.file.export.PDFExportAction;
import com.fr.design.actions.file.export.PageExcelExportAction;
import com.fr.design.actions.file.export.PageToSheetExcelExportAction;
import com.fr.design.actions.file.export.SVGExportAction;
import com.fr.design.actions.file.export.TextExportAction;
import com.fr.design.actions.file.export.WordExportAction;
import com.fr.design.actions.report.ReportExportAttrAction;
import com.fr.design.actions.report.ReportMobileAttrAction;
import com.fr.design.actions.report.ReportParameterAction;
@ -30,7 +43,11 @@ import com.fr.design.mainframe.cell.QuickEditorRegion;
import com.fr.design.mainframe.templateinfo.JWorkBookProcessInfo;
import com.fr.design.mainframe.templateinfo.TemplateProcessInfo;
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.module.DesignModuleFactory;
import com.fr.design.parameter.ParameterDefinitePane;
import com.fr.design.parameter.ParameterInputPane;
@ -62,7 +79,6 @@ import com.fr.poly.PolyDesigner;
import com.fr.poly.creator.BlockCreator;
import com.fr.privilege.finegrain.WorkSheetPrivilegeControl;
import com.fr.report.ReportHelper;
import com.fr.report.elementcase.ElementCase;
import com.fr.report.elementcase.TemplateElementCase;
import com.fr.report.poly.PolyWorkSheet;
import com.fr.report.worksheet.WorkSheet;
@ -73,11 +89,13 @@ import com.fr.stable.module.Module;
import com.fr.stable.project.ProjectConstants;
import javax.swing.*;
import javax.swing.Icon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* JWorkBook used to edit WorkBook.
@ -570,9 +588,11 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
* @return 子菜单
*/
public ShortCut[] shortcut4FileMenu() {
return (ShortCut[]) ArrayUtils.addAll(
super.shortcut4FileMenu(),
BaseUtils.isAuthorityEditing() || (FRContext.getCurrentEnv() instanceof RemoteEnv) ? new ShortCut[0] : new ShortCut[]{this.createWorkBookExportMenu()}
boolean showWorkBookExportMenu = DesignerMode.isVcsMode()
|| BaseUtils.isAuthorityEditing()
|| (FRContext.getCurrentEnv() instanceof RemoteEnv);
return (ShortCut[]) ArrayUtils.addAll(super.shortcut4FileMenu(),
showWorkBookExportMenu ? new ShortCut[0] : new ShortCut[]{this.createWorkBookExportMenu()}
);
}

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

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

36
designer/src/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java

@ -390,7 +390,6 @@ public class AlphaFineDialog extends UIDialog {
*/
private void rebuildList(String searchText) {
resetContainer();
if (searchText.startsWith(ADVANCED_SEARCH_MARK)) {
if (searchText.startsWith(ACTION_MARK_SHORT) || searchText.startsWith(ACTION_MARK)) {
storeText = searchText.substring(searchText.indexOf(StringUtils.BLANK) + 1, searchText.length());
@ -624,6 +623,7 @@ public class AlphaFineDialog extends UIDialog {
private void dealWithMoreOrLessResult(int index, MoreModel selectedValue) {
if (ComparatorUtils.equals(Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), selectedValue.getContent())) {
selectedValue.setContent(Inter.getLocText("FR-Designer_AlphaFine_ShowLess"));
rebuildShowMoreList(index, selectedValue);
} else {
selectedValue.setContent(Inter.getLocText("FR-Designer_AlphaFine_ShowAll"));
@ -664,7 +664,9 @@ public class AlphaFineDialog extends UIDialog {
searchResultList.setSelectedIndex(searchResultList.getSelectedIndex() + 1);
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
searchResultList.setSelectedIndex(searchResultList.getSelectedIndex() - 1);
} else escAlphaFineDialog(e);
} else {
escAlphaFineDialog(e);
}
}
});
@ -794,14 +796,34 @@ public class AlphaFineDialog extends UIDialog {
* @param index
* @param selectedValue
*/
private void rebuildShowMoreList(int index, MoreModel selectedValue) {
SearchResult moreResult = getMoreResult(selectedValue);
private void rebuildShowMoreList(final int index, final MoreModel selectedValue) {
if ((selectedValue).getContent().equals(Inter.getLocText("FR-Designer_AlphaFine_ShowLess"))) {
for (int i = 0; i < moreResult.size(); i++) {
this.searchListModel.add(index + AlphaFineConstants.SHOW_SIZE + 1 + i, moreResult.get(i));
splitLabel.setIcon(new ImageIcon(getClass().getResource(AlphaFineConstants.IMAGE_URL + "bigloading.gif")));
if (this.searchWorker != null && !this.searchWorker.isDone()) {
this.searchWorker.cancel(true);
this.searchWorker = null;
}
this.searchWorker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
SearchResult moreResults = getMoreResult(selectedValue);
for (int i = 0; i < moreResults.size(); i++) {
searchListModel.add(index + AlphaFineConstants.SHOW_SIZE + 1 + i, moreResults.get(i));
}
return null;
}
@Override
protected void done() {
if (!isCancelled()) {
splitLabel.setIcon(null);
}
}
};
this.searchWorker.execute();
} else {
for (int i = 0; i < moreResult.size(); i++) {
for (int i = 0; i < getMoreResult(selectedValue).size(); i++) {
this.searchListModel.remove(index + AlphaFineConstants.SHOW_SIZE + 1);
}

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

@ -39,6 +39,7 @@ public class FileSearchManager implements AlphaFineSearchProvider {
private static FileSearchManager fileSearchManager = null;
private SearchResult filterModelList;
private SearchResult lessModelList;
private SearchResult moreModelList;
private List<FileNode> fileNodes = null;
//停止搜索
private boolean stopSearch = false;
@ -73,6 +74,7 @@ public class FileSearchManager implements AlphaFineSearchProvider {
public synchronized SearchResult getLessSearchResult(String searchText) {
this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult();
this.moreModelList = new SearchResult();
searchText = dealWithSearchText(searchText);
if (StringUtils.isBlank(searchText) || ComparatorUtils.equals(searchText, DS_NAME)) {
lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates")));
@ -101,16 +103,20 @@ public class FileSearchManager implements AlphaFineSearchProvider {
@Override
public SearchResult getMoreSearchResult(String searchText) {
if (moreModelList != null && !moreModelList.isEmpty()) {
return moreModelList;
}
this.filterModelList = new SearchResult();
this.lessModelList = new SearchResult();
this.moreModelList = new SearchResult();
searchText = dealWithSearchText(searchText);
Env env = FRContext.getCurrentEnv();
AlphaFineHelper.checkCancel();
isContainCpt = true;
isContainFrm = true;
doSearch(searchText, false, env);
lessModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size()));
return lessModelList;
moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size()));
return moreModelList;
}
private void doSearch(String searchText, boolean needMore, Env env) {
@ -193,7 +199,7 @@ public class FileSearchManager implements AlphaFineSearchProvider {
if (!AlphaFineHelper.getFilterResult().contains(model)) {
filterModelList.add(model);
}
if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
if(filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) {
stopSearch = true;
}
isAlreadyContain = true;
@ -272,4 +278,12 @@ public class FileSearchManager implements AlphaFineSearchProvider {
public void setContainFrm(boolean containFrm) {
isContainFrm = containFrm;
}
public SearchResult getMoreModelList() {
return moreModelList;
}
public void setMoreModelList(SearchResult moreModelList) {
this.moreModelList = moreModelList;
}
}

12
designer/src/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java

@ -15,6 +15,8 @@ import com.fr.general.http.HttpClient;
import com.fr.json.JSONArray;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.plugin.basic.version.Version;
import com.fr.plugin.basic.version.VersionIntervalFactory;
import com.fr.stable.StringUtils;
import java.io.UnsupportedEncodingException;
@ -37,10 +39,18 @@ public class PluginSearchManager implements AlphaFineSearchProvider {
}
private static boolean isCompatibleCurrentEnv(String envVersion){
return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion());
}
private static PluginModel getPluginModel(JSONObject object, boolean isFromCloud) {
String name = object.optString("name");
String content = object.optString("description");
String pluginId = object.optString("pluginid");
String envVersion = object.optString("envversion");
if (!isCompatibleCurrentEnv(envVersion)) {
return null;
}
int id = object.optInt("id");
int searchCount = object.optInt("searchCount");
String imageUrl = null;
@ -107,7 +117,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider {
for (int i = 0; i < jsonArray.length(); i++) {
AlphaFineHelper.checkCancel();
PluginModel cellModel = getPluginModel(jsonArray.optJSONObject(i), false);
if (!AlphaFineHelper.getFilterResult().contains(cellModel)) {
if (cellModel != null && !AlphaFineHelper.getFilterResult().contains(cellModel)) {
searchResult.add(cellModel);
}
}

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.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
*/
private void registerCellEditor() {
ActionFactory.registerCellEditorClass(String.class, CellStringQuickEditor.class);
ActionFactory.registerCellEditorClass(Number.class, CellStringQuickEditor.class);
ActionFactory.registerCellEditorClass(BaseFormula.class, CellFormulaQuickEditor.class);
ActionFactory.registerCellEditorClass(SubReport.class, CellSubReportEditor.class);
ActionFactory.registerCellEditorClass(RichText.class, CellRichTextEditor.class);
ActionFactory.registerCellEditorClass(DSColumn.class, CellDSColumnEditor.class);
ActionFactory.registerCellEditorClass(Image.class, CellImageQuickEditor.class);
ActionFactory.registerCellEditorClass(BiasTextPainter.class, CellBiasTextPainterEditor.class);
ActionFactory.registerCellEditorClass(BufferedImage.class, CellImageQuickEditor.class);
ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor());
ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor());
ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor());
ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor());
ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor());
ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor());
ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor());
ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor());
ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor());
//todo 图表编辑器populate没能实现刷新面板显示
ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class);
Set<ElementUIProvider> providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING);
for (ElementUIProvider provider : providers) {
try {
ActionFactory.registerCellEditorClass(provider.targetObjectClass(), provider.quickEditor());
ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance());
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage(), e);
}
@ -174,11 +172,11 @@ public class DesignerModule extends DesignModule {
*/
private void registerFloatEditor() {
ActionFactory.registerFloatEditorClass(String.class, FloatStringQuickEditor.class);
ActionFactory.registerFloatEditorClass(Formula.class, FloatStringQuickEditor.class);
ActionFactory.registerFloatEditorClass(Image.class, FloatImageQuickEditor.class);
ActionFactory.registerFloatEditorClass(BufferedImage.class, FloatImageQuickEditor.class);
ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor());
ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor());
ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor());
ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor());
//todo 图表编辑器populate没能实现刷新面板显示
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.UIComboBoxRenderer;
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.itextfield.UINumberField;
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.stable.pinyin.ChineseHelper;
import javax.swing.*;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
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.ItemListener;
import java.awt.font.FontRenderContext;
@ -49,10 +55,10 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
private UIComboBox typeComboBox;
private UISpinner barWidthSpinner;
private UISpinner barHeightSpinner;
private UISpinner RCodesizespinner;
private UISpinner sizeSpinner;
private UICheckBox drawingTextCheckBox;
private UIComboBox RCodeVersionComboBox;
private UIComboBox RCodeErrorCorrectComboBox;
private UIComboBox versionComboBox;
private UIComboBox errorCorrectComboBox;
private UILabel typeSetLabel;
private String testText = "12345";
@ -74,9 +80,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
borderPane.add(barCodePreviewPane, BorderLayout.CENTER);
setTypeComboBox();
setSome();
RCodesizespinner = new UISpinner(1,6,1,2);
RCodeVersionComboBox = new UIComboBox();
RCodeErrorCorrectComboBox = new UIComboBox();
sizeSpinner = new UISpinner(1,6,1,2);
versionComboBox = new UIComboBox();
errorCorrectComboBox = new UIComboBox();
typeSetLabel = new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT);
initVersionComboBox();
initErrorCorrectComboBox();
@ -170,13 +176,13 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
UILabel uiLabel = new UILabel(Inter.getLocText("RCodeVersion"), UILabel.LEFT);
uiLabel.setPreferredSize(typeSetLabel.getPreferredSize());
RCodeVersionComboBox.setPreferredSize(new Dimension(155,20));
RCodeErrorCorrectComboBox.setPreferredSize(new Dimension(155,20));
RCodesizespinner.setPreferredSize(new Dimension(155,20));
versionComboBox.setPreferredSize(new Dimension(155,20));
errorCorrectComboBox.setPreferredSize(new Dimension(155,20));
sizeSpinner.setPreferredSize(new Dimension(155,20));
Component[][] components_special = new Component[][]{
new Component[]{uiLabel, RCodeVersionComboBox},
new Component[]{new UILabel(Inter.getLocText("RCodeErrorCorrect"), UILabel.LEFT), RCodeErrorCorrectComboBox},
new Component[]{new UILabel(Inter.getLocText("RCodeDrawPix"), UILabel.LEFT), RCodesizespinner}
new Component[]{uiLabel, versionComboBox},
new Component[]{new UILabel(Inter.getLocText("RCodeErrorCorrect"), UILabel.LEFT), errorCorrectComboBox},
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);
@ -184,17 +190,17 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
}
private void addlistener() {
RCodesizespinner.addChangeListener(new ChangeListener() {
sizeSpinner.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
repaintPreviewBarCode();
}
});
RCodeVersionComboBox.addItemListener(new ItemListener() {
versionComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
repaintPreviewBarCode();
}
});
RCodeErrorCorrectComboBox.addItemListener(new ItemListener() {
errorCorrectComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
repaintPreviewBarCode();
}
@ -227,12 +233,12 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
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"};
initcombobox(this.RCodeVersionComboBox, array, 0);
initcombobox(this.versionComboBox, array, 0);
}
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%"};
initcombobox(this.RCodeErrorCorrectComboBox, array, 1);
initcombobox(this.errorCorrectComboBox, array, 1);
}
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.typeComboBox.setSelectedIndex(barcodeAttr.getType());
this.versionComboBox.setSelectedIndex(barcodeAttr.getRCodeVersion());
this.errorCorrectComboBox.setSelectedIndex(barcodeAttr.getRCodeErrorCorrect());
this.barWidthSpinner.setValue(new Double(barcodeAttr.getBarWidth()) * 10);
this.barHeightSpinner.setValue(new Integer(barcodeAttr.getBarHeight()));
this.drawingTextCheckBox.setSelected(barcodeAttr.isDrawingText());
this.RCodesizespinner.setValue(new Integer(barcodeAttr.getRcodeDrawPix()));
this.sizeSpinner.setValue(new Integer(barcodeAttr.getRcodeDrawPix()));
this.repaintPreviewBarCode();
}
@ -281,9 +289,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
public BarcodePresent updateBean() {
BarcodeAttr barcodeAttr = new BarcodeAttr();
if ((typeComboBox.getSelectedIndex() == NUM16)) {
barcodeAttr.setRCodeVersion(this.RCodeVersionComboBox.getSelectedIndex());
barcodeAttr.setRCodeErrorCorrect(this.RCodeErrorCorrectComboBox.getSelectedIndex());
barcodeAttr.setRcodeDrawPix((int) this.RCodesizespinner.getValue());
barcodeAttr.setRCodeVersion(this.versionComboBox.getSelectedIndex());
barcodeAttr.setRCodeErrorCorrect(this.errorCorrectComboBox.getSelectedIndex());
barcodeAttr.setRcodeDrawPix((int) this.sizeSpinner.getValue());
}
barcodeAttr.setType(this.typeComboBox.getSelectedIndex());
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.general.Inter;
import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.Selection;
import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
@ -29,6 +30,7 @@ import com.fr.stable.Nameable;
public class ConditionAttributesGroupPane extends UIListControlPane {
private static ConditionAttributesGroupPane singleton;
private TemplateCellElement editCellElement; // 当前单元格对象
private Selection editSelection; // 当前编辑对象
private ElementCasePane ePane;
private ConditionAttributesGroupPane() {
@ -52,10 +54,8 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
if (isPopulating) {
return;
}
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
ReportActionUtils.actionIterateWithCellSelection((CellSelection) editSelection, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) {
((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup());
}
@ -75,6 +75,7 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
public void populate(ElementCasePane ePane) {
this.ePane = ePane;
this.editSelection = ePane.getSelection();
CellSelection cs = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
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() {
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() {
@ -148,5 +149,16 @@ public class ReportWebWidgetConstants {
// 数据清空
public static final WidgetOption WRITESTASHCLEAR = WidgetOptionFactory
.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 {
private static final int COLUMN = 4;
private int row = 6;
private int row = 7;
private DefaultTableModel toolbarButtonTableModel;
private JTable layoutTable;
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;
}
List<NameObject> nameObjectList = new ArrayList<>();
List<NameObject> nameObjectList = new ArrayList<NameObject>();
int submiterCount = reportWriteAttr.getSubmitVisitorCount();
for (int i = 0; i < submiterCount; i++) {
@ -169,8 +169,8 @@ public class SubmitVisitorListPane extends ObjectJControlPane {
public CustomPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane();
customSubmitPanes = new HashMap<>();
comboItemsMap = new HashMap<>();
customSubmitPanes = new HashMap<String, BasicBeanPane>();
comboItemsMap = new HashMap<String, String>();
Set<SubmitProvider> providers = ExtraDesignClassManager.getInstance().getArray(SubmitProvider.MARK_STRING);
addSubmitPane(new DefaultSubmit());
@ -178,7 +178,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane {
addSubmitPane(provider);
}
configTypes = new ArrayList<>();
configTypes = new ArrayList<String>();
for (Map.Entry<String, BasicBeanPane> entry : customSubmitPanes.entrySet()) {
String key = entry.getKey();
configTypes.add(comboItemsMap.get(key));

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

@ -1,6 +1,5 @@
<html>
<body bgcolor="white">
<!CN[这个包中定义了监听单元格变化的接口和类.]!>
<!EN[This package defines cell element listener classes and event classes.]!>
这个包中定义了监听单元格变化的接口和类.
</body>
</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.unit.FU;
import javax.swing.*;
import java.awt.*;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@ -114,6 +115,7 @@ public class CellSelection extends Selection {
/**
* 增加选中的区域
*
* @param cellRectangle 区域
*/
public void addCellRectangle(Rectangle cellRectangle) {
@ -164,6 +166,7 @@ public class CellSelection extends Selection {
/**
* 清除区域块
*
* @param 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
*/
public int containsCell(int column, int row) {
@ -205,6 +209,7 @@ public class CellSelection extends Selection {
/**
* 转换成矩形
*
* @return 矩形
*/
public Rectangle toRectangle() {
@ -213,6 +218,7 @@ public class CellSelection extends Selection {
/**
* 是否选择一个单元格
*
* @param ePane 区域
* @return 是则返回rue
*/
@ -239,8 +245,9 @@ public class CellSelection extends Selection {
/**
* 作为可传输的
*
* @param transferable 传输介质
* @param ePane 区域
* @param ePane 区域
*/
public void asTransferable(ElementsTransferable transferable, ElementCasePane ePane) {
java.util.List<TemplateCellElement> list = new java.util.ArrayList<TemplateCellElement>();
@ -251,12 +258,12 @@ public class CellSelection extends Selection {
TemplateCellElement cellElement = (TemplateCellElement) cells.next();
list.add((TemplateCellElement) cellElement.deriveCellElement(cellElement.getColumn() - column, cellElement.getRow() - row));
}
FU [] columnWidth = new FU[columnSpan];
FU [] rowHeight = new FU[rowSpan];
for (int i = 0; i < columnSpan; i++){
FU[] columnWidth = new FU[columnSpan];
FU[] rowHeight = new FU[rowSpan];
for (int i = 0; i < columnSpan; 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);
}
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 ePane 区域
* @return 成功返回true
* @param ePane 区域
* @return 成功返回true
*/
@Override
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
*/
@Override
@ -329,7 +338,8 @@ public class CellSelection extends Selection {
/**
* 黏贴其他
* @param ob 要黏贴的东西
*
* @param ob 要黏贴的东西
* @param ePane 区域
* @return 成功返回true
*/
@ -352,6 +362,7 @@ public class CellSelection extends Selection {
/**
* 是否能合并单元格
*
* @param ePane 区域
* @return 是则返回true
*/
@ -363,6 +374,7 @@ public class CellSelection extends Selection {
/**
* 合并单元格
*
* @param ePane 区域
* @return 成功返回true
*/
@ -386,6 +398,7 @@ public class CellSelection extends Selection {
/**
* 是否撤销合并单元格
*
* @param ePane 区域
* @return 是则返回true
*/
@ -407,6 +420,7 @@ public class CellSelection extends Selection {
/**
* 撤销合并单元格
*
* @param ePane 区域
* @return 成功返回true
*/
@ -443,6 +457,7 @@ public class CellSelection extends Selection {
/**
* 创建弹出菜单
*
* @param ePane 区域
* @return 菜单
*/
@ -477,7 +492,7 @@ public class CellSelection extends Selection {
popup.add(DeprecatedActionManager.getPresentMenu(ePane).createJMenu());
popup.add(new CellAttributeAction().createMenuItem());
JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jTemplate.isJWorkBook()){ //表单中报表块编辑屏蔽掉 控件设置
if (jTemplate.isJWorkBook()) { //表单中报表块编辑屏蔽掉 控件设置
popup.add(new CellWidgetAttrAction().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
*/
@Override
@ -581,6 +597,7 @@ public class CellSelection extends Selection {
/**
* 向左移动
*
* @param ePane 区域
*/
public void moveLeft(ElementCasePane ePane) {
@ -592,6 +609,7 @@ public class CellSelection extends Selection {
/**
* 向右移动
*
* @param ePane 区域
*/
public void moveRight(ElementCasePane ePane) {
@ -600,6 +618,7 @@ public class CellSelection extends Selection {
/**
* 向上移动
*
* @param ePane 区域
*/
public void moveUp(ElementCasePane ePane) {
@ -611,6 +630,7 @@ public class CellSelection extends Selection {
/**
* 向下移动
*
* @param ePane 区域
*/
public void moveDown(ElementCasePane ePane) {
@ -626,6 +646,7 @@ public class CellSelection extends Selection {
/**
* 触发删除动作
*
* @param ePane 区域
* @return 成功返回true
*/
@ -657,6 +678,7 @@ public class CellSelection extends Selection {
/**
* 包含行列
*
* @param cr 行列
* @return 包含返回true
*/
@ -716,7 +738,7 @@ public class CellSelection extends Selection {
CellElementPropertyPane.getInstance().reInit(ePane);
}
public void populateWidgetPropertyPane(ElementCasePane ePane){
public void populateWidgetPropertyPane(ElementCasePane ePane) {
CellWidgetPropertyPane.getInstance().reInit(ePane);
}

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;
import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.selection.QuickEditor;
import com.fr.grid.selection.FloatSelection;
import com.fr.report.cell.FloatElement;
import com.fr.design.selection.QuickEditor;
/**
*
* @author zhou
* @since 2012-7-23下午5:17:23
*/
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());
refreshDetails();
}
/**
* 刷新详细信息
*/
protected abstract void 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
*/
@ -187,6 +176,12 @@ public class CellDSColumnEditor extends CellQuickEditor {
paneList.add(cellDSColumnAdvancedPane);
}
@Override
public void release() {
super.release();
cellDSColumnBasicPane.release();
cellDSColumnAdvancedPane.release();
}
/**
* 单元格元素 数据列 高级设置内容面板
@ -252,7 +247,7 @@ public class CellDSColumnEditor extends CellQuickEditor {
};
DSColumnBasicEditorPane() {
dataPane = new SelectedDataColumnPane(true, true, tc, cellElement);
dataPane = new SelectedDataColumnPane(true, true, cellElement);
groupPane = new ResultSetGroupDockingPane();
dataPane.addListener(dataListener);
groupPane.setListener(groupListener);
@ -297,13 +292,19 @@ public class CellDSColumnEditor extends CellQuickEditor {
@Override
public void populate() {
dataPane.populate(null, cellElement);
dataPane.populate(DesignTableDataManager.getEditingTableDataSource(), cellElement, tc);
groupPane.populate(cellElement);
if (tc != null) {
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;
}
@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.Style;
import com.fr.base.TextFormat;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.grid.GridKeyListener;
import com.fr.grid.selection.CellSelection;
@ -18,7 +17,6 @@ import javax.swing.JPanel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
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() {
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.report.cell.cellattr.CellImage;
import javax.swing.*;
import java.awt.*;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -70,8 +72,6 @@ public class FloatImageQuickEditor extends FloatQuickEditor {
@Override
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.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.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.ActionListener;
@ -27,6 +33,25 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
private boolean reserveInResult = false;
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() {
super();
stringTextField = new JTextArea();
@ -34,11 +59,17 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
formulaButton = new UIButton();
formulaButton.setPreferredSize(new Dimension(25, 23));
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);
JPanel pane = new JPanel(new BorderLayout(5, 0));
pane.add(stringTextField, BorderLayout.CENTER);
pane.add(formulaButton, BorderLayout.EAST);
pane.setBorder(BorderFactory.createEmptyBorder(0,0,0,5));
pane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
formulaButton.setVisible(false);
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
@ -55,16 +86,10 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
stringTextField.setBackground(Color.WHITE);
}
ActionListener getFormulaActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
((ElementCasePane) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentElementCasePane()).getGrid().startEditing();
}
};
@Override
protected void refreshDetails() {
String str = null;
String str;
Object value = floatElement.getValue();
if (value == null) {
str = StringUtils.EMPTY;
@ -89,26 +114,8 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
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) == '=')) {
BaseFormula textFormula = BaseFormula.createFormulaBuilder().build(tmpText);
textFormula.setReserveInResult(reserveInResult);
@ -125,5 +132,4 @@ public class FloatStringQuickEditor extends FloatQuickEditor {
fireTargetModified();
stringTextField.requestFocus();
}
}

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

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

3
designer/src/com/fr/start/Designer.java

@ -130,6 +130,9 @@ public class Designer extends BaseDesigner {
if (ActionFactory.getChartPreStyleAction() != null) {
menuDef.addShortCut(ActionFactory.getChartPreStyleAction());
}
if (ActionFactory.getChartEmptyDataStyleAction() != null) {
menuDef.addShortCut(ActionFactory.getChartEmptyDataStyleAction());
}
if (ActionFactory.getChartMapEditorAction() != null) {
menuDef.addShortCut(ActionFactory.getChartMapEditorAction());
}

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

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

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

@ -50,11 +50,26 @@ public class ActionFactory {
private static ConcurrentMap<Class, Class<? extends QuickEditor>> cellEditorClass = new ConcurrentHashMap<>();
private static UpdateAction chartPreStyleAction = null;
private static UpdateAction chartEmptyDataStyleAction = null;
private static UpdateAction chartMapEditorAction = null;
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();
}
}
/**
* 注册无需每次实例化的单元格元素编辑器
*
@ -126,6 +141,15 @@ public class ActionFactory {
chartPreStyleAction = action;
}
/**
* 注册图表的 空数据提示样式.
*
* @param action 注册的图表空数据提示样式action
*/
public static void registerChartEmptyDataStyleAction(UpdateAction action) {
chartEmptyDataStyleAction = action;
}
/**
* kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollection和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册.
*
@ -157,6 +181,15 @@ public class ActionFactory {
return chartPreStyleAction;
}
/**
* 图表空数据提示样式Action
*
* @return 图表空数据提示样式Action
*/
public static UpdateAction getChartEmptyDataStyleAction() {
return chartEmptyDataStyleAction;
}
/**
* 图表编辑器Action

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

@ -1,5 +1,6 @@
package com.fr.design.actions.file;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.utils.DesignUtils;
@ -11,6 +12,8 @@ import com.fr.general.web.ParameterConsts;
import com.fr.stable.project.ProjectConstants;
import javax.swing.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public final class WebPreviewUtils {
@ -28,11 +31,15 @@ public final class WebPreviewUtils {
return;
}
if (map == null || map == Collections.EMPTY_MAP) {
map = new HashMap<>();
}
map.put("mode", DesignerMode.getMode().toString());
DesignerContext.getDesignerFrame().refreshToolbar();
jt.stopEditing();
/*
* alex:如果没有保存,先保存到Env
* alex:如果没有保存,先保存到Env
*
* 如果保存失败,不执行下面的WebPreview
*/
@ -68,20 +75,19 @@ public final class WebPreviewUtils {
String path = currentTemplate.getPath();
if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) {
path = path.substring(ProjectConstants.REPORTLETS_NAME.length() + 1);
}
java.util.List<String> parameterNameList = new java.util.ArrayList<String>();
java.util.List<String> parameterValueList = new java.util.ArrayList<String>();
java.util.List<String> parameterNameList = new java.util.ArrayList<String>();
java.util.List<String> parameterValueList = new java.util.ArrayList<String>();
parameterNameList.add(actionType);
parameterValueList.add(path);
if (map != null) {
for (String key : map.keySet()) {
parameterNameList.add(key);
parameterValueList.add(GeneralUtils.objectToString(map.get(key)));
}
parameterNameList.add(actionType);
parameterValueList.add(path);
if (map != null) {
for (String key : map.keySet()) {
parameterNameList.add(key);
parameterValueList.add(GeneralUtils.objectToString(map.get(key)));
}
DesignUtils.visitEnvServerByParameters(parameterNameList.toArray(new String[parameterNameList.size()]), parameterValueList.toArray(new String[parameterValueList.size()]));
}
DesignUtils.visitEnvServerByParameters(parameterNameList.toArray(new String[parameterNameList.size()]), parameterValueList.toArray(new String[parameterValueList.size()]));
} else {
int selVal = JOptionPane.showConfirmDialog(DesignerContext.getDesignerFrame(), Inter.getLocText("Web_Preview_Message"),
Inter.getLocText("Preview_ToolTips"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);

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 javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Iterator;
public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> {
private static final int MIN_HEIGHT = 60;
protected CellHighlightAddMenuDef menuDef;
protected JPanel selectedItemPane;
@ -61,6 +63,7 @@ public abstract class ConditionAttributesPane<T> extends BasicBeanPane<T> {
JScrollPane selectedItemScrollPane = new JScrollPane();
selectedItemScrollPane.setViewportView(selectedItemPane);
selectedItemScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
selectedItemScrollPane.setMinimumSize(new Dimension((int) selectedItemScrollPane.getPreferredSize().getWidth(), MIN_HEIGHT));
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>
<body bgcolor="white">
Defined some dialogs that can be used in your applications of applets, For example:
定义了一些对话框,使用示例:
PageSetupDialog({@link com.fr.dialog.PageSetupDialog PageSetupDialog}),
StyleDialog({@link com.fr.dialog.core.ColorSelectBox ColorSelectBox}),
CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog}).]!>
CellBorderDialog({@link com.fr.dialog.CellBorderDialog CellBorderDialog})>
</body>
</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>

14
designer_base/src/com/fr/design/extra/PluginOperateUtils.java

@ -122,7 +122,7 @@ public class PluginOperateUtils {
return resultArray.toString();
}
public static void dealParams(StringBuilder url, String category, String seller, String fee) {
public static void dealParams(StringBuilder url, String category, String seller, String fee, String scope) {
if (StringUtils.isNotBlank(category)) {
url.append("cid=").append(category.split("-")[1]);
} else {
@ -152,6 +152,18 @@ public class PluginOperateUtils {
url.append("&fee=").append(StringUtils.EMPTY);
}
}
if (StringUtils.isNotBlank(scope)) {
switch (scope.split("-")[1]) {
case "universal":
url.append("&scope=").append(1);
break;
case "program":
url.append("&scope=").append(2);
break;
default:
url.append("&scope=").append(StringUtils.EMPTY);
}
}
}
public static void getLoginInfo(JSCallback jsCallback, UILabel uiLabel) {

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

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

18
designer_base/src/com/fr/design/extra/PluginWebBridge.java

@ -339,10 +339,26 @@ public class PluginWebBridge {
* @param callback 回调函数
*/
public void getPluginFromStore(String category, String seller, String fee, final JSObject callback) {
Task<Void> task = new PluginTask<>(webEngine, callback, new GetPluginFromStoreExecutor(category, seller, fee));
Task<Void> task = new PluginTask<>(webEngine, callback, new GetPluginFromStoreExecutor(category, seller, fee, ""));
threadPoolExecutor.submit(task);
}
/**
* 根据条件获取在线插件
*
* @param info 插件信息
* @param callback 回调函数
*/
public void getPluginFromStoreNew(String info, final JSObject callback) {
try {
Task<Void> task = new PluginTask<>(webEngine, callback, new GetPluginFromStoreExecutor(new JSONObject(info)));
threadPoolExecutor.submit(task);
} catch (JSONException e) {
FRLogger.getLogger().error(e.getMessage());
}
}
public void getPluginPrefix(final JSObject callback) {
Task<Void> task = new PluginTask<>(webEngine, callback, new GetPluginPrefixExecutor());
threadPoolExecutor.submit(task);

26
designer_base/src/com/fr/design/extra/WebViewDlgHelper.java

@ -5,6 +5,7 @@ import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.UIDialog;
import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.general.CommonIOUtils;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.general.IOUtils;
@ -22,9 +23,7 @@ import javax.swing.SwingWorker;
import java.awt.BorderLayout;
import java.awt.Component;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.net.HttpURLConnection;
import java.util.concurrent.ExecutionException;
@ -94,27 +93,17 @@ public class WebViewDlgHelper {
public static void checkAndCopyMainFile(String indexPath, String mainJsPath) {
File file = new File(indexPath);
if (!file.exists()) {
copyMainFile(indexPath, mainJsPath);
copyMainFile(mainJsPath);
}
}
/**
* 將script文件夹中的plugin.html文件复制到webreport下
*/
public static void copyMainFile(String indexPath, String mainJsPath) {
private static void copyMainFile(String mainJsPath) {
try {
File mainJsFile = new File(mainJsPath);
int byteread = 0;
if (mainJsFile.exists()) {
InputStream inStream = new FileInputStream(mainJsPath);
FileOutputStream fs = new FileOutputStream(indexPath);
byte[] buffer = new byte[BYTES_NUM];
while ((byteread = inStream.read(buffer)) != -1) {
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
CommonIOUtils.copy(new File(mainJsPath), new File(installHome));
} catch (IOException e) {
FRContext.getLogger().error(e.getMessage());
}
}
@ -131,6 +120,7 @@ public class WebViewDlgHelper {
/**
* 以关键词打开设计器商店显示搜索结果
*
* @param keyword
* @param data
*/
@ -240,7 +230,7 @@ public class WebViewDlgHelper {
if (get()) {
String relativePath = "/scripts/plugin.html";
IOUtils.unzip(new File(StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE)), installHome);
copyMainFile(StableUtils.pathJoin(installHome, "plugin.html"), StableUtils.pathJoin(installHome, relativePath));
copyMainFile(StableUtils.pathJoin(installHome, relativePath));
// TODO: 2017/4/17 删除之前存放在安装目录下的script
PluginStoreConstants.refreshProps(); // 下载完刷新一下版本号等
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), Inter.getLocText("FR-Designer_Tooltips"), JOptionPane.INFORMATION_MESSAGE);

17
designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java

@ -20,11 +20,20 @@ public class GetPluginFromStoreExecutor implements Executor {
private String category;
private String seller;
private String fee;
private String scope;
public GetPluginFromStoreExecutor(String category, String seller, String fee) {
public GetPluginFromStoreExecutor(JSONObject info) {
this.category = info.optString("category");
this.fee = info.optString("fee");
this.seller = info.optString("seller");
this.scope = info.optString("scope");
}
public GetPluginFromStoreExecutor(String category, String seller, String fee, String scope) {
this.category = category;
this.seller = seller;
this.fee = fee;
this.scope = scope;
}
@Override
@ -44,7 +53,7 @@ public class GetPluginFromStoreExecutor implements Executor {
@Override
public void run(Process<String> process) {
String plistUrl = SiteCenter.getInstance().acquireUrlByKind("shop.plugin.plist") + "?";
boolean getRecommend = StringUtils.isEmpty(category) && StringUtils.isEmpty(seller) && StringUtils.isEmpty(fee);
boolean getRecommend = StringUtils.isEmpty(category) && StringUtils.isEmpty(seller) && StringUtils.isEmpty(fee) && StringUtils.isEmpty(scope);
if (getRecommend) {
result = PluginOperateUtils.getRecommendPlugins();
return;
@ -53,7 +62,7 @@ public class GetPluginFromStoreExecutor implements Executor {
if (StringUtils.isNotBlank(plistUrl)) {
StringBuilder url = new StringBuilder();
url.append(plistUrl);
PluginOperateUtils.dealParams(url, category, seller, fee);
PluginOperateUtils.dealParams(url, category, seller, fee, scope);
try {
HttpClient httpClient = new HttpClient(url.toString());
httpClient.asGet();
@ -66,7 +75,7 @@ public class GetPluginFromStoreExecutor implements Executor {
FRLogger.getLogger().error(e.getMessage());
}
} else {
result = PluginConstants.CONNECTION_404;
result = PluginConstants.CONNECTION_404;
}
}
}

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;
/**
* 用于和Ucenter通信的客户端
*
* @author lp
* @date 2016/9/9
* 1.client借用的是id为9的应用信息为fanruan官网http://www.fanruan.com,
* 2.借用当前的应用id就会导致无法同步登陆到该应用所在的网站权衡之后这个影响是比较小的
* 3.key和appid是成对匹配的
*/
public class Client extends AbstractClient {
private static String UC_IP = "";
private static String UC_API = "";
private static String UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi");
private static String UC_IP = SiteCenter.getInstance().acquireUrlByKind("bbs.ip");
private static String UC_CONNECT = "";
private static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0";
private static String UC_APPID = "4";
private static String UC_KEY = SiteCenter.getInstance().acquireUrlByKind("bbs.uc.key", "1v12H473J2Y99935473T4360w5L014522281007621223O1708wv870273fB0200");
private static String UC_APPID = SiteCenter.getInstance().acquireUrlByKind("bbs.uc.appid", "9");
private static String UC_CLIENT_RELEASE = "20090212";
public static String UC_ROOT = "";
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 = "&";
}
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);
}

8
designer_base/src/com/fr/design/file/MutilTempalteTabPane.java

@ -3,6 +3,7 @@ package com.fr.design.file;
import com.fr.base.BaseUtils;
import com.fr.base.GraphHelper;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.constants.UIConstants;
import com.fr.design.gui.imenu.UIMenuItem;
import com.fr.design.gui.imenu.UIScrollPopUpMenu;
@ -632,6 +633,11 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M
* @param e 鼠标事件
*/
public void mousePressed(MouseEvent e) {
//如果在版本管理情况下,不允许切换tab
if (DesignerMode.isVcsMode()) {
JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Vcs_tab_click"), Inter.getLocText("FR-Designer_Alert"), JOptionPane.WARNING_MESSAGE);
return;
}
int evtX = e.getX();
int evtY = e.getY();
@ -951,6 +957,4 @@ public class MutilTempalteTabPane extends JComponent implements MouseListener, M
}
}
}
}

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

14
designer_base/src/com/fr/design/fun/TemplateTreeShortCutProvider.java

@ -0,0 +1,14 @@
package com.fr.design.fun;
import com.fr.stable.fun.mark.Aftermath;
import com.fr.stable.fun.mark.Mutable;
/**
* 左上角目录树上边工具条的插件接口
* Created by hzzz on 2017/11/30.
*/
public interface TemplateTreeShortCutProvider extends Mutable, Aftermath {
String XML_TAG = "TemplateTreeShortCut";
int CURRENT_LEVEL = 1;
}

26
designer_base/src/com/fr/design/fun/impl/AbstractTemplateTreeShortCutProvider.java

@ -0,0 +1,26 @@
package com.fr.design.fun.impl;
import com.fr.design.actions.UpdateAction;
import com.fr.design.fun.TemplateTreeShortCutProvider;
import com.fr.stable.fun.mark.API;
/**
* 左上角目录树上边工具条的插件接口
* Created by hzzz on 2017/11/30.
*/
@API(level = TemplateTreeShortCutProvider.CURRENT_LEVEL)
public abstract class AbstractTemplateTreeShortCutProvider extends UpdateAction implements TemplateTreeShortCutProvider {
@Override
public String mark4Provider() {
return getClass().getName();
}
@Override
public void process() {
}
@Override
public void undo() {
}
}

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() {
if (loaded) {
return;
}
setModel(new DefaultComboBoxModel(load()));
loaded = true;
setLoaded(true);
loadList();
}
@Override

8
designer_base/src/com/fr/design/gui/ilist/ArrayListModel.java

@ -4,15 +4,15 @@ import javax.swing.AbstractListModel;
public class ArrayListModel extends AbstractListModel {
private Object[] array;
public ArrayListModel() {
}
public ArrayListModel(Object[] array) {
this.array = array;
}
public Object getElementAt(int index) {
return array != null ? array[index] : null;
}

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{
private static final float REC = 8f;
private boolean onlyText = false;
public static UIPopupMenu EMPTY = new UIPopupMenu();
public UIPopupMenu() {
super();
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>

BIN
designer_base/src/com/fr/design/images/chart/EmptyChart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

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>

31
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_Para_Pane=Forbid Drag into Para Pane
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_EmbeddedTD=
FR-Designer_Form_Module=Form Module
FR-Designer_Form_Module=Dashboard Module
FR-Designer_Format_explan=
FR-Designer_Formula=
FR-Designer_Forum=
@ -562,7 +562,7 @@ FR-Designer_DS_TableData=Data Set
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_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_Background_Null=
FR-Designer_Background_Color=
@ -620,7 +620,7 @@ Tree-Width=Tree Width
alert_word=
PageSetup-Paper_Size=Paper Size
M-Page_Setup=Page Setup
DashBoard-FormBook=Form
DashBoard-FormBook=Dashboard
X-Coordinate=X Coordinate
Style-Line_Spacing=Line Spacing
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
Utils-Row_Height=Row Height
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
M_Insert-Hyperlink=Hyperlink
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
Root=Root
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
GROUPING_MODE=Grouping
DBCP_MAX_IDLE=MaxIdle
@ -1088,7 +1088,7 @@ Form-View_Tree=Tree View
M_Insert-Chart=Insert Chart
HF-Even_Page=Even Page
ReportServerP-Report_server_parameter=Report Server Parameter
JavaScript-Form_Submit=Form Submit
JavaScript-Form_Submit=Dashboard Submit
Horizontal-Split_Layout=Horizontal Split Layout
BorderLayout-Center=Center
INFO-Reset_Webapp=Reset Webapp
@ -1439,7 +1439,7 @@ ReportColumns-Columns_after=Columns after
FR-Designer_Undo=
DBCP_MIN_IDLE=MinIdle
M-Data_Analysis_Settings=Data Analysis Settings
M-Form_Preview=Form Preview
M-Form_Preview=Dashboard Preview
Form-Basic_Properties=Basic Properties
quote=
Thu=Thu
@ -1594,7 +1594,7 @@ FS_Report_Type=Report Type
HF-New_Line=New Line
Privilege=Privilege
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=
Present-No_Present=No Present
FR-Designer_Form-Password=Password
@ -1618,7 +1618,7 @@ Above=Above
Utils-The-Chart=
FRFont-plain=plain
Calculating=Calculating
Form-Object=Form Object
Form-Object=Dashboard Object
May=May
FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet=
@ -1753,7 +1753,7 @@ ReportServerP-Last=Last
FR-Base_Columns=
SpecifiedG-Leave_in_their_own_groups=Leave in their own groups
LOG-Please_Wait=Please Waiting
Form-ToolBar=Form ToolBar
Form-ToolBar=Dashboard ToolBar
FR-Base_sure_remove_item=
Component_Scale=Component Scale
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
Unit_Hundred=Hundred
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.
Actions=Actions
FR-Designer-Dependence_Connect_Server_Error=connect error
@ -1951,7 +1951,7 @@ ReportServerP-Import_JavaScript=Import JavaScript
Form-TableTree=Table Tree
Opened=Opened
M_Edit-Delete=Delete
Widget-Form_Widget_Container=Form Container
Widget-Form_Widget_Container=Dashboard Container
BindColumn-Summary=Summary
Sche-Second=Second
Server-Open_Service_Manager=Open Service Manager
@ -1994,7 +1994,7 @@ FR-Designer_AlphaFine_EnableInternetSearch=SearchOnLine
FR-Designer_AlphaFine_Shortcut_Config=Shortcut Config
FR-Designer_AlphaFine_SearchRange=Search Range
FR-Designer_AlphaFine_Recommend=Recommend
FR-Designer-Plugin_Addon=Plugin Addon
FR-Designer-Plugin_Addon=FanRuan Market
FR-Designer_Templates=FR-Designer_Templates
FR-Designer_Templates_Content=Templates Contents
FR-Designer_AlphaFine_ShowAll=show all
@ -2149,6 +2149,9 @@ FR-Designer_Provide_Choose_All=
FR-Designer_Decimal_Places=
FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect.
FR-Designer_Format_JavaScript=Format Code
FR-Designer_Tip_Content=
FR-Designer_Chart_Empty_Data=
FR-Designer-Vcs_tab_click=Please exit the version management status and then switch the template
FR-Designer_Preference_CachingTemplate=Template memory optimization
FR-Designer_Preference_MaxCachingTemplate=The designer maximum cache template number:
FR-Designer_Preference_CachingTemplateTip=Set to 0 to close the function; restart the designer and take effect

43
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_Font-Family=Font name
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_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_EmbeddedTD=Form(built-in data)
FR-Designer_Form_Module=Form Module
FR-Designer_Form_EmbeddedTD=Dashboard(built-in data)
FR-Designer_Form_Module=Dashboard Module
FR-Designer_Format_explan=Format explain
FR-Designer_Allow-Blank=Allow Blank
FR-Designer_Formula=Formula
@ -500,7 +500,7 @@ FR-Designer_Properties_Mobile=MobileProperties
FR-Designer_Button_OK=OK
FR-Designer_Button_Cancel=Cancel
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_Custom=Custom
FR-Designer_RWA_Submit=Submit
@ -563,7 +563,7 @@ FR-Designer_DS_TableData=Data Set
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_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_Background_Null=No Background
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.
PageSetup-Paper_Size=Paper Size
M-Page_Setup=Page Setup
DashBoard-FormBook=Form
DashBoard-FormBook=Dashboard
X-Coordinate=Horizontal axis
Style-Line_Spacing=Line Spacing
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
Utils-Row_Height=Row Height
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
M_Insert-Hyperlink=Hyperlink
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
Root=Root node
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
GROUPING_MODE=Ordinary Grouping
DBCP_MAX_IDLE=Max Idle Connections
@ -1090,7 +1090,7 @@ Form-View_Tree=View Tree
M_Insert-Chart=Insert Chart
HF-Even_Page=Even Page
ReportServerP-Report_server_parameter=Report Server Parameter
JavaScript-Form_Submit=Form Submit
JavaScript-Form_Submit=Dashboard Submit
Horizontal-Split_Layout=Horizontal partitioning layout
BorderLayout-Center=Center
INFO-Reset_Webapp=Reset Application Server
@ -1440,7 +1440,7 @@ ReportColumns-Columns_after=Over
FR-Designer_Undo=Undo
DBCP_MIN_IDLE=Min Idle Connections
M-Data_Analysis_Settings=Data Analysis Settings
M-Form_Preview=Form Preview
M-Form_Preview=Dashboard Preview
Form-Basic_Properties=Basic Property
quote=quote
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
Nation=Country
DBCP_MAX_WAIT=Max wait time
FR-App-Template_Form=Form
FR-App-Template_Form=Dashboard
Address=Address
Sub_Report=Sub Report
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
BackgroundTexture-FishFossil=Fish Fossil
My_Computer=My Computer
FORMLET=Path parameter when accessing different forms
FORMLET=Path parameter when accessing different dashboards
HF-Undefined=Undefined
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
@ -1595,7 +1595,7 @@ FS_Report_Type=Report Type
HF-New_Line=Line breaks
Privilege=Permission
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
Present-No_Present=Cancel Present Settings
FR-Designer_Form-Password=Password
@ -1619,7 +1619,7 @@ Above=Above Version
Utils-The-Chart=Chart
FRFont-plain=General
Calculating=Calculating
Form-Object=Form Object\:
Form-Object=Dashboard Object:
May=May
FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet=Webreport
@ -1754,7 +1754,7 @@ ReportServerP-Last=Last
FR-Base_Columns=Columns
SpecifiedG-Leave_in_their_own_groups=Leave in their own groups
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
Component_Scale=Component Scale
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
Unit_Hundred=Hundred
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.
Actions=Task
FR-Designer-Dependence_Connect_Server_Error=connect error
@ -1952,7 +1952,7 @@ ReportServerP-Import_JavaScript=Reference JavaScript
Form-TableTree=Table Tree
Opened=Opened
M_Edit-Delete=Delete
Widget-Form_Widget_Container=Form Container
Widget-Form_Widget_Container=Dashboard Container
BindColumn-Summary=Summary
Sche-Second=Second
Server-Open_Service_Manager=Open Service Manager
@ -1992,7 +1992,7 @@ FR-Designer_AlphaFine_EnableInternetSearch=Search OnLine
FR-Designer_AlphaFine_Shortcut_Config=Shortcut Config
FR-Designer_AlphaFine_SearchRange=Search Range
FR-Designer_AlphaFine_Recommend=Recommend
FR-Designer-Plugin_Addon=Plugin Addon
FR-Designer-Plugin_Addon=FanRuan Market
FR-Designer_Templates=Files
FR-Designer_Templates_Content=Files'contents
FR-Designer_AlphaFine_ShowAll=Show all
@ -2148,6 +2148,9 @@ FR-Designer_Provide_Choose_All=
FR-Designer_Decimal_Places=
FR-Designer_Env_Des_Https=If HTTPS is enabled or the HTTPS configuration (certificate path, HTTPS key) is modified, you must restart the designer to take effect.
FR-Designer_Format_JavaScript=Format Code
FR-Designer_Tip_Content=
FR-Designer_Chart_Empty_Data=
FR-Designer-Vcs_tab_click=Please exit the version management status and then switch the template
FR-Designer_Preference_CachingTemplate=Template memory optimization
FR-Designer_Preference_MaxCachingTemplate=The designer maximum cache template number:
FR-Designer_Preference_CachingTemplateTip=Set to 0 to close the function; restart the designer and take effect
@ -2162,4 +2165,4 @@ FR-Designer_Tab_Template_Three=Template Three
FR-Designer_Tab_Template_Four=Template Four
FR-Designer_Tab_Template_Five=Template Five
FR-Designer_Tab_Template_Six=Template Six
FR-Designer_Tab_Display_Position=Display Position
FR-Designer_Tab_Display_Position=Display Position

3
designer_base/src/com/fr/design/locale/designer_ja_JP.properties

@ -2149,6 +2149,9 @@ FR-Designer_Decimal_Places=\u5C0F\u6570\u67A0\u6570:
FR-Base-Load_Resource_File=\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9
FR-Designer_Env_Des_Https=
FR-Designer_Format_JavaScript=Format Code
FR-Designer_Tip_Content=
FR-Designer_Chart_Empty_Data=
FR-Designer-Vcs_tab_click=
FR-Designer_Move_Up=
FR-Designer_Move_Down=
FR-Designer_Move_To_Top=

3
designer_base/src/com/fr/design/locale/designer_ko_KR.properties

@ -2149,6 +2149,9 @@ FR-Designer_Export_Background=
FR-Designer_Print_Background=
FR-Designer_Env_Des_Https=
FR-Designer_Format_JavaScript=Format Code
FR-Designer_Tip_Content=
FR-Designer_Chart_Empty_Data=
FR-Designer-Vcs_tab_click=
FR-Designer_Move_Up=
FR-Designer_Move_Down=
FR-Designer_Move_To_Top=

45
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_Font-Family=\u5B57\u4F53\u540D\u79F0
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_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_EmbeddedTD=\u8868\u5355(\u5185\u7F6E\u6570\u636E)
FR-Designer_Form_Module=\u8868\u5355\u6A21\u5757
FR-Designer_Form_EmbeddedTD=\u51B3\u7B56\u62A5\u8868(\u5185\u7F6E\u6570\u636E)
FR-Designer_Form_Module=\u51B3\u7B56\u62A5\u8868\u6A21\u5757
FR-Designer_Format_explan=\u683C\u5F0F\u8BF4\u660E
FR-Designer_Formula=\u516C\u5F0F
FR-Designer_Forum=\u8BBA\u575B
@ -119,7 +119,7 @@ FR-Designer_Help=\u5E2E\u52A9
FR-Designer_Hide=\u9690\u85CF
FR-Designer_Show=\u663E\u793A
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_Icon=\u56FE\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_Cancel=\u53D6\u6D88
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_Custom=\u81EA\u5B9A\u4E49
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_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_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_Background_Null=\u6CA1\u6709\u80CC\u666F
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.
PageSetup-Paper_Size=\u7EB8\u5F20\u5927\u5C0F
M-Page_Setup=\u9875\u9762\u8BBE\u7F6E
DashBoard-FormBook=\u8868\u5355
DashBoard-FormBook=\u51B3\u7B56\u62A5\u8868
X-Coordinate=\u6A2A\u5750\u6807
Style-Line_Spacing=\u884C\u95F4\u8DDD
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
Utils-Row_Height=\u884C\u9AD8
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
M_Insert-Hyperlink=\u8D85\u7EA7\u94FE\u63A5
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
Root=\u6839\u8282\u70B9
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
GROUPING_MODE=\u666E\u901A\u5206\u7EC4
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
HF-Even_Page=\u5076\u6570\u9875
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
BorderLayout-Center=\u4E2D
INFO-Reset_Webapp=\u91CD\u7F6E\u5E94\u7528\u670D\u52A1\u5668
@ -1442,7 +1442,7 @@ ReportColumns-Columns_after=\u8D85\u8FC7
FR-Designer_Undo=\u64A4\u9500
DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570
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
quote=\u5F15\u7528
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?
Nation=\u56FD\u5BB6
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
Sub_Report=\u5B50\u62A5\u8868
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
BackgroundTexture-FishFossil=\u9C7C\u7C7B\u5316\u77F3
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
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
@ -1596,7 +1596,7 @@ FS_Report_Type=\u7C7B\u578B
HF-New_Line=\u6362\u884C\u7B26
Privilege=\u6743\u9650
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
Present-No_Present=\u53D6\u6D88\u5F62\u6001\u8BBE\u7F6E
FR-Designer_Form-Password=\u5BC6\u7801
@ -1620,7 +1620,7 @@ Above=\u4EE5\u4E0A\u7248\u672C
Utils-The-Chart=\u56FE\u8868
FRFont-plain=\u5E38\u89C4
Calculating=\u5904\u7406\u4E2D
Form-Object=\u8868\u5355\u5BF9\u8C61\:
Form-Object=\u51B3\u7B56\u62A5\u8868\u5BF9\u8C61\:
May=\u4E94\u6708
FR-Designer_Plugin_Normal_Update=\u66F4\u65B0
FR-Hyperlink_Reportlet=\u7F51\u7EDC\u62A5\u8868
@ -1755,7 +1755,7 @@ ReportServerP-Last=\u672B\u9875
FR-Base_Columns=\u5217
SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7EC4\u5185
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
Component_Scale=\u7EC4\u4EF6\u7F29\u653E
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
Unit_Hundred=\u767E
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
Actions=\u4EFB\u52A1
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
Opened=\u5DF2\u5F00\u542F
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
Sche-Second=\u79D2
Server-Open_Service_Manager=\u6253\u5F00\u670D\u52A1\u7BA1\u7406\u5668
@ -1994,7 +1994,7 @@ FR-Designer_AlphaFine_EnableInternet=\u8054\u7F51
FR-Designer_AlphaFine_EnableInternetSearch=\u8054\u7F51\u641C\u7D22
FR-Designer_AlphaFine_Shortcut_Config=\u5FEB\u6377\u952E\u914D\u7F6E
FR-Designer_AlphaFine_SearchRange=\u641C\u7D22\u8303\u56F4
FR-Designer-Plugin_Addon=\u5E94\u7528\u4E2D\u5FC3
FR-Designer-Plugin_Addon=\u5E06\u8F6F\u5E02\u573A
FR-Designer_Templates=\u6A21\u677F
FR-Designer_Templates_Content=\u6A21\u677F\u5185\u5BB9
FR-Designer_AlphaFine_ShowAll=\u663E\u793A\u5168\u90E8
@ -2149,6 +2149,9 @@ FR-Designer_Provide_Choose_All=
FR-Designer_Decimal_Places=
FR-Designer_Env_Des_Https=\u82E5\u542F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8BC1\u4E66\u8DEF\u5F84\u3001https\u79D8\u94A5\uFF09\uFF0C\u5FC5\u987B\u91CD\u542F\u8BBE\u8BA1\u5668\u624D\u80FD\u751F\u6548\u3002
FR-Designer_Format_JavaScript=\u683C\u5F0F\u5316\u4EE3\u7801
FR-Designer_Tip_Content=\u63D0\u793A\u5185\u5BB9
FR-Designer_Chart_Empty_Data=\u56FE\u8868\u7A7A\u6570\u636E\u63D0\u793A
FR-Designer-Vcs_tab_click=\u8BF7\u5148\u9000\u51FA\u7248\u672C\u7BA1\u7406\u72B6\u6001\u518D\u5207\u6362\u6A21\u677F
FR-Designer_Preference_CachingTemplate=\u6A21\u677F\u5185\u5B58\u4F18\u5316
FR-Designer_Preference_MaxCachingTemplate=\u8BBE\u8BA1\u5668\u6700\u5927\u7F13\u5B58\u6A21\u677F\u4E2A\u6570\uFF1A
FR-Designer_Preference_CachingTemplateTip=\u8BBE\u7F6E\u4E3A0\u8868\u793A\u5173\u95ED\u8BE5\u529F\u80FD\uFF1B\u91CD\u542F\u8BBE\u8BA1\u5668\u540E\u751F\u6548
@ -2163,4 +2166,4 @@ FR-Designer_Tab_Template_Three=\u6A21\u677F\u4E09
FR-Designer_Tab_Template_Four=\u6A21\u677F\u56DB
FR-Designer_Tab_Template_Five=\u6A21\u677F\u4E94
FR-Designer_Tab_Template_Six=\u6A21\u677F\u516D
FR-Designer_Tab_Display_Position=\u663E\u793A\u4F4D\u7F6E
FR-Designer_Tab_Display_Position=\u663E\u793A\u4F4D\u7F6E

39
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_Font-Family=\u5B57\u9AD4\u540D\u7A31
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_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_EmbeddedTD=\u5167\u5D01\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_Hide=\u96B1\u85CF
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_Icon=\u5716\u793A
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_Cancel=\u53D6\u6D88
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_Custom=\u81EA\u5B9A\u7FA9
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_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_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_Background_Null=\u6C92\u6709\u80CC\u666F
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.
PageSetup-Paper_Size=\u7D19\u5F35\u5927\u5C0F
M-Page_Setup=\u9801\u9762\u8A2D\u5B9A
DashBoard-FormBook=\u8868\u55AE
DashBoard-FormBook=\u6C7A\u7B56\u5831\u8868
X-Coordinate=\u6A6B\u5EA7\u6A19
Style-Line_Spacing=\u5217\u9593\u8DDD
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
Utils-Row_Height=\u5217\u9AD8
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
M_Insert-Hyperlink=\u8D85\u7D1A\u93C8\u63A5
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
Root=\u6839\u7BC0\u9EDE
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
GROUPING_MODE=\u666E\u901A\u5206\u7D44
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
HF-Even_Page=\u5076\u6578\u9801
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
BorderLayout-Center=\u4E2D
INFO-Reset_Webapp=\u91CD\u7F6E\u61C9\u7528\u4F3A\u670D\u5668
@ -1439,7 +1439,7 @@ ReportColumns-Columns_after=\u8D85\u904E
FR-Designer_Undo=\u5FA9\u539F
DBCP_MIN_IDLE=\u6700\u5C0F\u7A7A\u9591\u9023\u63A5\u6578
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
quote=\u5F15\u7528
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?
Nation=\u570B\u5BB6
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
Sub_Report=\u5B50\u5831\u8868
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
BackgroundTexture-FishFossil=\u9B5A\u985E\u5316\u77F3
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
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
@ -1594,7 +1594,7 @@ FS_Report_Type=\u985E\u578B
HF-New_Line=\u63DB\u5217\u7B26
Privilege=\u6B0A\u9650
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
Present-No_Present=\u53D6\u6D88\u6A21\u5F0F\u8A2D\u5B9A
FR-Designer_Form-Password=\u5BC6\u78BC
@ -1618,7 +1618,7 @@ Above=\u4EE5\u4E0A\u7248\u672C
Utils-The-Chart=\u5716\u8868
FRFont-plain=\u5E38\u898F
Calculating=\u8655\u7406\u4E2D
Form-Object=\u8868\u55AE\u5C0D\u8C61
Form-Object=\u6C7A\u7B56\u5831\u8868\u5C0D\u8C61
May=\u4E94\u6708
FR-Designer_Plugin_Normal_Update=Update
FR-Hyperlink_Reportlet=\u7DB2\u8DEF\u5831\u8868
@ -1753,7 +1753,7 @@ ReportServerP-Last=\u672B\u9801
FR-Base_Columns=\u6B04
SpecifiedG-Leave_in_their_own_groups=\u7559\u5728\u5404\u81EA\u7684\u7D44\u5167
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
Component_Scale=\u5143\u4EF6\u7E2E\u653E
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
Unit_Hundred=\u4F70
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
Actions=\u4EFB\u52D9
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
Opened=\u5DF2\u958B\u5553
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
Sche-Second=\u79D2
Server-Open_Service_Manager=\u6253\u958B\u4F3A\u670D\u5668\u7BA1\u7406\u5668
@ -1992,7 +1992,7 @@ FR-Designer_AlphaFine_EnableInternetSearch=\u806F\u7DB2\u641C\u7D22
FR-Designer_AlphaFine_Shortcut_Config=\u5FEB\u6377\u9375\u914D\u7F6E
FR-Designer_AlphaFine_SearchRange=\u641C\u7D22\u7BC4\u570D
FR-Designer_AlphaFine_Recommend=\u731C\u60A8\u9700\u8981
FR-Designer-Plugin_Addon=\u61C9\u7528\u4E2D\u5FC3
FR-Designer-Plugin_Addon=\u5E06\u8EDF\u5E02\u5834
FR-Designer_Templates=\u6A21\u677F
FR-Designer_Templates_Content=\u6A21\u677F\u5167\u5BB9
FR-Designer_AlphaFine_Latest=\u6700\u8FD1\u5E38\u7528
@ -2148,6 +2148,9 @@ FR-Designer_Provide_Choose_All=
FR-Designer_Decimal_Places=
FR-Designer_Env_Des_Https=\u82E5\u555F\u7528https\u6216\u4FEE\u6539https\u914D\u7F6E\uFF08\u8B49\u66F8\u8DEF\u5F91\u3001https\u7955\u9470\uFF09\uFF0C\u5FC5\u9808\u91CD\u555F\u8A2D\u8A08\u5668\u624D\u80FD\u751F\u6548\u3002
FR-Designer_Format_JavaScript=Format Code
FR-Designer_Tip_Content=
FR-Designer_Chart_Empty_Data=
FR-Designer-Vcs_tab_click=
FR-Designer_Preference_CachingTemplate=\u7BC4\u672C\u8A18\u61B6\u9AD4\u512A\u5316
FR-Designer_Preference_MaxCachingTemplate=\u8A2D\u8A08\u5668\u6700\u5927\u7DE9\u5B58\u7BC4\u672C\u500B\u6578\uFF1A
FR-Designer_Preference_CachingTemplateTip=\u8A2D\u5B9A\u70BA0\u8868\u793A\u95DC\u9589\u8A72\u529F\u80FD\uFF1B\u91CD\u5553\u8A2D\u8A08\u5668\u5F8C\u751F\u6548

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.DesignerEnvManager;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.core.ActionFactory;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.DesignTableDataManager;
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.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 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.Transferable;
import java.awt.dnd.*;
@ -734,6 +749,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
* @param jt 添加的模板.
*/
public void addAndActivateJTemplate(JTemplate<?, ?> jt) {
//释放模板对象
ActionFactory.editorRelease();
if (jt == null || jt.getEditingFILE() == null) {
return;
}
@ -750,6 +767,8 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
* @param jt 模板
*/
public void activateJTemplate(JTemplate<?, ?> jt) {
//释放模板对象
ActionFactory.editorRelease();
if (jt == null || jt.getEditingFILE() == null) {
return;
}

39
designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java

@ -10,7 +10,11 @@ import com.fr.design.constants.UIConstants;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.TableDataTreePane;
import com.fr.design.data.tabledata.ResponseDataSourceChange;
import com.fr.design.file.*;
import com.fr.design.file.FileOperations;
import com.fr.design.file.FileToolbarStateChangeListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.file.MutilTempalteTabPane;
import com.fr.design.file.TemplateTreePane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.imenu.UIMenuHighLight;
@ -41,6 +45,7 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@ -51,6 +56,11 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
private CardLayout card;
private JPanel cardPane;
private java.util.List<FileToolbarStateChangeListener> otherToobarStateChangeListeners= new ArrayList<>();
public FileOperations getSelectedOperation() {
return selectedOperation;
}
private FileOperations selectedOperation;
private UIToolbar toolBar;
@ -133,7 +143,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
}
toolbarDef.addShortCut(delFileAction);
Set<ShortCut> extraShortCuts = ExtraDesignClassManager.getInstance().getExtraShortCuts();
for (ShortCut shortCut : extraShortCuts){
for (ShortCut shortCut : extraShortCuts) {
toolbarDef.addShortCut(shortCut);
}
@ -159,8 +169,9 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
}
/**
* 响应数据集改变
* @param map 改变名字的数据集
* 响应数据集改变
*
* @param map 改变名字的数据集
*/
public void fireDSChanged(Map<String, String> map) {
DesignTableDataManager.fireDSChanged(map);
@ -211,6 +222,21 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public void actionPerformed(ActionEvent evt) {
selectedOperation.refresh();
stateChange();
}
}
public void addToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) {
this.otherToobarStateChangeListeners.add(toobarStateChangeListener);
}
public void removeToobarStateChangeListener(FileToolbarStateChangeListener toobarStateChangeListener) {
this.otherToobarStateChangeListeners.remove(toobarStateChangeListener);
}
private void otherStateChange() {
for (FileToolbarStateChangeListener toobarStateChangeListener : otherToobarStateChangeListeners) {
toobarStateChangeListener.stateChange();
}
}
@ -294,8 +320,8 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
openReportAction.setEnabled(false);
}
FileNode node = TemplateTreePane.getInstance().getTemplateFileTree().getSelectedFileNode();
if (selectedOperation.getSelectedTemplatePath() != null){
if (node.getLock() != null && !ComparatorUtils.equals(node.getUserID(),node.getLock())){
if (selectedOperation.getSelectedTemplatePath() != null) {
if (node.getLock() != null && !ComparatorUtils.equals(node.getUserID(), node.getLock())) {
delFileAction.setEnabled(false);
} else {
delFileAction.setEnabled(true);
@ -328,6 +354,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
delFileAction.setEnabled(true);
}
otherStateChange();
}
/**

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

@ -499,7 +499,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private boolean isEnabled = true; // 是否可用
private Set<PropertyMode> visibleModes;
private Set<PropertyMode> enableModes;
private static final int MAX_PARA_HEIGHT = 240;
// 完整icon路径为 ICON_BASE_DIR + btnIconName + iconSuffix
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) {
contentArea.remove(headerPane);
int height = Math.min(pane.getPreferredSize().height, MAX_PARA_HEIGHT);
pane.setPreferredSize(new Dimension(pane.getPreferredSize().width, height));
headerPane = pane;
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.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.ChangeListener;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.NumberFormatter;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
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;
/**
@ -51,7 +71,6 @@ public class JFormSliderPane extends JPanel {
private static final Color BACK_COLOR = new Color(245, 245, 247);
public int showValue = 100;
public double resolutionTimes = 1.0;
private static JFormSliderPane THIS;
private UITextField showVal;
private JSpinner showValSpinner;
private UISlider slider;
@ -62,7 +81,7 @@ public class JFormSliderPane extends JPanel {
private UISliderButton showValButton;
private UIRadioButton twoHundredButton;
private UIRadioButton oneHundredButton;
private UIRadioButton SevenFiveButton;
private UIRadioButton sevenFiveButton;
private UIRadioButton fiveTenButton;
private UIRadioButton twoFiveButton;
private UIRadioButton selfAdaptButton;
@ -83,7 +102,7 @@ public class JFormSliderPane extends JPanel {
showValSpinner.setEditor(editor);
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.setEditable(true);
DefaultFormatterFactory factory = (DefaultFormatterFactory) textField .getFormatterFactory();
DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory();
NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();
formatter.setAllowsInvalid(false);
@ -91,7 +110,7 @@ public class JFormSliderPane extends JPanel {
initShowValButton();
initUIRadioButton();
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(slider);
panel.add(upButton);
@ -100,17 +119,13 @@ public class JFormSliderPane extends JPanel {
this.add(panel, BorderLayout.NORTH);
}
public static final JFormSliderPane getInstance() {
// if (THIS == null) {
// THIS = new JSliderPane();
// }
THIS = new JFormSliderPane();
return THIS;
public static JFormSliderPane getInstance() {
return new JFormSliderPane();
}
private void initSlider() {
slider = new UISlider(0, HUNDRED, HALF_HUNDRED){
public Point getToolTipLocation(MouseEvent event){
slider = new UISlider(0, HUNDRED, HALF_HUNDRED) {
public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
@ -123,8 +138,8 @@ public class JFormSliderPane extends JPanel {
}
private void initShowValSpinner() {
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)){
public Point getToolTipLocation(MouseEvent event){
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, 0, FOUR_HUNDRED, 1)) {
public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
@ -134,16 +149,16 @@ public class JFormSliderPane extends JPanel {
}
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")){
public Point getToolTipLocation(MouseEvent event){
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) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
downButton.setOpaque(false);
downButton.setBorderPainted(false);
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")){
public Point getToolTipLocation(MouseEvent event){
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) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
@ -164,10 +179,11 @@ public class JFormSliderPane extends JPanel {
showValButton.addActionListener(showValButtonActionListener);
showValButton.setToolTipText(Inter.getLocText("FR-Designer_Scale_Grade"));
}
private void initUIRadioButton() {
twoHundredButton = new UIRadioButton("200%");
oneHundredButton = new UIRadioButton("100%");
SevenFiveButton = new UIRadioButton("75%");
sevenFiveButton = new UIRadioButton("75%");
fiveTenButton = new UIRadioButton("50%");
twoFiveButton = new UIRadioButton("25%");
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));
twoHundredButton.addItemListener(radioButtonItemListener);
oneHundredButton.addItemListener(radioButtonItemListener);
SevenFiveButton.addItemListener(radioButtonItemListener);
sevenFiveButton.addItemListener(radioButtonItemListener);
fiveTenButton.addItemListener(radioButtonItemListener);
twoFiveButton.addItemListener(radioButtonItemListener);
customButton.addItemListener(new ItemListener() {
@ -194,7 +210,7 @@ public class JFormSliderPane extends JPanel {
ButtonGroup bg = new ButtonGroup();// 初始化按钮组
bg.add(twoHundredButton);// 加入按钮组
bg.add(oneHundredButton);
bg.add(SevenFiveButton);
bg.add(sevenFiveButton);
bg.add(fiveTenButton);
bg.add(twoFiveButton);
bg.add(selfAdaptButton);
@ -217,7 +233,7 @@ public class JFormSliderPane extends JPanel {
septPane.setBackground(BACK_COLOR);
twoHundredButton.setBackground(BACK_COLOR);
oneHundredButton.setBackground(BACK_COLOR);
SevenFiveButton.setBackground(BACK_COLOR);
sevenFiveButton.setBackground(BACK_COLOR);
fiveTenButton.setBackground(BACK_COLOR);
twoFiveButton.setBackground(BACK_COLOR);
// selfAdaptButton.setBackground(BACK_COLOR);
@ -227,7 +243,7 @@ public class JFormSliderPane extends JPanel {
new Component[]{septPane, null},
new Component[]{twoHundredButton, null},
new Component[]{oneHundredButton, null},
new Component[]{SevenFiveButton, null},
new Component[]{sevenFiveButton, null},
new Component[]{fiveTenButton, null},
new Component[]{twoFiveButton, null},
new Component[]{customButton, createSpinnerPanel()}
@ -247,14 +263,14 @@ public class JFormSliderPane extends JPanel {
return spinnerPanel;
}
ActionListener showValButtonActionListener = new ActionListener() {
private ActionListener showValButtonActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
popupDialog();
}
};
ChangeListener showValSpinnerChangeListener = new ChangeListener() {
private ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
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) {
//取出滑动条的值,并在文本中显示出来
if (!isButtonOrIsTxt) {
@ -296,7 +312,7 @@ public class JFormSliderPane extends JPanel {
}
};
ItemListener radioButtonItemListener = new ItemListener() {
private ItemListener radioButtonItemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
JRadioButton temp = (JRadioButton) e.getSource();
@ -312,7 +328,7 @@ public class JFormSliderPane extends JPanel {
slider.setValue((int) (showValue + TWO_HUNDRED) / SIX);
} else if (showValue < HUNDRED) {
slider.setValue((int) ((showValue - TEN) / ONEPOINTEIGHT));
} else if (showValue == HUNDRED) {
} else {
slider.setValue(HALF_HUNDRED);
}
}
@ -336,7 +352,7 @@ public class JFormSliderPane extends JPanel {
return b1.divide(b2, scale).doubleValue();
}
ActionListener buttonActionListener = new ActionListener() {
private ActionListener buttonActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showValue = (int) showValSpinner.getValue();

6
designer_base/src/com/fr/design/mainframe/JTemplate.java

@ -3,6 +3,7 @@ package com.fr.design.mainframe;
import com.fr.base.*;
import com.fr.base.io.IOFile;
import com.fr.base.iofileattr.TemplateIdAttrMark;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.DesignModelAdapter;
import com.fr.design.DesignState;
import com.fr.design.DesignerEnvManager;
@ -29,6 +30,7 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.templateinfo.TemplateInfoCollector;
import com.fr.design.mainframe.templateinfo.TemplateProcessInfo;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.design.mainframe.toolbar.VcsScene;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.NameSeparator;
import com.fr.design.menu.ShortCut;
@ -682,7 +684,9 @@ public abstract class JTemplate<T extends IOFile, U extends BaseUndoState<?>> ex
* @return 返回菜单
*/
public ShortCut[] shortcut4FileMenu() {
if (BaseUtils.isAuthorityEditing()) {
if (DesignerMode.isVcsMode()) {
return VcsScene.shortcut4FileMenu(this);
} else if (BaseUtils.isAuthorityEditing()) {
return new ShortCut[]{new SaveTemplateAction(this), new UndoAction(this), new RedoAction(this)};
} else {
return new ShortCut[]{new SaveTemplateAction(this), new SaveAsTemplateAction(this), new UndoAction(this), new RedoAction(this)};

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

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

@ -5,6 +5,7 @@ package com.fr.design.mainframe.toolbar;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.base.vcs.DesignerMode;
import com.fr.design.DesignState;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.UpdateAction;
@ -58,7 +59,6 @@ import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener;
import com.fr.plugin.observer.PluginEventType;
import com.fr.stable.ArrayUtils;
import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
@ -132,6 +132,9 @@ public abstract class ToolBarMenuDock {
};
private static final String FINEREPORT = "FineReport";
private static final int MENUBAR_HEIGHT = 22;
private static final List<PluginEventListener> PLUGIN_LISTENERS = new ArrayList<>();
private MenuDef[] menus;
private ToolBarDef toolBarDef;
private List<UpdateActionModel> shortCutsList;
@ -177,7 +180,6 @@ public abstract class ToolBarMenuDock {
return dim;
}
};
this.menus = menus(plus);
for (int i = 0; i < menus.length; i++) {
menus[i].setHasRecMenu(true);
@ -202,6 +204,8 @@ public abstract class ToolBarMenuDock {
}
public MenuDef[] menus(final ToolBarMenuDockPlus plus) {
//删除之前创建的插件菜单监听
clearPluginListeners();
java.util.List<MenuDef> menuList = new java.util.ArrayList<MenuDef>();
// 添加文件菜单
menuList.add(createFileMenuDef(plus));
@ -231,7 +235,15 @@ public abstract class ToolBarMenuDock {
return menuList.toArray(new MenuDef[menuList.size()]);
}
private static synchronized void clearPluginListeners() {
for (PluginEventListener listener : PLUGIN_LISTENERS) {
GeneralContext.stopListenPlugin(listener);
}
PLUGIN_LISTENERS.clear();
}
/**
* 获取所有actionmodel
*
@ -316,8 +328,13 @@ public abstract class ToolBarMenuDock {
}
public MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) {
MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_File"), 'F');
if (DesignerMode.isVcsMode()) {
MenuDef menuDef = VcsScene.createFileMenuDef(plus);
insertMenu(menuDef, MenuHandler.FILE);
return menuDef;
}
MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_File"), 'F');
ShortCut[] scs = new ShortCut[0];
if (!BaseUtils.isAuthorityEditing()) {
scs = createNewFileShortCuts();
@ -603,9 +620,9 @@ public abstract class ToolBarMenuDock {
addExtraMenus(menuDef, anchor, action, set);
}
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() {
@Override
@ -614,29 +631,35 @@ public abstract class ToolBarMenuDock {
return context.contain(MenuHandler.MARK_STRING);
}
};
GeneralContext.listenPlugin(PluginEventType.BeforeStop, new PluginEventListener() {
PluginEventListener beforeStop = new PluginEventListener() {
@Override
public void on(PluginEvent event) {
PluginRuntime runtime = event.getContext().getRuntime();
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
removeExtraMenus(menuDef, anchor, action, menuHandlers);
}
}, filter);
GeneralContext.listenPlugin(PluginEventType.AfterRun, new PluginEventListener() {
};
PluginEventListener afterRun = new PluginEventListener() {
@Override
public void on(PluginEvent event) {
PluginRuntime runtime = event.getContext().getRuntime();
Set<MenuHandler> menuHandlers = runtime.get(MenuHandler.MARK_STRING);
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<>();
@ -658,8 +681,8 @@ public abstract class ToolBarMenuDock {
menuDef.removeShortCut(shortCut);
}
}
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<>();
for (MenuHandler handler : set) {

36
designer_base/src/com/fr/design/mainframe/toolbar/ToolBarNewTemplatePane.java

@ -0,0 +1,36 @@
package com.fr.design.mainframe.toolbar;
import com.fr.base.BaseUtils;
import com.fr.design.file.NewTemplatePane;
import javax.swing.*;
/**
* Created by hzzz on 2017/12/26.
*/
public class ToolBarNewTemplatePane extends NewTemplatePane {
private static final ToolBarNewTemplatePane instance = new ToolBarNewTemplatePane();
private ToolBarNewTemplatePane() {
}
public static NewTemplatePane getInstance() {
return instance;
}
@Override
public Icon getNew() {
return BaseUtils.readIcon("/com/fr/design/images/buttonicon/addicon.png");
}
@Override
public Icon getMouseOverNew() {
return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png");
}
@Override
public Icon getMousePressNew() {
return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png");
}
}

46
designer_base/src/com/fr/design/mainframe/toolbar/VcsScene.java

@ -0,0 +1,46 @@
package com.fr.design.mainframe.toolbar;
import com.fr.base.BaseUtils;
import com.fr.design.actions.edit.RedoAction;
import com.fr.design.actions.edit.UndoAction;
import com.fr.design.actions.file.ExitDesignerAction;
import com.fr.design.actions.file.PreferenceAction;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.menu.MenuDef;
import com.fr.design.menu.SeparatorDef;
import com.fr.design.menu.ShortCut;
import com.fr.general.Inter;
import com.fr.stable.ArrayUtils;
/**
* Created by hzzz on 2017/12/28.
*/
public class VcsScene {
public static MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) {
MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_File"), 'F');
ShortCut[] scs = new ShortCut[0];
if (!ArrayUtils.isEmpty(scs)) {
menuDef.addShortCut(scs);
}
scs = plus.shortcut4FileMenu();
if (!ArrayUtils.isEmpty(scs)) {
menuDef.addShortCut(SeparatorDef.DEFAULT);
menuDef.addShortCut(scs);
menuDef.addShortCut(SeparatorDef.DEFAULT);
}
if (!BaseUtils.isAuthorityEditing()) {
menuDef.addShortCut(new PreferenceAction());
}
menuDef.addShortCut(new ExitDesignerAction());
return menuDef;
}
public static ShortCut[] shortcut4FileMenu(JTemplate jTemplate) {
return new ShortCut[]{new UndoAction(jTemplate), new RedoAction(jTemplate)};
}
}

2
designer_base/src/com/fr/design/mainframe/widget/accessibles/TemplateStylePane.java

@ -41,11 +41,11 @@ public class TemplateStylePane extends BasicPane {
listModel = new DefaultListModel();
listModel.addElement(new DefaultTemplateStyle());
listModel.addElement(new CardTemplateStyle());
listModel.addElement(new BannerTemplateStyle());
listModel.addElement(new BookMarkTemplateStyle());
listModel.addElement(new PentagonTemplateStyle());
listModel.addElement(new MenuTemplateStyle());
listModel.addElement(new TrapezoidTemplateStyle());
listModel.addElement(new BannerTemplateStyle());
styleList = new JList(listModel);
styleList.setCellRenderer(render);

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>

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

Loading…
Cancel
Save