Browse Source

Merge pull request #4417 in DESIGN/design from feature/10.0 to research/10.0

* commit 'ef88c54c254e107150d5e3f742d9f55eec99e688':
  REPORT-52942 处理插件提到公共模块稍后展示
  REPORT-51678 事件配置项支持重命名
  REPORT-52928 部分埋点没有记录
  REPORT-52895 部分埋点没有记录
  REPORT-52818 图表块点击快捷配置触发了编辑效果
  REPORT-52816 编辑框对齐
  REPORT-52819 加密组件加载相关逻辑补充
research/10.0
superman 3 years ago
parent
commit
342a920ee7
  1. 2
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  2. 5
      designer-base/src/main/java/com/fr/design/mainframe/share/collect/ComponentCollector.java
  3. 8
      designer-base/src/main/java/com/fr/design/mainframe/share/collect/SharableCollectorManager.java
  4. 9
      designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java
  5. 25
      designer-form/src/main/java/com/fr/design/mainframe/JForm.java
  6. 13
      designer-form/src/main/java/com/fr/design/mainframe/share/util/SharableXMLUtils.java
  7. 18
      designer-form/src/main/java/com/fr/design/mainframe/share/util/ShareComponentUtils.java
  8. 65
      designer-realize/src/main/java/com/fr/design/mainframe/app/AbstractWorkBookApp.java
  9. 83
      designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppUtils.java
  10. 1
      designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java
  11. 11
      designer-realize/src/main/java/com/fr/design/share/SharableInitManager.java
  12. 3
      designer-realize/src/main/java/com/fr/design/share/effect/EffectItemGroup.java
  13. 11
      designer-realize/src/main/java/com/fr/design/share/effect/ListenerEffectItem.java
  14. 3
      designer-realize/src/main/java/com/fr/design/share/ui/config/table/ConfigTableModel.java
  15. 2
      designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareMainPane.java
  16. 3
      designer-realize/src/main/java/com/fr/design/share/ui/generate/table/EffectTableModel.java
  17. 3
      designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

2
designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java

@ -15,6 +15,7 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.VerticalFlowLayout;
import com.fr.design.mainframe.reuse.ReuseGuideDialog;
import com.fr.design.mainframe.reuse.SnapChatKeys;
import com.fr.design.mainframe.share.collect.ComponentCollector;
import com.fr.design.menu.SnapChatUtil;
import com.fr.design.notification.SnapChat;
import com.fr.design.notification.SnapChatFactory;
@ -313,6 +314,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ComponentCollector.getInstance().collectCmpBoardClick();
ComponentReuseNotifyUtil.enterWidgetLibExtraAction(true);
}
});

5
designer-base/src/main/java/com/fr/design/mainframe/share/collect/ComponentCollector.java

