Browse Source

Pull request #4404: REPORT-52942 处理插件提到公共模块稍后展示

Merge in DESIGN/design from ~VITO/c-design:feature/10.0 to feature/10.0

* commit '6f0afeacd5668f4e49d82ef405428bc80b877b9d':
  REPORT-52942 处理插件提到公共模块稍后展示
feature/10.0
vito 4 years ago
parent
commit
af6f2cd118
  1. 65
      designer-realize/src/main/java/com/fr/design/mainframe/app/AbstractWorkBookApp.java
  2. 83
      designer-realize/src/main/java/com/fr/design/mainframe/app/DesignerAppUtils.java
  3. 1
      designer-realize/src/main/java/com/fr/design/mainframe/app/FormApp.java

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

@ -1,31 +1,16 @@
package com.fr.design.mainframe.app; package com.fr.design.mainframe.app;
import com.fr.base.Parameter; 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.App;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.JWorkBook; import com.fr.design.mainframe.JWorkBook;
import com.fr.design.worker.open.OpenResult; import com.fr.design.worker.open.OpenResult;
import com.fr.design.worker.open.OpenWorker; import com.fr.design.worker.open.OpenWorker;
import com.fr.file.FILE; import com.fr.file.FILE;
import com.fr.io.TemplateIOErrorUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.main.impl.WorkBook; 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.report.worksheet.WorkSheet;
import com.fr.third.guava.collect.Multimap;
import com.fr.workspace.WorkContext;
import java.util.Collection;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
/** /**
@ -48,7 +33,7 @@ abstract class AbstractWorkBookApp implements App<WorkBook> {
@Override @Override
public OpenResult<WorkBook, Parameter[]> call() { public OpenResult<WorkBook, Parameter[]> call() {
WorkBook workBook = asIOFile(tplFile); WorkBook workBook = asIOFile(tplFile);
dealWithTemplateIOError(tplFile.getPath()); DesignerAppUtils.dealWithTemplateIOError(tplFile.getPath());
return new OpenResult<>(workBook, workBook.getParameters()); return new OpenResult<>(workBook, workBook.getParameters());
} }
}, emptyTemplate); }, emptyTemplate);
@ -68,54 +53,6 @@ abstract class AbstractWorkBookApp implements App<WorkBook> {
return emptyTemplate; 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 @Override
public String mark4Provider() { 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 @Override
public OpenResult<Form, Parameter[]> call() throws Exception { public OpenResult<Form, Parameter[]> call() throws Exception {
Form form = asIOFile(tplFile); Form form = asIOFile(tplFile);
DesignerAppUtils.dealWithTemplateIOError(tplFile.getPath());
return new OpenResult<>(form, form.getParameters()); return new OpenResult<>(form, form.getParameters());
} }
}, emptyForm); }, emptyForm);

Loading…
Cancel
Save