diff --git a/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 2624318aed..8e70675eee 100644 --- a/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer/src/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -9,16 +9,11 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.UIDialog; -import com.fr.design.extra.ShopManagerPane; -import com.fr.design.extra.ShopDialog; -import com.fr.design.extra.PluginWebBridge; -import com.fr.design.extra.WebManagerPaneFactory; +import com.fr.design.extra.WebDialog; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.DesignerContext; import com.fr.general.Inter; import com.fr.page.ReportPageAttrProvider; import com.fr.stable.ColumnRow; @@ -552,10 +547,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { public void actionPerformed(ActionEvent e) { try { //Desktop.getDesktop().browse(new URI(url)); - BasicPane managerPane = new WebManagerPaneFactory().createPluginPane(); - UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); - PluginWebBridge.getHelper().setDialogHandle(dlg); - dlg.setVisible(true); + WebDialog.createPluginDialog(); RepeatAndFreezeSettingPane.this.getTopLevelAncestor().setVisible(false); } catch (Exception exp) { diff --git a/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java b/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java index fee4678202..08dc91b07e 100644 --- a/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java +++ b/designer_base/src/com/fr/design/actions/server/PluginManagerAction.java @@ -2,12 +2,7 @@ package com.fr.design.actions.server; import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.UIDialog; -import com.fr.design.extra.PluginWebBridge; -import com.fr.design.extra.ShopDialog; -import com.fr.design.extra.WebManagerPaneFactory; -import com.fr.design.mainframe.DesignerContext; +import com.fr.design.extra.WebDialog; import com.fr.design.menu.MenuKeySet; import com.fr.general.Inter; @@ -30,10 +25,7 @@ public class PluginManagerAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { - BasicPane managerPane = new WebManagerPaneFactory().createPluginPane(); - UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); - PluginWebBridge.getHelper().setDialogHandle(dlg); - dlg.setVisible(true); + WebDialog.createPluginDialog(); } public static final MenuKeySet PLUGIN_MANAGER = new MenuKeySet() { diff --git a/designer_base/src/com/fr/design/actions/server/ReuseManagerAction.java b/designer_base/src/com/fr/design/actions/server/ReuseManagerAction.java deleted file mode 100644 index 3bd21a0d91..0000000000 --- a/designer_base/src/com/fr/design/actions/server/ReuseManagerAction.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.fr.design.actions.server; - -import com.fr.base.BaseUtils; -import com.fr.design.actions.UpdateAction; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.UIDialog; -import com.fr.design.extra.ShopDialog; -import com.fr.design.extra.PluginWebBridge; -import com.fr.design.extra.WebManagerPaneFactory; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.menu.MenuKeySet; -import com.fr.general.Inter; - -import javax.swing.*; -import java.awt.event.ActionEvent; - -/** - * Created by vito on 2016/9/27. - */ -public class ReuseManagerAction extends UpdateAction { - - public ReuseManagerAction() { - this.setMenuKeySet(REUSE_MANAGER); - this.setName(getMenuKeySet().getMenuKeySetName()); - this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/server/plugin.png")); - } - - @Override - public void actionPerformed(ActionEvent e) { - BasicPane managerPane = new WebManagerPaneFactory().createReusePane(); - UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); - PluginWebBridge.getHelper().setDialogHandle(dlg); - dlg.setVisible(true); - } - - public static final MenuKeySet REUSE_MANAGER = new MenuKeySet() { - @Override - public char getMnemonic() { - return 'R'; - } - - @Override - public String getMenuName() { - return Inter.getLocText("FR-Designer-Reuse_Manager"); - } - - @Override - public KeyStroke getKeyStroke() { - return null; - } - }; -} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/ShopManagerPane.java b/designer_base/src/com/fr/design/extra/ShopManagerPane.java index 12900c720b..857e96cc8d 100644 --- a/designer_base/src/com/fr/design/extra/ShopManagerPane.java +++ b/designer_base/src/com/fr/design/extra/ShopManagerPane.java @@ -1,23 +1,10 @@ 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.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.plugin.PluginVerifyException; -import com.fr.stable.StableUtils; import javafx.embed.swing.JFXPanel; -import javax.swing.*; import java.awt.*; -import java.io.File; -import java.net.HttpURLConnection; -import java.util.concurrent.ExecutionException; /** * @author richie @@ -32,113 +19,11 @@ import java.util.concurrent.ExecutionException; */ public class ShopManagerPane extends BasicPane { - private static final String LATEST = "latest"; - private ShopPaneConfig shopPaneConfig; - - public ShopManagerPane(ShopPaneConfig shopPaneConfig) { - this.shopPaneConfig = shopPaneConfig; + public ShopManagerPane(JFXPanel webPane) { setLayout(new BorderLayout()); - if (StableUtils.isDebug()) { - addPane(); - } else { - File file = new File(shopPaneConfig.getMainJS()); - if (!file.exists()) { - int rv = JOptionPane.showConfirmDialog( - this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } else { - addPane(); - updateShopScripts(); - } - } - } - - private void addPane() { - JFXPanel webPane = shopPaneConfig.getWebPane(); add(webPane, BorderLayout.CENTER); } - private void downloadShopScripts() { - new SwingWorker() { - @Override - protected Boolean doInBackground() throws Exception { - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - try { - PluginHelper.downloadPluginFile(shopPaneConfig.getScriptsId(), username, password, new Process() { - @Override - public void process(Double integer) { - } - }); - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(ShopManagerPane.this, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return false; - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - return false; - } - return true; - } - - @Override - protected void done() { - - try { - if (get()) { - IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); - int rv = JOptionPane.showOptionDialog( - ShopManagerPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), - 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(); - } - } - } catch (InterruptedException | ExecutionException e) { - FRContext.getLogger().error(e.getMessage(), e); - } - - } - }.execute(); - } - - private void updateShopScripts() { - new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("store.version") + "&version=" + PluginStoreConstants.VERSION); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - if (!ComparatorUtils.equals(httpClient.getResponseText(), LATEST)) { - int rv = JOptionPane.showConfirmDialog( - ShopManagerPane.this, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Update"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(); - } - } - } - return null; - } - }.execute(); - } - @Override protected String title4PopupWindow() { return Inter.getLocText("FR-Designer-Plugin_Manager"); diff --git a/designer_base/src/com/fr/design/extra/WebDialog.java b/designer_base/src/com/fr/design/extra/WebDialog.java new file mode 100644 index 0000000000..ed7d735631 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/WebDialog.java @@ -0,0 +1,165 @@ +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.dialog.UIDialog; +import com.fr.design.gui.frpane.UITabbedPane; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.ComparatorUtils; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.plugin.PluginVerifyException; +import com.fr.stable.StableUtils; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.net.HttpURLConnection; +import java.util.concurrent.ExecutionException; + +/** + * Created by vito on 2016/9/28. + */ +public class WebDialog { + private static final String LATEST = "latest"; + private static final String SHOP_SCRIPTS = "shop_scripts"; + private static final int VERSION_8 = 8; + private static String installHome = StableUtils.getInstallHome(); + + public static void createPluginDialog() { + UIDialog dlg; + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { + String relativePath = "/scripts/store/web/index.html"; + String mainJsPath = StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); + File file = new File(mainJsPath); + if (!file.exists()) { + int rv = JOptionPane.showConfirmDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(SHOP_SCRIPTS); + } + } else { + updateShopScripts(SHOP_SCRIPTS); + BasicPane managerPane = new ShopManagerPane(new PluginWebPane(mainJsPath)); + dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); + PluginWebBridge.getHelper().setDialogHandle(dlg); + dlg.setVisible(true); + } + } else { + BasicPane traditionalStorePane = new BasicPane() { + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer-Plugin_Manager"); + } + }; + traditionalStorePane.setLayout(new BorderLayout()); + traditionalStorePane.add(initTraditionalStore(), BorderLayout.CENTER); + dlg = new ShopDialog(DesignerContext.getDesignerFrame(), traditionalStorePane); + dlg.setVisible(true); + } + } + + /** + * 以关键词打开设计器商店 + *

+ * // * @param keyword 关键词 + */ + public void createPluginDialog(String keyword) { + PluginWebBridge.getHelper().openWithSearch(keyword); + createPluginDialog(); + } + + + private static Component initTraditionalStore() { + UITabbedPane tabbedPane = new UITabbedPane(); + PluginInstalledPane installedPane = new PluginInstalledPane(); + tabbedPane.addTab(installedPane.tabTitle(), installedPane); + tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_Update"), new PluginUpdatePane(tabbedPane)); + tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); + return tabbedPane; + } + + private static void downloadShopScripts(final String scriptsId) { + new SwingWorker() { + @Override + protected Boolean doInBackground() throws Exception { + String username = DesignerEnvManager.getEnvManager().getBBSName(); + String password = DesignerEnvManager.getEnvManager().getBBSPassword(); + try { + PluginHelper.downloadPluginFile(scriptsId, username, password, new Process() { + @Override + public void process(Double integer) { + } + }); + } catch (PluginVerifyException e) { + JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + return false; + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + return false; + } + return true; + } + + @Override + protected void done() { + + try { + if (get()) { + IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), + 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(); + } + } + } catch (InterruptedException | ExecutionException e) { + FRContext.getLogger().error(e.getMessage(), e); + } + + } + }.execute(); + } + + private static void updateShopScripts(final String scriptsId) { + new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("store.version") + "&version=" + PluginStoreConstants.VERSION); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + String text = httpClient.getResponseText(); + if (!ComparatorUtils.equals(text, LATEST)) { + int rv = JOptionPane.showConfirmDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Need_Update"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(scriptsId); + } + } + } + return null; + } + }.execute(); + } +} diff --git a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java deleted file mode 100644 index 75a79deddd..0000000000 --- a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.fr.design.extra; - -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.frpane.UITabbedPane; -import com.fr.general.Inter; -import com.fr.stable.StableUtils; -import javafx.embed.swing.JFXPanel; - -import java.awt.*; -import java.io.File; -import java.net.URL; - -/** - * Created by vito on 2016/9/28. - */ -public class WebManagerPaneFactory { - private String installHome; - - public WebManagerPaneFactory() { - if (StableUtils.isDebug()) { - URL url = ClassLoader.getSystemResource(""); - this.installHome = url.getPath(); - } else { - this.installHome = StableUtils.getInstallHome(); - } - } - - public BasicPane createPluginPane() { - if (StableUtils.getMajorJavaVersion() == 8) { - return new ShopManagerPane(new ShopPaneConfig() { - @Override - String getMainJS() { - String relativePath = "/scripts/store/web/index.html"; - return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); - } - - @Override - String getScriptsId() { - return "shop_scripts"; - } - - @Override - JFXPanel getWebPane() { - return new PluginWebPane(getMainJS()); - } - - }); - } else { - BasicPane traditionalStorePane = new BasicPane() { - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer-Plugin_Manager"); - } - }; - traditionalStorePane.setLayout(new BorderLayout()); - traditionalStorePane.add(initTraditionalStore(), BorderLayout.CENTER); - return traditionalStorePane; - } - } - - public BasicPane createReusePane() { - return new ShopManagerPane(new ShopPaneConfig() { - @Override - String getMainJS() { - String relativePath = "/scripts/store/reuse/index.html"; - return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); - } - - @Override - String getScriptsId() { - return "reuse_scripts"; - } - - @Override - JFXPanel getWebPane() { - return new ReuseWebPane(getMainJS()); - } - }); - } - - /** - * 以关键词打开设计器商店 - * - * @param keyword 关键词 - */ - public BasicPane createPluginPane(String keyword) { - PluginWebBridge.getHelper().openWithSearch(keyword); - return createPluginPane(); - } - - private Component initTraditionalStore() { - UITabbedPane tabbedPane = new UITabbedPane(); - PluginInstalledPane installedPane = new PluginInstalledPane(); - tabbedPane.addTab(installedPane.tabTitle(), installedPane); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_Update"), new PluginUpdatePane(tabbedPane)); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); - return tabbedPane; - } -} diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index a76ec5f535..5af9856c28 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -7,16 +7,11 @@ import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.RestartHelper; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.UIDialog; -import com.fr.design.extra.ShopDialog; -import com.fr.design.extra.PluginWebBridge; -import com.fr.design.extra.WebManagerPaneFactory; +import com.fr.design.extra.WebDialog; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.file.TemplateTreePane; import com.fr.design.fun.GlobalListenerProvider; -import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; import com.fr.design.mainframe.TemplatePane; import com.fr.design.mainframe.toolbar.ToolBarMenuDock; @@ -131,10 +126,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { String text = StableUtils.join(plugins, ",") + Inter.getLocText("FR-Designer_Plugin_Should_Update"); int r = JOptionPane.showConfirmDialog(null, text, Inter.getLocText("FR-Designer_Plugin_Should_Update_Title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (r == JOptionPane.OK_OPTION) { - BasicPane managerPane = new WebManagerPaneFactory().createPluginPane(); - UIDialog dlg = new ShopDialog(DesignerContext.getDesignerFrame(), managerPane); - PluginWebBridge.getHelper().setDialogHandle(dlg); - dlg.setVisible(true); + WebDialog.createPluginDialog(); } } timer.stop(); @@ -149,7 +141,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } protected DesignerFrame createDesignerFrame() { - return new DesignerFrame(this); + return new DesignerFrame(this); } protected int getStartPort() {