diff --git a/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java b/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java index 3e94fe6bef..4a92d3715c 100644 --- a/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java +++ b/designer-base/src/main/java/com/fr/design/ui/ModernUIPane.java @@ -116,6 +116,16 @@ public class ModernUIPane extends BasicPane { browser.loadURL(url); } + /** + * 转向一个新的地址,相当于重新加载 + * @param url 新的地址 + * @param map 初始化参数 + */ + public void redirect(String url, Map map) { + Assistant.setEmbProtocolHandler(browser, new EmbProtocolHandler(map)); + browser.loadURL(url); + } + @Override protected String title4PopupWindow() { return "Modern"; diff --git a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java index 6ebedd706a..7f36c2b8d9 100644 --- a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java +++ b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java @@ -43,6 +43,7 @@ import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import java.util.concurrent.RunnableFuture; +import java.util.concurrent.TimeUnit; /** * @author richie @@ -68,7 +69,16 @@ public class UpmBridge { */ @JSBridge public void update(final JSFunction callback) { - startDownload(callback); + callback.invoke(window, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); + try { + UpmResourceLoader.INSTANCE.download(); + UpmResourceLoader.INSTANCE.install(); + callback.invoke(window, "success", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Success")); + EventDispatcher.fire(DownloadEvent.UPDATE, "success"); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + callback.invoke(window, "error", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Error")); + } } /** @@ -77,11 +87,10 @@ public class UpmBridge { */ @JSBridge public void startDownload(final JSFunction callback) { - + callback.invoke(window, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); new SwingWorker(){ @Override protected Void doInBackground() throws Exception { - callback.invoke(window, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); UpmResourceLoader.INSTANCE.download(); UpmResourceLoader.INSTANCE.install(); return null; diff --git a/designer-base/src/main/java/com/fr/design/upm/UpmShowPane.java b/designer-base/src/main/java/com/fr/design/upm/UpmShowPane.java index 09c8d54b71..57b225920a 100644 --- a/designer-base/src/main/java/com/fr/design/upm/UpmShowPane.java +++ b/designer-base/src/main/java/com/fr/design/upm/UpmShowPane.java @@ -40,6 +40,12 @@ public class UpmShowPane extends BasicPane { }) .withURL(UpmFinder.getMainResourcePath(), UpmUtils.renderMap()) .build(); + EventDispatcher.listen(DownloadEvent.UPDATE, new Listener() { + @Override + public void on(Event event, String param) { + modernUIPane.redirect(UpmFinder.getMainResourcePath(), UpmUtils.renderMap()); + } + }); } else { modernUIPane = new ModernUIPane.Builder<>() .withComponent(WarnComponent.KEY) @@ -53,7 +59,7 @@ public class UpmShowPane extends BasicPane { EventDispatcher.listen(DownloadEvent.SUCCESS, new Listener() { @Override public void on(Event event, String param) { - modernUIPane.redirect(UpmFinder.getMainResourcePath()); + modernUIPane.redirect(UpmFinder.getMainResourcePath(), UpmUtils.renderMap()); } }); } diff --git a/designer-base/src/main/java/com/fr/design/upm/event/DownloadEvent.java b/designer-base/src/main/java/com/fr/design/upm/event/DownloadEvent.java index e07156b83e..25b4f0a9ea 100644 --- a/designer-base/src/main/java/com/fr/design/upm/event/DownloadEvent.java +++ b/designer-base/src/main/java/com/fr/design/upm/event/DownloadEvent.java @@ -9,5 +9,5 @@ import com.fr.event.Event; */ public enum DownloadEvent implements Event { - SUCCESS, ERROR + SUCCESS, ERROR, UPDATE }