@ -12,6 +12,7 @@ import com.fr.form.share.Group;
import com.fr.form.share.group.filter.DirFilter;
import com.fr.form.share.group.filter.ReuFilter;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralUtils;
import com.fr.json.JSON;
import com.fr.json.JSONArray;
import com.fr.json.JSONException;
@ -371,7 +372,7 @@ public class ComponentCollector implements XMLable {
sortType = JSONFactory.createJSON(JSON.ARRAY);
}
private int cmpBoardClickDaily() {
private int cmpBoardClickDaily() {
DateTime dateTime = DateTime.parse(startTime);
DateTime currTime = DateTime.now();
@ -524,7 +525,7 @@ public class ComponentCollector implements XMLable {
jo.put("userId", MarketConfig.getInstance().getBBSAttr().getBbsUid());
jo.put("uuid", uuid);
jo.put("cmpBoardClickDaily", cmpBoardClickDaily());
jo.put("pluginVersion", PluginContexts.currentContext().getVersion());
jo.put("pluginVersion", GeneralUtils.readBuildNO());
jo.put("localCmpNumber", localCmpNumber);
jo.put("remoteCmpNumber", remoteCmpNumber);
jo.put("uploadCmpNumber", uploadCmpNumber);

8
designer-base/src/main/java/com/fr/design/mainframe/share/collect/CollectorManager.java → designer-base/src/main/java/com/fr/design/mainframe/share/collect/SharableCollectorManager.java

@ -14,7 +14,7 @@ import java.util.concurrent.TimeUnit;
/**
* created by Harrison on 2020/03/25
**/
public class CollectorManager {
public class SharableCollectorManager {
/**
* 1
@ -32,10 +32,10 @@ public class CollectorManager {
private ScheduledExecutorService service;
private static class ConfigManagerHolder {
private static CollectorManager instance = new CollectorManager();
private static SharableCollectorManager instance = new SharableCollectorManager();
}
public static CollectorManager getInstance() {
public static SharableCollectorManager getInstance() {
return ConfigManagerHolder.instance;
}
@ -43,7 +43,7 @@ public class CollectorManager {
public void execute() {
service = Executors
.newSingleThreadScheduledExecutor(new NamedThreadFactory("plugin-CollectorManager", true));
.newSingleThreadScheduledExecutor(new NamedThreadFactory("SharableComponentCollectorManager", true));
service.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {

9
designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java

@ -255,6 +255,10 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
* @param e 鼠标点击事件
*/
public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) {
if (this.isShareConfigButtonFocus()) {
CoverReportPane.showShareConfig(((XCreator) this.getParent()).toData());
return;
}
FormDesigner designer = editingMouseListener.getDesigner();
SelectionModel selectionModel = editingMouseListener.getSelectionModel();
isEditing = e.getButton() == MouseEvent.BUTTON1 &&
@ -272,11 +276,6 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
}
}
}
if (this.isShareConfigButtonFocus()) {
CoverReportPane.showShareConfig(((XCreator) this.getParent()).toData());
}
}
@Override

25
designer-form/src/main/java/com/fr/design/mainframe/JForm.java

@ -45,6 +45,8 @@ import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.form.FormECCompositeProvider;
import com.fr.design.mainframe.form.FormECDesignerProvider;
import com.fr.design.mainframe.share.collect.ComponentCollector;
import com.fr.design.mainframe.share.util.ShareComponentUtils;
import com.fr.design.mainframe.template.info.JFormProcessInfo;
import com.fr.design.mainframe.template.info.TemplateProcessInfo;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
@ -74,6 +76,7 @@ import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WBorderLayout;
import com.fr.form.ui.container.WLayout;
import com.fr.general.ComparatorUtils;
import com.fr.json.JSONArray;
import com.fr.log.FineLoggerFactory;
import com.fr.page.PaperSettingProvider;
import com.fr.plugin.observer.PluginEventListener;
@ -337,6 +340,28 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm<F
ReuseTriggerPointManager.getInstance().registerJForm(JForm.this);
}
@Override
public void templateSaved(JTemplate<?, ?> jt) {
if (jt == null) {
return;
}
int useCount = 0;
if (!jt.getProcessInfo().isTestTemplate()) {
JForm jForm = (JForm) jt;
XLayoutContainer root = jForm.getFormDesign().getRootComponent();
List<XCreator> xCreators = ShareComponentUtils.getHelpConfigXCreatorList(root);
JSONArray helpConfigUseInfo = ComponentCollector.getInstance().getHelpConfigUseInfoWithTemplate(jt.getTarget().getTemplateID());
for (XCreator xCreator : xCreators) {
if (helpConfigUseInfo.contains(ShareComponentUtils.getWidgetId(xCreator.toData()))) {
useCount++;
}
}
ComponentCollector.getInstance().collectHelpConfigInfo(jt.getTarget().getTemplateID(), xCreators.size(), useCount);
}
}
});
return tabCenterPane;
}

13
designer-form/src/main/java/com/fr/design/mainframe/share/util/SharableXMLUtils.java

@ -0,0 +1,13 @@
package com.fr.design.mainframe.share.util;
import com.fr.form.share.encrypt.engine.SharableReadHelper;
import com.fr.stable.xml.XMLConf;
import com.fr.stable.xml.helper.XMLReadHelper;
public class SharableXMLUtils {
public static synchronized void registerSharableReadHelper() {
XMLReadHelper readHelper = XMLConf.getReadHelper();
XMLReadHelper helper = new SharableReadHelper(readHelper);
XMLConf.registerXMLHelper(helper);
}
}

18
designer-form/src/main/java/com/fr/design/mainframe/share/util/ShareComponentUtils.java

