Browse Source

Merge pull request #639 in DESIGN/design from ~NEIL/design:10.0 to 10.0

* commit '53fe5fc1773a0ac20a682341a91428869c9a9b69':
  REPORT-12635
  无JIRA任务 删除过时的接口
  REPORT-11623 IOFile移动到报表中
  CHART-3252 更换单元格数据布局方式和边框大小
  REPORT-12852 10.0模板短信事件在mac下的提示弹框有问题
  REPORT-12710
  REPORT-12885 设计器鸣谢名单SiteCenter修改不生效
  REPORT-12865 文件控件,ie11下图标显示不出来了
  CHART-3413 优化改法
  CHART-3413 词云-系列 类型转换错误
  rt
  REPORT-9679 去除国际化影响,后续feature合进来之后统一定义成常量
10.0
neil 6 years ago
parent
commit
cc15db45ce
  1. 16
      designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java
  2. 19
      designer-base/src/main/java/com/fr/design/fun/Feedback.java
  3. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java
  4. 9
      designer-base/src/main/java/com/fr/design/web/CustomIconPane.java
  5. 10
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java
  6. 243
      designer-form/src/main/java/com/fr/design/designer/properties/EventPropertyTable.java
  7. 3
      designer-form/src/main/java/com/fr/design/mainframe/WidgetPropertyPane.java
  8. 34
      designer-realize/src/main/java/com/fr/design/mainframe/bbs/BBSConstants.java
  9. 2
      designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java
  10. 41
      designer-realize/src/main/java/com/fr/start/SplashContext.java
  11. 2
      designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java
  12. 2
      designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java

16
designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java

