diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index b50b904a0..86e5f49eb 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -31,8 +31,8 @@ import java.util.concurrent.ExecutionException; */ public class PluginHelper { private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; - private static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; - private static final String TEMP_FILE = "temp.zip"; + public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; + public static final String TEMP_FILE = "temp.zip"; /** * 下载插件 diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index 3a63c685b..7f2280673 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -1,10 +1,17 @@ package com.fr.design.extra; +import com.fr.base.FRContext; +import com.fr.design.DesignerEnvManager; +import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UITabbedPane; +import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.stable.StableUtils; +import javax.swing.*; import java.awt.*; +import java.io.File; import java.net.URL; /** @@ -24,10 +31,29 @@ public class PluginManagerPane extends BasicPane { public PluginManagerPane() { setLayout(new BorderLayout()); if (System.getProperty("java.version").startsWith("1.8")) { - URL url = ClassLoader.getSystemResource(""); - String installHome = url.getPath(); - PluginWebPane webPane = new PluginWebPane(installHome); + String installHome; + if(StableUtils.isDebug()){ + URL url = ClassLoader.getSystemResource(""); + installHome = url.getPath() + "scripts"; + }else{ + installHome = StableUtils.getInstallHome() + File.separator + "scripts"; + File file = new File(installHome); + if (!file.exists()) { + int rv = JOptionPane.showConfirmDialog( + null, + "您还没有插件商店的资源,是否下载?", + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(); + } + } + } + PluginWebPane webPane = new PluginWebPane(new File(installHome).getAbsolutePath()); add(webPane, BorderLayout.CENTER); + } else { initTraditionalStore(); } @@ -42,6 +68,45 @@ public class PluginManagerPane extends BasicPane { tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); } + private void downloadShopScripts() { + new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + String id = "shop_scripts"; + String username = DesignerEnvManager.getEnvManager().getBBSName(); + String password = DesignerEnvManager.getEnvManager().getBBSPassword(); + try { + PluginHelper.downloadPluginFile(id, username, password, new Process() { + @Override + public void process(Double integer) { + } + }); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + return null; + } + + @Override + protected void done() { + IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); + int rv = JOptionPane.showOptionDialog( + null, + "商店安装完毕,是否立刻启动?", + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, + null + ); + if (rv == JOptionPane.OK_OPTION) { + RestartHelper.restart(); + } + } + }.execute(); + } + @Override protected String title4PopupWindow() { return Inter.getLocText("FR-Designer-Plugin_Manager"); diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 90fcd2af0..7e4e70e24 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -261,6 +261,16 @@ public class PluginWebBridge { } } + /** + * 在本地浏览器里打开url + * tips:重载的时候,需要给js调用的方法需要放在前面,否则可能不会被调用(此乃坑) + * + * @param url 要打开的地址 + */ + public void openUrlAtLocalWebBrowser(String url) { + openUrlAtLocalWebBrowser(webEngine, url); + } + /** * 在本地浏览器里打开url * @@ -289,10 +299,6 @@ public class PluginWebBridge { } } - public void openUrlAtLocalWebBrowser(String url) { - openUrlAtLocalWebBrowser(webEngine, url); - } - /** * 从硬盘升级 * diff --git a/designer_base/src/com/fr/design/extra/PluginWebPane.java b/designer_base/src/com/fr/design/extra/PluginWebPane.java index 36ce2c5d6..76e4ef5e8 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebPane.java +++ b/designer_base/src/com/fr/design/extra/PluginWebPane.java @@ -1,9 +1,6 @@ package com.fr.design.extra; -import com.fr.general.FRLogger; import javafx.application.Platform; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; import javafx.embed.swing.JFXPanel; import javafx.event.EventHandler; import javafx.scene.Scene; @@ -32,20 +29,13 @@ public class PluginWebPane extends JFXPanel { PluginWebPane.this.setScene(scene); WebView webView = new WebView(); webEngine = webView.getEngine(); - webEngine.load("file:///" + installHome + "/scripts/store/web/index.html"); + webEngine.load("file:///" + installHome + "/store/web/index.html"); webEngine.setOnAlert(new EventHandler>() { @Override public void handle(WebEvent event) { showAlert(event.getData()); } }); - webEngine.locationProperty().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue observable, final String oldValue, String newValue) { - disableLink(webEngine); - PluginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); - } - }); JSObject obj = (JSObject) webEngine.executeScript("window"); obj.setMember("PluginHelper", PluginWebBridge.getHelper(webEngine)); webView.setContextMenuEnabled(false);//屏蔽右键 @@ -54,19 +44,6 @@ public class PluginWebPane extends JFXPanel { }); } - private void disableLink(final WebEngine webEngine) { - try { - Platform.runLater(new Runnable() { - @Override - public void run() { - webEngine.executeScript("history.go(0)"); - } - }); - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } - } - private void showAlert(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override