@ -20,8 +20,11 @@ import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
import org.jetbrains.annotations.NotNull;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
/**
* Coder: zack
@ -89,5 +92,18 @@ public class ShareComponentUtils {
}
public static List<XCreator> getHelpConfigXCreatorList(XCreator root) {
List<XCreator> helpConfigXCreatorList = new ArrayList<>();
if (isShareWidget(root)) {
helpConfigXCreatorList.add(root);
return helpConfigXCreatorList;
}
Component[] components = root.getComponents();
for (Component component : components) {
if (component instanceof XCreator) {
helpConfigXCreatorList.addAll(getHelpConfigXCreatorList((XCreator) component));
}
}
return helpConfigXCreatorList;
}
}

65
designer-realize/src/main/java/com/fr/design/mainframe/app/AbstractWorkBookApp.java

@ -1,31 +1,16 @@
package com.fr.design.mainframe.app;
import com.fr.base.Parameter;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.UIExpandDialog;
import com.fr.design.extra.exe.callback.InstallOnlineCallback;
import com.fr.design.extra.exe.callback.ModifyStatusCallback;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.App;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.JWorkBook;
import com.fr.design.worker.open.OpenResult;
import com.fr.design.worker.open.OpenWorker;
import com.fr.file.FILE;
import com.fr.io.TemplateIOErrorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.main.impl.WorkBook;
import com.fr.plugin.context.PluginMarker;
import com.fr.plugin.context.PluginMarkerAdapter;
import com.fr.plugin.manage.PluginManager;
import com.fr.plugin.manage.control.PluginControllerHelper;
import com.fr.plugin.manage.control.PluginTask;
import com.fr.report.worksheet.WorkSheet;
import com.fr.third.guava.collect.Multimap;
import com.fr.workspace.WorkContext;
import java.util.Collection;
import java.util.concurrent.Callable;
/**
@ -48,7 +33,7 @@ abstract class AbstractWorkBookApp implements App<WorkBook> {
@Override
public OpenResult<WorkBook, Parameter[]> call() {
WorkBook workBook = asIOFile(tplFile);
dealWithTemplateIOError(tplFile.getPath());
DesignerAppUtils.dealWithTemplateIOError(tplFile.getPath());
return new OpenResult<>(workBook, workBook.getParameters());
}
}, emptyTemplate);
@ -68,54 +53,6 @@ abstract class AbstractWorkBookApp implements App<WorkBook> {
return emptyTemplate;
}
private void dealWithTemplateIOError(String path) {
// 试图获取多行读取错误提示并缓存待处理列表
String detail = TemplateIOErrorUtils.dealWithErrorDetailMultiLineAndCache(path);
if (detail.length() > 0) {
if (WorkContext.getCurrent().isLocal()) {
UIExpandDialog.Builder()
.owner(DesignerContext.getDesignerFrame())
.title(Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"))
.message(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Message_Local"))
.detail(detail)
.okText(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_OK_Btn"))
.cancelText(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Cancel_Btn"))
.dialogActionListener(new DialogActionAdapter() {
public void doOk() {
installAndEnablePlugin(path);
}
@Override
public void doCancel() {
TemplateIOErrorUtils.invalidatePlugins(path);
}
}).build().setVisible(true);
} else {
UIExpandDialog.Builder().owner(DesignerContext.getDesignerFrame())
.title(Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"))
.message(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Message_Remote"))
.detail(detail)
.build()
.setVisible(true);
}
}
}
public void installAndEnablePlugin(String key) {
Multimap<String, PluginMarkerAdapter> stringPluginMarkerAdapterMultimap = TemplateIOErrorUtils.popPluginInfoMap(key);
Collection<PluginMarkerAdapter> disablePlugins = stringPluginMarkerAdapterMultimap.get(TemplateIOErrorUtils.DISABLE_PLUGIN);
for (PluginMarkerAdapter disablePlugin : disablePlugins) {
PluginManager.getController().enable(disablePlugin, new ModifyStatusCallback(false));
}
Collection<PluginMarkerAdapter> uninstallPlugins = stringPluginMarkerAdapterMultimap.get(TemplateIOErrorUtils.NOT_INSTALLED_PLUGIN);
for (PluginMarker uninstallPlugin : uninstallPlugins) {
PluginTask pluginTask = PluginTask.installTask(uninstallPlugin);
PluginControllerHelper.installOnline(uninstallPlugin, new InstallOnlineCallback(pluginTask));
}
}
@Override
public String mark4Provider() {

83
designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppUtils.java

@ -0,0 +1,83 @@
package com.fr.design.mainframe.app;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.dialog.UIExpandDialog;
import com.fr.design.extra.exe.callback.InstallOnlineCallback;
import com.fr.design.extra.exe.callback.ModifyStatusCallback;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.ui.util.UIUtil;
import com.fr.io.TemplateIOErrorUtils;
import com.fr.plugin.context.PluginMarker;
import com.fr.plugin.context.PluginMarkerAdapter;
import com.fr.plugin.manage.PluginManager;
import com.fr.plugin.manage.control.PluginControllerHelper;
import com.fr.plugin.manage.control.PluginTask;
import com.fr.third.guava.collect.Multimap;
import com.fr.workspace.WorkContext;
import java.util.Collection;
/**
* 设计器app共用工具类
*
* @author vito
* @version 10.0
* Created by vito on 2021/5/27
*/
public class DesignerAppUtils {
/**
* 处理模板读取时的异常
*
* @param path 模板路径
*/
public static void dealWithTemplateIOError(String path) {
// 试图获取多行读取错误提示并缓存待处理列表
String detail = TemplateIOErrorUtils.dealWithErrorDetailMultiLineAndCache(path);
if (detail.length() > 0) {
UIUtil.invokeLaterIfNeeded(() -> {
if (WorkContext.getCurrent().isLocal()) {
UIExpandDialog.Builder()
.owner(DesignerContext.getDesignerFrame())
.title(Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"))
.message(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Message_Local"))
.detail(detail)
.okText(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_OK_Btn"))
.cancelText(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Cancel_Btn"))
.dialogActionListener(new DialogActionAdapter() {
public void doOk() {
installAndEnablePlugin(path);
}
@Override
public void doCancel() {
TemplateIOErrorUtils.invalidatePlugins(path);
}
}).build().setVisible(true);
} else {
UIExpandDialog.Builder().owner(DesignerContext.getDesignerFrame())
.title(Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"))
.message(Toolkit.i18nText("Fine-Design_Template_Plugin_Error_Message_Remote"))
.detail(detail)
.build()
.setVisible(true);
}
});
}
}
private static void installAndEnablePlugin(String key) {
Multimap<String, PluginMarkerAdapter> stringPluginMarkerAdapterMultimap = TemplateIOErrorUtils.popPluginInfoMap(key);
Collection<PluginMarkerAdapter> disablePlugins = stringPluginMarkerAdapterMultimap.get(TemplateIOErrorUtils.DISABLE_PLUGIN);
for (PluginMarkerAdapter disablePlugin : disablePlugins) {
PluginManager.getController().enable(disablePlugin, new ModifyStatusCallback(false));
}
Collection<PluginMarkerAdapter> uninstallPlugins = stringPluginMarkerAdapterMultimap.get(TemplateIOErrorUtils.NOT_INSTALLED_PLUGIN);
for (PluginMarker uninstallPlugin : uninstallPlugins) {
PluginTask pluginTask = PluginTask.installTask(uninstallPlugin);
PluginControllerHelper.installOnline(uninstallPlugin, new InstallOnlineCallback(pluginTask));
}
}
}

1
designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java

@ -63,6 +63,7 @@ class FormApp extends AbstractAppProvider {
@Override
public OpenResult<Form, Parameter[]> call() throws Exception {
Form form = asIOFile(tplFile);
DesignerAppUtils.dealWithTemplateIOError(tplFile.getPath());
return new OpenResult<>(form, form.getParameters());
}
}, emptyForm);

11
designer-realize/src/main/java/com/fr/design/share/SharableInitManager.java

@ -0,0 +1,11 @@
package com.fr.design.share;
import com.fr.design.mainframe.share.collect.SharableCollectorManager;
import com.fr.design.mainframe.share.util.SharableXMLUtils;
public class SharableInitManager {
public static void start() {
SharableXMLUtils.registerSharableReadHelper();
SharableCollectorManager.getInstance().execute();
}
}

3
designer-realize/src/main/java/com/fr/design/share/effect/EffectItemGroup.java

@ -68,8 +68,7 @@ public class EffectItemGroup {
for (int index = 0; index < listenerSize; index ++) {
Listener listener = widget.getListener(index);
SourceNode sourceNode = SourceNodeUtils.createSourceNode(widget, null);
String eventName = switchLang(listener.getEventName()) + (index + 1);
this.add(new ListenerEffectItem(listener, sourceNode, eventName));
this.add(new ListenerEffectItem(listener, sourceNode));
}
}

11
designer-realize/src/main/java/com/fr/design/share/effect/ListenerEffectItem.java

@ -9,10 +9,9 @@ import com.fr.form.ui.Widget;
public class ListenerEffectItem extends BaseEffectItem<Listener> {
private Listener listener;
public ListenerEffectItem(Listener listener, SourceNode sourceNode, String name) {
public ListenerEffectItem(Listener listener, SourceNode sourceNode) {
this.listener = listener;
this.setSourceNode(sourceNode);
this.setName(name);
init();
}
@ -24,6 +23,8 @@ public class ListenerEffectItem extends BaseEffectItem<Listener> {
object = new Listener(listener.getTargetWidget(), listener.getEventName(), listener.getAction(), listener.isInvokeOnce());
}
setObject(object);
setName(listener.getName());
this.setNameableCreator(new EventCreator(Widget.EVENT_STATECHANGE, EventPropertyTable.WidgetEventListenerUpdatePane.class));
}
@ -32,7 +33,13 @@ public class ListenerEffectItem extends BaseEffectItem<Listener> {
setObject((Listener) bean);
}
public void setName(String name) {
super.setName(name);
getObject().setName(name);
}
public void save() {
listener.setName(getObject().getName());
listener.setEventName(getObject().getEventName());
listener.setAction(getObject().getAction());
listener.setInvokeOnce(getObject().isInvokeOnce());

3
designer-realize/src/main/java/com/fr/design/share/ui/config/table/ConfigTableModel.java

@ -39,8 +39,7 @@ public class ConfigTableModel extends AbstractTableModel {
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
EffectItem effectItem = effectItems.get(rowIndex);
return columnIndex == 1 && !(effectItem instanceof ListenerEffectItem);
return columnIndex == 1;
}
@Override

2
designer-realize/src/main/java/com/fr/design/share/ui/generate/ShareMainPane.java

@ -498,7 +498,7 @@ public class ShareMainPane extends JPanel {
ArrayUtils.toPrimitive(rowSizeList.toArray(new Double[rowSizeList.size()])),
columnSize,
rowCountList.toArray(new int[rowCountList.size()][]),
LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
LayoutConstants.HGAP_SMALL, LayoutConstants.VGAP_MEDIUM);
}
private JPanel createNameFiledPane() {

3
designer-realize/src/main/java/com/fr/design/share/ui/generate/table/EffectTableModel.java

@ -44,8 +44,7 @@ public class EffectTableModel extends AbstractTableModel {
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
EffectItem effectItem = effectItems.get(rowIndex);
return columnIndex == 1 && !(effectItem instanceof ListenerEffectItem);
return columnIndex == 1;
}
@Override

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

@ -60,12 +60,12 @@ import com.fr.design.os.impl.SupportOSImpl;
import com.fr.design.parameter.FormParameterReader;
import com.fr.design.parameter.ParameterPropertyPane;
import com.fr.design.parameter.WorkBookParameterReader;
import com.fr.design.share.SharableInitManager;
import com.fr.design.share.ui.config.ShareConfigPane;
import com.fr.design.share.ui.generate.ShareGeneratePane;
import com.fr.design.update.actions.RecoverForDesigner;
import com.fr.design.update.push.DesignerPushUpdateManager;
import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane;
import com.fr.form.stable.ElementCaseThumbnailProcessor;
import com.fr.general.GeneralContext;
import com.fr.general.xml.GeneralXMLTools;
import com.fr.js.EmailJavaScript;
@ -205,6 +205,7 @@ public class DesignerActivator extends Activator {
designerRegister();
InformationCollector.getInstance().collectStartTime();
SharableInitManager.start();
}
private void createPluginListener() {

Loading…
Cancel
Save