@ -7,7 +7,6 @@ package com.fr.design;
import com.fr.base.BaseUtils;
import com.fr.design.data.datapane.TableDataNameObjectCreator;
import com.fr.design.fun.CellWidgetOptionProvider;
import com.fr.design.fun.Feedback;
import com.fr.design.fun.FormWidgetOptionProvider;
import com.fr.design.fun.ParameterWidgetOptionProvider;
import com.fr.design.fun.ServerTableDataDefineProvider;
@ -19,8 +18,6 @@ import com.fr.design.menu.ShortCut;
import com.fr.design.widget.Appearance;
import com.fr.design.widget.mobile.WidgetMobilePane;
import com.fr.form.ui.Widget;
import com.fr.general.FRLogger;
import com.fr.general.GeneralUtils;
import com.fr.general.IOUtils;
import com.fr.plugin.AbstractExtraClassManager;
import com.fr.plugin.injectable.PluginModule;
@ -210,19 +207,6 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement
return map;
}
public Feedback getFeedback() {
try {
Class clazz = GeneralUtils.classForName("com.fr.design.feedback.CurrentFeedback");
if (clazz != null) {
return (Feedback) clazz.newInstance();
}
} catch (Exception e) {
FRLogger.getLogger().info("no feed back support");
}
return Feedback.EMPTY;
}
@Override
protected boolean demountSpecific(PluginSingleInjection injection) {

19
designer-base/src/main/java/com/fr/design/fun/Feedback.java

@ -1,19 +0,0 @@
package com.fr.design.fun;
/**
* @author richie
* @date 2015-03-31
* @since 8.0
*/
public interface Feedback {
String MARK_STRING = "FineReport_Feedback";
void didFeedback();
Feedback EMPTY = new Feedback() {
@Override
public void didFeedback() {
}
};
}

3
designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java

@ -249,7 +249,8 @@ abstract class UIControlPane extends JControlPane {
checkValid();
} catch (Exception exp) {
// 存在非法输入 拒绝隐藏
JOptionPane.showMessageDialog(UIControlPane.this.controlUpdatePane, exp.getMessage());
this.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(this, exp.getMessage());
this.requestFocus();
return;
}

9
designer-base/src/main/java/com/fr/design/web/CustomIconPane.java

@ -24,6 +24,8 @@ import com.fr.stable.Constants;
import com.fr.stable.CoreGraphHelper;
import com.fr.stable.ListMap;
import com.fr.stable.StringUtils;
import com.fr.transaction.Configurations;
import com.fr.transaction.WorkerFacade;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
@ -283,6 +285,13 @@ public class CustomIconPane extends BasicPane {
}
public String update() {
//把图标信息入库
Configurations.update(new WorkerFacade(WidgetInfoConfig.class) {
@Override
public void run() {
WidgetInfoConfig.getInstance().setIconManager(IconManager.getIconManager());
}
});
return selectedIconName;
}

10
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java

@ -12,7 +12,7 @@ import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -54,11 +54,11 @@ public abstract class AbstractExtendedChartReportDataPane<T extends AbstractData
Arrays.fill(rowSize, p);
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 24, 6);
panel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 15));
panel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 8));
this.setLayout(new FlowLayout());
this.add(panel);
this.add(addSouthPane());
this.setLayout(new BorderLayout());
this.add(panel, BorderLayout.CENTER);
this.add(addSouthPane(), BorderLayout.SOUTH);
}
protected JPanel addSouthPane() {

243
designer-form/src/main/java/com/fr/design/designer/properties/EventPropertyTable.java

@ -23,124 +23,131 @@ import java.util.ArrayList;
public class EventPropertyTable extends UIListControlPane {
private XCreator creator;
private FormDesigner designer;
public EventPropertyTable(FormDesigner designer) {
super();
this.designer = designer;
}
@Override
public String getAddItemText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Add_Event");
}
public static class WidgetEventListenerUpdatePane extends ListenerUpdatePane {
@Override
protected JavaScriptActionPane createJavaScriptActionPane() {
return new JavaScriptActionPane() {
@Override
protected DBManipulationPane createDBManipulationPane() {
return new DBManipulationPane(ValueEditorPaneFactory.formEditors());
}
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Callback_Function");
}
@Override
protected EmailPane initEmaiPane() {
return new FormEmailPane();
}
@Override
public boolean isForm() {
return true;
}
protected String[] getDefaultArgs() {
return new String[0];
}
};
}
@Override
protected boolean supportCellAction() {
return false;
}
}
private String switchLang(String eventName) {
// 在 properties 文件中找到相应的 key 值
private XCreator creator;
private FormDesigner designer;
public EventPropertyTable(FormDesigner designer) {
super();
this.designer = designer;
}
@Override
public String getAddItemText() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Add_Event");
}
public static class WidgetEventListenerUpdatePane extends ListenerUpdatePane {
@Override
protected JavaScriptActionPane createJavaScriptActionPane() {
return new JavaScriptActionPane() {
@Override
protected DBManipulationPane createDBManipulationPane() {
return new DBManipulationPane(ValueEditorPaneFactory.formEditors());
}
@Override
protected String title4PopupWindow() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Callback_Function");
}
@Override
protected EmailPane initEmaiPane() {
return new FormEmailPane();
}
@Override
public boolean isForm() {
return true;
}
protected String[] getDefaultArgs() {
return new String[0];
}
};
}
@Override
protected boolean supportCellAction() {
return false;
}
}
private String switchLang(String eventName) {
// 在 properties 文件中找到相应的 key 值
String localeKey = ReportEngineEventMapping.getLocaleName(eventName);
return com.fr.design.i18n.Toolkit.i18nText(localeKey);
}
/**
* 刷新
*/
public void refresh() {
int selectionSize = designer.getSelectionModel().getSelection().size();
if (selectionSize == 0 || selectionSize == 1) {
this.creator = selectionSize == 0 ? designer.getRootComponent() : designer.getSelectionModel()
.getSelection().getSelectedCreator();
} else {
this.creator = null;
((DefaultListModel) nameableList.getModel()).removeAllElements();
checkButtonEnabled();
return;
}
Widget widget = creator.toData();
refreshNameableCreator(EventCreator.createEventCreator(widget.supportedEvents(), WidgetEventListenerUpdatePane.class));
ArrayList<NameObject> nameObjectList = new ArrayList<>();
for (int i = 0, size = widget.getListenerSize(); i < size; i++) {
Listener listener = widget.getListener(i);
if (!listener.isDefault()) {
nameObjectList.add(i, new NameObject(switchLang(listener.getEventName()) + (i + 1), listener));
}
}
populate(nameObjectList.toArray(new NameObject[widget.getListenerSize()]));
checkButtonEnabled();
this.repaint();
}
/**
* 更新控件事件
* @param creator 控件
*/
public void updateWidgetListener(XCreator creator) {
(creator.toData()).clearListeners();
Nameable[] res = this.update();
for (int i = 0; i < res.length; i++) {
NameObject nameObject = (NameObject)res[i];
(creator.toData()).addListener((Listener) nameObject.getObject());
}
designer.fireTargetModified();
checkButtonEnabled();
}
@Override
protected String title4PopupWindow() {
return "Event";
}
@Override
public NameableCreator[] createNameableCreators() {
return new NameableCreator[]{
new EventCreator(Widget.EVENT_STATECHANGE, WidgetEventListenerUpdatePane.class)
};
}
@Override
public void saveSettings() {
if (isPopulating) {
return;
}
updateWidgetListener(creator);
}
}
/**
* 刷新
*/
public void refresh() {
int selectionSize = designer.getSelectionModel().getSelection().size();
if (selectionSize == 0 || selectionSize == 1) {
this.creator = selectionSize == 0 ? designer.getRootComponent() : designer.getSelectionModel()
.getSelection().getSelectedCreator();
} else {
this.creator = null;
((DefaultListModel) nameableList.getModel()).removeAllElements();
checkButtonEnabled();
return;
}
Widget widget = creator.toData();
refreshNameableCreator(EventCreator.createEventCreator(widget.supportedEvents(), WidgetEventListenerUpdatePane.class));
}
public void populateNameObjects() {
Widget widget = creator.toData();
ArrayList<NameObject> nameObjectList = new ArrayList<>();
for (int i = 0, size = widget.getListenerSize(); i < size; i++) {
Listener listener = widget.getListener(i);
if (!listener.isDefault()) {
nameObjectList.add(i, new NameObject(switchLang(listener.getEventName()) + (i + 1), listener));
}
}
populate(nameObjectList.toArray(new NameObject[widget.getListenerSize()]));
checkButtonEnabled();
this.repaint();
}
/**
* 更新控件事件
*
* @param creator 控件
*/
public void updateWidgetListener(XCreator creator) {
(creator.toData()).clearListeners();
Nameable[] res = this.update();
for (int i = 0; i < res.length; i++) {
NameObject nameObject = (NameObject) res[i];
(creator.toData()).addListener((Listener) nameObject.getObject());
}
designer.fireTargetModified();
checkButtonEnabled();
}
@Override
protected String title4PopupWindow() {
return "Event";
}
@Override
public NameableCreator[] createNameableCreators() {
return new NameableCreator[]{
new EventCreator(Widget.EVENT_STATECHANGE, WidgetEventListenerUpdatePane.class)
};
}
@Override
public void saveSettings() {
if (isPopulating) {
return;
}
updateWidgetListener(creator);
}
}

3
designer-form/src/main/java/com/fr/design/mainframe/WidgetPropertyPane.java

@ -108,6 +108,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper
*/
private void initTables() {
formWidgetCardPane.populate();
eventTable.refresh();
if (mobileExtraPropertyPanes != null) {
for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) {
@ -233,7 +234,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper
public void tabChanged(int index) {
//切换的时候再populate
if (index == 1) {
eventTable.refresh();
eventTable.populateNameObjects();
} else if (index == 2) {
if (mobileExtraPropertyPanes != null) {
for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) {

34
designer-realize/src/main/java/com/fr/design/mainframe/bbs/BBSConstants.java

@ -26,29 +26,51 @@ public class BBSConstants {
private static Properties PROP = null;
/**
* 获取所有的感谢对象无法获取在线使用默认
* @return 感谢对象的数组
*/
public static String[] getAllGuest() {
return loadAllGuestsInfoOnline(GUEST_KEY_ONLINE, loadAllGuestsInfo(GUEST_KEY));
}
/**
* 获取所有的链接无法获取在线使用默认
* @return 链接的数组
*/
public static String[] getAllLink() {
return loadAllGuestsInfoOnline(LINK_KEY_ONLINE, loadAllGuestsInfo(LINK_KEY));
}
//加载所有用户的信息, 用户名, 论坛连接
/**
* 获取所有的感谢对象手动选择策略
* @return 感谢对象的数组
*/
public static String[] getAllGuestManual(boolean isOnline) {
String guest;
if (isOnline) {
guest = CloudCenter.getInstance().acquireUrlByKind(GUEST_KEY_ONLINE, StringUtils.EMPTY);
} else {
guest = loadAllGuestsInfo(GUEST_KEY);
}
if (StringUtils.isNotEmpty(guest)) {
return guest.split("\\|");
}
return new String[0];
}
private static String loadAllGuestsInfo(String key) {
return loadAttribute(key, StringUtils.EMPTY);
}
//加载所有用户的信息, 用户名, 论坛连接
private static String[] loadAllGuestsInfoOnline(String key, String defaultValue) {
String[] allGuests = new String[0];
String guest = CloudCenter.getInstance().acquireUrlByKind(key, defaultValue);
if (StringUtils.isNotEmpty(guest)) {
allGuests = guest.split("\\|");
return guest.split("\\|");
}
return allGuests;
return new String[0];
}
//如果要定制, 直接改bbs.properties就行了
private static String loadAttribute(String key, String defaultValue) {
if (PROP == null) {

2
designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java

@ -129,7 +129,7 @@ public class ReportWebWidgetConstants {
BaseUtils.readIcon("/com/fr/web/images/appendRow.png"), AppendColumnRow.class);
public static final WidgetOption DELETECOLUMNROW = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Utils_Delete_Record"),
BaseUtils.readIcon("/com/fr/web/images/deleteRow.png"), DeleteColumnRow.class);
public static final WidgetOption VERIFY = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Verify_Data_Verify"), BaseUtils.readIcon("/com/fr/web/images/verify.gif"),
public static final WidgetOption VERIFY = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Verify_Data_Verify"), BaseUtils.readIcon("/com/fr/web/images/verify.png"),
Verify.class);
public static final WidgetOption SUBMITFORCIBLY = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Utils_Submit_Forcibly"),
BaseUtils.readIcon("/com/fr/web/images/save2.png"), SubmitForcibly.class);

41
designer-realize/src/main/java/com/fr/start/SplashContext.java

@ -24,6 +24,7 @@ public class SplashContext {
public static final String SPLASH_PATH = "/com/fr/design/images/splash_10.gif";
public static final String SPLASH_CACHE_NAME = "splash_10.gif";
private static final int FETCH_ONLINE_MAX_TIMES = 10;
private static final SplashContext SPLASH_CONTEXT = new SplashContext();
@ -33,7 +34,8 @@ public class SplashContext {
private int loadingIndex = 0;
private String[] loading = new String[]{"..", "....", "......"};
private static final String GUEST = getRandomUser();
private int fetchOnlineTimes = 0;
private String guest = StringUtils.EMPTY;
private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
@ -81,6 +83,7 @@ public class SplashContext {
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
showThanks();
loadingIndex++;
updateModuleLog(moduleID.isEmpty() ? StringUtils.EMPTY : moduleID + loading[loadingIndex % 3]);
}
@ -90,7 +93,6 @@ public class SplashContext {
@Override
public void on(Event event, String i18n) {
showThanks();
moduleID = i18n;
loadingIndex++;
updateModuleLog(moduleID.isEmpty() ? StringUtils.EMPTY : moduleID + loading[loadingIndex % 3]);
@ -110,21 +112,42 @@ public class SplashContext {
/**
* 获取随机感谢人员
*/
private static String getRandomUser() {
String[] allGuest = BBSConstants.getAllGuest();
if (allGuest.length == 0) {
return StringUtils.EMPTY;
}
private String getRandomUser(String[] allGuest) {
int num = new Random().nextInt(allGuest.length);
return StringUtils.BLANK + allGuest[num];
}
/**
* 展示感谢信息
* 尝试获取在线资源达到尝试上限之后使用默认值
*/
private void tryFetchOnline() {
if (StringUtils.isNotEmpty(guest)) {
return;
}
String[] allGuest;
if (fetchOnlineTimes < FETCH_ONLINE_MAX_TIMES) {
allGuest = BBSConstants.getAllGuestManual(true);
if (allGuest.length == 0) {
fetchOnlineTimes++;
return;
}
} else {
allGuest = BBSConstants.getAllGuestManual(false);
}
guest = getRandomUser(allGuest);
}
/**
* 展示感谢信息这里场景是优先使用在线名单
* 甚至可以因此可以延迟几秒显示目前是尝试
* 获取10次在线资源最大时间3秒
*/
private void showThanks() {
if (shouldShowThanks()) {
updateThanksLog(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Thanks_To") + GUEST);
tryFetchOnline();
if (StringUtils.isNotEmpty(guest)) {
updateThanksLog(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Thanks_To") + guest);
}
}
}

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

@ -172,8 +172,6 @@ public class DesignerActivator extends Activator {
designerRegister();
InformationCollector.getInstance().collectStartTime();
ExtraDesignClassManager.getInstance().getFeedback().didFeedback();
}
private static void preLoadPane() {

2
designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java

@ -370,7 +370,7 @@ public class ImagePreLoader {
"com/fr/web/images/scale.png",
"com/fr/web/images/appendRow.png",
"com/fr/web/images/deleteRow.png",
"com/fr/web/images/verify.gif",
"com/fr/web/images/verify.png",
"com/fr/web/images/save2.png",
"com/fr/design/images/m_file/export.png",
"com/fr/web/images/showValue.png",

Loading…
Cancel
Save