From 43e7113f7e02dd79b392e68d0ef8f8f775a896e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Mon, 22 Aug 2016 21:07:16 +0800 Subject: [PATCH 01/92] =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=9A=84=E9=80=80?= =?UTF-8?q?=E5=87=BA=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=EF=BC=8C=E8=BF=98?= =?UTF-8?q?=E6=9C=89=E5=BC=B9=E5=87=BA=E7=9A=84=E9=A1=B5=E9=9D=A2=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/bbs/LoginDialog.java | 2 +- .../design/mainframe/bbs/UserInfoLabel.java | 21 +++++++++++-------- .../src/com/fr/design/extra/LoginPane.java | 13 ++++++++++-- .../com/fr/design/extra/LoginWebBridge.java | 4 ++-- .../src/com/fr/design/extra/LoginWebPane.java | 2 +- .../com/fr/design/extra/QQLoginWebBridge.java | 8 ++++++- .../com/fr/design/extra/QQLoginWebPane.java | 2 +- .../extra/exe/GetLoginInfoExecutor.java | 4 ++-- 8 files changed, 37 insertions(+), 19 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java b/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java index 1d1926bf9..b5fe200ea 100644 --- a/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java +++ b/designer/src/com/fr/design/mainframe/bbs/LoginDialog.java @@ -15,7 +15,7 @@ import java.awt.*; * Created by zhaohehe on 16/7/26. */ public class LoginDialog extends UIDialog { - private static final Dimension DEFAULT_SHOP = new Dimension(404, 234); + private static final Dimension DEFAULT_SHOP = new Dimension(404, 204); public LoginDialog(Frame frame, BasicPane pane) { super(frame); diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index a2e0946c5..7be5f1fc2 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -54,7 +54,7 @@ public class UserInfoLabel extends UILabel{ private UserInfoPane userInfoPane; private BBSLoginDialog bbsLoginDialog; - + public UserInfoPane getUserInfoPane() { return userInfoPane; } @@ -101,9 +101,19 @@ public class UserInfoLabel extends UILabel{ LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); QQLoginWebBridge.getHelper().setLoginlabel(); qqdlg.setVisible(true); + clearLoingInformation(); + updateInfoPane(); } }); + } + private void clearLoingInformation(){ + DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); + } + + private void updateInfoPane(){ + userInfoPane.markUnSignIn(); } /** @@ -117,9 +127,7 @@ public class UserInfoLabel extends UILabel{ if(!FRContext.isChineseEnv()){ return; } - String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); - try { String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); if (ComparatorUtils.equals(lastBBSNewsTime, today)) { @@ -129,25 +137,20 @@ public class UserInfoLabel extends UILabel{ } catch (InterruptedException e) { FRContext.getLogger().error(e.getMessage()); } - HttpClient hc = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); if (!hc.isServerAlive()){ return; } - String res = hc.getResponseText(); if (res.indexOf(BBSConstants.UPDATE_KEY) == -1){ return; } - try { BBSDialog bbsLabel = new BBSDialog(DesignerContext.getDesignerFrame()); bbsLabel.showWindow(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); DesignerEnvManager.getEnvManager().setLastShowBBSNewsTime(DateUtils.DATEFORMAT2.format(new Date())); } catch (Throwable e) { - } - } }); showBBSThread.start(); @@ -259,6 +262,7 @@ public class UserInfoLabel extends UILabel{ @Override public void mouseClicked(MouseEvent e) { + userName = DesignerEnvManager.getEnvManager().getBBSName(); if(StringUtils.isNotEmpty(userName)) { UIPopupMenu menu = new UIPopupMenu(); menu.setOnlyText(true); @@ -295,5 +299,4 @@ public class UserInfoLabel extends UILabel{ } } }; - } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/LoginPane.java b/designer_base/src/com/fr/design/extra/LoginPane.java index c8c231b24..41a2ce8ce 100644 --- a/designer_base/src/com/fr/design/extra/LoginPane.java +++ b/designer_base/src/com/fr/design/extra/LoginPane.java @@ -4,6 +4,7 @@ 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.ComparatorUtils; import com.fr.general.IOUtils; import com.fr.general.Inter; @@ -53,6 +54,7 @@ public class LoginPane extends BasicPane { } } } else { + initTraditionalStore(); } } @@ -91,7 +93,6 @@ public class LoginPane extends BasicPane { @Override protected void done() { - try { if (get()) { IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); @@ -112,7 +113,6 @@ public class LoginPane extends BasicPane { } catch (InterruptedException | ExecutionException e) { FRContext.getLogger().error(e.getMessage(), e); } - } }.execute(); } @@ -140,4 +140,13 @@ public class LoginPane extends BasicPane { } }.execute(); } + + private void initTraditionalStore() { + UITabbedPane tabbedPane = new UITabbedPane(); + add(tabbedPane, BorderLayout.CENTER); + 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)); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 514967693..855ed447a 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -28,7 +28,7 @@ public class LoginWebBridge { private static final String LOGININ = "0"; private static final String LOGIN_INFO_EMPTY = "-1"; private static final String DISCONNECTED = "-2"; - private static final String UNKNOWN_ERROR = "-3"; + private static final String LOGININFO_ERROR = "-3"; private static final int TIME_OUT = 10000; private static com.fr.design.extra.LoginWebBridge helper; @@ -115,7 +115,7 @@ public class LoginWebBridge { loginSuccess(username); return LOGININ; }else { - return UNKNOWN_ERROR; + return LOGININFO_ERROR; } } diff --git a/designer_base/src/com/fr/design/extra/LoginWebPane.java b/designer_base/src/com/fr/design/extra/LoginWebPane.java index f31889c28..b49db6ace 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/LoginWebPane.java @@ -31,7 +31,7 @@ public class LoginWebPane extends JFXPanel { LoginWebPane.this.setScene(scene); WebView webView = new WebView(); webEngine = webView.getEngine(); - webEngine.load("file:///" + installHome + "/scripts/store/web/login.html"); + webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/login.html"); webEngine.setOnAlert(new EventHandler>() { @Override public void handle(WebEvent event) { diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index a038d56ce..f566d2e69 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -7,6 +7,8 @@ import javafx.scene.web.WebEngine; import org.json.JSONObject; import javax.swing.*; +import java.awt.*; +import java.net.URI; /** * Created by lp on 2016/8/10. @@ -17,6 +19,7 @@ public class QQLoginWebBridge { private WebEngine webEngine; private static String LOGINSUCCESS = "ok"; private static String LOGINFAILED = "failed"; + private static String BBS_URL = "http://bbs.fanruan.com"; private UIDialog uiDialog; private UILabel uiLabel; private UIDialog qqDialog; @@ -99,7 +102,10 @@ public class QQLoginWebBridge { DesignerEnvManager.getEnvManager().setBBSName(username); }else if (status.equals(LOGINFAILED)){ //账号没有QQ授权 - closeQQWindow(); + try { + Desktop.getDesktop().browse(new URI(BBS_URL)); + }catch (Exception exp) { + } } } } diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index 9644f0666..229e92f12 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -29,7 +29,7 @@ public class QQLoginWebPane extends JFXPanel { QQLoginWebPane.this.setScene(scene); WebView webView = new WebView(); webEngine = webView.getEngine(); - webEngine.load("file:///" + installHome + "/scripts/store/web/qqLogin.html"); + webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"); webEngine.setOnAlert(new EventHandler>() { @Override public void handle(WebEvent event) { diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index 79fb20dce..52211c757 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -26,7 +26,7 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { String username = DesignerEnvManager.getEnvManager().getBBSName(); - if (username == null) { + if (username == null || username.equals("")) { }else { result = username; } @@ -34,4 +34,4 @@ public class GetLoginInfoExecutor implements Executor { } }; } -} +} \ No newline at end of file From bfdab077d8edeaa0852f223f161d017c2e07abe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Mon, 22 Aug 2016 21:12:21 +0800 Subject: [PATCH 02/92] =?UTF-8?q?=E5=85=B3=E9=97=AD=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关闭窗口 --- designer_base/src/com/fr/design/extra/QQLoginWebBridge.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index f566d2e69..d37b2fea1 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -102,6 +102,7 @@ public class QQLoginWebBridge { DesignerEnvManager.getEnvManager().setBBSName(username); }else if (status.equals(LOGINFAILED)){ //账号没有QQ授权 + closeQQWindow(); try { Desktop.getDesktop().browse(new URI(BBS_URL)); }catch (Exception exp) { From 7dbe35bb7ab7f923bdf94d6c69be41f370435e47 Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 Aug 2016 09:32:11 +0800 Subject: [PATCH 03/92] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=9C=A8=E5=AE=89=E8=A3=85=E6=8F=92=E4=BB=B6=E6=97=B6=E5=81=9A?= =?UTF-8?q?=E7=9A=84=E5=85=B6=E4=BB=96=E6=93=8D=E4=BD=9C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 7 +++++++ .../fun/PluginInstallOptionProcessor.java | 19 ++++++++++++++++++ .../AbstractPluginInstallOptionProcessor.java | 20 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java create mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 8bab17e68..c5fa5fcfb 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,6 +3,8 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.fun.PluginInstallOptionProcessor; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; @@ -192,6 +194,11 @@ public class PluginHelper { if (plugin == null) { throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install")); } + PluginInstallOptionProcessor processor = ExtraDesignClassManager.getInstance().getSingle(PluginInstallOptionProcessor.MARK_STRING); + if (processor != null) { + processor.pluginInstallOption(); + } + if (PluginLoader.getLoader().isInstalled(plugin)) { throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Has_Been_Installed")); } diff --git a/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java b/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java new file mode 100644 index 000000000..6302fe5c3 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java @@ -0,0 +1,19 @@ +package com.fr.design.fun; + +import com.fr.stable.fun.mark.Immutable; + +/** + * Created by Administrator on 2016/8/26. + */ +public interface PluginInstallOptionProcessor extends Immutable { + + String MARK_STRING = "PluginInstallOptionProcessor"; + + int CURRENT_LEVEL = 1; + + /** + * 安裝插件時的其他操作 + */ + void pluginInstallOption() throws Exception; +} + diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java b/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java new file mode 100644 index 000000000..385da7252 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java @@ -0,0 +1,20 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.PluginInstallOptionProcessor; +import com.fr.stable.fun.mark.API; + +/** + * Created by Administrator on 2016/8/26. + */ +@API(level = PluginInstallOptionProcessor.CURRENT_LEVEL) +public abstract class AbstractPluginInstallOptionProcessor implements PluginInstallOptionProcessor{ + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + public int layerIndex() { + return DEFAULT_LAYER_INDEX; + } + + +} From 89ce432aaa1ec6182e1b0bce53a867bec47ef055 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 29 Aug 2016 10:05:35 +0800 Subject: [PATCH 04/92] =?UTF-8?q?=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 7 ------- .../fun/PluginInstallOptionProcessor.java | 19 ------------------ .../AbstractPluginInstallOptionProcessor.java | 20 ------------------- 3 files changed, 46 deletions(-) delete mode 100644 designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java delete mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index c5fa5fcfb..8bab17e68 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,8 +3,6 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.fun.PluginInstallOptionProcessor; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; @@ -194,11 +192,6 @@ public class PluginHelper { if (plugin == null) { throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip_Cannot_Be_Install")); } - PluginInstallOptionProcessor processor = ExtraDesignClassManager.getInstance().getSingle(PluginInstallOptionProcessor.MARK_STRING); - if (processor != null) { - processor.pluginInstallOption(); - } - if (PluginLoader.getLoader().isInstalled(plugin)) { throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Has_Been_Installed")); } diff --git a/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java b/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java deleted file mode 100644 index 6302fe5c3..000000000 --- a/designer_base/src/com/fr/design/fun/PluginInstallOptionProcessor.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.fr.design.fun; - -import com.fr.stable.fun.mark.Immutable; - -/** - * Created by Administrator on 2016/8/26. - */ -public interface PluginInstallOptionProcessor extends Immutable { - - String MARK_STRING = "PluginInstallOptionProcessor"; - - int CURRENT_LEVEL = 1; - - /** - * 安裝插件時的其他操作 - */ - void pluginInstallOption() throws Exception; -} - diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java b/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java deleted file mode 100644 index 385da7252..000000000 --- a/designer_base/src/com/fr/design/fun/impl/AbstractPluginInstallOptionProcessor.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.fr.design.fun.impl; - -import com.fr.design.fun.PluginInstallOptionProcessor; -import com.fr.stable.fun.mark.API; - -/** - * Created by Administrator on 2016/8/26. - */ -@API(level = PluginInstallOptionProcessor.CURRENT_LEVEL) -public abstract class AbstractPluginInstallOptionProcessor implements PluginInstallOptionProcessor{ - public int currentAPILevel() { - return CURRENT_LEVEL; - } - - public int layerIndex() { - return DEFAULT_LAYER_INDEX; - } - - -} From 05e4fc08cd0641933dcf81ad853864e01dbd120d Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 29 Aug 2016 14:38:31 +0800 Subject: [PATCH 05/92] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E7=94=BB=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/chart/gui/ChartComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java index a33fdc166..186b7eb6c 100644 --- a/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java +++ b/designer_chart/src/com/fr/design/chart/gui/ChartComponent.java @@ -316,7 +316,7 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene //不直接画chartGlyph而画image的原因是表单的柱形图会溢出表单 //其他图都ok,其实感觉应该是柱形图画的不对,应该也可以改那边 Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution()); - g2d.drawImage(chartImage, 0, 0, chartWidth, chartHeight, null); + g2d.drawImage(chartImage, 0, 0, null); } } From d6788f0f0a0cbadeed83d5588df5a42b4673c3ba Mon Sep 17 00:00:00 2001 From: sunmondong Date: Mon, 29 Aug 2016 17:35:55 +0800 Subject: [PATCH 06/92] =?UTF-8?q?=E7=BC=A9=E5=B0=8F=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/build.gradle | 2 +- designer_base/build.gradle.bak | 4 ++-- designer_chart/build.gradle | 2 +- designer_chart/build.gradle.bak | 4 ++-- designer_form/build.gradle | 2 +- designer_form/build.gradle.bak | 20 ++++++++++---------- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/designer_base/build.gradle b/designer_base/build.gradle index cbaf1a695..285295c56 100644 --- a/designer_base/build.gradle +++ b/designer_base/build.gradle @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_base/build.gradle.bak b/designer_base/build.gradle.bak index bd5f62e8e..e7c5a8e1f 100644 --- a/designer_base/build.gradle.bak +++ b/designer_base/build.gradle.bak @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } @@ -56,7 +56,7 @@ task compressJS{ fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", , charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') diff --git a/designer_chart/build.gradle b/designer_chart/build.gradle index 946649195..ec39e786a 100644 --- a/designer_chart/build.gradle +++ b/designer_chart/build.gradle @@ -31,7 +31,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //指定外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_chart/build.gradle.bak b/designer_chart/build.gradle.bak index 2a9777371..92f055162 100644 --- a/designer_chart/build.gradle.bak +++ b/designer_chart/build.gradle.bak @@ -31,7 +31,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //指定外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } @@ -54,7 +54,7 @@ task compressJS{ fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", , charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') diff --git a/designer_form/build.gradle b/designer_form/build.gradle index ca89333a4..6c0df949c 100644 --- a/designer_form/build.gradle +++ b/designer_form/build.gradle @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar")//,exclude:"finereport-design-stable/${branchName}/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_form/build.gradle.bak b/designer_form/build.gradle.bak index f6c634dd1..4204c2415 100644 --- a/designer_form/build.gradle.bak +++ b/designer_form/build.gradle.bak @@ -3,19 +3,19 @@ apply plugin: 'java' tasks.withType(JavaCompile){ options.encoding = 'UTF-8' } -//ָjdk汾 +//指定构建的jdk版本 sourceCompatibility=1.8 -//ָɵjar汾 +//指定生成的jar包版本 version='8.0' def srcDir="." -//ָjar +//指明生成jar包的名字 jar{ baseName='fr-designer-report' } -//Դλ +//源码所在位置 sourceSets{ main{ java{ @@ -25,20 +25,20 @@ sourceSets{ } } -//ȡʲô֧ +//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//ⲿ +//声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar")//,exclude:"finereport-design-stable/${branchName}/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } -//ָ޷ļ· +//指明无法编译文件所在路径 def dataContent ={def dir -> copySpec{ from ("${dir}"){ @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } -//.javaļƵclassesļ +//将非.java文件复制到classes文件夹下 参与打包 task copyFile(type:Copy,dependsOn:compileJava){ copy{ with dataContent.call("${srcDir}/src") @@ -58,7 +58,7 @@ task copyFile(type:Copy,dependsOn:compileJava){ } -//ѹĿеjsļ +//压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { From 59a3e8f7bec4dc4515095cc27f1e5012d065f5f1 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Mon, 29 Aug 2016 18:07:17 +0800 Subject: [PATCH 07/92] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/build.gradle | 2 +- designer_base/build.gradle.bak | 2 +- designer_chart/build.gradle | 2 +- designer_chart/build.gradle.bak | 2 +- designer_form/build.gradle | 2 +- designer_form/build.gradle.bak | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/designer_base/build.gradle b/designer_base/build.gradle index 285295c56..e7c5a8e1f 100644 --- a/designer_base/build.gradle +++ b/designer_base/build.gradle @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_base/build.gradle.bak b/designer_base/build.gradle.bak index e7c5a8e1f..285295c56 100644 --- a/designer_base/build.gradle.bak +++ b/designer_base/build.gradle.bak @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_chart/build.gradle b/designer_chart/build.gradle index ec39e786a..92f055162 100644 --- a/designer_chart/build.gradle +++ b/designer_chart/build.gradle @@ -31,7 +31,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //指定外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_chart/build.gradle.bak b/designer_chart/build.gradle.bak index 92f055162..ec39e786a 100644 --- a/designer_chart/build.gradle.bak +++ b/designer_chart/build.gradle.bak @@ -31,7 +31,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //指定外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_form/build.gradle b/designer_form/build.gradle index 6c0df949c..4204c2415 100644 --- a/designer_form/build.gradle +++ b/designer_form/build.gradle @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } diff --git a/designer_form/build.gradle.bak b/designer_form/build.gradle.bak index 4204c2415..6c0df949c 100644 --- a/designer_form/build.gradle.bak +++ b/designer_form/build.gradle.bak @@ -33,7 +33,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) //声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/*/build/libs/*.jar") testCompile 'junit:junit:4.12' } From 52af1da90319089e0a1bd45d5a38afcae212d48c Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 29 Aug 2016 19:04:18 +0800 Subject: [PATCH 08/92] =?UTF-8?q?bug103155,tab=E5=B8=83=E5=B1=80=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E5=8A=9F=E8=83=BD=E5=85=88=E5=B1=8F?= =?UTF-8?q?=E8=94=BD=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/CompositeComponentAdapter.java | 36 ++++++++----------- .../fr/design/designer/creator/XCreator.java | 9 +++++ .../creator/cardlayout/XWCardLayout.java | 30 +++++++--------- 3 files changed, 36 insertions(+), 39 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java index e6f607e41..12bd2515f 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/component/CompositeComponentAdapter.java @@ -1,38 +1,31 @@ package com.fr.design.designer.beans.adapters.component; -import java.awt.AlphaComposite; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.event.MouseEvent; -import java.beans.IntrospectionException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; - -import javax.swing.Action; -import javax.swing.JComponent; -import javax.swing.JPopupMenu; - import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.beans.GroupModel; -import com.fr.design.mainframe.FormDesigner; -import com.fr.design.gui.xtable.PropertyGroupModel; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.actions.ChangeNameAction; import com.fr.design.designer.beans.events.DesignerEditor; import com.fr.design.designer.creator.CRPropertyDescriptor; import com.fr.design.designer.creator.XButton; import com.fr.design.designer.creator.XCreator; +import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.gui.xtable.PropertyGroupModel; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.utils.ComponentUtils; +import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.Button; import com.fr.form.ui.Widget; -import com.fr.design.form.util.XCreatorConstants; import com.fr.stable.StringUtils; import com.fr.stable.core.PropertyChangeAdapter; -import com.fr.design.utils.ComponentUtils; -import com.fr.design.utils.gui.LayoutUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.MouseEvent; +import java.beans.IntrospectionException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; public class CompositeComponentAdapter implements ComponentAdapter { @@ -81,7 +74,8 @@ public class CompositeComponentAdapter implements ComponentAdapter { } //底层布局或者是自适应布局都不能删除 boolean isRootComponent = ComponentUtils.isRootComponent(xCreator) || designer.isRoot(xCreator); - changeVarNameAction.setEnabled(!isRootComponent); + //bug103155 有的布局的重命名(tab布局)涉及到其他非子节点的属性修改,支持起来比较麻烦,先屏蔽了控件树面板的修改,强制使用属性面板修改 + changeVarNameAction.setEnabled(!isRootComponent && xCreator.supportRenameInWidgetTree()); popupMenu.add(changeVarNameAction); Action[] actions = designer.getActions(); diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index 62cfe0b25..ab08de3fe 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -544,4 +544,13 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { return new WidgetPropertyUIProvider[0]; } + + /** + * 控件树面板中是否支持重命名选项 + * + * @return 控件树面板中是否支持重命名选项 + */ + public boolean supportRenameInWidgetTree() { + return true; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java index e5d8d44d2..b5c155c70 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java @@ -3,33 +3,17 @@ */ package com.fr.design.designer.creator.cardlayout; -import java.awt.CardLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.event.ContainerEvent; -import java.beans.IntrospectionException; - -import javax.swing.border.Border; - import com.fr.base.background.ColorBackground; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRCardLayoutAdapter; import com.fr.design.designer.beans.models.SelectionModel; -import com.fr.design.designer.creator.CRPropertyDescriptor; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWidgetCreator; +import com.fr.design.designer.creator.*; import com.fr.design.form.layout.FRCardLayout; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.widget.editors.CardTagWLayoutBorderStyleEditor; import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; -import com.fr.form.ui.CardAddButton; -import com.fr.form.ui.CardSwitchButton; -import com.fr.form.ui.LayoutBorderStyle; -import com.fr.form.ui.Widget; -import com.fr.form.ui.WidgetTitle; +import com.fr.form.ui.*; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WLayout; @@ -41,6 +25,11 @@ import com.fr.general.Inter; import com.fr.stable.Constants; import com.fr.stable.core.PropertyChangeAdapter; +import javax.swing.border.Border; +import java.awt.*; +import java.awt.event.ContainerEvent; +import java.beans.IntrospectionException; + /** * @author richer * @since 6.5.3 @@ -379,4 +368,9 @@ public class XWCardLayout extends XLayoutContainer { public XLayoutContainer getTopLayout() { return this.getBackupParent().getTopLayout(); } + + @Override + public boolean supportRenameInWidgetTree() { + return false; + } } \ No newline at end of file From f468fc4491644d9c2c851e64d37921e063db1824 Mon Sep 17 00:00:00 2001 From: zhouping Date: Tue, 30 Aug 2016 10:59:27 +0800 Subject: [PATCH 09/92] bug:103653 --- .../fr/design/designer/beans/painters/FRFitLayoutPainter.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/painters/FRFitLayoutPainter.java b/designer_form/src/com/fr/design/designer/beans/painters/FRFitLayoutPainter.java index 8634ae172..e29908075 100644 --- a/designer_form/src/com/fr/design/designer/beans/painters/FRFitLayoutPainter.java +++ b/designer_form/src/com/fr/design/designer/beans/painters/FRFitLayoutPainter.java @@ -107,10 +107,9 @@ public class FRFitLayoutPainter extends AbstractPainter{ // 下边缘 Rectangle bottomEdge = new Rectangle(containerX, bottomY, containerWidth, BORDER_PROPORTION); if(bottomEdge.intersects(currentXY)){ - hotspot_bounds.y -= WCardMainBorderLayout.TAB_HEIGHT/2; + hotspot_bounds.y += (container.getHeight() - WCardMainBorderLayout.TAB_HEIGHT)/2; hot_rec[WIDTH] = container.getWidth(); hot_rec[HEIGHT] = (container.getHeight() + WCardMainBorderLayout.TAB_HEIGHT)/2; - accept = false; } //左右边缘的高度 -10*2 是为了不和上下边缘重合 From 74152de9974362807f9e8c437f4b741ad6532c33 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 30 Aug 2016 15:46:50 +0800 Subject: [PATCH 10/92] 1 --- .../src/com/fr/design/formula/FunctionConstants.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/formula/FunctionConstants.java b/designer_base/src/com/fr/design/formula/FunctionConstants.java index dd3081271..cfb983dd7 100644 --- a/designer_base/src/com/fr/design/formula/FunctionConstants.java +++ b/designer_base/src/com/fr/design/formula/FunctionConstants.java @@ -122,7 +122,10 @@ public abstract class FunctionConstants { String[] arr = filePath.split("!/"); String jarPath = arr[0].substring(6); // alex:substring(6)去掉前面的file:/这六个字符 String classPath = arr[1]; - if (OperatingSystem.isMacOS()){ + if(classPath.endsWith("/")){ + classPath = classPath.substring(0, classPath.length() - 1); + } + if (!OperatingSystem.isWindows()){ //windows里substring后是d:\123\456, mac下substring后是Application/123/456 jarPath = StringUtils.perfectStart(jarPath, "/"); } From f264ccda890243773f58383fbb56ab5634bdb8a2 Mon Sep 17 00:00:00 2001 From: zhouping Date: Tue, 30 Aug 2016 16:19:36 +0800 Subject: [PATCH 11/92] =?UTF-8?q?=E7=BB=9D=E5=AF=B9=E5=B8=83=E5=B1=80bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/designer/beans/location/AccessDirection.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java index dde93b4ef..a9d700770 100644 --- a/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java +++ b/designer_form/src/com/fr/design/designer/beans/location/AccessDirection.java @@ -33,6 +33,9 @@ public abstract class AccessDirection implements Direction { protected int[] sorption(int x, int y,Rectangle current_bounds, FormDesigner designer) { // 自适应布局不需要吸附线,但需要对齐线,对齐线后面处理 if (!designer.hasWAbsoluteLayout()) { + designer.getStateModel().setEquidistantLine(null); + designer.getStateModel().setXAbsorptionline(null); + designer.getStateModel().setYAbsorptionline(null); return new int[] { x, y }; } else { int posy = current_bounds.y; @@ -111,6 +114,7 @@ public abstract class AccessDirection implements Direction { designer.getStateModel().setXAbsorptionline(findInX && current_bounds.getWidth() > MoveUtils.SORPTION_UNIT ? Absorptionline.createXAbsorptionline(point.x) : null); designer.getStateModel().setYAbsorptionline(findInY && current_bounds.getHeight() > MoveUtils.SORPTION_UNIT ? Absorptionline.createYAbsorptionline(point.y) : null); + designer.getStateModel().setEquidistantLine(null); } private Rectangle getWidgetRelativeBounds(Rectangle bounds, FormSelection selection){ From c772852a9c08a2e18121589833a7926ed89eab69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Tue, 30 Aug 2016 17:44:32 +0800 Subject: [PATCH 12/92] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/QQLoginWebBridge.java | 4 ++-- .../src/com/fr/design/extra/exe/GetLoginInfoExecutor.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index d37b2fea1..3ee043493 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -3,6 +3,7 @@ package com.fr.design.extra; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ilable.UILabel; +import com.fr.general.SiteCenter; import javafx.scene.web.WebEngine; import org.json.JSONObject; @@ -19,7 +20,6 @@ public class QQLoginWebBridge { private WebEngine webEngine; private static String LOGINSUCCESS = "ok"; private static String LOGINFAILED = "failed"; - private static String BBS_URL = "http://bbs.fanruan.com"; private UIDialog uiDialog; private UILabel uiLabel; private UIDialog qqDialog; @@ -104,7 +104,7 @@ public class QQLoginWebBridge { //账号没有QQ授权 closeQQWindow(); try { - Desktop.getDesktop().browse(new URI(BBS_URL)); + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.default"))); }catch (Exception exp) { } } diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index 52211c757..a7649be64 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -26,7 +26,7 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { String username = DesignerEnvManager.getEnvManager().getBBSName(); - if (username == null || username.equals("")) { + if (username == null || username.isEmpty()) { }else { result = username; } From 0f670e4abaf89635519e345a021be06fc50f63c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Wed, 31 Aug 2016 13:31:26 +0800 Subject: [PATCH 13/92] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/exe/GetLoginInfoExecutor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index a7649be64..c3d03daa7 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -26,7 +26,7 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { String username = DesignerEnvManager.getEnvManager().getBBSName(); - if (username == null || username.isEmpty()) { + if (username.isEmpty()) { }else { result = username; } From 169782b7b185cfac24eb29888b3814de0502ccac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Wed, 31 Aug 2016 14:10:51 +0800 Subject: [PATCH 14/92] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/exe/GetLoginInfoExecutor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index c3d03daa7..6258d0233 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -2,6 +2,7 @@ package com.fr.design.extra.exe; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.Process; +import com.fr.stable.StringUtils; /** * Created by lp on 2016/8/16. @@ -26,7 +27,7 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { String username = DesignerEnvManager.getEnvManager().getBBSName(); - if (username.isEmpty()) { + if (StringUtils.isEmpty(username)) { }else { result = username; } From 4ecfc1c9269ac4b7383d614327b77db3ca743931 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 31 Aug 2016 15:57:02 +0800 Subject: [PATCH 15/92] =?UTF-8?q?=E6=9F=90=E4=BA=9B=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index d0177d404..b04e1e5b1 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -284,7 +284,7 @@ public abstract class ToolBarMenuDock { return processor == null ? new GlobalTableDataAction() : processor.createServerTDAction(); } - private boolean shouldShowPlugin() { + protected boolean shouldShowPlugin() { return FRContext.isChineseEnv() || ComparatorUtils.equals(GeneralContext.getLocale(), Locale.TAIWAN); } @@ -326,7 +326,8 @@ public abstract class ToolBarMenuDock { shortCuts.add(new SignAction()); return shortCuts.toArray(new ShortCut[shortCuts.size()]); } - private MenuDef createHelpMenuDef() { + + public MenuDef createHelpMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_Help"), 'H'); ShortCut[] otherHelpShortCuts = createHelpShortCuts(); for (ShortCut shortCut : otherHelpShortCuts) { @@ -335,7 +336,8 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.HELP); return menuDef; } - private MenuDef createCommunityMenuDef() { + + public MenuDef createCommunityMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_COMMUNITY"), 'C'); ShortCut[] otherCommunityShortCuts = createCommunityShortCuts(); for (ShortCut shortCut : otherCommunityShortCuts) { From 0d2ad4464118aac3cba767c58dce7fa532f8f0ee Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 1 Sep 2016 10:54:08 +0800 Subject: [PATCH 16/92] =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=94=AF=E6=8C=81=E5=85=AC=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E6=8A=8A=E5=89=8D=E9=9D=A2=E7=9A=84=E6=9D=A1=E4=BB=B6=E6=A1=86?= =?UTF-8?q?=E4=B9=9F=E6=94=B9=E6=88=90=E5=85=AC=E5=BC=8F=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/report/ValueVerifierEditPane.java | 11 ++- .../UIArrayFormulaTableModel.java | 68 +++++++++++++++++++ 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 designer_base/src/com/fr/design/gui/itableeditorpane/UIArrayFormulaTableModel.java diff --git a/designer/src/com/fr/design/report/ValueVerifierEditPane.java b/designer/src/com/fr/design/report/ValueVerifierEditPane.java index ebbc9901b..0490ea782 100644 --- a/designer/src/com/fr/design/report/ValueVerifierEditPane.java +++ b/designer/src/com/fr/design/report/ValueVerifierEditPane.java @@ -3,13 +3,14 @@ package com.fr.design.report; import com.fr.base.Formula; import com.fr.data.VerifyItem; import com.fr.design.gui.itableeditorpane.ActionStyle; -import com.fr.design.gui.itableeditorpane.UIArrayTableModel; +import com.fr.design.gui.itableeditorpane.UIArrayFormulaTableModel; import com.fr.design.gui.itableeditorpane.UITableEditorPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.report.write.ValueVerifier; import com.fr.stable.FormulaProvider; +import com.fr.stable.StableUtils; import javax.swing.*; import java.awt.*; @@ -23,7 +24,7 @@ public class ValueVerifierEditPane extends JPanel { public ValueVerifierEditPane() { // ben:UITableEditorPane; this.setLayout(FRGUIPaneFactory.createM_BorderLayout()); - tableEditorPane = new UITableEditorPane(new UIArrayTableModel(columnNames, new int[] { + tableEditorPane = new UITableEditorPane(new UIArrayFormulaTableModel(columnNames, new int[] { ActionStyle.ADDSTYLE, ActionStyle.DELETESTYLE, ActionStyle.MOVEUPSTYLE, ActionStyle.MOVEDOWNSTYLE})); this.add(tableEditorPane, BorderLayout.CENTER); @@ -45,7 +46,11 @@ public class ValueVerifierEditPane extends JPanel { if (formula == null) { continue; } - os[tableDataCount++] = new Object[]{formula.getPureContent(), item.getMessage()}; + String msg = item.getMessage(); + if (!StableUtils.canBeFormula(msg)) { + msg = "\"" + msg + "\""; + } + os[tableDataCount++] = new Object[]{formula, new Formula(msg)}; } this.tableEditorPane.populate(os); } diff --git a/designer_base/src/com/fr/design/gui/itableeditorpane/UIArrayFormulaTableModel.java b/designer_base/src/com/fr/design/gui/itableeditorpane/UIArrayFormulaTableModel.java new file mode 100644 index 000000000..a3106b271 --- /dev/null +++ b/designer_base/src/com/fr/design/gui/itableeditorpane/UIArrayFormulaTableModel.java @@ -0,0 +1,68 @@ +package com.fr.design.gui.itableeditorpane; + +import com.fr.design.editor.ValueEditorPane; +import com.fr.design.editor.ValueEditorPaneFactory; + +import javax.swing.*; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.table.TableCellEditor; +import java.awt.*; + +/** + * 全部是公式编辑的model + * Coder: zack + * Date: 2016/8/31 + * Time: 18:58 + */ +public class UIArrayFormulaTableModel extends UIArrayTableModel { + public UIArrayFormulaTableModel(String[] s, int[] array) { + super(s, array); + setDefaultEditors(); + } + + public void setDefaultEditors() { + for (int i = 0; i < getColumnCount(); i++) { + setDefaultEditor(Object.class, new FormulaValueEditor()); + } + } + + private class FormulaValueEditor extends AbstractCellEditor implements TableCellEditor { + private static final long serialVersionUID = 1L; + private ValueEditorPane editor; + + public FormulaValueEditor() { + + editor = ValueEditorPaneFactory.createFormulaValueEditorPane(); + + this.addCellEditorListener(new CellEditorListener() { + + @Override + public void editingCanceled(ChangeEvent e) { + } + + @Override + public void editingStopped(ChangeEvent e) { + if (table.getSelectedRow() == -1 || table.getSelectedColumn() == -1) { + return; + } + Object[] para = getList().get(table.getSelectedRow()); + para[table.getSelectedColumn()] = getCellEditorValue(); + fireTableDataChanged(); + } + }); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + editor.clearComponentsData(); + editor.populate(value == null ? "" : value); + return editor; + } + + @Override + public Object getCellEditorValue() { + return editor.update(); + } + } +} From 7ad696659067d15b56b18d2ea9789cee1c0b755f Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 1 Sep 2016 10:58:55 +0800 Subject: [PATCH 17/92] =?UTF-8?q?=E8=A1=A5=E4=B8=AA=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/report/ValueVerifierEditPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/report/ValueVerifierEditPane.java b/designer/src/com/fr/design/report/ValueVerifierEditPane.java index 0490ea782..f3ebda61a 100644 --- a/designer/src/com/fr/design/report/ValueVerifierEditPane.java +++ b/designer/src/com/fr/design/report/ValueVerifierEditPane.java @@ -48,7 +48,7 @@ public class ValueVerifierEditPane extends JPanel { } String msg = item.getMessage(); if (!StableUtils.canBeFormula(msg)) { - msg = "\"" + msg + "\""; + msg = "\"" + msg + "\"";//如果报错信息是以前的写法(字符串)就拼上"" } os[tableDataCount++] = new Object[]{formula, new Formula(msg)}; } From 9d57c1a74dc8e702491b34105fd52f628bfb5e99 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 14:29:53 +0800 Subject: [PATCH 18/92] =?UTF-8?q?=E5=87=86=E5=A4=87=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 1 + .../fr/design/extra/PluginManagerPane.java | 6 +- .../com/fr/design/extra/PluginWebBridge.java | 26 ++ .../extra/pre4plugin/InstallPhantomJs.java | 280 ++++++++++++++++++ .../extra/pre4plugin/NoneEnv4Plugin.java | 16 + .../extra/pre4plugin/PluginFactory.java | 34 +++ .../extra/pre4plugin/PreEnv4Plugin.java | 10 + .../design/mainframe/chart/ChartEditPane.java | 10 + 8 files changed, 380 insertions(+), 3 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 8bab17e68..0b4257885 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -30,6 +30,7 @@ public class PluginHelper { private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; public static final String TEMP_FILE = "temp.zip"; + public static final String PHANTOM_PATH = "http://ocrpz63ed.bkt.clouddn.com/phantomjs.zip"; /** * 下载插件 diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index 1c9f7aafa..effa66f57 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - if (StableUtils.isDebug()) { + /*if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else { + } else {*/ installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - } + /*}*/ } else { initTraditionalStore(); } diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 82dd4cf35..0e03a6e70 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -4,6 +4,9 @@ import com.fr.base.FRContext; import com.fr.design.RestartHelper; import com.fr.design.dialog.UIDialog; import com.fr.design.extra.exe.*; +import com.fr.design.extra.pre4plugin.InstallPhantomJs; +import com.fr.design.extra.pre4plugin.PluginFactory; +import com.fr.design.extra.pre4plugin.PreEnv4Plugin; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; @@ -147,6 +150,29 @@ public class PluginWebBridge { new Thread(task).start(); } + + + + /** + * + * @param pluginID 插件类型 + * @return 如果不需要准备或者已经准备,返回true + */ + public boolean checkVanChartPluginOnline(final String pluginID) { + PreEnv4Plugin preEnv4Plugin = PluginFactory.createPreEnv(pluginID); + return preEnv4Plugin.checkEnv(); + } + + /** + * + * @param pluginID 插件类型 + * @return 是否准备好了,是或者不需要准备,返回true, 否则返回false + */ + public boolean preEnv4PluginOnline(final String pluginID) { + PreEnv4Plugin preEnv4Plugin = PluginFactory.createPreEnv(pluginID); + return preEnv4Plugin.preOnline(); + } + /** * 从磁盘上选择插件安装包进行安装 * diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java b/designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java new file mode 100644 index 000000000..4d2d0a486 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java @@ -0,0 +1,280 @@ +package com.fr.design.extra.pre4plugin; + +/** + * Created by hufan on 2016/8/31. + */ +import com.fr.base.FRContext; +import com.fr.design.extra.PluginConstants; +import com.fr.design.extra.PluginHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.http.HttpClient; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import java.awt.*; + +import java.awt.event.ActionEvent; + + + +import java.awt.event.ActionListener; + +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.*; +import java.net.HttpURLConnection; +import javax.swing.*; + + +import javax.swing.event.ChangeEvent; + +import javax.swing.event.ChangeListener; + + + +public class InstallPhantomJs implements ActionListener, ChangeListener, PreEnv4Plugin { + private static final String PHANTOM_PATH = "http://ocrpz63ed.bkt.clouddn.com/phantomjs.zip"; + + //链接服务器的客户端 + private HttpClient httpClient; + + //已读文件字节数 + private int totalBytesRead = 0; + + //文件总长度 + private int totalSize = 0; + + //进度显示界面 + private JDialog frame = null; + + //进度条 + private JProgressBar progressbar; + + + private JLabel label; + + //进度条更新时钟 + private Timer timer; + + //文件路径 + private String filePath = StringUtils.EMPTY; + + //是否继续下载 + private boolean flag = true; + + //安装结果 + boolean result = false; + + private static final String WEB_INFO = FRContext.getCurrentEnv().getPath(); + private static final String WEB_REPORT = new File(WEB_INFO).getParent(); + public static String PHANTOM_ENV = WEB_REPORT + File.separator + "phantomjs"; + + public String getFilePath() { + return filePath; + } + + public InstallPhantomJs() { + } + + //是否可以连接服务器 + public boolean serverReached(){ + return totalSize != -1; + } + + private void init(){ + frame = new JDialog(DesignerContext.getDesignerFrame(), true); + frame.setTitle("在线安装phantomjs"); + frame.setSize(400, 130); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + frame.setLocation(screenSize.width/2-400/2,screenSize.height/2-130/2); + frame.setResizable(false); + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + //取消下载 + flag = false; + frame.dispose(); + } + }); + + Container contentPanel = frame.getContentPane(); + label = new JLabel("", JLabel.CENTER); + + progressbar = new JProgressBar(); + progressbar.setOrientation(JProgressBar.HORIZONTAL); + progressbar.setMinimum(0); + progressbar.setMaximum(totalSize); + progressbar.setValue(0); + progressbar.setStringPainted(true); + progressbar.addChangeListener(this); + progressbar.setPreferredSize(new Dimension(300, 20)); + progressbar.setBorderPainted(true); + progressbar.setBackground(Color.pink); + + timer = new Timer(100, this); + + contentPanel.add(label, BorderLayout.CENTER); + contentPanel.add(progressbar, BorderLayout.SOUTH); + } + + private int connectToServer(){ + httpClient = new HttpClient(PHANTOM_PATH); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + return httpClient.getContentLength(); + } + return -1; + } + + //安装 + public boolean install() { + //初始化安装进度界面 + init(); + //连接服务器 + totalSize = connectToServer(); + + //开始时钟 + timer.start(); + //开始下载 + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + installPhantomJsOnline(httpClient); + } + }); + thread.start(); + + frame.setVisible(true); + //等待下载线程处理结束 + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + return false; + } + //停止时钟 + timer.stop(); + return result; + } + + private boolean downloadPluginPhantomJSFile(HttpClient httpClient) throws Exception { + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + totalBytesRead = 0; + + while ((bytesRead = reader.read(buffer)) > 0 && flag) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + totalBytesRead += bytesRead; + } + reader.close(); + writer.flush(); + writer.close(); + filePath = temp; + + //下载被取消 + if (flag == false){ + result = false; + return false; + } + + //准备安装 + + } else { + result = false; + throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); + } + return true; + } + + public void installPhantomJsOnline(HttpClient httpClient){ + try { + if (downloadPluginPhantomJSFile(httpClient)){ + //安装文件 + installPluginPhantomJsFile(filePath); + result = true; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + //安装已经下载好的文件 + private void installPluginPhantomJsFile(String filePath){ + IOUtils.unzip(new File(filePath), PHANTOM_ENV); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == timer) { + int value = progressbar.getValue(); + if (value < totalSize) { + progressbar.setValue(totalBytesRead); + } + else { + timer.stop(); + frame.dispose(); + } + } + } + + + + public void stateChanged(ChangeEvent e1) { + + double value = (double)progressbar.getValue() / 1000000.0; + + if (e1.getSource() == progressbar) { + + label.setText("已下载:" + Double.toString(value) + " m"); + + label.setForeground(Color.blue); + + } + + } + + + @Override + public boolean preOnline() { + int choose = JOptionPane.showConfirmDialog(null, "新图表需要phantomjs支持。是否需要安装phantomjs(" + totalSize/1000000 + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + if (choose == 0){//下载安装 + InstallPhantomJs installPhantomJs = new InstallPhantomJs(); + if (!installPhantomJs.serverReached()){ + JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + //安装phantomJs + if (installPhantomJs.install()){ + JOptionPane.showMessageDialog(null, "安装成功!!"); + return true; + }else { + JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + }else {//不安装。无需为用户准备环境 + return true; + } + } + + @Override + public boolean checkEnv() { + //只有图表插件在下载前需要准备环境 + String web_info = FRContext.getCurrentEnv().getPath(); + String web_report = new File(web_info).getParent(); + //检测路径下有没有需要的环境 + return checkPath(web_report, "phantomjs"); + } + + private boolean checkPath(String rootPath, String targetFileName) { + //创建server环境路径 + String serverPath = rootPath + File.separator + targetFileName; + File phantom = new File(serverPath); + return phantom.exists() && phantom.isDirectory(); + } +} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java new file mode 100644 index 000000000..6d222d90a --- /dev/null +++ b/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java @@ -0,0 +1,16 @@ +package com.fr.design.extra.pre4plugin; + +/** + * Created by hufan on 2016/9/1. + */ +public class NoneEnv4Plugin implements PreEnv4Plugin { + @Override + public boolean preOnline() { + return true; + } + + @Override + public boolean checkEnv() { + return true; + } +} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java b/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java new file mode 100644 index 000000000..550cc2ae2 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java @@ -0,0 +1,34 @@ +package com.fr.design.extra.pre4plugin; + +import com.fr.general.FRLogger; + +import java.lang.reflect.Constructor; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by hufan on 2016/9/1. + */ +public class PluginFactory { + /** + * + * 标签Map + */ + private static Map> pluginMap = new HashMap>(); + static { + pluginMap.put("com.fr.plugin.chart.vancharts", InstallPhantomJs.class); + } + + public static PreEnv4Plugin createPreEnv(String pluginID) { + if(pluginMap.containsKey(pluginID)){ + try{ + Class cl = pluginMap.get(pluginID); + Constructor constructor = cl.getConstructor(); + return constructor.newInstance(); + } catch (Exception e){ + FRLogger.getLogger().error(e.getMessage()); + } + } + return new NoneEnv4Plugin(); + } +} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java new file mode 100644 index 000000000..9eccffb3a --- /dev/null +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java @@ -0,0 +1,10 @@ +package com.fr.design.extra.pre4plugin; + +/** + * Created by hufan on 2016/9/1. + */ +public interface PreEnv4Plugin { + public boolean preOnline(); + //是否已经准备好环境 + public boolean checkEnv(); +} diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index c3a2e1d50..7cbc87ca9 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -254,6 +254,16 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } + /** + * 响应事件. + */ + public void repaint() { + if (container != null && container.getEPane() != null) { + container.getEPane().validate(); + container.getEPane().repaint(); + } + } + public int getSelectedChartIndex(Chart chart){ int index = 0; if(typePane != null){ From 59cc6264ba04e2c0e6f83ff93879ec10d4a52a5c Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 14:32:53 +0800 Subject: [PATCH 19/92] update --- .../src/com/fr/design/extra/PluginHelper.java | 1 - .../src/com/fr/design/extra/PluginManagerPane.java | 6 +++--- .../src/com/fr/design/extra/PluginWebBridge.java | 1 - .../com/fr/design/mainframe/chart/ChartEditPane.java | 10 ---------- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 0b4257885..8bab17e68 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -30,7 +30,6 @@ public class PluginHelper { private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; public static final String TEMP_FILE = "temp.zip"; - public static final String PHANTOM_PATH = "http://ocrpz63ed.bkt.clouddn.com/phantomjs.zip"; /** * 下载插件 diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index effa66f57..1c9f7aafa 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - /*if (StableUtils.isDebug()) { + if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else {*/ + } else { installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - /*}*/ + } } else { initTraditionalStore(); } diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 0e03a6e70..39f7945b7 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -4,7 +4,6 @@ import com.fr.base.FRContext; import com.fr.design.RestartHelper; import com.fr.design.dialog.UIDialog; import com.fr.design.extra.exe.*; -import com.fr.design.extra.pre4plugin.InstallPhantomJs; import com.fr.design.extra.pre4plugin.PluginFactory; import com.fr.design.extra.pre4plugin.PreEnv4Plugin; import com.fr.general.FRLogger; diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 7cbc87ca9..c3a2e1d50 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -254,16 +254,6 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } } - /** - * 响应事件. - */ - public void repaint() { - if (container != null && container.getEPane() != null) { - container.getEPane().validate(); - container.getEPane().repaint(); - } - } - public int getSelectedChartIndex(Chart chart){ int index = 0; if(typePane != null){ From dfa8ef6c535ed33ce31182335d2643dc282ad6cf Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 15:00:42 +0800 Subject: [PATCH 20/92] update --- .../fr/design/extra/PluginManagerPane.java | 6 +-- ...mJs.java => PhantomJs4VanChartPlugin.java} | 53 +++++++++---------- .../extra/pre4plugin/PluginFactory.java | 2 +- 3 files changed, 28 insertions(+), 33 deletions(-) rename designer_base/src/com/fr/design/extra/pre4plugin/{InstallPhantomJs.java => PhantomJs4VanChartPlugin.java} (89%) diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index 1c9f7aafa..effa66f57 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - if (StableUtils.isDebug()) { + /*if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else { + } else {*/ installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - } + /*}*/ } else { initTraditionalStore(); } diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java similarity index 89% rename from designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java rename to designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java index 4d2d0a486..27373fb6f 100644 --- a/designer_base/src/com/fr/design/extra/pre4plugin/InstallPhantomJs.java +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java @@ -34,36 +34,28 @@ import javax.swing.event.ChangeListener; -public class InstallPhantomJs implements ActionListener, ChangeListener, PreEnv4Plugin { +public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, PreEnv4Plugin { + //七牛云服务器下载地址 private static final String PHANTOM_PATH = "http://ocrpz63ed.bkt.clouddn.com/phantomjs.zip"; //链接服务器的客户端 private HttpClient httpClient; - //已读文件字节数 private int totalBytesRead = 0; - //文件总长度 private int totalSize = 0; - //进度显示界面 private JDialog frame = null; - //进度条 private JProgressBar progressbar; - - + //进度信息 private JLabel label; - //进度条更新时钟 private Timer timer; - //文件路径 private String filePath = StringUtils.EMPTY; - //是否继续下载 private boolean flag = true; - //安装结果 boolean result = false; @@ -75,11 +67,12 @@ public class InstallPhantomJs implements ActionListener, ChangeListener, PreEnv4 return filePath; } - public InstallPhantomJs() { + public PhantomJs4VanChartPlugin() { } //是否可以连接服务器 - public boolean serverReached(){ + private boolean serverReached(){ + connectToServer(); return totalSize != -1; } @@ -119,21 +112,29 @@ public class InstallPhantomJs implements ActionListener, ChangeListener, PreEnv4 contentPanel.add(progressbar, BorderLayout.SOUTH); } - private int connectToServer(){ + private void connectToServer(){ + httpClient = new HttpClient(PHANTOM_PATH); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + totalSize = httpClient.getContentLength(); + }else { + totalSize = -1; + } + } + + private int getFileLength(){ httpClient = new HttpClient(PHANTOM_PATH); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - return httpClient.getContentLength(); + return httpClient.getContentLength(); } return -1; } //安装 - public boolean install() { + private boolean install() { + //连接服务器 + connectToServer(); //初始化安装进度界面 init(); - //连接服务器 - totalSize = connectToServer(); - //开始时钟 timer.start(); //开始下载 @@ -226,31 +227,25 @@ public class InstallPhantomJs implements ActionListener, ChangeListener, PreEnv4 public void stateChanged(ChangeEvent e1) { - double value = (double)progressbar.getValue() / 1000000.0; - if (e1.getSource() == progressbar) { - label.setText("已下载:" + Double.toString(value) + " m"); - label.setForeground(Color.blue); - } - } @Override public boolean preOnline() { - int choose = JOptionPane.showConfirmDialog(null, "新图表需要phantomjs支持。是否需要安装phantomjs(" + totalSize/1000000 + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + int fileLength = getFileLength(); + int choose = JOptionPane.showConfirmDialog(null, "新图表需要phantomjs支持。是否需要安装phantomjs(" + fileLength/1000000 + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0){//下载安装 - InstallPhantomJs installPhantomJs = new InstallPhantomJs(); - if (!installPhantomJs.serverReached()){ + if (!serverReached()){ JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); return false; } //安装phantomJs - if (installPhantomJs.install()){ + if (install()){ JOptionPane.showMessageDialog(null, "安装成功!!"); return true; }else { diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java b/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java index 550cc2ae2..450eab1ae 100644 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java @@ -16,7 +16,7 @@ public class PluginFactory { */ private static Map> pluginMap = new HashMap>(); static { - pluginMap.put("com.fr.plugin.chart.vancharts", InstallPhantomJs.class); + pluginMap.put("com.fr.plugin.chart.vancharts", PhantomJs4VanChartPlugin.class); } public static PreEnv4Plugin createPreEnv(String pluginID) { From 289dcdfae2187ee64e52032bb4bff1a21e8a3eba Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 15:02:25 +0800 Subject: [PATCH 21/92] update --- .../src/com/fr/design/extra/PluginManagerPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index effa66f57..1c9f7aafa 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - /*if (StableUtils.isDebug()) { + if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else {*/ + } else { installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - /*}*/ + } } else { initTraditionalStore(); } From b916d352b3064fe4b0c0dc849837ca71f311a306 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 17:25:23 +0800 Subject: [PATCH 22/92] phantomjs --- .../fr/design/extra/PluginManagerPane.java | 6 +- .../pre4plugin/PhantomJs4VanChartPlugin.java | 72 ++++++++++-------- .../extra/pre4plugin/image/background.png | Bin 0 -> 162451 bytes 3 files changed, 42 insertions(+), 36 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/image/background.png diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index 1c9f7aafa..effa66f57 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - if (StableUtils.isDebug()) { + /*if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else { + } else {*/ installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - } + /*}*/ } else { initTraditionalStore(); } diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java index 27373fb6f..d613b6cc8 100644 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java @@ -9,6 +9,7 @@ import com.fr.design.extra.PluginHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.general.IOUtils; import com.fr.general.Inter; +import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -23,21 +24,14 @@ import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; import java.io.*; import java.net.HttpURLConnection; import javax.swing.*; -import javax.swing.event.ChangeEvent; - -import javax.swing.event.ChangeListener; - - - -public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, PreEnv4Plugin { - //七牛云服务器下载地址 - private static final String PHANTOM_PATH = "http://ocrpz63ed.bkt.clouddn.com/phantomjs.zip"; - +public class PhantomJs4VanChartPlugin implements ActionListener, PreEnv4Plugin { + private static final String PHANTOM_PATH = SiteCenter.getInstance().acquireUrlByKind("plugin.phantomjs"); //链接服务器的客户端 private HttpClient httpClient; //已读文件字节数 @@ -63,6 +57,10 @@ public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, private static final String WEB_REPORT = new File(WEB_INFO).getParent(); public static String PHANTOM_ENV = WEB_REPORT + File.separator + "phantomjs"; + // 定义加载窗口大小 + private static final int LOAD_WIDTH = 455; + private static final int LOAD_HEIGHT = 295; + public String getFilePath() { return filePath; } @@ -77,12 +75,39 @@ public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, } private void init(){ + // 创建标签,并在标签上放置一张图片 + BufferedImage image = IOUtils.readImage("/com/fr/design/extra/pre4plugin/image/background.png"); + ImageIcon imageIcon = new ImageIcon(image); + label = new JLabel(imageIcon); + label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); + + progressbar = new JProgressBar(); + // 显示当前进度值信息 + progressbar.setStringPainted(true); + // 设置进度条边框不显示 + progressbar.setBorderPainted(false); + // 设置进度条的前景色 + progressbar.setForeground(new Color(0x38aef5)); + // 设置进度条的背景色 + progressbar.setBackground(new Color(188, 190, 194)); + progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); + progressbar.setMinimum(0); + progressbar.setMaximum(totalSize); + progressbar.setValue(0); + + timer = new Timer(100, this); + frame = new JDialog(DesignerContext.getDesignerFrame(), true); frame.setTitle("在线安装phantomjs"); - frame.setSize(400, 130); + frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - frame.setLocation(screenSize.width/2-400/2,screenSize.height/2-130/2); + frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); frame.setResizable(false); + // 设置布局为空 + frame.setLayout(new BorderLayout(0,0)); + frame.getContentPane().add(label, BorderLayout.CENTER); + frame.getContentPane().add(progressbar, BorderLayout.SOUTH); + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { @@ -91,25 +116,6 @@ public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, frame.dispose(); } }); - - Container contentPanel = frame.getContentPane(); - label = new JLabel("", JLabel.CENTER); - - progressbar = new JProgressBar(); - progressbar.setOrientation(JProgressBar.HORIZONTAL); - progressbar.setMinimum(0); - progressbar.setMaximum(totalSize); - progressbar.setValue(0); - progressbar.setStringPainted(true); - progressbar.addChangeListener(this); - progressbar.setPreferredSize(new Dimension(300, 20)); - progressbar.setBorderPainted(true); - progressbar.setBackground(Color.pink); - - timer = new Timer(100, this); - - contentPanel.add(label, BorderLayout.CENTER); - contentPanel.add(progressbar, BorderLayout.SOUTH); } private void connectToServer(){ @@ -226,13 +232,13 @@ public class PhantomJs4VanChartPlugin implements ActionListener, ChangeListener, - public void stateChanged(ChangeEvent e1) { +/* public void stateChanged(ChangeEvent e1) { double value = (double)progressbar.getValue() / 1000000.0; if (e1.getSource() == progressbar) { label.setText("已下载:" + Double.toString(value) + " m"); label.setForeground(Color.blue); } - } + }*/ @Override diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png b/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c53ed99d92d95c741d2c7e6705b704b54229f5 GIT binary patch literal 162451 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 uO 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

s;6PA=AKT;0HlRUx|O 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⪚zR}1*DE~(B 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%0DFK-Vqe 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 O0000 Date: Thu, 1 Sep 2016 17:26:14 +0800 Subject: [PATCH 23/92] phantomjs --- .../src/com/fr/design/extra/PluginManagerPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index effa66f57..1c9f7aafa 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - /*if (StableUtils.isDebug()) { + if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else {*/ + } else { installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - /*}*/ + } } else { initTraditionalStore(); } From 0cd719303f4448b6edbe4af54ecac81559bf0415 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 1 Sep 2016 17:43:01 +0800 Subject: [PATCH 24/92] update --- .../design/extra/pre4plugin/PhantomJs4VanChartPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java index d613b6cc8..71d2b7238 100644 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java @@ -31,7 +31,7 @@ import javax.swing.*; public class PhantomJs4VanChartPlugin implements ActionListener, PreEnv4Plugin { - private static final String PHANTOM_PATH = SiteCenter.getInstance().acquireUrlByKind("plugin.phantomjs"); + private static final String ID = "plugin.phantomjs"; //链接服务器的客户端 private HttpClient httpClient; //已读文件字节数 @@ -119,7 +119,7 @@ public class PhantomJs4VanChartPlugin implements ActionListener, PreEnv4Plugin { } private void connectToServer(){ - httpClient = new HttpClient(PHANTOM_PATH); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { totalSize = httpClient.getContentLength(); }else { @@ -128,7 +128,7 @@ public class PhantomJs4VanChartPlugin implements ActionListener, PreEnv4Plugin { } private int getFileLength(){ - httpClient = new HttpClient(PHANTOM_PATH); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { return httpClient.getContentLength(); } From e920c7757a2d14b77a8db494453a58ebb877e84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Thu, 1 Sep 2016 21:39:13 +0800 Subject: [PATCH 25/92] =?UTF-8?q?bugfix=EF=BC=9AQQ=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B6=85=E9=93=BE=E9=97=AE=E9=A2=98=EF=BC=9B?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E5=86=85=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.现在改成捕捉授权部分,强制关闭当前窗口,且在浏览器上面给一个新的url地址处理。 2.之前的处理方案可能是webview的一个bug,现在完全改成html处理,把之前用到的也尽可能的移植过来。 --- .../design/mainframe/bbs/UserInfoLabel.java | 7 +- .../com/fr/design/extra/LoginWebBridge.java | 20 ++++++ .../com/fr/design/extra/PluginWebBridge.java | 67 +++++++++++++++++-- .../com/fr/design/extra/QQLoginWebBridge.java | 34 +++++++++- .../com/fr/design/extra/QQLoginWebPane.java | 32 +++++++++ 5 files changed, 153 insertions(+), 7 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 7be5f1fc2..727539d88 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -92,6 +92,9 @@ public class UserInfoLabel extends UILabel{ } }); + PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); + QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); + UserLoginContext.addLoginContextListener(new LoginContextListener() { @Override public void showLoginContext() { @@ -101,13 +104,13 @@ public class UserInfoLabel extends UILabel{ LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); QQLoginWebBridge.getHelper().setLoginlabel(); qqdlg.setVisible(true); - clearLoingInformation(); + clearLoginInformation(); updateInfoPane(); } }); } - private void clearLoingInformation(){ + private void clearLoginInformation(){ DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); } diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 855ed447a..9546dbc41 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -119,6 +119,25 @@ public class LoginWebBridge { } } + /* + 插件管理那边的登录 + */ + public String pluginManageLogin(String username, String password, UILabel uiLabel) { + if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) { + return LOGIN_INFO_EMPTY; + } + if (!testConnection()) { + return DISCONNECTED; + } + if (login(username, password)) { + updateUserInfo(username, password); + uiLabel.setText(username); + return LOGININ; + }else { + return LOGININFO_ERROR; + } + } + /** * 关闭窗口 */ @@ -126,6 +145,7 @@ public class LoginWebBridge { if (uiDialog != null) { uiDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); uiDialog.setVisible(false); + uiDialog.dispose(); } } diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 82dd4cf35..3dd9f3ee0 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -1,9 +1,11 @@ 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.UIDialog; import com.fr.design.extra.exe.*; +import com.fr.design.gui.ilable.UILabel; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; @@ -41,6 +43,13 @@ public class PluginWebBridge { private String KEYWORD = "keyword"; private Map config; + private static final String LOGININ = "0"; + private static final String LOGIN_INFO_EMPTY = "-1"; + private static final String DISCONNECTED = "-2"; + private static final String LOGININFO_ERROR = "-3"; + + private UILabel uiLabel; + /** * 动作枚举 */ @@ -394,10 +403,6 @@ public class PluginWebBridge { }); } - public void getUsername() { - - } - /** * 在本地浏览器里打开url * tips:重载的时候,需要给js调用的方法需要放在前面,否则可能不会被调用(此乃坑) @@ -490,4 +495,58 @@ public class PluginWebBridge { JOptionPane.showMessageDialog(null, e1.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } + + + /*-------------------------------登录部分的处理----------------------------------*/ + /** + * 注册页面 + */ + public void registerHref() { + try { + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.default"))); + }catch (Exception e) { + FRContext.getLogger().info(e.getMessage()); + } + } + + /** + * 忘记密码 + */ + public void forgetHref() { + try { + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.default"))); + }catch (Exception e) { + FRContext.getLogger().info(e.getMessage()); + } + } + + public void setUILabel(UILabel uiLabel) { + this.uiLabel = uiLabel; + } + + /** + * 登录操作的回调 + * @param username + * @param password + * @return + */ + public String defaultLogin(String username, String password) { + return LoginWebBridge.getHelper().pluginManageLogin(username, password, uiLabel); + } + + /** + * 弹出QQ授权页面 + */ + public void showQQ() { + LoginWebBridge.getHelper().showQQ(); + } + + /** + * 清除用户信息 + */ + public void clearUserInfo() { + DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); + uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); + } } diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index 3ee043493..b386e836c 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -3,12 +3,14 @@ package com.fr.design.extra; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ilable.UILabel; +import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import javafx.scene.web.WebEngine; import org.json.JSONObject; import javax.swing.*; import java.awt.*; +import java.io.IOException; import java.net.URI; /** @@ -22,6 +24,7 @@ public class QQLoginWebBridge { private static String LOGINFAILED = "failed"; private UIDialog uiDialog; private UILabel uiLabel; + private UILabel pluginuiLabel; private UIDialog qqDialog; private String username; @@ -57,6 +60,10 @@ public class QQLoginWebBridge { this.uiLabel = uiLabel; } + public void setUILabelInPlugin(UILabel uiLabel) { + this.pluginuiLabel = uiLabel; + } + public void setLoginlabel() { username = DesignerEnvManager.getEnvManager().getBBSName(); } @@ -98,7 +105,7 @@ public class QQLoginWebBridge { String username = jo.get("username").toString(); closeQQWindow(); closeParentWindow(); - uiLabel.setText(username); + pluginuiLabel.setText(username); DesignerEnvManager.getEnvManager().setBBSName(username); }else if (status.equals(LOGINFAILED)){ //账号没有QQ授权 @@ -109,4 +116,29 @@ public class QQLoginWebBridge { } } } + + public void openUrlAtLocalWebBrowser(WebEngine eng, String url) { + if (url.indexOf("qqLogin.html") > 0) { + return; + } + if (Desktop.isDesktopSupported()) { + try { + //创建一个URI实例,注意不是URL + URI uri = URI.create(url); + //获取当前系统桌面扩展 + Desktop desktop = Desktop.getDesktop(); + //判断系统桌面是否支持要执行的功能 + if (desktop.isSupported(Desktop.Action.BROWSE)) { + //获取系统默认浏览器打开链接 + desktop.browse(uri); + } + } catch (NullPointerException e) { + //此为uri为空时抛出异常 + FRLogger.getLogger().error(e.getMessage()); + } catch (IOException e) { + //此为无法获取系统默认浏览器 + FRLogger.getLogger().error(e.getMessage()); + } + } + } } diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index 229e92f12..cdb1d1748 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -1,6 +1,11 @@ package com.fr.design.extra; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.SiteCenter; 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; @@ -30,6 +35,17 @@ public class QQLoginWebPane extends JFXPanel { WebView webView = new WebView(); webEngine = webView.getEngine(); webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"); + webEngine.locationProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, final String oldValue, String newValue) { + disableLink(webEngine); + // webView好像默认以手机版显示网页,浏览器里过滤掉这个跳转 + if (ComparatorUtils.equals(newValue, "file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html") || ComparatorUtils.equals(newValue, SiteCenter.getInstance().acquireUrlByKind("bbs.mobile"))) { + return; + } + QQLoginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); + } + }); webEngine.setOnAlert(new EventHandler>() { @Override public void handle(WebEvent event) { @@ -52,4 +68,20 @@ public class QQLoginWebPane extends JFXPanel { } }); } + + private void disableLink(final WebEngine eng) { + try { + // webView端不跳转 虽然webView可以指定本地浏览器打开某个链接,但是当本地浏览器跳转到指定链接的同时,webView也做了跳转, + // 为了避免出现在一个600*400的资讯框里加载整个网页的情况,webView不跳转到新网页 + Platform.runLater(new Runnable() { + @Override + public void run() { + eng.executeScript("location.reload()"); + QQLoginWebBridge.getHelper().closeQQWindow(); + } + }); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + } } \ No newline at end of file From 8e0c66149a477ae31486d7c010978179337e25f6 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 2 Sep 2016 15:59:42 +0800 Subject: [PATCH 26/92] =?UTF-8?q?=E4=BB=8E=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E6=8E=A7=E5=88=B6=E6=98=AF=E5=90=A6=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=A3=80=E6=B5=8B=E6=8F=92=E4=BB=B6=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 1 + .../fr/design/extra/PluginManagerPane.java | 6 +- .../com/fr/design/extra/PluginWebBridge.java | 25 -- .../extra/exe/InstallOnlineExecutor.java | 1 + .../extra/pre4plugin/NoneEnv4Plugin.java | 16 - .../pre4plugin/PhantomJs4VanChartPlugin.java | 281 ------------------ .../extra/pre4plugin/PluginFactory.java | 34 --- .../extra/pre4plugin/PreEnv4Plugin.java | 10 - .../extra/pre4plugin/image/background.png | Bin 162451 -> 0 bytes 9 files changed, 5 insertions(+), 369 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/image/background.png diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 8bab17e68..2eac5c0a9 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -105,6 +105,7 @@ public class PluginHelper { plugin = new Plugin(); InputStream inputStream = plugin.readEncryptXml(new FileInputStream(f)); XMLTools.readInputStreamXML(plugin, inputStream); + plugin.checkDependenceEnv(); if (!plugin.isValidate()) { return null; } diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index 1c9f7aafa..effa66f57 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - if (StableUtils.isDebug()) { + /*if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else { + } else {*/ installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - } + /*}*/ } else { initTraditionalStore(); } diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 39f7945b7..82dd4cf35 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -4,8 +4,6 @@ import com.fr.base.FRContext; import com.fr.design.RestartHelper; import com.fr.design.dialog.UIDialog; import com.fr.design.extra.exe.*; -import com.fr.design.extra.pre4plugin.PluginFactory; -import com.fr.design.extra.pre4plugin.PreEnv4Plugin; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; @@ -149,29 +147,6 @@ public class PluginWebBridge { new Thread(task).start(); } - - - - /** - * - * @param pluginID 插件类型 - * @return 如果不需要准备或者已经准备,返回true - */ - public boolean checkVanChartPluginOnline(final String pluginID) { - PreEnv4Plugin preEnv4Plugin = PluginFactory.createPreEnv(pluginID); - return preEnv4Plugin.checkEnv(); - } - - /** - * - * @param pluginID 插件类型 - * @return 是否准备好了,是或者不需要准备,返回true, 否则返回false - */ - public boolean preEnv4PluginOnline(final String pluginID) { - PreEnv4Plugin preEnv4Plugin = PluginFactory.createPreEnv(pluginID); - return preEnv4Plugin.preOnline(); - } - /** * 从磁盘上选择插件安装包进行安装 * diff --git a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java index 70509575d..0844a7110 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java @@ -40,6 +40,7 @@ public class InstallOnlineExecutor implements Executor { @Override public void run(final Process process) { + //下载插件 if(StringUtils.isBlank(DesignerEnvManager.getEnvManager().getBBSName())){ LoginCheckContext.fireLoginCheckListener(); } diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java deleted file mode 100644 index 6d222d90a..000000000 --- a/designer_base/src/com/fr/design/extra/pre4plugin/NoneEnv4Plugin.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.fr.design.extra.pre4plugin; - -/** - * Created by hufan on 2016/9/1. - */ -public class NoneEnv4Plugin implements PreEnv4Plugin { - @Override - public boolean preOnline() { - return true; - } - - @Override - public boolean checkEnv() { - return true; - } -} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java deleted file mode 100644 index 71d2b7238..000000000 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PhantomJs4VanChartPlugin.java +++ /dev/null @@ -1,281 +0,0 @@ -package com.fr.design.extra.pre4plugin; - -/** - * Created by hufan on 2016/8/31. - */ -import com.fr.base.FRContext; -import com.fr.design.extra.PluginConstants; -import com.fr.design.extra.PluginHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; - -import java.awt.*; - -import java.awt.event.ActionEvent; - - - -import java.awt.event.ActionListener; - -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.image.BufferedImage; -import java.io.*; -import java.net.HttpURLConnection; -import javax.swing.*; - - -public class PhantomJs4VanChartPlugin implements ActionListener, PreEnv4Plugin { - private static final String ID = "plugin.phantomjs"; - //链接服务器的客户端 - private HttpClient httpClient; - //已读文件字节数 - private int totalBytesRead = 0; - //文件总长度 - private int totalSize = 0; - //进度显示界面 - private JDialog frame = null; - //进度条 - private JProgressBar progressbar; - //进度信息 - private JLabel label; - //进度条更新时钟 - private Timer timer; - //文件路径 - private String filePath = StringUtils.EMPTY; - //是否继续下载 - private boolean flag = true; - //安装结果 - boolean result = false; - - private static final String WEB_INFO = FRContext.getCurrentEnv().getPath(); - private static final String WEB_REPORT = new File(WEB_INFO).getParent(); - public static String PHANTOM_ENV = WEB_REPORT + File.separator + "phantomjs"; - - // 定义加载窗口大小 - private static final int LOAD_WIDTH = 455; - private static final int LOAD_HEIGHT = 295; - - public String getFilePath() { - return filePath; - } - - public PhantomJs4VanChartPlugin() { - } - - //是否可以连接服务器 - private boolean serverReached(){ - connectToServer(); - return totalSize != -1; - } - - private void init(){ - // 创建标签,并在标签上放置一张图片 - BufferedImage image = IOUtils.readImage("/com/fr/design/extra/pre4plugin/image/background.png"); - ImageIcon imageIcon = new ImageIcon(image); - label = new JLabel(imageIcon); - label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); - - progressbar = new JProgressBar(); - // 显示当前进度值信息 - progressbar.setStringPainted(true); - // 设置进度条边框不显示 - progressbar.setBorderPainted(false); - // 设置进度条的前景色 - progressbar.setForeground(new Color(0x38aef5)); - // 设置进度条的背景色 - progressbar.setBackground(new Color(188, 190, 194)); - progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); - progressbar.setMinimum(0); - progressbar.setMaximum(totalSize); - progressbar.setValue(0); - - timer = new Timer(100, this); - - frame = new JDialog(DesignerContext.getDesignerFrame(), true); - frame.setTitle("在线安装phantomjs"); - frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); - frame.setResizable(false); - // 设置布局为空 - frame.setLayout(new BorderLayout(0,0)); - frame.getContentPane().add(label, BorderLayout.CENTER); - frame.getContentPane().add(progressbar, BorderLayout.SOUTH); - - frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - //取消下载 - flag = false; - frame.dispose(); - } - }); - } - - private void connectToServer(){ - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - totalSize = httpClient.getContentLength(); - }else { - totalSize = -1; - } - } - - private int getFileLength(){ - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - return httpClient.getContentLength(); - } - return -1; - } - - //安装 - private boolean install() { - //连接服务器 - connectToServer(); - //初始化安装进度界面 - init(); - //开始时钟 - timer.start(); - //开始下载 - Thread thread = new Thread(new Runnable() { - @Override - public void run() { - installPhantomJsOnline(httpClient); - } - }); - thread.start(); - - frame.setVisible(true); - //等待下载线程处理结束 - try { - thread.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - return false; - } - //停止时钟 - timer.stop(); - return result; - } - - private boolean downloadPluginPhantomJSFile(HttpClient httpClient) throws Exception { - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); - StableUtils.makesureFileExist(new File(temp)); - FileOutputStream writer = new FileOutputStream(temp); - byte[] buffer = new byte[PluginConstants.BYTES_NUM]; - int bytesRead = 0; - totalBytesRead = 0; - - while ((bytesRead = reader.read(buffer)) > 0 && flag) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[PluginConstants.BYTES_NUM]; - totalBytesRead += bytesRead; - } - reader.close(); - writer.flush(); - writer.close(); - filePath = temp; - - //下载被取消 - if (flag == false){ - result = false; - return false; - } - - //准备安装 - - } else { - result = false; - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); - } - return true; - } - - public void installPhantomJsOnline(HttpClient httpClient){ - try { - if (downloadPluginPhantomJSFile(httpClient)){ - //安装文件 - installPluginPhantomJsFile(filePath); - result = true; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - //安装已经下载好的文件 - private void installPluginPhantomJsFile(String filePath){ - IOUtils.unzip(new File(filePath), PHANTOM_ENV); - } - - public void actionPerformed(ActionEvent e) { - if (e.getSource() == timer) { - int value = progressbar.getValue(); - if (value < totalSize) { - progressbar.setValue(totalBytesRead); - } - else { - timer.stop(); - frame.dispose(); - } - } - } - - - -/* public void stateChanged(ChangeEvent e1) { - double value = (double)progressbar.getValue() / 1000000.0; - if (e1.getSource() == progressbar) { - label.setText("已下载:" + Double.toString(value) + " m"); - label.setForeground(Color.blue); - } - }*/ - - - @Override - public boolean preOnline() { - int fileLength = getFileLength(); - int choose = JOptionPane.showConfirmDialog(null, "新图表需要phantomjs支持。是否需要安装phantomjs(" + fileLength/1000000 + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); - if (choose == 0){//下载安装 - if (!serverReached()){ - JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); - return false; - } - //安装phantomJs - if (install()){ - JOptionPane.showMessageDialog(null, "安装成功!!"); - return true; - }else { - JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); - return false; - } - }else {//不安装。无需为用户准备环境 - return true; - } - } - - @Override - public boolean checkEnv() { - //只有图表插件在下载前需要准备环境 - String web_info = FRContext.getCurrentEnv().getPath(); - String web_report = new File(web_info).getParent(); - //检测路径下有没有需要的环境 - return checkPath(web_report, "phantomjs"); - } - - private boolean checkPath(String rootPath, String targetFileName) { - //创建server环境路径 - String serverPath = rootPath + File.separator + targetFileName; - File phantom = new File(serverPath); - return phantom.exists() && phantom.isDirectory(); - } -} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java b/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java deleted file mode 100644 index 450eab1ae..000000000 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PluginFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.fr.design.extra.pre4plugin; - -import com.fr.general.FRLogger; - -import java.lang.reflect.Constructor; -import java.util.HashMap; -import java.util.Map; - -/** - * Created by hufan on 2016/9/1. - */ -public class PluginFactory { - /** - * - * 标签Map - */ - private static Map> pluginMap = new HashMap>(); - static { - pluginMap.put("com.fr.plugin.chart.vancharts", PhantomJs4VanChartPlugin.class); - } - - public static PreEnv4Plugin createPreEnv(String pluginID) { - if(pluginMap.containsKey(pluginID)){ - try{ - Class cl = pluginMap.get(pluginID); - Constructor constructor = cl.getConstructor(); - return constructor.newInstance(); - } catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - } - } - return new NoneEnv4Plugin(); - } -} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java b/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java deleted file mode 100644 index 9eccffb3a..000000000 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PreEnv4Plugin.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.fr.design.extra.pre4plugin; - -/** - * Created by hufan on 2016/9/1. - */ -public interface PreEnv4Plugin { - public boolean preOnline(); - //是否已经准备好环境 - public boolean checkEnv(); -} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png b/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png deleted file mode 100644 index e6c53ed99d92d95c741d2c7e6705b704b54229f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162451 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 uO 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

s;6PA=AKT;0HlRUx|O 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⪚zR}1*DE~(B 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%0DFK-Vqe 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 O0000 Date: Fri, 2 Sep 2016 16:05:58 +0800 Subject: [PATCH 27/92] update --- .../src/com/fr/design/extra/PluginManagerPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginManagerPane.java b/designer_base/src/com/fr/design/extra/PluginManagerPane.java index effa66f57..1c9f7aafa 100644 --- a/designer_base/src/com/fr/design/extra/PluginManagerPane.java +++ b/designer_base/src/com/fr/design/extra/PluginManagerPane.java @@ -39,11 +39,11 @@ public class PluginManagerPane extends BasicPane { setLayout(new BorderLayout()); if (StableUtils.getMajorJavaVersion() == 8) { String installHome; - /*if (StableUtils.isDebug()) { + if (StableUtils.isDebug()) { URL url = ClassLoader.getSystemResource(""); installHome = url.getPath(); addPane(installHome); - } else {*/ + } else { installHome = StableUtils.getInstallHome(); File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { @@ -61,7 +61,7 @@ public class PluginManagerPane extends BasicPane { addPane(installHome); updateShopScripts(); } - /*}*/ + } } else { initTraditionalStore(); } From 552ba157b8bca7600e0971626e6affd257928366 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 2 Sep 2016 16:07:17 +0800 Subject: [PATCH 28/92] update --- designer_base/src/com/fr/design/extra/PluginHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 2eac5c0a9..c9880f1bb 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -105,6 +105,7 @@ public class PluginHelper { plugin = new Plugin(); InputStream inputStream = plugin.readEncryptXml(new FileInputStream(f)); XMLTools.readInputStreamXML(plugin, inputStream); + //检查是否需要准备插件依赖环境 plugin.checkDependenceEnv(); if (!plugin.isValidate()) { return null; From 7f6b2b2594f69066edaf9594539b1bfbfc6e8f5f Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 3 Sep 2016 11:17:43 +0800 Subject: [PATCH 29/92] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 16 +- .../extra/pre4plugin/PreDependenceUtils.java | 238 ++++++++++++++++++ .../extra/pre4plugin/image/background.png | Bin 0 -> 162451 bytes 3 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java create mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/image/background.png diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index c9880f1bb..2ae59e84a 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,11 +3,13 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; +import com.fr.design.extra.pre4plugin.PreDependenceUtils; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; +import com.fr.plugin.PluginPreDependence; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; import com.fr.stable.StableUtils; @@ -19,6 +21,7 @@ import java.io.*; import java.net.HttpURLConnection; import java.net.URLDecoder; import java.util.HashMap; +import java.util.List; import java.util.concurrent.ExecutionException; /** @@ -106,7 +109,7 @@ public class PluginHelper { InputStream inputStream = plugin.readEncryptXml(new FileInputStream(f)); XMLTools.readInputStreamXML(plugin, inputStream); //检查是否需要准备插件依赖环境 - plugin.checkDependenceEnv(); + checkDependenceEnv(plugin); if (!plugin.isValidate()) { return null; } @@ -119,6 +122,17 @@ public class PluginHelper { return plugin; } + //将所有未配置好的依赖环境准备好 + private static void checkDependenceEnv(Plugin plugin) { + List list = plugin.getPreDependenceList(); + for (int i = 0;list != null && i < list.size(); i++){ + PluginPreDependence preDependence = list.get(i); + if (!preDependence.checkEnv()){ + PreDependenceUtils.preDependenceOnline(preDependence.getDependenceID(), preDependence.getDir()); + } + } + } + /** * 从选中的压缩文件中安装插件 * diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java b/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java new file mode 100644 index 000000000..6bf872955 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java @@ -0,0 +1,238 @@ +package com.fr.design.extra.pre4plugin; + +/** + * Created by hufan on 2016/8/31. + */ +import com.fr.design.extra.PluginConstants; +import com.fr.design.extra.PluginHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import javax.swing.*; + + +public class PreDependenceUtils{ + public static boolean preDependenceOnline(String dependenceID, String dir) { + PreDependenceUI ui = new PreDependenceUI(dependenceID, dir); + return ui.preOnline(); + } + + private static class PreDependenceUI implements ActionListener{ + //进度显示界面 + private JDialog frame = null; + //进度条 + private JProgressBar progressbar; + //进度信息 + private JLabel label; + //进度条更新时钟 + private Timer timer; + //是否继续下载 + private boolean flag = true; + + // 定义加载窗口大小 + private final int LOAD_WIDTH = 455; + private final int LOAD_HEIGHT = 295; + + //安装环境相关信息 + private String ID; + private String dir; + //安装结果 + private boolean result = false; + //链接服务器的客户端 + private HttpClient httpClient; + //已读文件字节数 + private int totalBytesRead = 0; + //文件总长度 + private int totalSize = 0; + + public PreDependenceUI(String ID, String dir) { + this.ID = ID; + this.dir = dir; + this.totalSize = getFileLength(); + init(); + } + + private void init(){ + // 创建标签,并在标签上放置一张图片 + BufferedImage image = IOUtils.readImage("/com/fr/design/extra/pre4plugin/image/background.png"); + ImageIcon imageIcon = new ImageIcon(image); + label = new JLabel(imageIcon); + label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); + + progressbar = new JProgressBar(); + // 显示当前进度值信息 + progressbar.setStringPainted(true); + // 设置进度条边框不显示 + progressbar.setBorderPainted(false); + // 设置进度条的前景色 + progressbar.setForeground(new Color(0x38aef5)); + // 设置进度条的背景色 + progressbar.setBackground(new Color(188, 190, 194)); + progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); + progressbar.setMinimum(0); + progressbar.setMaximum(totalSize); + progressbar.setValue(0); + + timer = new Timer(100, this); + + frame = new JDialog(DesignerContext.getDesignerFrame(), true); + frame.setTitle("在线安装phantomjs"); + frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); + frame.setResizable(false); + // 设置布局为空 + frame.setLayout(new BorderLayout(0,0)); + frame.getContentPane().add(label, BorderLayout.CENTER); + frame.getContentPane().add(progressbar, BorderLayout.SOUTH); + + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + //取消下载 + flag = false; + frame.dispose(); + } + }); + } + + + //是否可以连接服务器 + private boolean connectToServer(){ + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; + } + + //获取依赖文件大小 + private int getFileLength(){ + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + return httpClient.getContentLength(); + } + return -1; + } + + //安装 + private boolean install() { + //开始时钟 + timer.start(); + //开始下载 + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + installPhantomJsOnline(); + } + }); + thread.start(); + + frame.setVisible(true); + //等待下载线程处理结束 + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + return false; + } + //停止时钟 + timer.stop(); + return result; + } + + private String downloadPluginPhantomJSFile() throws Exception { + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + totalBytesRead = 0; + + while ((bytesRead = reader.read(buffer)) > 0 && flag) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + totalBytesRead += bytesRead; + } + reader.close(); + writer.flush(); + writer.close(); + + //下载被取消 + if (flag == false){ + result = false; + return StringUtils.EMPTY; + } + return temp; + + } else { + result = false; + throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); + } + } + + public void installPhantomJsOnline(){ + try { + String filePath = downloadPluginPhantomJSFile(); + if (!StringUtils.EMPTY.equals(filePath)){ + //安装文件 + installPluginPhantomJsFile(filePath); + result = true; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + //安装已经下载好的文件 + private void installPluginPhantomJsFile(String filePath){ + IOUtils.unzip(new File(filePath), dir); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == timer) { + int value = progressbar.getValue(); + if (value < totalSize) { + progressbar.setValue(totalBytesRead); + } + else { + timer.stop(); + frame.dispose(); + } + } + } + + public boolean preOnline() { + int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + totalSize/Math.pow(10, 6) + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + if (choose == 0){//下载安装 + if (!connectToServer()){ + JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + //安装依赖环境 + if (install()){ + JOptionPane.showMessageDialog(null, "安装成功!!"); + return true; + }else { + JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + }else {//不安装。无需为用户准备环境 + return true; + } + } + } +} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png b/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c53ed99d92d95c741d2c7e6705b704b54229f5 GIT binary patch literal 162451 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 uO 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

s;6PA=AKT;0HlRUx|O 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⪚zR}1*DE~(B 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%0DFK-Vqe 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 O0000 Date: Sat, 3 Sep 2016 12:14:08 +0800 Subject: [PATCH 30/92] update --- .../src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java b/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java index 6bf872955..92bea4650 100644 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java @@ -89,7 +89,7 @@ public class PreDependenceUtils{ timer = new Timer(100, this); frame = new JDialog(DesignerContext.getDesignerFrame(), true); - frame.setTitle("在线安装phantomjs"); + frame.setTitle("在线安装" + ID); frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); From 0b3e655c5cab863ba0493ce899677860462319f0 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 3 Sep 2016 12:49:57 +0800 Subject: [PATCH 31/92] update --- .../extra/pre4plugin/image/background.png | Bin 162451 -> 112185 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png b/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png index e6c53ed99d92d95c741d2c7e6705b704b54229f5..792b2bf3ba95668ada88c7be85ddb831b6212627 100644 GIT binary patch delta 97832 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 JPDHLkV1mel`}zO? delta 148257 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

nqPnSe8j*qd^EN1)eimBB(^-=h6)1~EE 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 z%0A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 Ef^Y!i Date: Sat, 3 Sep 2016 19:21:48 +0800 Subject: [PATCH 32/92] =?UTF-8?q?bugfix=EF=BC=9A=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/LoginWebBridge.java | 2 +- designer_base/src/com/fr/design/extra/PluginWebBridge.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 9546dbc41..4e1e93b76 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -80,7 +80,7 @@ public class LoginWebBridge { */ public void registerHref() { try { - Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.default"))); + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.register"))); }catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 3dd9f3ee0..bcd1aea70 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -503,7 +503,7 @@ public class PluginWebBridge { */ public void registerHref() { try { - Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.default"))); + Desktop.getDesktop().browse(new URI(SiteCenter.getInstance().acquireUrlByKind("bbs.register"))); }catch (Exception e) { FRContext.getLogger().info(e.getMessage()); } From b43d208668abb021aef43ccd83d96ce0fd3fb442 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 5 Sep 2016 14:28:11 +0800 Subject: [PATCH 33/92] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E7=9A=84=E9=80=9A=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 16 +- .../DownLoadDependenceUI.java | 232 +++++++++++++++++ .../DownLoadDependenceUtils.java | 32 +++ .../image/background.png | Bin .../extra/pre4plugin/PreDependenceUtils.java | 238 ------------------ 5 files changed, 273 insertions(+), 245 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java create mode 100644 designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java rename designer_base/src/com/fr/design/extra/{pre4plugin => plugindependence}/image/background.png (100%) delete mode 100644 designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 2ae59e84a..631bc984b 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,13 +3,14 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.extra.pre4plugin.PreDependenceUtils; +import com.fr.design.extra.plugindependence.DownLoadDependenceUtils; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; -import com.fr.plugin.PluginPreDependence; +import com.fr.plugin.dependence.PluginDependence; +import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; import com.fr.stable.StableUtils; @@ -122,13 +123,14 @@ public class PluginHelper { return plugin; } - //将所有未配置好的依赖环境准备好 + //将所有未配置好的资源文件依赖准备好 private static void checkDependenceEnv(Plugin plugin) { - List list = plugin.getPreDependenceList(); + PluginDependence dependence = plugin.getDependence(); + List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ - PluginPreDependence preDependence = list.get(i); - if (!preDependence.checkEnv()){ - PreDependenceUtils.preDependenceOnline(preDependence.getDependenceID(), preDependence.getDir()); + PluginDependenceUnit preDependence = list.get(i); + if (!preDependence.checkFileEnv()){ + DownLoadDependenceUtils.preDependenceOnline(preDependence.getDependenceID(), preDependence.getFileDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java new file mode 100644 index 000000000..701bf9bbd --- /dev/null +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -0,0 +1,232 @@ +package com.fr.design.extra.plugindependence; + +import com.fr.design.extra.PluginConstants; +import com.fr.design.extra.PluginHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; + +/** + * Created by hufan on 2016/9/5. + */ +public class DownLoadDependenceUI implements ActionListener { + //进度显示界面 + private JDialog frame = null; + //进度条 + private JProgressBar progressbar; + //进度信息 + private JLabel label; + //进度条更新时钟 + private Timer timer; + //是否继续下载 + private boolean flag = true; + + // 定义加载窗口大小 + private final int LOAD_WIDTH = 455; + private final int LOAD_HEIGHT = 295; + + //安装环境相关信息 + private String ID; + private String dir; + //安装结果 + private boolean result = false; + //链接服务器的客户端 + private HttpClient httpClient; + //已读文件字节数 + private int totalBytesRead = 0; + //文件总长度 + private int totalSize = 0; + + public DownLoadDependenceUI(String ID, String dir) { + this.ID = ID; + this.dir = dir; + this.totalSize = getFileLength(); + init(); + } + + private void init(){ + // 创建标签,并在标签上放置一张图片 + BufferedImage image = IOUtils.readImage("/com/fr/design/extra/plugindependence/image/background.png"); + ImageIcon imageIcon = new ImageIcon(image); + label = new JLabel(imageIcon); + label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); + + progressbar = new JProgressBar(); + // 显示当前进度值信息 + progressbar.setStringPainted(true); + // 设置进度条边框不显示 + progressbar.setBorderPainted(false); + // 设置进度条的前景色 + progressbar.setForeground(new Color(0x38aef5)); + // 设置进度条的背景色 + progressbar.setBackground(new Color(188, 190, 194)); + progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); + progressbar.setMinimum(0); + progressbar.setMaximum(totalSize); + progressbar.setValue(0); + + timer = new Timer(100, this); + + frame = new JDialog(DesignerContext.getDesignerFrame(), true); + frame.setTitle("在线安装" + ID); + frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); + frame.setResizable(false); + // 设置布局为空 + frame.setLayout(new BorderLayout(0,0)); + frame.getContentPane().add(label, BorderLayout.CENTER); + frame.getContentPane().add(progressbar, BorderLayout.SOUTH); + + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + //取消下载 + flag = false; + frame.dispose(); + } + }); + } + + + //是否可以连接服务器 + private boolean connectToServer(){ + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; + } + + //获取依赖文件大小 + private int getFileLength(){ + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + return httpClient.getContentLength(); + } + return -1; + } + + //安装 + private boolean install() { + //开始时钟 + timer.start(); + //开始下载 + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + installPhantomJsOnline(); + } + }); + thread.start(); + + frame.setVisible(true); + //等待下载线程处理结束 + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + return false; + } + //停止时钟 + timer.stop(); + return result; + } + + private String downloadPluginPhantomJSFile() throws Exception { + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + totalBytesRead = 0; + + while ((bytesRead = reader.read(buffer)) > 0 && flag) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + totalBytesRead += bytesRead; + } + reader.close(); + writer.flush(); + writer.close(); + + //下载被取消 + if (flag == false){ + result = false; + return StringUtils.EMPTY; + } + return temp; + + } else { + result = false; + throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); + } + } + + public void installPhantomJsOnline(){ + try { + String filePath = downloadPluginPhantomJSFile(); + if (!StringUtils.EMPTY.equals(filePath)){ + //安装文件 + installPluginPhantomJsFile(filePath); + result = true; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + //安装已经下载好的文件 + private void installPluginPhantomJsFile(String filePath){ + IOUtils.unzip(new File(filePath), dir); + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource() == timer) { + int value = progressbar.getValue(); + if (value < totalSize) { + progressbar.setValue(totalBytesRead); + } + else { + timer.stop(); + frame.dispose(); + } + } + } + + public boolean preOnline() { + int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + totalSize/Math.pow(10, 6) + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + if (choose == 0){//下载安装 + if (!connectToServer()){ + JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + //安装依赖环境 + if (install()){ + JOptionPane.showMessageDialog(null, "安装成功!!"); + return true; + }else { + JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); + return false; + } + }else {//不安装。无需为用户准备环境 + return true; + } + } +} diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java new file mode 100644 index 000000000..32163325c --- /dev/null +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java @@ -0,0 +1,32 @@ +package com.fr.design.extra.plugindependence; + +/** + * Created by hufan on 2016/8/31. + */ +import com.fr.design.extra.PluginConstants; +import com.fr.design.extra.PluginHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import javax.swing.*; + + +public class DownLoadDependenceUtils { + public static boolean preDependenceOnline(String dependenceID, String dir) { + DownLoadDependenceUI ui = new DownLoadDependenceUI(dependenceID, dir); + return ui.preOnline(); + } +} diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/image/background.png b/designer_base/src/com/fr/design/extra/plugindependence/image/background.png similarity index 100% rename from designer_base/src/com/fr/design/extra/pre4plugin/image/background.png rename to designer_base/src/com/fr/design/extra/plugindependence/image/background.png diff --git a/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java b/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java deleted file mode 100644 index 92bea4650..000000000 --- a/designer_base/src/com/fr/design/extra/pre4plugin/PreDependenceUtils.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.fr.design.extra.pre4plugin; - -/** - * Created by hufan on 2016/8/31. - */ -import com.fr.design.extra.PluginConstants; -import com.fr.design.extra.PluginHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; - -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.image.BufferedImage; -import java.io.*; -import java.net.HttpURLConnection; -import javax.swing.*; - - -public class PreDependenceUtils{ - public static boolean preDependenceOnline(String dependenceID, String dir) { - PreDependenceUI ui = new PreDependenceUI(dependenceID, dir); - return ui.preOnline(); - } - - private static class PreDependenceUI implements ActionListener{ - //进度显示界面 - private JDialog frame = null; - //进度条 - private JProgressBar progressbar; - //进度信息 - private JLabel label; - //进度条更新时钟 - private Timer timer; - //是否继续下载 - private boolean flag = true; - - // 定义加载窗口大小 - private final int LOAD_WIDTH = 455; - private final int LOAD_HEIGHT = 295; - - //安装环境相关信息 - private String ID; - private String dir; - //安装结果 - private boolean result = false; - //链接服务器的客户端 - private HttpClient httpClient; - //已读文件字节数 - private int totalBytesRead = 0; - //文件总长度 - private int totalSize = 0; - - public PreDependenceUI(String ID, String dir) { - this.ID = ID; - this.dir = dir; - this.totalSize = getFileLength(); - init(); - } - - private void init(){ - // 创建标签,并在标签上放置一张图片 - BufferedImage image = IOUtils.readImage("/com/fr/design/extra/pre4plugin/image/background.png"); - ImageIcon imageIcon = new ImageIcon(image); - label = new JLabel(imageIcon); - label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); - - progressbar = new JProgressBar(); - // 显示当前进度值信息 - progressbar.setStringPainted(true); - // 设置进度条边框不显示 - progressbar.setBorderPainted(false); - // 设置进度条的前景色 - progressbar.setForeground(new Color(0x38aef5)); - // 设置进度条的背景色 - progressbar.setBackground(new Color(188, 190, 194)); - progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); - progressbar.setMinimum(0); - progressbar.setMaximum(totalSize); - progressbar.setValue(0); - - timer = new Timer(100, this); - - frame = new JDialog(DesignerContext.getDesignerFrame(), true); - frame.setTitle("在线安装" + ID); - frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); - frame.setResizable(false); - // 设置布局为空 - frame.setLayout(new BorderLayout(0,0)); - frame.getContentPane().add(label, BorderLayout.CENTER); - frame.getContentPane().add(progressbar, BorderLayout.SOUTH); - - frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - //取消下载 - flag = false; - frame.dispose(); - } - }); - } - - - //是否可以连接服务器 - private boolean connectToServer(){ - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); - return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; - } - - //获取依赖文件大小 - private int getFileLength(){ - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - return httpClient.getContentLength(); - } - return -1; - } - - //安装 - private boolean install() { - //开始时钟 - timer.start(); - //开始下载 - Thread thread = new Thread(new Runnable() { - @Override - public void run() { - installPhantomJsOnline(); - } - }); - thread.start(); - - frame.setVisible(true); - //等待下载线程处理结束 - try { - thread.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - return false; - } - //停止时钟 - timer.stop(); - return result; - } - - private String downloadPluginPhantomJSFile() throws Exception { - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); - StableUtils.makesureFileExist(new File(temp)); - FileOutputStream writer = new FileOutputStream(temp); - byte[] buffer = new byte[PluginConstants.BYTES_NUM]; - int bytesRead = 0; - totalBytesRead = 0; - - while ((bytesRead = reader.read(buffer)) > 0 && flag) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[PluginConstants.BYTES_NUM]; - totalBytesRead += bytesRead; - } - reader.close(); - writer.flush(); - writer.close(); - - //下载被取消 - if (flag == false){ - result = false; - return StringUtils.EMPTY; - } - return temp; - - } else { - result = false; - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); - } - } - - public void installPhantomJsOnline(){ - try { - String filePath = downloadPluginPhantomJSFile(); - if (!StringUtils.EMPTY.equals(filePath)){ - //安装文件 - installPluginPhantomJsFile(filePath); - result = true; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - //安装已经下载好的文件 - private void installPluginPhantomJsFile(String filePath){ - IOUtils.unzip(new File(filePath), dir); - } - - public void actionPerformed(ActionEvent e) { - if (e.getSource() == timer) { - int value = progressbar.getValue(); - if (value < totalSize) { - progressbar.setValue(totalBytesRead); - } - else { - timer.stop(); - frame.dispose(); - } - } - } - - public boolean preOnline() { - int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + totalSize/Math.pow(10, 6) + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); - if (choose == 0){//下载安装 - if (!connectToServer()){ - JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); - return false; - } - //安装依赖环境 - if (install()){ - JOptionPane.showMessageDialog(null, "安装成功!!"); - return true; - }else { - JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); - return false; - } - }else {//不安装。无需为用户准备环境 - return true; - } - } - } -} From 05252c0031a890279135f7ba66c3e325608ef21f Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 5 Sep 2016 16:24:34 +0800 Subject: [PATCH 34/92] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginHelper.java | 3 +++ .../design/extra/plugindependence/DownLoadDependenceUI.java | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 631bc984b..2d32eef02 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -126,6 +126,9 @@ public class PluginHelper { //将所有未配置好的资源文件依赖准备好 private static void checkDependenceEnv(Plugin plugin) { PluginDependence dependence = plugin.getDependence(); + if (dependence == null){ + return; + } List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit preDependence = list.get(i); diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 701bf9bbd..9cbbefcee 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -211,7 +211,7 @@ public class DownLoadDependenceUI implements ActionListener { } public boolean preOnline() { - int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + totalSize/Math.pow(10, 6) + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0){//下载安装 if (!connectToServer()){ JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); @@ -229,4 +229,8 @@ public class DownLoadDependenceUI implements ActionListener { return true; } } + + private String showFileLength() { + return totalSize == -1 ? "NAN" : totalSize/Math.pow(10, 6) + ""; + } } From 84127e8dbe8c61a68190091f9d7ac18561c000f1 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 5 Sep 2016 18:10:37 +0800 Subject: [PATCH 35/92] update --- .../src/com/fr/design/extra/PluginHelper.java | 3 +- .../DownLoadDependenceUI.java | 32 +++++++++++-------- .../DownLoadDependenceUtils.java | 23 ++----------- 3 files changed, 22 insertions(+), 36 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 2d32eef02..e66b64594 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -126,6 +126,7 @@ public class PluginHelper { //将所有未配置好的资源文件依赖准备好 private static void checkDependenceEnv(Plugin plugin) { PluginDependence dependence = plugin.getDependence(); + String currentID = dependence.getCurrentPluginID(); if (dependence == null){ return; } @@ -133,7 +134,7 @@ public class PluginHelper { for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit preDependence = list.get(i); if (!preDependence.checkFileEnv()){ - DownLoadDependenceUtils.preDependenceOnline(preDependence.getDependenceID(), preDependence.getFileDir()); + DownLoadDependenceUtils.preDependenceOnline(currentID, preDependence.getDependenceID(), preDependence.getFileDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 9cbbefcee..899a6f05c 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -42,8 +42,9 @@ public class DownLoadDependenceUI implements ActionListener { private final int LOAD_HEIGHT = 295; //安装环境相关信息 - private String ID; - private String dir; + private String currentID; + private String dependenceID; + private String dependenceDir; //安装结果 private boolean result = false; //链接服务器的客户端 @@ -54,9 +55,12 @@ public class DownLoadDependenceUI implements ActionListener { private int totalSize = 0; public DownLoadDependenceUI(String ID, String dir) { - this.ID = ID; - this.dir = dir; - this.totalSize = getFileLength(); + } + + public DownLoadDependenceUI(String currentID, String dependenceID, String dependenceDir) { + this.currentID = currentID; + this.dependenceID = dependenceID; + this.dependenceDir = dependenceDir; init(); } @@ -84,7 +88,7 @@ public class DownLoadDependenceUI implements ActionListener { timer = new Timer(100, this); frame = new JDialog(DesignerContext.getDesignerFrame(), true); - frame.setTitle("在线安装" + ID); + frame.setTitle(Inter.getLocText("FR-Designer-Dependence_Install_Online") + dependenceID); frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); @@ -107,13 +111,13 @@ public class DownLoadDependenceUI implements ActionListener { //是否可以连接服务器 private boolean connectToServer(){ - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; } //获取依赖文件大小 private int getFileLength(){ - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { return httpClient.getContentLength(); } @@ -147,7 +151,7 @@ public class DownLoadDependenceUI implements ActionListener { } private String downloadPluginPhantomJSFile() throws Exception { - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(ID)); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream reader = httpClient.getResponseStream(); String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); @@ -194,7 +198,7 @@ public class DownLoadDependenceUI implements ActionListener { //安装已经下载好的文件 private void installPluginPhantomJsFile(String filePath){ - IOUtils.unzip(new File(filePath), dir); + IOUtils.unzip(new File(filePath), dependenceDir); } public void actionPerformed(ActionEvent e) { @@ -211,18 +215,18 @@ public class DownLoadDependenceUI implements ActionListener { } public boolean preOnline() { - int choose = JOptionPane.showConfirmDialog(null, "新图表需要" + ID + "支持。是否需要安装" + ID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("Need") + dependenceID + Inter.getLocText("Support") + "," + Inter.getLocText("Need_Install") + dependenceID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0){//下载安装 if (!connectToServer()){ - JOptionPane.showMessageDialog(null, "无法连接远程服务器!!", "警告", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); return false; } //安装依赖环境 if (install()){ - JOptionPane.showMessageDialog(null, "安装成功!!"); + JOptionPane.showMessageDialog(null, Inter.getLocText("Install_Succeed") + "!!"); return true; }else { - JOptionPane.showMessageDialog(null, "安装失败!!", "警告", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, Inter.getLocText("Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); return false; } }else {//不安装。无需为用户准备环境 diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java index 32163325c..61d34dfd6 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java @@ -3,30 +3,11 @@ package com.fr.design.extra.plugindependence; /** * Created by hufan on 2016/8/31. */ -import com.fr.design.extra.PluginConstants; -import com.fr.design.extra.PluginHelper; -import com.fr.design.mainframe.DesignerContext; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.general.SiteCenter; -import com.fr.general.http.HttpClient; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; - -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.awt.image.BufferedImage; -import java.io.*; -import java.net.HttpURLConnection; -import javax.swing.*; public class DownLoadDependenceUtils { - public static boolean preDependenceOnline(String dependenceID, String dir) { - DownLoadDependenceUI ui = new DownLoadDependenceUI(dependenceID, dir); + public static boolean preDependenceOnline(String currentID, String dependenceID, String dependenceDir) { + DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceDir); return ui.preOnline(); } } From 403f2edf6628382c3bef9ce791980d110c5cb9ce Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 5 Sep 2016 18:16:07 +0800 Subject: [PATCH 36/92] update --- .../design/extra/plugindependence/DownLoadDependenceUI.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 899a6f05c..595627dd3 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -61,6 +61,7 @@ public class DownLoadDependenceUI implements ActionListener { this.currentID = currentID; this.dependenceID = dependenceID; this.dependenceDir = dependenceDir; + this.totalSize = getFileLength(); init(); } @@ -223,10 +224,10 @@ public class DownLoadDependenceUI implements ActionListener { } //安装依赖环境 if (install()){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Install_Succeed") + "!!"); + JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("Install_Succeed") + "!!"); return true; }else { - JOptionPane.showMessageDialog(null, Inter.getLocText("Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); return false; } }else {//不安装。无需为用户准备环境 From 575df71859e18dd4e0622f6a8e16fe9f9198f4b2 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 5 Sep 2016 18:59:02 +0800 Subject: [PATCH 37/92] update --- designer_base/src/com/fr/design/extra/PluginHelper.java | 4 ++-- .../design/extra/plugindependence/DownLoadDependenceUI.java | 2 +- ...nLoadDependenceUtils.java => PluginDependenceUtils.java} | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) rename designer_base/src/com/fr/design/extra/plugindependence/{DownLoadDependenceUtils.java => PluginDependenceUtils.java} (51%) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index e66b64594..53e7e3378 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,7 +3,7 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.extra.plugindependence.DownLoadDependenceUtils; +import com.fr.design.extra.plugindependence.PluginDependenceUtils; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; @@ -134,7 +134,7 @@ public class PluginHelper { for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit preDependence = list.get(i); if (!preDependence.checkFileEnv()){ - DownLoadDependenceUtils.preDependenceOnline(currentID, preDependence.getDependenceID(), preDependence.getFileDir()); + PluginDependenceUtils.installDependenceOnline(currentID, preDependence.getDependenceID(), preDependence.getFileDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 595627dd3..5be79d9a0 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -215,7 +215,7 @@ public class DownLoadDependenceUI implements ActionListener { } } - public boolean preOnline() { + public boolean installOnline() { int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("Need") + dependenceID + Inter.getLocText("Support") + "," + Inter.getLocText("Need_Install") + dependenceID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0){//下载安装 if (!connectToServer()){ diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java similarity index 51% rename from designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java rename to designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java index 61d34dfd6..bb930f111 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java @@ -5,9 +5,9 @@ package com.fr.design.extra.plugindependence; */ -public class DownLoadDependenceUtils { - public static boolean preDependenceOnline(String currentID, String dependenceID, String dependenceDir) { +public class PluginDependenceUtils { + public static boolean installDependenceOnline(String currentID, String dependenceID, String dependenceDir) { DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceDir); - return ui.preOnline(); + return ui.installOnline(); } } From 79e9bcf2509dad2839d90255ab7e52038f22ee32 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 6 Sep 2016 09:49:22 +0800 Subject: [PATCH 38/92] update --- .../plugindependence/image/background.png | Bin 112185 -> 107927 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/image/background.png b/designer_base/src/com/fr/design/extra/plugindependence/image/background.png index 792b2bf3ba95668ada88c7be85ddb831b6212627..45bf328e3333701813afd76b1d6efa7bd41f60ee 100644 GIT binary patch literal 107927 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

WfA@8Op?D@gtX|Iyh?nh?mm)j5w(}Fy2`Y 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

    K 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 mSa1rKaC?m&R_x&QkFh*+?YBY@`P>$x)R5_+ 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 =DE0viWhhC@bYXc|7nxy;%p*pF2W&V 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 FV1fp>(6Imj From 104f8b93efecb03002e17021822e7fd60365751f Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 6 Sep 2016 11:21:01 +0800 Subject: [PATCH 39/92] update --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 53e7e3378..d56bd5413 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -126,10 +126,10 @@ public class PluginHelper { //将所有未配置好的资源文件依赖准备好 private static void checkDependenceEnv(Plugin plugin) { PluginDependence dependence = plugin.getDependence(); - String currentID = dependence.getCurrentPluginID(); if (dependence == null){ return; } + String currentID = dependence.getCurrentPluginID(); List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit preDependence = list.get(i); From 4ebbd2a495121e208da191df11c239e90e9f65b0 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 7 Sep 2016 09:56:10 +0800 Subject: [PATCH 40/92] update --- .../src/com/fr/design/extra/PluginHelper.java | 6 +++--- .../plugindependence/DownLoadDependenceUI.java | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index d56bd5413..c5785d888 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -132,9 +132,9 @@ public class PluginHelper { String currentID = dependence.getCurrentPluginID(); List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ - PluginDependenceUnit preDependence = list.get(i); - if (!preDependence.checkFileEnv()){ - PluginDependenceUtils.installDependenceOnline(currentID, preDependence.getDependenceID(), preDependence.getFileDir()); + PluginDependenceUnit dependenceUnit = list.get(i); + if (!dependenceUnit.checkFileEnv()){ + PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(), dependenceUnit.getFileDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 5be79d9a0..853e95939 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -133,7 +133,7 @@ public class DownLoadDependenceUI implements ActionListener { Thread thread = new Thread(new Runnable() { @Override public void run() { - installPhantomJsOnline(); + installDependenceOnline(); } }); thread.start(); @@ -151,7 +151,7 @@ public class DownLoadDependenceUI implements ActionListener { return result; } - private String downloadPluginPhantomJSFile() throws Exception { + private String downloadPluginDependenceFile() throws Exception { httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream reader = httpClient.getResponseStream(); @@ -184,12 +184,12 @@ public class DownLoadDependenceUI implements ActionListener { } } - public void installPhantomJsOnline(){ + public void installDependenceOnline(){ try { - String filePath = downloadPluginPhantomJSFile(); + String filePath = downloadPluginDependenceFile(); if (!StringUtils.EMPTY.equals(filePath)){ //安装文件 - installPluginPhantomJsFile(filePath); + installPluginDependenceFile(filePath); result = true; } } catch (Exception e) { @@ -198,7 +198,7 @@ public class DownLoadDependenceUI implements ActionListener { } //安装已经下载好的文件 - private void installPluginPhantomJsFile(String filePath){ + private void installPluginDependenceFile(String filePath){ IOUtils.unzip(new File(filePath), dependenceDir); } @@ -224,10 +224,10 @@ public class DownLoadDependenceUI implements ActionListener { } //安装依赖环境 if (install()){ - JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("Install_Succeed") + "!!"); + JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); return true; }else { - JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); return false; } }else {//不安装。无需为用户准备环境 From b5502d16c1935f860036a2b28c27bca1b181957f Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 7 Sep 2016 10:55:14 +0800 Subject: [PATCH 41/92] update --- .../DownLoadDependenceUI.java | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 853e95939..514d535d8 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -29,30 +29,30 @@ public class DownLoadDependenceUI implements ActionListener { //进度显示界面 private JDialog frame = null; //进度条 - private JProgressBar progressbar; + private JProgressBar progressbar; //进度信息 - private JLabel label; + private JLabel label; //进度条更新时钟 - private Timer timer; + private Timer timer; //是否继续下载 - private boolean flag = true; + private boolean flag = true; // 定义加载窗口大小 - private final int LOAD_WIDTH = 455; - private final int LOAD_HEIGHT = 295; + private final int LOAD_WIDTH = 455; + private final int LOAD_HEIGHT = 295; //安装环境相关信息 private String currentID; private String dependenceID; private String dependenceDir; //安装结果 - private boolean result = false; + private boolean result = false; //链接服务器的客户端 private HttpClient httpClient; //已读文件字节数 - private int totalBytesRead = 0; + private int totalBytesRead = 0; //文件总长度 - private int totalSize = 0; + private int totalSize = 0; public DownLoadDependenceUI(String ID, String dir) { } @@ -65,9 +65,9 @@ public class DownLoadDependenceUI implements ActionListener { init(); } - private void init(){ + private void init() { // 创建标签,并在标签上放置一张图片 - BufferedImage image = IOUtils.readImage("/com/fr/design/extra/plugindependence/image/background.png"); + BufferedImage image = IOUtils.readImage("/com/fr/design/extra/plugindependence/image/background.png"); ImageIcon imageIcon = new ImageIcon(image); label = new JLabel(imageIcon); label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); @@ -92,10 +92,10 @@ public class DownLoadDependenceUI implements ActionListener { frame.setTitle(Inter.getLocText("FR-Designer-Dependence_Install_Online") + dependenceID); frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - frame.setLocation(screenSize.width/2-LOAD_WIDTH/2,screenSize.height/2-LOAD_HEIGHT/2); + frame.setLocation(screenSize.width / 2 - LOAD_WIDTH / 2, screenSize.height / 2 - LOAD_HEIGHT / 2); frame.setResizable(false); // 设置布局为空 - frame.setLayout(new BorderLayout(0,0)); + frame.setLayout(new BorderLayout(0, 0)); frame.getContentPane().add(label, BorderLayout.CENTER); frame.getContentPane().add(progressbar, BorderLayout.SOUTH); @@ -111,16 +111,16 @@ public class DownLoadDependenceUI implements ActionListener { //是否可以连接服务器 - private boolean connectToServer(){ + private boolean connectToServer() { httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; } //获取依赖文件大小 - private int getFileLength(){ + private int getFileLength() { HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - return httpClient.getContentLength(); + return httpClient.getContentLength(); } return -1; } @@ -172,8 +172,8 @@ public class DownLoadDependenceUI implements ActionListener { writer.close(); //下载被取消 - if (flag == false){ - result = false; + if (flag == false) { + result = false; return StringUtils.EMPTY; } return temp; @@ -184,10 +184,10 @@ public class DownLoadDependenceUI implements ActionListener { } } - public void installDependenceOnline(){ + public void installDependenceOnline() { try { String filePath = downloadPluginDependenceFile(); - if (!StringUtils.EMPTY.equals(filePath)){ + if (!StringUtils.EMPTY.equals(filePath)) { //安装文件 installPluginDependenceFile(filePath); result = true; @@ -198,7 +198,7 @@ public class DownLoadDependenceUI implements ActionListener { } //安装已经下载好的文件 - private void installPluginDependenceFile(String filePath){ + private void installPluginDependenceFile(String filePath) { IOUtils.unzip(new File(filePath), dependenceDir); } @@ -207,8 +207,7 @@ public class DownLoadDependenceUI implements ActionListener { int value = progressbar.getValue(); if (value < totalSize) { progressbar.setValue(totalBytesRead); - } - else { + } else { timer.stop(); frame.dispose(); } @@ -217,25 +216,25 @@ public class DownLoadDependenceUI implements ActionListener { public boolean installOnline() { int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("Need") + dependenceID + Inter.getLocText("Support") + "," + Inter.getLocText("Need_Install") + dependenceID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); - if (choose == 0){//下载安装 - if (!connectToServer()){ + if (choose == 0) {//下载安装 + if (!connectToServer()) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); return false; } //安装依赖环境 - if (install()){ + if (install()) { JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); return true; - }else { + } else { JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); return false; } - }else {//不安装。无需为用户准备环境 + } else {//不安装。无需为用户准备环境 return true; } } private String showFileLength() { - return totalSize == -1 ? "NAN" : totalSize/Math.pow(10, 6) + ""; + return totalSize == -1 ? "NAN" : totalSize / Math.pow(10, 6) + ""; } } From 8a39df10d3929f435c33ae90681f61ba527c2189 Mon Sep 17 00:00:00 2001 From: loy Date: Wed, 7 Sep 2016 14:19:17 +0800 Subject: [PATCH 42/92] =?UTF-8?q?=E4=BC=98=E5=8C=96web=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=80=A7=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=BD=BB=E9=87=8F?= =?UTF-8?q?=E9=87=8D=E6=96=B9=E5=BC=8F=E8=BE=93=E5=87=BA=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/webattr/PageToolBarPane.java | 8 +++++++- .../com/fr/design/webattr/PageWebSettingPane.java | 14 ++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/designer/src/com/fr/design/webattr/PageToolBarPane.java b/designer/src/com/fr/design/webattr/PageToolBarPane.java index aa7e452b2..105d17353 100644 --- a/designer/src/com/fr/design/webattr/PageToolBarPane.java +++ b/designer/src/com/fr/design/webattr/PageToolBarPane.java @@ -34,6 +34,7 @@ public class PageToolBarPane extends AbstractEditToolBarPane { private UICheckBox isShowAsImageBox; private UICheckBox isAutoScaleBox; private UICheckBox isTDHeavyBox; + private UICheckBox isTDHeavyUseLightBox; private EventPane eventPane; private UILabel showLocationLabel = new UILabel(Inter.getLocText("FR-Designer_Report_Show_Location") + ":"); @@ -59,7 +60,9 @@ public class PageToolBarPane extends AbstractEditToolBarPane { north.add(GUICoreUtils.createFlowPane(isAutoScaleBox, FlowLayout.LEFT)); isTDHeavyBox = new UICheckBox(Inter.getLocText("FR-Designer_IS_TD_HEAVY_EXPORT"), false); north.add(GUICoreUtils.createFlowPane(isTDHeavyBox, FlowLayout.LEFT)); - + isTDHeavyUseLightBox = new UICheckBox(Inter.getLocText("FR-Designer_USE_TD_HEAVY_LIGHT"), false); + north.add(GUICoreUtils.createFlowPane(isTDHeavyUseLightBox, FlowLayout.LEFT)); + editToolBarButton.addActionListener(editBtnListener); isUseToolBarCheckBox.setSelected(true); isUseToolBarCheckBox.addActionListener(new ActionListener() { @@ -93,6 +96,7 @@ public class PageToolBarPane extends AbstractEditToolBarPane { this.centerRadioButton.setEnabled(isEnabled); this.eventPane.setEnabled(isEnabled); this.isTDHeavyBox.setEnabled(isEnabled); + this.isTDHeavyUseLightBox.setEnabled(isEnabled); this.isAutoScaleBox.setEnabled(isEnabled); this.isShowAsImageBox.setEnabled(isEnabled); this.leftRadioButton.setEnabled(isEnabled); @@ -122,6 +126,7 @@ public class PageToolBarPane extends AbstractEditToolBarPane { isShowAsImageBox.setSelected(webPage.isShowAsImage()); isAutoScaleBox.setSelected(webPage.isAutoScaleWhenEmbeddedInIframe()); isTDHeavyBox.setSelected(webPage.isTDHeavy()); + isTDHeavyUseLightBox.setSelected(webPage.isLightTDHeavy()); if (webPage.isUseToolBar()) { this.toolBarManagers = webPage.getToolBarManagers(); this.isUseToolBarCheckBox.setSelected(true); @@ -156,6 +161,7 @@ public class PageToolBarPane extends AbstractEditToolBarPane { webPage.setShowAsImage(isShowAsImageBox.isSelected()); webPage.setAutoScaleWhenEmbeddedInIframe(isAutoScaleBox.isSelected()); webPage.setTDHeavy(isTDHeavyBox.isSelected()); + webPage.setLightTDHeavy(isTDHeavyUseLightBox.isSelected()); return webPage; } diff --git a/designer/src/com/fr/design/webattr/PageWebSettingPane.java b/designer/src/com/fr/design/webattr/PageWebSettingPane.java index 328513085..e38240c36 100644 --- a/designer/src/com/fr/design/webattr/PageWebSettingPane.java +++ b/designer/src/com/fr/design/webattr/PageWebSettingPane.java @@ -29,6 +29,7 @@ public class PageWebSettingPane extends WebSettingPane { private UICheckBox isShowAsImageBox; private UICheckBox isAutoScaleBox; private UICheckBox isTDHeavyBox; + private UICheckBox isTDHeavyUseLightBox; public PageWebSettingPane() { super(); @@ -48,14 +49,15 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox = new UICheckBox(Inter.getLocText("Is_Paint_Page")); isAutoScaleBox = new UICheckBox(Inter.getLocText("IS_Auto_Scale")); isTDHeavyBox = new UICheckBox(Inter.getLocText("IS_TD_HEAVY_EXPORT"), false); + isTDHeavyUseLightBox = new UICheckBox(Inter.getLocText("USE_TD_HEAVY_LIGHT"), false); double p = TableLayout.PREFERRED; double[] columnSize = { p,p,p}; double[] rowSize = { p, p,p,p }; Component[][] components = new Component[][]{ - new Component[]{new UILabel(Inter.getLocText("Report_Show_Location") + ":", UILabel.RIGHT),buttonpane,null}, - new Component[]{new UILabel(Inter.getLocText("PageSetup-Page") + ":", UILabel.RIGHT),isShowAsImageBox,isAutoScaleBox}, - new Component[]{null,isTDHeavyBox,null} - } ; + new Component[]{new UILabel(Inter.getLocText("Report_Show_Location") + ":", UILabel.RIGHT), buttonpane,null}, + new Component[]{new UILabel(Inter.getLocText("PageSetup-Page") + ":", UILabel.RIGHT), isShowAsImageBox, isAutoScaleBox}, + new Component[]{null, isTDHeavyBox, isTDHeavyUseLightBox} + }; return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); } @@ -69,6 +71,7 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setEnabled(isSelected); isAutoScaleBox.setEnabled(isSelected); isTDHeavyBox.setEnabled(isSelected); + isTDHeavyUseLightBox.setEnabled(isSelected); } protected void setDefault(){ super.setDefault(); @@ -76,6 +79,7 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setSelected(false); isAutoScaleBox.setSelected(false); isTDHeavyBox.setSelected(false); + isTDHeavyUseLightBox.setSelected(false); } @Override protected void populateSubWebSettingrBean(WebPage webPage) { @@ -91,6 +95,7 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setSelected(webPage.isShowAsImage()); isAutoScaleBox.setSelected(webPage.isAutoScaleWhenEmbeddedInIframe()); isTDHeavyBox.setSelected(webPage.isTDHeavy()); + isTDHeavyUseLightBox.setSelected(webPage.isLightTDHeavy()); } @Override @@ -100,6 +105,7 @@ public class PageWebSettingPane extends WebSettingPane { webPage.setShowAsImage(isShowAsImageBox.isSelected()); webPage.setAutoScaleWhenEmbeddedInIframe(isAutoScaleBox.isSelected()); webPage.setTDHeavy(isTDHeavyBox.isSelected()); + webPage.setLightTDHeavy(isTDHeavyUseLightBox.isSelected()); return webPage; } From ba40379e97ea38e0fc41401433fa9545a5af267f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Wed, 7 Sep 2016 21:00:41 +0800 Subject: [PATCH 43/92] =?UTF-8?q?QQ=E6=8E=88=E6=9D=83=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E7=9A=84=E6=97=B6=E5=80=99=E7=9A=84confirm?= =?UTF-8?q?=E7=94=A8javafx=E9=87=8D=E6=96=B0=E8=8E=B7=E5=8F=96=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E5=86=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 相当于重新绘制了confirm的页面,还需要一个css --- .../design/mainframe/bbs/UserInfoLabel.java | 7 +- .../src/com/fr/design/DesignerEnvManager.java | 10 ++ .../com/fr/design/extra/LoginWebBridge.java | 110 ++++++++++++++- .../com/fr/design/extra/QQLoginWebBridge.java | 3 + .../com/fr/design/extra/QQLoginWebPane.java | 130 +++++++++++++++++- .../extra/exe/GetLoginInfoExecutor.java | 5 +- .../src/com/fr/design/extra/modal-dialog.css | 36 +++++ 7 files changed, 287 insertions(+), 14 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/modal-dialog.css diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 727539d88..16129b4f1 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -78,7 +78,10 @@ public class UserInfoLabel extends UILabel{ this.addMouseListener(userInfoAdapter); this.setHorizontalAlignment(SwingConstants.CENTER); this.setText(userName); - setUserName(userName); + + LoginWebBridge loginWebBridge = new LoginWebBridge(); + loginWebBridge.setUserName(userName, UserInfoLabel.this); + LoginCheckContext.addLoginCheckListener(new LoginCheckListener() { @Override public void loginChecked() { @@ -187,7 +190,6 @@ public class UserInfoLabel extends UILabel{ if(StringUtils.isEmpty(this.userName)){ updateMessageCount(); } - //往designerenvmanger里写一下 DesignerEnvManager.getEnvManager().setBBSName(userName); this.userName = userName; @@ -216,7 +218,6 @@ public class UserInfoLabel extends UILabel{ } catch (Exception e) { } } - sleep(CHECK_MESSAGE_TIME); } } diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index f43096c61..e1e346552 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -93,6 +93,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private String bbsName; //当前设计器用户的论坛密码 private String bbsPassword; + //当前设计器用户的昵称显示(带消息) + private String inShowBBsName; //上一次登录弹窗的时间, 为了控制一天只弹一次窗口 private String lastShowBBSTime; //上一次资讯弹窗时间, 为了控制一天只弹一次 @@ -1148,6 +1150,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { public void setBBSPassword(String bbsPassword) { this.bbsPassword = bbsPassword; } + + public void setInShowBBsName(String inShowBBsName) { + this.inShowBBsName = inShowBBsName; + } + + public String getInShowBBsName() { + return inShowBBsName; + } public String getLastShowBBSTime() { return lastShowBBSTime; diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 4e1e93b76..6dd4f0f83 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -8,6 +8,7 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; +import com.fr.json.JSONObject; import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; import javafx.scene.web.WebEngine; @@ -18,12 +19,21 @@ import java.net.URI; import javax.swing.*; import java.awt.*; import java.net.URLEncoder; +import java.util.HashMap; -/** - * Created by zhaohehe on 16/8/1. - */ public class LoginWebBridge { + //默认查询消息时间, 30s + private static final long CHECK_MESSAGE_TIME = 30 * 1000L; + //数据查询正常的标志 ok + private static final String SUCCESS_MESSAGE_STATUS = "ok"; + + //消息条数 + private int messageCount; + + //最低消息的条数 + private static final int MIN_MESSAGE_COUNT = 0; + private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com"; private static final String LOGININ = "0"; private static final String LOGIN_INFO_EMPTY = "-1"; @@ -34,6 +44,11 @@ public class LoginWebBridge { private static com.fr.design.extra.LoginWebBridge helper; private UIDialog uiDialog; private UILabel uiLabel; + private String userName; + + public int getMessageCount() { + return messageCount; + } private boolean testConnection() { HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); @@ -60,9 +75,6 @@ public class LoginWebBridge { private WebEngine webEngine; - private LoginWebBridge() { - } - public void setEngine(WebEngine webEngine) { this.webEngine = webEngine; } @@ -75,6 +87,90 @@ public class LoginWebBridge { this.uiLabel = uiLabel; } + public LoginWebBridge() { + String username = DesignerEnvManager.getEnvManager().getBBSName(); + setUserName(username, uiLabel); + } + + public void setUserName(String userName, UILabel label) { + if (uiLabel == null) { + this.uiLabel = label; + } + if(StringUtils.isEmpty(userName)){ + return; + } + + if(!StringUtils.isEmpty(this.userName)){ + updateMessageCount(); + } + //往designerenvmanger里写一下 + DesignerEnvManager.getEnvManager().setBBSName(userName); + this.userName = userName; + } + + private void updateMessageCount(){ + //启动获取消息更新的线程 + //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. + Thread updateMessageThread = new Thread(new Runnable() { + + @Override + public void run() { + sleep(CHECK_MESSAGE_TIME); + //从env中获取username, 因为如果注销的话, env的里username会被清空. + while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ + HashMap para = new HashMap(); + para.put("username", encode(encode(userName))); + HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); + getMessage.asGet(); + if(getMessage.isServerAlive()){ + try { + String res = getMessage.getResponseText(); + JSONObject jo = new JSONObject(res); + if (jo.getString("status").equals(SUCCESS_MESSAGE_STATUS)) { + setMessageCount(Integer.parseInt(jo.getString("message"))); + } + } catch (Exception e) { + FRContext.getLogger().info(e.getMessage()); + } + } + sleep(CHECK_MESSAGE_TIME); + } + } + }); + updateMessageThread.start(); + } + + public void setMessageCount(int count) { + if (count == MIN_MESSAGE_COUNT) { + uiLabel.setText(DesignerEnvManager.getEnvManager().getBBSName()); + DesignerEnvManager.getEnvManager().setInShowBBsName(DesignerEnvManager.getEnvManager().getBBSName()); + return; + } + this.messageCount = count; + StringBuilder sb = new StringBuilder(); + sb.append(StringUtils.BLANK).append(this.userName) + .append("(").append(this.messageCount) + .append(")").append(StringUtils.BLANK); + DesignerEnvManager.getEnvManager().setInShowBBsName(sb.toString()); + uiLabel.setText(sb.toString()); + } + + private String encode(String str){ + try { + return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8); + } catch (UnsupportedEncodingException e) { + return str; + } + } + + private void sleep(long millis){ + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + FRContext.getLogger().error(e.getMessage()); + } + } + /** * 注册页面 */ @@ -113,6 +209,7 @@ public class LoginWebBridge { if (login(username, password)) { updateUserInfo(username, password); loginSuccess(username); + setUserName(username, uiLabel); return LOGININ; }else { return LOGININFO_ERROR; @@ -152,6 +249,7 @@ public class LoginWebBridge { public void updateUserInfo(String username,String password) { DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBBSPassword(password); + this.userName = username; } /** diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index b386e836c..1538e71c2 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -7,6 +7,7 @@ import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import javafx.scene.web.WebEngine; import org.json.JSONObject; +import netscape.javascript.JSObject; import javax.swing.*; import java.awt.*; @@ -68,6 +69,8 @@ public class QQLoginWebBridge { username = DesignerEnvManager.getEnvManager().getBBSName(); } + private static JSObject window; + public static com.fr.design.extra.QQLoginWebBridge getHelper(WebEngine webEngine) { getHelper(); helper.setEngine(webEngine); diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index cdb1d1748..e9fab4fe1 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -1,21 +1,38 @@ package com.fr.design.extra; +import com.fr.base.FRContext; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; +import com.fr.general.Inter; import com.fr.general.SiteCenter; import javafx.application.Platform; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; +import javafx.concurrent.Worker; import javafx.embed.swing.JFXPanel; +import javafx.event.ActionEvent; import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Node; import javafx.scene.Scene; +import javafx.scene.control.ButtonBuilder; +import javafx.scene.control.LabelBuilder; +import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.HBoxBuilder; +import javafx.scene.paint.Color; import javafx.scene.web.WebEngine; import javafx.scene.web.WebEvent; import javafx.scene.web.WebView; +import javafx.stage.*; +import javafx.util.Callback; import netscape.javascript.JSObject; import javax.swing.*; +import java.awt.*; /** * Created by zhaohehe on 16/7/28. @@ -24,6 +41,17 @@ public class QQLoginWebPane extends JFXPanel { private WebEngine webEngine; + private static JSObject window; + + private static int DEFAULT_PRIMARYSTAGE_WIDTH = 100; + private static int DEFAULT_PRIMARYSTAGE_HEIGHT = 100; + + private static int DEFAULT_CONFIRM_WIDTH = 450; + private static int DEFAULT_CONFIRM_HEIGHT = 160; + private static int DEFAULT_OFFEST = 20; + + class Delta { double x, y; } + public QQLoginWebPane(final String installHome) { Platform.setImplicitExit(false); Platform.runLater(new Runnable() { @@ -32,9 +60,33 @@ public class QQLoginWebPane extends JFXPanel { BorderPane root = new BorderPane(); Scene scene = new Scene(root); QQLoginWebPane.this.setScene(scene); - WebView webView = new WebView(); + final WebView webView = new WebView(); webEngine = webView.getEngine(); webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"); + + final Stage primaryStage = new Stage(); + + HBox layout = new HBox(); + try { + primaryStage.initStyle(StageStyle.TRANSPARENT); + primaryStage.setScene(new Scene(layout)); + webView.getScene().getStylesheets().add(getClass().getResource("modal-dialog.css").toExternalForm()); + primaryStage.initStyle(StageStyle.UTILITY); + primaryStage.setScene(new Scene(new Group(), DEFAULT_PRIMARYSTAGE_WIDTH, DEFAULT_PRIMARYSTAGE_HEIGHT)); + primaryStage.setX(0); + primaryStage.setY(Screen.getPrimary().getBounds().getHeight() + DEFAULT_PRIMARYSTAGE_HEIGHT); + primaryStage.show(); + }catch (Exception e) { + FRContext.getLogger().info(e.getMessage()); + } + + webView.getEngine().setConfirmHandler(new Callback() { + @Override public Boolean call(String msg) { + Boolean confirmed = confirm(primaryStage, msg, installHome, webView); + return confirmed; + } + }); + webEngine.locationProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, final String oldValue, String newValue) { @@ -52,8 +104,12 @@ public class QQLoginWebPane extends JFXPanel { showAlert(event.getData()); } }); - JSObject obj = (JSObject) webEngine.executeScript("window"); - obj.setMember("QQLoginHelper", QQLoginWebBridge.getHelper(webEngine)); + webEngine.getLoadWorker().stateProperty().addListener((ObservableValue observable, Worker.State oldValue, Worker.State newValue) -> { + if (newValue == Worker.State.SUCCEEDED) { + window = (JSObject) webEngine.executeScript("window"); + window.setMember("QQLoginHelper", QQLoginWebBridge.getHelper(webEngine)); + } + }); webView.setContextMenuEnabled(false);//屏蔽右键 root.setCenter(webView); } @@ -84,4 +140,72 @@ public class QQLoginWebPane extends JFXPanel { FRLogger.getLogger().error(e.getMessage()); } } + + private Boolean confirm(final Stage parent, String msg, final String installHome,final WebView webView) { + final BooleanProperty confirmationResult = new SimpleBooleanProperty(); + // initialize the confirmation dialog + final Stage dialog = new Stage(StageStyle.UTILITY); + dialog.setTitle(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); + dialog.setX(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 - DEFAULT_CONFIRM_WIDTH / 2 + DEFAULT_OFFEST); + dialog.setY(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 + DEFAULT_OFFEST); + dialog.setHeight(DEFAULT_CONFIRM_HEIGHT); + dialog.setWidth(DEFAULT_CONFIRM_WIDTH); + dialog.setIconified(false); + dialog.setAlwaysOnTop(true); + dialog.initOwner(parent); + dialog.initModality(Modality.WINDOW_MODAL); + dialog.setScene( + new Scene( + HBoxBuilder.create().styleClass("modal-dialog").children( + LabelBuilder.create().text(msg).build(), + ButtonBuilder.create().text(Inter.getLocText("")).defaultButton(true).onAction(new EventHandler() { + @Override public void handle(ActionEvent actionEvent) { + // take action and close the dialog. + confirmationResult.set(true); + webView.getEngine().reload(); + dialog.close(); + } + }).build(), + ButtonBuilder.create().text(Inter.getLocText("FR-Engine_Cancel")).cancelButton(true).onAction(new EventHandler() { + @Override public void handle(ActionEvent actionEvent) { + // abort action and close the dialog. + confirmationResult.set(false); + dialog.close(); + } + }).build() + ).build() + , Color.TRANSPARENT + ) + ); + // allow the dialog to be dragged around. + final Node root = dialog.getScene().getRoot(); + final Delta dragDelta = new Delta(); + + root.setOnMousePressed(new EventHandler() { + @Override public void handle(MouseEvent mouseEvent) { + // record a delta distance for the drag and drop operation. + dragDelta.x = dialog.getX() - mouseEvent.getScreenX(); + dragDelta.y = dialog.getY() - mouseEvent.getScreenY(); + } + }); + root.setOnMouseDragged(new EventHandler() { + @Override public void handle(MouseEvent mouseEvent) { + dialog.setX(mouseEvent.getScreenX() + dragDelta.x); + dialog.setY(mouseEvent.getScreenY() + dragDelta.y); + } + }); + // style and show the dialog. + dialog.getScene().getStylesheets().add(getClass().getResource("modal-dialog.css").toExternalForm()); + + dialog.setOnCloseRequest(new EventHandler(){ + @Override + public void handle(WindowEvent event){ + event.consume(); + dialog.close(); + } + }); + + dialog.showAndWait(); + return confirmationResult.get(); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index 6258d0233..06a064698 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -27,9 +27,10 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { String username = DesignerEnvManager.getEnvManager().getBBSName(); - if (StringUtils.isEmpty(username)) { + String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName(); + if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) { }else { - result = username; + result = inShowUsername; } } } diff --git a/designer_base/src/com/fr/design/extra/modal-dialog.css b/designer_base/src/com/fr/design/extra/modal-dialog.css new file mode 100644 index 000000000..be39df93b --- /dev/null +++ b/designer_base/src/com/fr/design/extra/modal-dialog.css @@ -0,0 +1,36 @@ +/** + * modal-dialog.css + * place in same directory as WebViewConfirm.java + * ensure your build system copies the file to your build output directory + */ + +.root { + -fx-glass-color: white; +} + +.modal-dialog { + -fx-padding: 20; + -fx-spacing: 10; + -fx-alignment: center; + -fx-font-size: 14; + -fx-background-color: linear-gradient(to bottom, derive(-fx-glass-color, 20%), -fx-glass-color); + -fx-border-color: derive(-fx-glass-color, -20%); + -fx-border-width: 5; + -fx-background-insets: 12; + -fx-border-insets: 10; + -fx-border-radius: 6; + -fx-background-radius: 6; +} + +.modal-dialog:pressed { + -fx-cursor: move; +} + +.modal-dialog .button:pressed { + -fx-cursor: default; +} + +.confirmation-results { + -fx-background-color: cornsilk; + -fx-padding: 5; +} \ No newline at end of file From f4cf187132139ee32c3c252ac3ae60482fba54f1 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 8 Sep 2016 13:59:43 +0800 Subject: [PATCH 44/92] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/extra/plugindependence/DownLoadDependenceUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 514d535d8..6c9555649 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -215,7 +215,7 @@ public class DownLoadDependenceUI implements ActionListener { } public boolean installOnline() { - int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("Need") + dependenceID + Inter.getLocText("Support") + "," + Inter.getLocText("Need_Install") + dependenceID + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("FR-Designer-Need") + " " + dependenceID + " " + Inter.getLocText("FR-Designer-Support") + "," + Inter.getLocText("FR-Designer-Dependence_Need_Install") + " " + dependenceID + " " + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0) {//下载安装 if (!connectToServer()) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); From f2b273c1b6e84fd83ae4052f4f1159a8f7a9ecd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Thu, 8 Sep 2016 14:41:26 +0800 Subject: [PATCH 45/92] =?UTF-8?q?=E6=94=B9=E4=B8=80=E4=B8=8B=E5=86=99?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E4=B8=BAerror=E7=9A=84=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setAlwaysontop 这个方法是1.8jdk才有的,之前1.7的里面就没有这样的方法,那就去掉吧,没什么影响。 --- .../com/fr/design/extra/LoginWebBridge.java | 11 ++++++++--- .../com/fr/design/extra/QQLoginWebPane.java | 18 +++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 6dd4f0f83..46e66c98c 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -27,6 +27,8 @@ public class LoginWebBridge { private static final long CHECK_MESSAGE_TIME = 30 * 1000L; //数据查询正常的标志 ok private static final String SUCCESS_MESSAGE_STATUS = "ok"; + //数据通讯失败 + private static final String FAILED_MESSAGE_STATUS = "error"; //消息条数 private int messageCount; @@ -125,9 +127,12 @@ public class LoginWebBridge { if(getMessage.isServerAlive()){ try { String res = getMessage.getResponseText(); - JSONObject jo = new JSONObject(res); - if (jo.getString("status").equals(SUCCESS_MESSAGE_STATUS)) { - setMessageCount(Integer.parseInt(jo.getString("message"))); + if (res.equals(FAILED_MESSAGE_STATUS)) { + }else { + JSONObject jo = new JSONObject(res); + if (jo.getString("status").equals(SUCCESS_MESSAGE_STATUS)) { + setMessageCount(Integer.parseInt(jo.getString("message"))); + } } } catch (Exception e) { FRContext.getLogger().info(e.getMessage()); diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index e9fab4fe1..2d950bb11 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -104,12 +104,17 @@ public class QQLoginWebPane extends JFXPanel { showAlert(event.getData()); } }); - webEngine.getLoadWorker().stateProperty().addListener((ObservableValue observable, Worker.State oldValue, Worker.State newValue) -> { - if (newValue == Worker.State.SUCCEEDED) { - window = (JSObject) webEngine.executeScript("window"); - window.setMember("QQLoginHelper", QQLoginWebBridge.getHelper(webEngine)); - } - }); + webEngine.getLoadWorker().stateProperty().addListener( + new ChangeListener() { + public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) { + if (newState == Worker.State.SUCCEEDED) { + window = (JSObject) webEngine.executeScript("window"); + window.setMember("QQLoginHelper", QQLoginWebBridge.getHelper(webEngine)); + } + } + } + ); + webView.setContextMenuEnabled(false);//屏蔽右键 root.setCenter(webView); } @@ -151,7 +156,6 @@ public class QQLoginWebPane extends JFXPanel { dialog.setHeight(DEFAULT_CONFIRM_HEIGHT); dialog.setWidth(DEFAULT_CONFIRM_WIDTH); dialog.setIconified(false); - dialog.setAlwaysOnTop(true); dialog.initOwner(parent); dialog.initModality(Modality.WINDOW_MODAL); dialog.setScene( From a35a6071c1229dff49ec8c88a6fbacd22c641c91 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 8 Sep 2016 15:54:44 +0800 Subject: [PATCH 46/92] update --- .../design/extra/plugindependence/DownLoadDependenceUI.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 6c9555649..c81999db5 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -1,5 +1,6 @@ package com.fr.design.extra.plugindependence; +import com.fr.base.FRContext; import com.fr.design.extra.PluginConstants; import com.fr.design.extra.PluginHelper; import com.fr.design.mainframe.DesignerContext; @@ -198,7 +199,8 @@ public class DownLoadDependenceUI implements ActionListener { } //安装已经下载好的文件 - private void installPluginDependenceFile(String filePath) { + //不支持切换远程目录安装 + private void installPluginDependenceFile(String filePath) throws Exception { IOUtils.unzip(new File(filePath), dependenceDir); } From 0fcfdc75cd933e972cf0481b3504ec44786af284 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 8 Sep 2016 15:56:54 +0800 Subject: [PATCH 47/92] =?UTF-8?q?bug104400,=E8=87=AA=E9=80=82=E5=BA=94?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E6=8B=96=E5=8A=A8=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E9=97=B4=E9=9A=94=E6=BC=8F=E6=8E=89=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapters/layout/FRBodyLayoutAdapter.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java index b5dbb3485..313c08b02 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java @@ -911,23 +911,23 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter{ minUpH = getUpMinHeightComp(cY, x); minDownH = getDownMinHeightComp(currentComp, y); dealTrisectAtTop(child, minUpH, minDownH); - } else if(ComparatorUtils.equals(trisectAreaDirect, COMP_BOTTOM)) { - minUpH = getUpMinHeightComp(cY+cH+actualVal, x); - if (cY+cH+DEFAULT_AREA_LENGTH margin.getLeft()) { - Component targetRightComp = container.getLeftComp(cX, y); - minLeftW = getMinLeftWidth(targetRightComp, cX-DEFAULT_AREA_LENGTH); + minRightW = getMinRightWidth(cX, 0, y); + if (cX - DEFAULT_AREA_LENGTH > margin.getLeft()) { + Component targetRightComp = container.getLeftComp(cX, y); + minLeftW = getMinLeftWidth(targetRightComp, cX - DEFAULT_AREA_LENGTH - actualVal);//bug104400没算上间隔 } dealTrisectAtRight(child, minLeftW, minRightW); } From b795cce95f9bfba64fe6af4d626f36b28a5f4677 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 8 Sep 2016 16:07:57 +0800 Subject: [PATCH 48/92] update --- .../fr/design/extra/plugindependence/DownLoadDependenceUI.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index c81999db5..c96872725 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -1,6 +1,5 @@ package com.fr.design.extra.plugindependence; -import com.fr.base.FRContext; import com.fr.design.extra.PluginConstants; import com.fr.design.extra.PluginHelper; import com.fr.design.mainframe.DesignerContext; @@ -199,7 +198,6 @@ public class DownLoadDependenceUI implements ActionListener { } //安装已经下载好的文件 - //不支持切换远程目录安装 private void installPluginDependenceFile(String filePath) throws Exception { IOUtils.unzip(new File(filePath), dependenceDir); } From d23e620ac9143fb6aad12cc7fa9eed7ca037a9c2 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 8 Sep 2016 21:28:00 +0800 Subject: [PATCH 49/92] update --- .../src/com/fr/design/extra/PluginHelper.java | 2 +- .../DownLoadDependenceUI.java | 21 +++++++++++++------ .../PluginDependenceUtils.java | 6 ++++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index c5785d888..bff696fed 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -134,7 +134,7 @@ public class PluginHelper { for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit dependenceUnit = list.get(i); if (!dependenceUnit.checkFileEnv()){ - PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(), dependenceUnit.getFileDir()); + PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(),dependenceUnit.getDependenceType(), dependenceUnit.getDependenceDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index c96872725..7d0aca64a 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -1,5 +1,7 @@ package com.fr.design.extra.plugindependence; +import com.fr.base.Env; +import com.fr.base.FRContext; import com.fr.design.extra.PluginConstants; import com.fr.design.extra.PluginHelper; import com.fr.design.mainframe.DesignerContext; @@ -7,6 +9,7 @@ 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.dependence.PluginDependenceType; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -45,6 +48,7 @@ public class DownLoadDependenceUI implements ActionListener { private String currentID; private String dependenceID; private String dependenceDir; + private PluginDependenceType dependenceType; //安装结果 private boolean result = false; //链接服务器的客户端 @@ -54,13 +58,13 @@ public class DownLoadDependenceUI implements ActionListener { //文件总长度 private int totalSize = 0; - public DownLoadDependenceUI(String ID, String dir) { + public DownLoadDependenceUI() { } - - public DownLoadDependenceUI(String currentID, String dependenceID, String dependenceDir) { + public DownLoadDependenceUI(String currentID, String dependenceID, PluginDependenceType dependenceType, String dependenceDir) { this.currentID = currentID; this.dependenceID = dependenceID; this.dependenceDir = dependenceDir; + this.dependenceType = dependenceType; this.totalSize = getFileLength(); init(); } @@ -197,9 +201,14 @@ public class DownLoadDependenceUI implements ActionListener { } } - //安装已经下载好的文件 - private void installPluginDependenceFile(String filePath) throws Exception { - IOUtils.unzip(new File(filePath), dependenceDir); + //安装已经下载好的文件,如果是服务文件,则需要复制一份到安装目录下, + //以便切换远程时,使用本地的服务 + //如果是服务器环境,则只会安装一份 + private void installPluginDependenceFile(String filePath){ + IOUtils.unzip(new File(filePath), FRContext.getCurrentEnv().getPath() + dependenceDir); + if (dependenceType == PluginDependenceType.SERVICE) { + IOUtils.unzip(new File(filePath), StableUtils.getInstallHome() + dependenceDir); + } } public void actionPerformed(ActionEvent e) { diff --git a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java index bb930f111..9b4d1224d 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java @@ -1,13 +1,15 @@ package com.fr.design.extra.plugindependence; +import com.fr.plugin.dependence.PluginDependenceType; + /** * Created by hufan on 2016/8/31. */ public class PluginDependenceUtils { - public static boolean installDependenceOnline(String currentID, String dependenceID, String dependenceDir) { - DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceDir); + public static boolean installDependenceOnline(String currentID, String dependenceID, PluginDependenceType dependenceType, String dependenceDir) { + DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceType, dependenceDir); return ui.installOnline(); } } From a2a1495d276920749f262399d92fb776f869be68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 09:56:02 +0800 Subject: [PATCH 50/92] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java | 1 + designer_base/src/com/fr/design/extra/LoginWebBridge.java | 1 + 2 files changed, 2 insertions(+) diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 16129b4f1..197321ede 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -116,6 +116,7 @@ public class UserInfoLabel extends UILabel{ private void clearLoginInformation(){ DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); } private void updateInfoPane(){ diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 46e66c98c..d98315151 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -254,6 +254,7 @@ public class LoginWebBridge { public void updateUserInfo(String username,String password) { DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBBSPassword(password); + DesignerEnvManager.getEnvManager().setInShowBBsName(username); this.userName = username; } From 82eb0f87d6f8a84022ad5c71a54d2f945da8df50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 10:30:49 +0800 Subject: [PATCH 51/92] =?UTF-8?q?=E7=99=BB=E5=87=BA=E6=B8=85=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginWebBridge.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index bcd1aea70..23b6fa460 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -547,6 +547,7 @@ public class PluginWebBridge { public void clearUserInfo() { DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); } } From 6dc2e9c87288fb872a06a825a7c6c81306b5d23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 16:19:11 +0800 Subject: [PATCH 52/92] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=9B=AE=E5=89=8D?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E8=AE=A1=E5=99=A8=E7=9A=84=E8=AE=BA=E5=9D=9B?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将之前的使用shop的登录接口,改成设计器内实现登录,另外修改了之前的autoLogin操作,改成现在的直接登录 --- .../design/mainframe/bbs/UserInfoLabel.java | 1 + .../fr/design/mainframe/bbs/UserInfoPane.java | 11 +- .../src/com/fr/design/DesignerEnvManager.java | 10 + .../com/fr/design/extra/LoginWebBridge.java | 144 +++++--- .../com/fr/design/extra/QQLoginWebBridge.java | 3 + .../extra/exe/GetLoginInfoExecutor.java | 2 +- .../com/fr/design/extra/ucenter/Base64.java | 256 +++++++++++++ .../com/fr/design/extra/ucenter/Client.java | 335 ++++++++++++++++++ .../fr/design/extra/ucenter/PHPFunctions.java | 108 ++++++ .../fr/design/extra/ucenter/XMLHelper.java | 36 ++ 10 files changed, 843 insertions(+), 63 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/ucenter/Base64.java create mode 100644 designer_base/src/com/fr/design/extra/ucenter/Client.java create mode 100644 designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java create mode 100644 designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 197321ede..54a2016eb 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -117,6 +117,7 @@ public class UserInfoLabel extends UILabel{ DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setBbsUid(Integer.parseInt(StringUtils.EMPTY)); } private void updateInfoPane(){ diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java index b73ac6717..b8a168baa 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoPane.java @@ -14,6 +14,7 @@ import java.util.Date; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.BasicPane; +import com.fr.design.extra.LoginWebBridge; import com.fr.design.mainframe.DesignerContext; import com.fr.general.DateUtils; import com.fr.general.FRLogger; @@ -33,6 +34,9 @@ public class UserInfoPane extends BasicPane{ private static final Color LOGIN_BACKGROUND = new Color(184, 220, 242); private static final int WIDTH = 104; private static final int HEIGHT = 24; + + //登录成功 + private static final String LOGININ = "0"; // 登录框弹出间隔时间 private static final int LOGIN_DIFF_DAY = 7; @@ -74,10 +78,11 @@ public class UserInfoPane extends BasicPane{ public void run() { String username = DesignerEnvManager.getEnvManager().getBBSName(); String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - if(!BBSLoginDialog.login(username, password)){ - markUnSignIn(); - }else{ + String loginResult = LoginWebBridge.getHelper().login(username, password); + if (loginResult.equals(LOGININ)) { markSignIn(username); + }else { + markUnSignIn(); } } }); diff --git a/designer_base/src/com/fr/design/DesignerEnvManager.java b/designer_base/src/com/fr/design/DesignerEnvManager.java index e1e346552..524f4f96c 100644 --- a/designer_base/src/com/fr/design/DesignerEnvManager.java +++ b/designer_base/src/com/fr/design/DesignerEnvManager.java @@ -93,6 +93,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private String bbsName; //当前设计器用户的论坛密码 private String bbsPassword; + //当前设计器用户的论坛ID + private int bbsUid; //当前设计器用户的昵称显示(带消息) private String inShowBBsName; //上一次登录弹窗的时间, 为了控制一天只弹一次窗口 @@ -1151,6 +1153,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.bbsPassword = bbsPassword; } + public int getBbsUid() { + return bbsUid; + } + + public void setBbsUid(int bbsUid) { + this.bbsUid = bbsUid; + } + public void setInShowBBsName(String inShowBBsName) { this.inShowBBsName = inShowBBsName; } diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index d98315151..e20948128 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -3,9 +3,10 @@ package com.fr.design.extra; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.UIDialog; +import com.fr.design.extra.ucenter.Client; +import com.fr.design.extra.ucenter.XMLHelper; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.DesignerContext; -import com.fr.general.FRLogger; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.json.JSONObject; @@ -14,12 +15,12 @@ import com.fr.stable.StringUtils; import javafx.scene.web.WebEngine; import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; import java.net.URI; import javax.swing.*; import java.awt.*; import java.net.URLEncoder; import java.util.HashMap; +import java.util.LinkedList; public class LoginWebBridge { @@ -29,18 +30,22 @@ public class LoginWebBridge { private static final String SUCCESS_MESSAGE_STATUS = "ok"; //数据通讯失败 private static final String FAILED_MESSAGE_STATUS = "error"; - //消息条数 private int messageCount; - //最低消息的条数 private static final int MIN_MESSAGE_COUNT = 0; - - private static final String LOGIN_SUCCESS_FLAG = "http://bbs.finereport.com"; + //登录成功 private static final String LOGININ = "0"; - private static final String LOGIN_INFO_EMPTY = "-1"; - private static final String DISCONNECTED = "-2"; - private static final String LOGININFO_ERROR = "-3"; + //用户名不存在 + private static final String USERNAME_NOT_EXSIT = "-1"; + //密码错误 + private static final String PASSWORD_ERROR = "-2"; + //未知错误 + private static final String UNKNOWN_ERROR = "-3"; + //网络连接失败 + private static final String NET_FAILED = "-4"; + //用户名,密码为空 + private static final String LOGIN_INFO_EMPTY = "-5"; private static final int TIME_OUT = 10000; private static com.fr.design.extra.LoginWebBridge helper; @@ -52,6 +57,10 @@ public class LoginWebBridge { return messageCount; } + /** + * 测试论坛网络连接 + * @return + */ private boolean testConnection() { HttpClient client = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.test")); return client.isServerAlive(); @@ -94,6 +103,11 @@ public class LoginWebBridge { setUserName(username, uiLabel); } + /** + * 设置显示的用户名 + * @param userName 登录用户名 + * @param label label显示 + */ public void setUserName(String userName, UILabel label) { if (uiLabel == null) { this.uiLabel = label; @@ -101,24 +115,23 @@ public class LoginWebBridge { if(StringUtils.isEmpty(userName)){ return; } - if(!StringUtils.isEmpty(this.userName)){ updateMessageCount(); } - //往designerenvmanger里写一下 DesignerEnvManager.getEnvManager().setBBSName(userName); this.userName = userName; } + /** + * 定时取后台论坛消息 + */ private void updateMessageCount(){ //启动获取消息更新的线程 //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. Thread updateMessageThread = new Thread(new Runnable() { - @Override public void run() { sleep(CHECK_MESSAGE_TIME); - //从env中获取username, 因为如果注销的话, env的里username会被清空. while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ HashMap para = new HashMap(); para.put("username", encode(encode(userName))); @@ -145,6 +158,10 @@ public class LoginWebBridge { updateMessageThread.start(); } + /** + * 设置获取的消息长度,并设置显示 + * @param count + */ public void setMessageCount(int count) { if (count == MIN_MESSAGE_COUNT) { uiLabel.setText(DesignerEnvManager.getEnvManager().getBBSName()); @@ -199,45 +216,47 @@ public class LoginWebBridge { } /** - * 登录操作的回调 - * @param username - * @param password - * @return + * 设计器端的用户登录 + * @param username 用户名 + * @param password 密码 + * @return 登录信息标志 */ public String defaultLogin(String username, String password) { - if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) { - return LOGIN_INFO_EMPTY; - } - if (!testConnection()) { - return DISCONNECTED; - } - if (login(username, password)) { - updateUserInfo(username, password); - loginSuccess(username); - setUserName(username, uiLabel); - return LOGININ; - }else { - return LOGININFO_ERROR; - } + return login(username, password, uiLabel); } - /* - 插件管理那边的登录 + /** + * 插件管理的用户登录部分 + * @param username 用户名 + * @param password 密码 + * @param uiLabel 设计器端的label + * @return 登录信息标志 */ public String pluginManageLogin(String username, String password, UILabel uiLabel) { + return login(username, password, uiLabel); + } + + /** + * 登录操作 + * @param username 用户名 + * @param password 密码 + * @param uiLabel 两边的label显示 + * @return 登录信息标志 + */ + private String login(String username, String password, UILabel uiLabel) { if (!StringUtils.isNotBlank(username) && !StringUtils.isNotBlank(password)) { return LOGIN_INFO_EMPTY; } if (!testConnection()) { - return DISCONNECTED; + return NET_FAILED; } - if (login(username, password)) { + String loginResult = login(username, password); + if (loginResult.equals(LOGININ)) { updateUserInfo(username, password); - uiLabel.setText(username); - return LOGININ; - }else { - return LOGININFO_ERROR; + loginSuccess(username); + setUserName(username, uiLabel); } + return loginResult; } /** @@ -251,6 +270,11 @@ public class LoginWebBridge { } } + /** + * 更新后台的用户信息 + * @param username 用户名 + * @param password 密码 + */ public void updateUserInfo(String username,String password) { DesignerEnvManager.getEnvManager().setBBSName(username); DesignerEnvManager.getEnvManager().setBBSPassword(password); @@ -285,28 +309,30 @@ public class LoginWebBridge { }); } - public boolean login(String username, String password) { - if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) { - try { - username = URLEncoder.encode(username, EncodeConstants.ENCODING_GBK); - password = URLEncoder.encode(password, EncodeConstants.ENCODING_GBK); - } catch (UnsupportedEncodingException e) { - FRLogger.getLogger().error(e.getMessage()); - } - String url = SiteCenter.getInstance().acquireUrlByKind("bbs.login") + "&username=" + username + "&password=" + password; - HttpClient client = new HttpClient(url); - client.setTimeout(TIME_OUT); - if (client.getResponseCodeNoException() == HttpURLConnection.HTTP_OK) { - try { - String res = client.getResponseText(EncodeConstants.ENCODING_GBK); - if (res.contains(LOGIN_SUCCESS_FLAG)) { - return true; - } - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); + public String login(String username, String password) { + try { + Client uc = new Client(); + String result = uc.uc_user_login(username, password); + result = new String(result.getBytes("iso-8859-1"), "gbk"); + LinkedList list = XMLHelper.uc_unserialize(result); + if (list.size() > 0) { + int $uid = Integer.parseInt(list.get(0)); + if ($uid > 0) { + DesignerEnvManager.getEnvManager().setBbsUid($uid); + return LOGININ;//登录成功,0 + } else if ($uid == -1) { + return USERNAME_NOT_EXSIT;//用户名不存在,-1 + } else if ($uid == -2) { + return PASSWORD_ERROR;//密码错误,-2 + } else { + return UNKNOWN_ERROR;//未知错误,-3 } + }else { + return NET_FAILED; } + }catch (Exception e) { + FRContext.getLogger().info(e.getMessage()); } - return false; + return UNKNOWN_ERROR; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java index 1538e71c2..a2826cd0d 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebBridge.java @@ -106,10 +106,13 @@ public class QQLoginWebBridge { String status = jo.get("status").toString(); if (status.equals(LOGINSUCCESS)) { String username = jo.get("username").toString(); + int uid = Integer.parseInt(jo.get("uid") == null ? "" : jo.get("uid").toString()); closeQQWindow(); closeParentWindow(); pluginuiLabel.setText(username); DesignerEnvManager.getEnvManager().setBBSName(username); + DesignerEnvManager.getEnvManager().setBbsUid(uid); + DesignerEnvManager.getEnvManager().setInShowBBsName(username); }else if (status.equals(LOGINFAILED)){ //账号没有QQ授权 closeQQWindow(); diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index 06a064698..91402c47c 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -30,7 +30,7 @@ public class GetLoginInfoExecutor implements Executor { String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName(); if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) { }else { - result = inShowUsername; + result = StringUtils.isEmpty(inShowUsername) ? username : inShowUsername; } } } diff --git a/designer_base/src/com/fr/design/extra/ucenter/Base64.java b/designer_base/src/com/fr/design/extra/ucenter/Base64.java new file mode 100644 index 000000000..199cc0bc8 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/ucenter/Base64.java @@ -0,0 +1,256 @@ +package com.fr.design.extra.ucenter; + +import java.io.*; + +/** + * Created by lp on 2016/9/9. + */ +public class Base64 { + /** + * returns an array of base64-encoded characters to represent the + * passed data array. + * + * @param data the array of bytes to encode + * @return base64-coded character array. + */ + public static char[] encode(byte[] data) { + char[] out = new char[((data.length + 2) / 3) * 4]; + + // + // 3 bytes encode to 4 chars. Output is always an even + // multiple of 4 characters. + // + for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { + boolean quad = false; + boolean trip = false; + + int val = (0xFF & data[i]); + val <<= 8; + if ((i + 1) < data.length) { + val |= (0xFF & data[i + 1]); + trip = true; + } + val <<= 8; + if ((i + 2) < data.length) { + val |= (0xFF & data[i + 2]); + quad = true; + } + out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 1] = alphabet[val & 0x3F]; + val >>= 6; + out[index + 0] = alphabet[val & 0x3F]; + } + return out; + } + + /** + * Decodes a BASE-64 encoded stream to recover the original + * data. White space before and after will be trimmed away, + * but no other manipulation of the input will be performed. + * + * As of version 1.2 this method will properly handle input + * containing junk characters (newlines and the like) rather + * than throwing an error. It does this by pre-parsing the + * input and generating from that a count of VALID input + * characters. + **/ + public static byte[] decode(char[] data) { + // as our input could contain non-BASE64 data (newlines, + // whitespace of any sort, whatever) we must first adjust + // our count of USABLE data so that... + // (a) we don't misallocate the output array, and + // (b) think that we miscalculated our data length + // just because of extraneous throw-away junk + + int tempLen = data.length; + for (int ix = 0; ix < data.length; ix++) { + if ((data[ix] > 255) || codes[data[ix]] < 0) + --tempLen; // ignore non-valid chars and padding + } + // calculate required length: + // -- 3 bytes for every 4 valid base64 chars + // -- plus 2 bytes if there are 3 extra base64 chars, + // or plus 1 byte if there are 2 extra. + + int len = (tempLen / 4) * 3; + if ((tempLen % 4) == 3) + len += 2; + if ((tempLen % 4) == 2) + len += 1; + + byte[] out = new byte[len]; + + + int shift = 0; // # of excess bits stored in accum + int accum = 0; // excess bits + int index = 0; + + // we now go through the entire array (NOT using the 'tempLen' value) + for (int ix = 0; ix < data.length; ix++) { + int value = (data[ix] > 255) ? -1 : codes[data[ix]]; + + if (value >= 0)// skip over non-code + { + accum <<= 6; // bits shift up by 6 each time thru + shift += 6; // loop, with new bits being put in + accum |= value; // at the bottom. + if (shift >= 8)// whenever there are 8 or more shifted in, + { + shift -= 8; // write them out (from the top, leaving any + out[index++] = // excess at the bottom for next iteration. + (byte) ((accum >> shift) & 0xff); + } + } + // we will also have skipped processing a padding null byte ('=') here; + // these are used ONLY for padding to an even length and do not legally + // occur as encoded data. for this reason we can ignore the fact that + // no index++ operation occurs in that special case: the out[] array is + // initialized to all-zero bytes to start with and that works to our + // advantage in this combination. + } + + // if there is STILL something wrong we just have to throw up now! + if (index != out.length) { + throw new Error("Miscalculated data length (wrote " + + index + " instead of " + out.length + ")"); + } + + return out; + } + + + // + // code characters for values 0..63 + // + private static char[] alphabet = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray(); + + // + // lookup table for converting base64 characters to value in range 0..63 + // + private static byte[] codes = new byte[256]; + + static { + for (int i = 0; i < 256; i++) + codes[i] = -1; + for (int i = 'A'; i <= 'Z'; i++) + codes[i] = (byte) (i - 'A'); + for (int i = 'a'; i <= 'z'; i++) + codes[i] = (byte) (26 + i - 'a'); + for (int i = '0'; i <= '9'; i++) + codes[i] = (byte) (52 + i - '0'); + codes['+'] = 62; + codes['/'] = 63; + } + + + + + /////////////////////////////////////////////////// + // remainder (main method and helper functions) is + // for testing purposes only, feel free to clip it. + /////////////////////////////////////////////////// + + public static void main(String[] args) { + boolean decode = false; + + if (args.length == 0) { + System.out.println("usage: java Base64 [-d[ecode]] filename"); + System.exit(0); + } + for (int i = 0; i < args.length; i++) { + if ("-decode".equalsIgnoreCase(args[i])) + decode = true; + else if ("-d".equalsIgnoreCase(args[i])) + decode = true; + } + + String filename = args[args.length - 1]; + File file = new File(filename); + if (!file.exists()) { + System.out.println("Error: file '" + filename + "' doesn't exist!"); + System.exit(0); + } + + if (decode) { + char[] encoded = readChars(file); + byte[] decoded = decode(encoded); + writeBytes(file, decoded); + } + else { + byte[] decoded = readBytes(file); + char[] encoded = encode(decoded); + writeChars(file, encoded); + } + } + + private static byte[] readBytes(File file) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + InputStream fis = new FileInputStream(file); + InputStream is = new BufferedInputStream(fis); + int count = 0; + byte[] buf = new byte[16384]; + while ((count = is.read(buf)) != -1) { + if (count > 0) + baos.write(buf, 0, count); + } + is.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + + return baos.toByteArray(); + } + + private static char[] readChars(File file) { + CharArrayWriter caw = new CharArrayWriter(); + try { + Reader fr = new FileReader(file); + Reader in = new BufferedReader(fr); + int count = 0; + char[] buf = new char[16384]; + while ((count = in.read(buf)) != -1) { + if (count > 0) + caw.write(buf, 0, count); + } + in.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + + return caw.toCharArray(); + } + + private static void writeBytes(File file, byte[] data) { + try { + OutputStream fos = new FileOutputStream(file); + OutputStream os = new BufferedOutputStream(fos); + os.write(data); + os.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + + private static void writeChars(File file, char[] data) { + try { + Writer fos = new FileWriter(file); + Writer os = new BufferedWriter(fos); + os.write(data); + os.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + /////////////////////////////////////////////////// + // end of test code. + /////////////////////////////////////////////////// +} diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java new file mode 100644 index 000000000..172488182 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -0,0 +1,335 @@ +package com.fr.design.extra.ucenter; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.MalformedURLException; +import java.net.Socket; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by lp on 2016/9/9. + */ +public class Client extends PHPFunctions{ + + public static boolean IN_UC = true; + public static String UC_IP = "211.149.195.54"; + public static String UC_API = "http://bbs.fanruan.com/uc_server"; + public static String UC_CONNECT = ""; + public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; + public static String UC_APPID = "4"; + public static String UC_CLIENT_VERSION = "1.0"; + public static String UC_CLIENT_RELEASE = "20090212"; + public static String UC_ROOT = ""; //note ûĿͻ˵ĸĿ?? UC_CLIENTROOT + public static String UC_DATADIR = UC_ROOT + "./data/"; //note ûĵݻĿ?? + public static String UC_DATAURL = "UC_API" + "/data"; //note ûĵ?? URL + public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post"; + public static String[] uc_controls = {}; + + protected String uc_serialize(String $arr, int $htmlon) { + return $arr; + } + + protected String uc_unserialize(String $s) { + return $s; + } + + protected String uc_addslashes(String $string, int $force, boolean $strip) { + return $string; + } + + protected String daddslashes(String $string, int $force) { + return uc_addslashes($string, $force, false); + } + + protected String uc_stripslashes(String $string) { + return $string; + } + + public String uc_api_post(String $module, String $action, Map $arg) { + StringBuffer $s = new StringBuffer(); + String $sep = ""; + for (String $k : $arg.keySet()) { + Object $v = $arg.get($k); + $k = urlencode($k); + + if ($v.getClass().isAssignableFrom(Map.class)) { + String $s2 = ""; + String $sep2 = ""; + for (String $k2 : ((Map) $v).keySet()) { + Object $v2 = ((Map) $v).get($k2); + $k2 = urlencode($k2); + $s2 += $sep2 + "{" + $k + "}[" + $k2 + "]=" + urlencode(uc_stripslashes(String.valueOf($v2))); + $sep2 = "&"; + } + $s.append($sep).append($s2); + } else { + $s.append($sep).append($k).append("=").append(urlencode(uc_stripslashes(String.valueOf($v)), "GBK")); + } + $sep = "&"; + } + String $postdata = uc_api_requestdata($module, $action, $s.toString(), ""); + return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true); + } + + protected String uc_api_requestdata(String $module, String $action, String $arg, String $extra) { + String $input = uc_api_input($arg); + String $post = "m=" + $module + "&a=" + $action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + $input + "&appid=" + UC_APPID + $extra; + return $post; + } + + protected String uc_api_url(String $module, String $action, String $arg, String $extra) { + String $url = UC_API + "/index.php?" + uc_api_requestdata($module, $action, $arg, $extra); + return $url; + } + + public String uc_api_input(String $data) { + String $s = urlencode(uc_authcode($data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK"); + return $s; + } + + public String uc_api_mysql(String $model, String $action, Map $args) { + if ($action.charAt(0) != '_') { + return null; + } else { + return ""; + } + } + + public String uc_authcode(String $string, String $operation) { + return uc_authcode($string, $operation, null); + } + + public String uc_authcode(String $string, String $operation, String $key) { + return uc_authcode($string, $operation, $key, 0); + } + + public String uc_authcode(String $string, String $operation, String $key, int $expiry) { + int $ckey_length = 4; + $key = md5($key != null ? $key : UC_KEY); + String $keya = md5(substr($key, 0, 16)); + String $keyb = md5(substr($key, 16, 16)); + String $keyc = $ckey_length > 0 ? ($operation.equals("DECODE") ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : ""; + + String $cryptkey = $keya + md5($keya + $keyc); + int $key_length = $cryptkey.length(); + + $string = $operation.equals("DECODE") ? base64_decode(substr($string, $ckey_length)) : sprintf("%010d", $expiry > 0 ? $expiry + time() : 0) + substr(md5($string + $keyb), 0, 16) + $string; + int $string_length = $string.length(); + + StringBuffer $result1 = new StringBuffer(); + + int[] $box = new int[256]; + for (int i = 0; i < 256; i++) { + $box[i] = i; + } + + int[] $rndkey = new int[256]; + for (int $i = 0; $i <= 255; $i++) { + $rndkey[$i] = (int) $cryptkey.charAt($i % $key_length); + } + + int $j = 0; + for (int $i = 0; $i < 256; $i++) { + $j = ($j + $box[$i] + $rndkey[$i]) % 256; + int $tmp = $box[$i]; + $box[$i] = $box[$j]; + $box[$j] = $tmp; + } + + $j = 0; + int $a = 0; + for (int $i = 0; $i < $string_length; $i++) { + $a = ($a + 1) % 256; + $j = ($j + $box[$a]) % 256; + int $tmp = $box[$a]; + $box[$a] = $box[$j]; + $box[$j] = $tmp; + $result1.append((char) (((int) $string.charAt($i)) ^ ($box[($box[$a] + $box[$j]) % 256]))); + } + if ($operation.equals("DECODE")) { + String $result = $result1.toString(); + try { + $result = new String($result.getBytes("iso-8859-1"), "gbk"); + } catch (Exception e) { + $result = $result1.substring(0, $result1.length()); + } + if ((Integer.parseInt(substr($result.toString(), 0, 10)) == 0 || Long.parseLong(substr($result.toString(), 0, 10)) - time() > 0) && substr($result.toString(), 10, 16).equals(substr(md5(substr($result.toString(), 26) + $keyb), 0, 16))) { + return substr($result.toString(), 26); + } else { + return ""; + } + } else { + return $keyc + base64_encode($result1.toString()).replaceAll("=", ""); + } + } + + protected String uc_fopen2(String $url, int $limit, String $post, String $cookie, boolean $bysocket, String $ip, int $timeout, boolean $block) { + $url += $url.indexOf("?") > 0 ? "&" : "?" + "__times__=1"; + return uc_fopen($url, $limit, $post, $cookie, $bysocket, $ip, $timeout, $block); + } + + protected String uc_fopen(String $url, int $limit, String $post, String $cookie, boolean $bysocket, String $ip, int $timeout, boolean $block) { + String $return = ""; + + URL $matches; + String $host = ""; + String $path = ""; + int $port = 80; + try { + $matches = new URL($url); + $host = $matches.getHost(); + $path = $matches.getPath() != null ? $matches.getPath() + ($matches.getQuery() != null ? "?" + $matches.getQuery() : "") : "/"; + if ($matches.getPort() > 0) $port = $matches.getPort(); + } catch (MalformedURLException e1) { + } + StringBuffer $out = new StringBuffer(); + if ($post != null && $post.length() > 0) { + $out.append("POST ").append($path).append(" HTTP/1.0\r\n"); + $out.append("Accept: */*\r\n"); + $out.append("Accept-Language: zh-cn\r\n"); + $out.append("Content-Type: application/x-www-form-urlencoded\r\n"); + $out.append("User-Agent: \r\n"); + $out.append("Host: ").append($host).append("\r\n"); + $out.append("Content-Length: ").append($post.length()).append("\r\n"); + $out.append("Connection: Close\r\n"); + $out.append("Cache-Control: no-cache\r\n"); + $out.append("Cookie: \r\n\r\n"); + $out.append($post); + } else { + $out.append("GET $path HTTP/1.0\r\n"); + $out.append("Accept: */*\r\n"); + $out.append("Accept-Language: zh-cn\r\n"); + $out.append("User-Agent: Java/1.5.0_01\r\n"); + $out.append("Host: $host\r\n"); + $out.append("Connection: Close\r\n"); + $out.append("Cookie: $cookie\r\n\r\n"); + } + try { + Socket $fp = new Socket($ip != null && $ip.length() > 10 ? $ip : $host, $port); + if (!$fp.isConnected()) { + return ""; + } else { + OutputStream os = $fp.getOutputStream(); + os.write($out.toString().getBytes()); + InputStream ins = $fp.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(ins, "iso-8859-1")); + while (true) { + String $header = reader.readLine(); + if ($header == null || $header.equals("") || $header == "\r\n" || $header == "\n") { + break; + } + } + while (true) { + String $data = reader.readLine(); + if ($data == null || $data.equals("")) { + break; + } else { + $return += $data; + } + } + $fp.close(); + } + } catch (IOException e) { + + } + return $return; + } + + public String uc_app_ls() { + String $return = call_user_func(UC_API_FUNC, "app", "ls", null); + return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); + } + + public String uc_user_register(String $username, String $password, String $email) { + return uc_user_register($username, $password, $email, "", ""); + } + + public String uc_user_register(String $username, String $password, String $email, String $questionid, String $answer) { + Map args = new HashMap(); + args.put("username", $username); + args.put("password", $password); + args.put("email", $email); + args.put("questionid", $questionid); + args.put("answer", $answer); + return call_user_func(UC_API_FUNC, "user", "register", args); + } + + public String uc_user_login(String $username, String $password) { + return uc_user_login($username, $password, 0, 0); + } + + public String uc_user_login(String $username, String $password, int $isuid, int $checkques) { + return uc_user_login($username, $password, $isuid, $checkques, "", ""); + } + + /** + * ȡ¼Ϣ + * @param $username + * @param $password + * @param $isuid + * @param $checkques + * @param $questionid + * @param $answer + * @return + */ + public String uc_user_login(String $username, String $password, int $isuid, int $checkques, String $questionid, String $answer) { + Map args = new HashMap(); + args.put("username", $username); + args.put("password", $password); + args.put("isuid", $isuid); + args.put("checkques", $checkques); + args.put("questionid", $questionid); + args.put("answer", $answer); + String $return = call_user_func(UC_API_FUNC, "user", "login", args); + return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); + } + + public String uc_user_synlogin(int $uid) { + Map args = new HashMap(); + args.put("uid", $uid); + String $return = uc_api_post("user", "synlogin", args); + return $return; + } + + public String uc_user_synlogout() { + String $return = uc_api_post("user", "synlogout", new HashMap()); + return $return; + } + + public String uc_get_user(String $username, int $isuid) { + Map args = new HashMap(); + args.put("username", $username); + args.put("isuid", $isuid); + String $return = call_user_func(UC_API_FUNC, "user", "get_user", args); + return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); + } + + public String uc_user_edit(String $username, String $oldpw, String $newpw, String $email, int $ignoreoldpw, String $questionid, String $answer) { + Map args = new HashMap(); + args.put("username", $username); + args.put("oldpw", $oldpw); + args.put("newpw", $newpw); + args.put("email", $email); + args.put("ignoreoldpw", $ignoreoldpw); + args.put("questionid", $questionid); + args.put("answer", $answer); + return call_user_func(UC_API_FUNC, "user", "edit", args); + } + + public String uc_user_delete(String $uid) { + Map args = new HashMap(); + args.put("uid", $uid); + return call_user_func(UC_API_FUNC, "user", "delete", args); + } + + public String uc_user_deleteavatar(String $uid) { + Map args = new HashMap(); + args.put("uid", $uid); + return uc_api_post("user", "deleteavatar", args); + } +} diff --git a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java new file mode 100644 index 000000000..511fbd9b9 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java @@ -0,0 +1,108 @@ +package com.fr.design.extra.ucenter; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +/** + * Created by lp on 2016/9/9. + */ +public abstract class PHPFunctions { + protected String urlencode(String value){ + return URLEncoder.encode(value); + } + + protected String md5(String input){ + MessageDigest md; + try { + md = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + return byte2hex(md.digest(input.getBytes())); + } + + protected String md5(long input){ + return md5(String.valueOf(input)); + } + + protected String base64_decode(String input){ + try { + return new String(Base64.decode(input.toCharArray()),"iso-8859-1"); + } catch (Exception e) { + return e.getMessage(); + } + } + + protected String base64_encode(String input){ + try { + return new String(Base64.encode(input.getBytes("iso-8859-1"))); + } catch (Exception e) { + return e.getMessage(); + } + } + + protected String byte2hex(byte[] b) { + StringBuffer hs = new StringBuffer(); + String stmp = ""; + for (int n = 0; n < b.length; n++) { + stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); + if (stmp.length() == 1) + hs.append("0").append(stmp); + else + hs.append(stmp); + } + return hs.toString(); + } + + protected String substr(String input,int begin, int length){ + return input.substring(begin, begin+length); + } + + protected String substr(String input,int begin){ + if(begin>0){ + return input.substring(begin); + }else{ + return input.substring(input.length()+ begin); + } + } + + protected long microtime(){ + return System.currentTimeMillis(); + } + + protected long time(){ + return System.currentTimeMillis()/1000; + } + + protected String sprintf(String format, long input){ + String temp = "0000000000"+input; + return temp.substring(temp.length()-10); + } + + protected String call_user_func(String function, String model, String action, Map args){ + if("uc_api_mysql".equals(function)){ + return this.uc_api_mysql(model, action, args); + } + if("uc_api_post".equals(function)){ + return this.uc_api_post(model, action, args); + } + return ""; + } + + public abstract String uc_api_post(String $module, String $action, Map $arg ); + + public abstract String uc_api_mysql(String $model, String $action, Map $args); + + protected String urlencode(String value,String code){ + try { + return URLEncoder.encode(value,code); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java b/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java new file mode 100644 index 000000000..09868af15 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java @@ -0,0 +1,36 @@ +package com.fr.design.extra.ucenter; + +import com.sun.org.apache.xerces.internal.parsers.DOMParser; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import java.io.IOException; +import java.io.StringReader; +import java.util.LinkedList; + +/** + * Created by lp on 2016/9/9. + */ +public class XMLHelper { + public static LinkedList uc_unserialize(String input){ + LinkedList result = new LinkedList(); + DOMParser parser = new DOMParser(); + try { + parser.parse(new InputSource(new StringReader(input))); + Document doc = parser.getDocument(); + NodeList nl = doc.getChildNodes().item(0).getChildNodes(); + int length = nl.getLength(); + for(int i=0;i Date: Fri, 9 Sep 2016 16:45:32 +0800 Subject: [PATCH 53/92] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E7=9A=84Base64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/bbs/UserInfoLabel.java | 4 +- .../com/fr/design/extra/ucenter/Base64.java | 256 ------------------ .../fr/design/extra/ucenter/PHPFunctions.java | 3 +- 3 files changed, 5 insertions(+), 258 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/ucenter/Base64.java diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 54a2016eb..1c3f83aa0 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -47,6 +47,8 @@ public class UserInfoLabel extends UILabel{ private static final int MIN_MESSAGE_COUNT = 1; private static final int MENU_HEIGHT = 20; + private static final int DEFAULT_BBS_UID = 0; + //用户名 private String userName; //消息条数 @@ -117,7 +119,7 @@ public class UserInfoLabel extends UILabel{ DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); - DesignerEnvManager.getEnvManager().setBbsUid(Integer.parseInt(StringUtils.EMPTY)); + DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); } private void updateInfoPane(){ diff --git a/designer_base/src/com/fr/design/extra/ucenter/Base64.java b/designer_base/src/com/fr/design/extra/ucenter/Base64.java deleted file mode 100644 index 199cc0bc8..000000000 --- a/designer_base/src/com/fr/design/extra/ucenter/Base64.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.fr.design.extra.ucenter; - -import java.io.*; - -/** - * Created by lp on 2016/9/9. - */ -public class Base64 { - /** - * returns an array of base64-encoded characters to represent the - * passed data array. - * - * @param data the array of bytes to encode - * @return base64-coded character array. - */ - public static char[] encode(byte[] data) { - char[] out = new char[((data.length + 2) / 3) * 4]; - - // - // 3 bytes encode to 4 chars. Output is always an even - // multiple of 4 characters. - // - for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { - boolean quad = false; - boolean trip = false; - - int val = (0xFF & data[i]); - val <<= 8; - if ((i + 1) < data.length) { - val |= (0xFF & data[i + 1]); - trip = true; - } - val <<= 8; - if ((i + 2) < data.length) { - val |= (0xFF & data[i + 2]); - quad = true; - } - out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 1] = alphabet[val & 0x3F]; - val >>= 6; - out[index + 0] = alphabet[val & 0x3F]; - } - return out; - } - - /** - * Decodes a BASE-64 encoded stream to recover the original - * data. White space before and after will be trimmed away, - * but no other manipulation of the input will be performed. - * - * As of version 1.2 this method will properly handle input - * containing junk characters (newlines and the like) rather - * than throwing an error. It does this by pre-parsing the - * input and generating from that a count of VALID input - * characters. - **/ - public static byte[] decode(char[] data) { - // as our input could contain non-BASE64 data (newlines, - // whitespace of any sort, whatever) we must first adjust - // our count of USABLE data so that... - // (a) we don't misallocate the output array, and - // (b) think that we miscalculated our data length - // just because of extraneous throw-away junk - - int tempLen = data.length; - for (int ix = 0; ix < data.length; ix++) { - if ((data[ix] > 255) || codes[data[ix]] < 0) - --tempLen; // ignore non-valid chars and padding - } - // calculate required length: - // -- 3 bytes for every 4 valid base64 chars - // -- plus 2 bytes if there are 3 extra base64 chars, - // or plus 1 byte if there are 2 extra. - - int len = (tempLen / 4) * 3; - if ((tempLen % 4) == 3) - len += 2; - if ((tempLen % 4) == 2) - len += 1; - - byte[] out = new byte[len]; - - - int shift = 0; // # of excess bits stored in accum - int accum = 0; // excess bits - int index = 0; - - // we now go through the entire array (NOT using the 'tempLen' value) - for (int ix = 0; ix < data.length; ix++) { - int value = (data[ix] > 255) ? -1 : codes[data[ix]]; - - if (value >= 0)// skip over non-code - { - accum <<= 6; // bits shift up by 6 each time thru - shift += 6; // loop, with new bits being put in - accum |= value; // at the bottom. - if (shift >= 8)// whenever there are 8 or more shifted in, - { - shift -= 8; // write them out (from the top, leaving any - out[index++] = // excess at the bottom for next iteration. - (byte) ((accum >> shift) & 0xff); - } - } - // we will also have skipped processing a padding null byte ('=') here; - // these are used ONLY for padding to an even length and do not legally - // occur as encoded data. for this reason we can ignore the fact that - // no index++ operation occurs in that special case: the out[] array is - // initialized to all-zero bytes to start with and that works to our - // advantage in this combination. - } - - // if there is STILL something wrong we just have to throw up now! - if (index != out.length) { - throw new Error("Miscalculated data length (wrote " + - index + " instead of " + out.length + ")"); - } - - return out; - } - - - // - // code characters for values 0..63 - // - private static char[] alphabet = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray(); - - // - // lookup table for converting base64 characters to value in range 0..63 - // - private static byte[] codes = new byte[256]; - - static { - for (int i = 0; i < 256; i++) - codes[i] = -1; - for (int i = 'A'; i <= 'Z'; i++) - codes[i] = (byte) (i - 'A'); - for (int i = 'a'; i <= 'z'; i++) - codes[i] = (byte) (26 + i - 'a'); - for (int i = '0'; i <= '9'; i++) - codes[i] = (byte) (52 + i - '0'); - codes['+'] = 62; - codes['/'] = 63; - } - - - - - /////////////////////////////////////////////////// - // remainder (main method and helper functions) is - // for testing purposes only, feel free to clip it. - /////////////////////////////////////////////////// - - public static void main(String[] args) { - boolean decode = false; - - if (args.length == 0) { - System.out.println("usage: java Base64 [-d[ecode]] filename"); - System.exit(0); - } - for (int i = 0; i < args.length; i++) { - if ("-decode".equalsIgnoreCase(args[i])) - decode = true; - else if ("-d".equalsIgnoreCase(args[i])) - decode = true; - } - - String filename = args[args.length - 1]; - File file = new File(filename); - if (!file.exists()) { - System.out.println("Error: file '" + filename + "' doesn't exist!"); - System.exit(0); - } - - if (decode) { - char[] encoded = readChars(file); - byte[] decoded = decode(encoded); - writeBytes(file, decoded); - } - else { - byte[] decoded = readBytes(file); - char[] encoded = encode(decoded); - writeChars(file, encoded); - } - } - - private static byte[] readBytes(File file) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try { - InputStream fis = new FileInputStream(file); - InputStream is = new BufferedInputStream(fis); - int count = 0; - byte[] buf = new byte[16384]; - while ((count = is.read(buf)) != -1) { - if (count > 0) - baos.write(buf, 0, count); - } - is.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - - return baos.toByteArray(); - } - - private static char[] readChars(File file) { - CharArrayWriter caw = new CharArrayWriter(); - try { - Reader fr = new FileReader(file); - Reader in = new BufferedReader(fr); - int count = 0; - char[] buf = new char[16384]; - while ((count = in.read(buf)) != -1) { - if (count > 0) - caw.write(buf, 0, count); - } - in.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - - return caw.toCharArray(); - } - - private static void writeBytes(File file, byte[] data) { - try { - OutputStream fos = new FileOutputStream(file); - OutputStream os = new BufferedOutputStream(fos); - os.write(data); - os.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - } - - private static void writeChars(File file, char[] data) { - try { - Writer fos = new FileWriter(file); - Writer os = new BufferedWriter(fos); - os.write(data); - os.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - } - /////////////////////////////////////////////////// - // end of test code. - /////////////////////////////////////////////////// -} diff --git a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java index 511fbd9b9..5e9ff8393 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java +++ b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java @@ -5,6 +5,7 @@ import java.net.URLEncoder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Map; +import com.fr.base.Base64; /** * Created by lp on 2016/9/9. @@ -31,7 +32,7 @@ public abstract class PHPFunctions { protected String base64_decode(String input){ try { - return new String(Base64.decode(input.toCharArray()),"iso-8859-1"); + return new String(Base64.decode(input)); } catch (Exception e) { return e.getMessage(); } From d5f590a50673b99b393c93944028fe554acc8c99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 16:46:51 +0800 Subject: [PATCH 54/92] 1 1 --- designer_base/src/com/fr/design/extra/ucenter/Client.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index 172488182..e8a172d5b 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -24,9 +24,9 @@ public class Client extends PHPFunctions{ public static String UC_APPID = "4"; public static String UC_CLIENT_VERSION = "1.0"; public static String UC_CLIENT_RELEASE = "20090212"; - public static String UC_ROOT = ""; //note ûĿͻ˵ĸĿ?? UC_CLIENTROOT - public static String UC_DATADIR = UC_ROOT + "./data/"; //note ûĵݻĿ?? - public static String UC_DATAURL = "UC_API" + "/data"; //note ûĵ?? URL + public static String UC_ROOT = ""; //note 用户中心客户端的根目�? UC_CLIENTROOT + public static String UC_DATADIR = UC_ROOT + "./data/"; //note 用户中心的数据缓存目�? + public static String UC_DATAURL = "UC_API" + "/data"; //note 用户中心的数�? URL public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post"; public static String[] uc_controls = {}; @@ -268,7 +268,7 @@ public class Client extends PHPFunctions{ } /** - * ȡ¼Ϣ + * 获取登录信息 * @param $username * @param $password * @param $isuid From 54d3347182849469f820bec90f23be38ca254f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 16:49:27 +0800 Subject: [PATCH 55/92] 1 1 --- designer_base/src/com/fr/design/extra/ucenter/Client.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index e8a172d5b..8afcd0e49 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -24,9 +24,9 @@ public class Client extends PHPFunctions{ public static String UC_APPID = "4"; public static String UC_CLIENT_VERSION = "1.0"; public static String UC_CLIENT_RELEASE = "20090212"; - public static String UC_ROOT = ""; //note 用户中心客户端的根目�? UC_CLIENTROOT - public static String UC_DATADIR = UC_ROOT + "./data/"; //note 用户中心的数据缓存目�? - public static String UC_DATAURL = "UC_API" + "/data"; //note 用户中心的数�? URL + public static String UC_ROOT = ""; + public static String UC_DATADIR = UC_ROOT + "./data/"; + public static String UC_DATAURL = "UC_API" + "/data"; public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post"; public static String[] uc_controls = {}; From 295e0aaab398c0fa0e795ed2eea247a6092066ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 17:59:40 +0800 Subject: [PATCH 56/92] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/LoginWebBridge.java | 5 +- .../com/fr/design/extra/ucenter/Client.java | 419 +++++++----------- .../fr/design/extra/ucenter/PHPFunctions.java | 18 +- .../fr/design/extra/ucenter/XMLHelper.java | 9 +- 4 files changed, 189 insertions(+), 262 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index e20948128..c1c32b11f 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -133,8 +133,9 @@ public class LoginWebBridge { public void run() { sleep(CHECK_MESSAGE_TIME); while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ - HashMap para = new HashMap(); - para.put("username", encode(encode(userName))); + HashMap para = new HashMap<>(); + int uid = DesignerEnvManager.getEnvManager().getBbsUid(); + para.put("uid", String.valueOf(uid)); HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); getMessage.asGet(); if(getMessage.isServerAlive()){ diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index 8afcd0e49..66796a0b7 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -1,11 +1,12 @@ package com.fr.design.extra.ucenter; +import com.fr.base.FRContext; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; -import java.net.MalformedURLException; import java.net.Socket; import java.net.URL; import java.util.HashMap; @@ -16,320 +17,238 @@ import java.util.Map; */ public class Client extends PHPFunctions{ - public static boolean IN_UC = true; public static String UC_IP = "211.149.195.54"; public static String UC_API = "http://bbs.fanruan.com/uc_server"; public static String UC_CONNECT = ""; public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; public static String UC_APPID = "4"; - public static String UC_CLIENT_VERSION = "1.0"; public static String UC_CLIENT_RELEASE = "20090212"; public static String UC_ROOT = ""; - public static String UC_DATADIR = UC_ROOT + "./data/"; - public static String UC_DATAURL = "UC_API" + "/data"; public static String UC_API_FUNC = UC_CONNECT.equals("mysql") ? "uc_api_mysql" : "uc_api_post"; - public static String[] uc_controls = {}; - - protected String uc_serialize(String $arr, int $htmlon) { - return $arr; - } - - protected String uc_unserialize(String $s) { - return $s; - } - protected String uc_addslashes(String $string, int $force, boolean $strip) { - return $string; + public String uc_user_login(String username, String password) { + return uc_user_login(username, password, 0, 0); } - protected String daddslashes(String $string, int $force) { - return uc_addslashes($string, $force, false); + public String uc_user_login(String username, String password, int isuid, int checkques) { + return uc_user_login(username, password, isuid, checkques, "", ""); } - protected String uc_stripslashes(String $string) { - return $string; + /** + * 用户登录 + * @param username 用户名 + * @param password 密码 + * @param isuid 是否为uid + * @param checkques 是否使用安全问题 + * @param questionid 安全提问 + * @param answer 安全提问答案 + * @return array (uid/status, username, password, email) + */ + public String uc_user_login(String username, String password, int isuid, int checkques, String questionid, String answer) { + Map args = new HashMap<>(); + args.put("username", username); + args.put("password", password); + args.put("isuid", isuid); + args.put("checkques", checkques); + args.put("questionid", questionid); + args.put("answer", answer); + String $return = call_user_func(UC_API_FUNC, "user", "login", args); + return UC_CONNECT.equals("mysql") ? $return : $return; } - public String uc_api_post(String $module, String $action, Map $arg) { - StringBuffer $s = new StringBuffer(); - String $sep = ""; - for (String $k : $arg.keySet()) { - Object $v = $arg.get($k); - $k = urlencode($k); - - if ($v.getClass().isAssignableFrom(Map.class)) { - String $s2 = ""; - String $sep2 = ""; - for (String $k2 : ((Map) $v).keySet()) { - Object $v2 = ((Map) $v).get($k2); - $k2 = urlencode($k2); - $s2 += $sep2 + "{" + $k + "}[" + $k2 + "]=" + urlencode(uc_stripslashes(String.valueOf($v2))); - $sep2 = "&"; + /** + * 拼接发送的post请求 + * @param module 模块 + * @param action 操作模式 + * @param arg 参数 + * @return 发送的请求加密内容 + */ + public String uc_api_post(String module, String action, Map arg) { + StringBuffer str = new StringBuffer(); + String sep = ""; + for (String k : arg.keySet()) { + Object v = arg.get(k); + k = urlencode(k); + if (v.getClass().isAssignableFrom(Map.class)) { + String s2 = ""; + String sep2 = ""; + for (String k2 : ((Map) v).keySet()) { + Object v2 = ((Map) v).get(k2); + k2 = urlencode(k2); + s2 += sep2 + "{" + k + "}[" + k2 + "]=" + urlencode(String.valueOf(v2)); + sep2 = "&"; } - $s.append($sep).append($s2); + str.append(sep).append(s2); } else { - $s.append($sep).append($k).append("=").append(urlencode(uc_stripslashes(String.valueOf($v)), "GBK")); + str.append(sep).append(k).append("=").append(urlencode(String.valueOf(v), "GBK")); } - $sep = "&"; + sep = "&"; } - String $postdata = uc_api_requestdata($module, $action, $s.toString(), ""); + String $postdata = uc_api_requestdata(module, action, str.toString(), ""); return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true); } - protected String uc_api_requestdata(String $module, String $action, String $arg, String $extra) { - String $input = uc_api_input($arg); - String $post = "m=" + $module + "&a=" + $action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + $input + "&appid=" + UC_APPID + $extra; - return $post; + public String uc_api_mysql(String model, String action, Map args) { + return ""; } - protected String uc_api_url(String $module, String $action, String $arg, String $extra) { - String $url = UC_API + "/index.php?" + uc_api_requestdata($module, $action, $arg, $extra); - return $url; + public String uc_api_input(String data) { + String str = urlencode(uc_authcode(data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK"); + return str; } - public String uc_api_input(String $data) { - String $s = urlencode(uc_authcode($data + "&agent=" + md5("") + "&time=" + time(), "ENCODE", UC_KEY), "GBK"); - return $s; - } - - public String uc_api_mysql(String $model, String $action, Map $args) { - if ($action.charAt(0) != '_') { - return null; - } else { - return ""; - } + protected String uc_api_requestdata(String module, String action, String arg, String extra) { + String input = uc_api_input(arg); + String post = "m=" + module + "&a=" + action + "&inajax=2&release=" + UC_CLIENT_RELEASE + "&input=" + input + "&appid=" + UC_APPID + extra; + return post; } - public String uc_authcode(String $string, String $operation) { - return uc_authcode($string, $operation, null); + public String uc_authcode(String string, String operation, String key) { + return uc_authcode(string, operation, key, 0); } - public String uc_authcode(String $string, String $operation, String $key) { - return uc_authcode($string, $operation, $key, 0); - } - - public String uc_authcode(String $string, String $operation, String $key, int $expiry) { - int $ckey_length = 4; - $key = md5($key != null ? $key : UC_KEY); - String $keya = md5(substr($key, 0, 16)); - String $keyb = md5(substr($key, 16, 16)); - String $keyc = $ckey_length > 0 ? ($operation.equals("DECODE") ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : ""; - - String $cryptkey = $keya + md5($keya + $keyc); - int $key_length = $cryptkey.length(); - - $string = $operation.equals("DECODE") ? base64_decode(substr($string, $ckey_length)) : sprintf("%010d", $expiry > 0 ? $expiry + time() : 0) + substr(md5($string + $keyb), 0, 16) + $string; - int $string_length = $string.length(); - - StringBuffer $result1 = new StringBuffer(); - - int[] $box = new int[256]; + /** + * 内容加密 + * @param string 原文 + * @param operation decode或者encode + * @param key 密钥 + * @param expiry 密文有效时限 + * @return 加密之后的原文 + */ + public String uc_authcode(String string, String operation, String key, int expiry) { + int ckey_length = 4; + key = md5(key != null ? key : UC_KEY); + String keya = md5(substr(key, 0, 16)); + String keyb = md5(substr(key, 16, 16)); + String keyc = ckey_length > 0 ? (operation.equals("DECODE") ? substr(string, 0, ckey_length) : substr(md5(microtime()), - ckey_length)) : ""; + String cryptkey = keya + md5(keya + keyc); + int key_length = cryptkey.length(); + string = operation.equals("DECODE") ? base64_decode(substr(string, ckey_length)) : sprintf("%010d", expiry > 0 ? expiry + time() : 0) + substr(md5(string + keyb), 0, 16) + string; + int string_length = string.length(); + StringBuffer result1 = new StringBuffer(); + int[] box = new int[256]; for (int i = 0; i < 256; i++) { - $box[i] = i; + box[i] = i; } - - int[] $rndkey = new int[256]; - for (int $i = 0; $i <= 255; $i++) { - $rndkey[$i] = (int) $cryptkey.charAt($i % $key_length); + int[] rndkey = new int[256]; + for (int i = 0; i <= 255; i++) { + rndkey[i] = (int) cryptkey.charAt(i % key_length); } - - int $j = 0; - for (int $i = 0; $i < 256; $i++) { - $j = ($j + $box[$i] + $rndkey[$i]) % 256; - int $tmp = $box[$i]; - $box[$i] = $box[$j]; - $box[$j] = $tmp; + int j = 0; + for (int i = 0; i < 256; i++) { + j = (j + box[i] + rndkey[i]) % 256; + int tmp = box[i]; + box[i] = box[j]; + box[j] = tmp; } - - $j = 0; - int $a = 0; - for (int $i = 0; $i < $string_length; $i++) { - $a = ($a + 1) % 256; - $j = ($j + $box[$a]) % 256; - int $tmp = $box[$a]; - $box[$a] = $box[$j]; - $box[$j] = $tmp; - $result1.append((char) (((int) $string.charAt($i)) ^ ($box[($box[$a] + $box[$j]) % 256]))); + j = 0; + int a = 0; + for (int i = 0; i < string_length; i++) { + a = (a + 1) % 256; + j = (j + box[a]) % 256; + int tmp = box[a]; + box[a] = box[j]; + box[j] = tmp; + result1.append((char) (((int) string.charAt(i)) ^ (box[(box[a] + box[j]) % 256]))); } - if ($operation.equals("DECODE")) { - String $result = $result1.toString(); + if (operation.equals("DECODE")) { + String result = result1.toString(); try { - $result = new String($result.getBytes("iso-8859-1"), "gbk"); + result = new String(result.getBytes("iso-8859-1"), "gbk"); } catch (Exception e) { - $result = $result1.substring(0, $result1.length()); + result = result1.substring(0, result1.length()); } - if ((Integer.parseInt(substr($result.toString(), 0, 10)) == 0 || Long.parseLong(substr($result.toString(), 0, 10)) - time() > 0) && substr($result.toString(), 10, 16).equals(substr(md5(substr($result.toString(), 26) + $keyb), 0, 16))) { - return substr($result.toString(), 26); + if ((Integer.parseInt(substr(result.toString(), 0, 10)) == 0 || Long.parseLong(substr(result.toString(), 0, 10)) - time() > 0) && substr(result.toString(), 10, 16).equals(substr(md5(substr(result.toString(), 26) + keyb), 0, 16))) { + return substr(result.toString(), 26); } else { return ""; } } else { - return $keyc + base64_encode($result1.toString()).replaceAll("=", ""); + return keyc + base64_encode(result1.toString()).replaceAll("=", ""); } } - protected String uc_fopen2(String $url, int $limit, String $post, String $cookie, boolean $bysocket, String $ip, int $timeout, boolean $block) { - $url += $url.indexOf("?") > 0 ? "&" : "?" + "__times__=1"; - return uc_fopen($url, $limit, $post, $cookie, $bysocket, $ip, $timeout, $block); + protected String uc_fopen2(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) { + url += url.indexOf("?") > 0 ? "&" : "?" + "__times__=1"; + return uc_fopen(url, limit, post, cookie, bysocket, ip, timeout, block); } - protected String uc_fopen(String $url, int $limit, String $post, String $cookie, boolean $bysocket, String $ip, int $timeout, boolean $block) { - String $return = ""; - - URL $matches; - String $host = ""; - String $path = ""; - int $port = 80; + /** + * 本地模网络请求取数据 + * @param url 打开的url + * @param limit 取返回的数据的长度 + * @param post 要发送的 POST 数据,如uid=1&password=1234 + * @param cookie 要模拟的 COOKIE 数据,如uid=123&auth=a2323sd2323 + * @param bysocket TRUE/FALSE 是否通过SOCKET打开 + * @param ip IP地址 + * @param timeout 连接超时时间 + * @param block 是否为阻塞模式 defaul valuet:true + * @return 取到的字符串 + */ + protected String uc_fopen(String url, int limit, String post, String cookie, boolean bysocket, String ip, int timeout, boolean block) { + String result = ""; + URL matches; + String host = ""; + String path = ""; + int port = 80; try { - $matches = new URL($url); - $host = $matches.getHost(); - $path = $matches.getPath() != null ? $matches.getPath() + ($matches.getQuery() != null ? "?" + $matches.getQuery() : "") : "/"; - if ($matches.getPort() > 0) $port = $matches.getPort(); - } catch (MalformedURLException e1) { + matches = new URL(url); + host = matches.getHost(); + path = matches.getPath() != null ? matches.getPath() + (matches.getQuery() != null ? "?" + matches.getQuery() : "") : "/"; + if (matches.getPort() > 0) port = matches.getPort(); + } catch (Exception e1) { + FRContext.getLogger().info(e1.getMessage()); } - StringBuffer $out = new StringBuffer(); - if ($post != null && $post.length() > 0) { - $out.append("POST ").append($path).append(" HTTP/1.0\r\n"); - $out.append("Accept: */*\r\n"); - $out.append("Accept-Language: zh-cn\r\n"); - $out.append("Content-Type: application/x-www-form-urlencoded\r\n"); - $out.append("User-Agent: \r\n"); - $out.append("Host: ").append($host).append("\r\n"); - $out.append("Content-Length: ").append($post.length()).append("\r\n"); - $out.append("Connection: Close\r\n"); - $out.append("Cache-Control: no-cache\r\n"); - $out.append("Cookie: \r\n\r\n"); - $out.append($post); + StringBuffer out = new StringBuffer(); + if (post != null && post.length() > 0) { + out.append("POST ").append(path).append(" HTTP/1.0\r\n"); + out.append("Accept: */*\r\n"); + out.append("Accept-Language: zh-cn\r\n"); + out.append("Content-Type: application/x-www-form-urlencoded\r\n"); + out.append("User-Agent: \r\n"); + out.append("Host: ").append(host).append("\r\n"); + out.append("Content-Length: ").append(post.length()).append("\r\n"); + out.append("Connection: Close\r\n"); + out.append("Cache-Control: no-cache\r\n"); + out.append("Cookie: \r\n\r\n"); + out.append(post); } else { - $out.append("GET $path HTTP/1.0\r\n"); - $out.append("Accept: */*\r\n"); - $out.append("Accept-Language: zh-cn\r\n"); - $out.append("User-Agent: Java/1.5.0_01\r\n"); - $out.append("Host: $host\r\n"); - $out.append("Connection: Close\r\n"); - $out.append("Cookie: $cookie\r\n\r\n"); + out.append("GET $path HTTP/1.0\r\n"); + out.append("Accept: */*\r\n"); + out.append("Accept-Language: zh-cn\r\n"); + out.append("User-Agent: Java/1.5.0_01\r\n"); + out.append("Host: $host\r\n"); + out.append("Connection: Close\r\n"); + out.append("Cookie: $cookie\r\n\r\n"); } try { - Socket $fp = new Socket($ip != null && $ip.length() > 10 ? $ip : $host, $port); - if (!$fp.isConnected()) { + Socket fp = new Socket(ip != null && ip.length() > 10 ? ip : host, port); + if (!fp.isConnected()) { return ""; } else { - OutputStream os = $fp.getOutputStream(); - os.write($out.toString().getBytes()); - InputStream ins = $fp.getInputStream(); + OutputStream os = fp.getOutputStream(); + os.write(out.toString().getBytes()); + InputStream ins = fp.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(ins, "iso-8859-1")); while (true) { - String $header = reader.readLine(); - if ($header == null || $header.equals("") || $header == "\r\n" || $header == "\n") { + String header = reader.readLine(); + if (header == null || header.equals("") || header == "\r\n" || header == "\n") { break; } } while (true) { - String $data = reader.readLine(); - if ($data == null || $data.equals("")) { + String data = reader.readLine(); + if (data == null || data.equals("")) { break; } else { - $return += $data; + result += data; } } - $fp.close(); + fp.close(); } } catch (IOException e) { - + FRContext.getLogger().info(e.getMessage()); } - return $return; - } - - public String uc_app_ls() { - String $return = call_user_func(UC_API_FUNC, "app", "ls", null); - return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); - } - - public String uc_user_register(String $username, String $password, String $email) { - return uc_user_register($username, $password, $email, "", ""); - } - - public String uc_user_register(String $username, String $password, String $email, String $questionid, String $answer) { - Map args = new HashMap(); - args.put("username", $username); - args.put("password", $password); - args.put("email", $email); - args.put("questionid", $questionid); - args.put("answer", $answer); - return call_user_func(UC_API_FUNC, "user", "register", args); - } - - public String uc_user_login(String $username, String $password) { - return uc_user_login($username, $password, 0, 0); - } - - public String uc_user_login(String $username, String $password, int $isuid, int $checkques) { - return uc_user_login($username, $password, $isuid, $checkques, "", ""); - } - - /** - * 获取登录信息 - * @param $username - * @param $password - * @param $isuid - * @param $checkques - * @param $questionid - * @param $answer - * @return - */ - public String uc_user_login(String $username, String $password, int $isuid, int $checkques, String $questionid, String $answer) { - Map args = new HashMap(); - args.put("username", $username); - args.put("password", $password); - args.put("isuid", $isuid); - args.put("checkques", $checkques); - args.put("questionid", $questionid); - args.put("answer", $answer); - String $return = call_user_func(UC_API_FUNC, "user", "login", args); - return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); - } - - public String uc_user_synlogin(int $uid) { - Map args = new HashMap(); - args.put("uid", $uid); - String $return = uc_api_post("user", "synlogin", args); - return $return; - } - - public String uc_user_synlogout() { - String $return = uc_api_post("user", "synlogout", new HashMap()); - return $return; - } - - public String uc_get_user(String $username, int $isuid) { - Map args = new HashMap(); - args.put("username", $username); - args.put("isuid", $isuid); - String $return = call_user_func(UC_API_FUNC, "user", "get_user", args); - return UC_CONNECT.equals("mysql") ? $return : uc_unserialize($return); - } - - public String uc_user_edit(String $username, String $oldpw, String $newpw, String $email, int $ignoreoldpw, String $questionid, String $answer) { - Map args = new HashMap(); - args.put("username", $username); - args.put("oldpw", $oldpw); - args.put("newpw", $newpw); - args.put("email", $email); - args.put("ignoreoldpw", $ignoreoldpw); - args.put("questionid", $questionid); - args.put("answer", $answer); - return call_user_func(UC_API_FUNC, "user", "edit", args); - } - - public String uc_user_delete(String $uid) { - Map args = new HashMap(); - args.put("uid", $uid); - return call_user_func(UC_API_FUNC, "user", "delete", args); - } - - public String uc_user_deleteavatar(String $uid) { - Map args = new HashMap(); - args.put("uid", $uid); - return uc_api_post("user", "deleteavatar", args); + return result; } -} +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java index 5e9ff8393..f32912c07 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java +++ b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java @@ -6,11 +6,13 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Map; import com.fr.base.Base64; +import com.fr.base.FRContext; /** * Created by lp on 2016/9/9. */ public abstract class PHPFunctions { + protected String urlencode(String value){ return URLEncoder.encode(value); } @@ -20,8 +22,8 @@ public abstract class PHPFunctions { try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - return null; + FRContext.getLogger().info(e.getMessage()); + return ""; } return byte2hex(md.digest(input.getBytes())); } @@ -34,7 +36,8 @@ public abstract class PHPFunctions { try { return new String(Base64.decode(input)); } catch (Exception e) { - return e.getMessage(); + FRContext.getLogger().info(e.getMessage()); + return ""; } } @@ -42,7 +45,8 @@ public abstract class PHPFunctions { try { return new String(Base64.encode(input.getBytes("iso-8859-1"))); } catch (Exception e) { - return e.getMessage(); + FRContext.getLogger().info(e.getMessage()); + return ""; } } @@ -64,7 +68,7 @@ public abstract class PHPFunctions { } protected String substr(String input,int begin){ - if(begin>0){ + if(begin > 0){ return input.substring(begin); }else{ return input.substring(input.length()+ begin); @@ -102,8 +106,8 @@ public abstract class PHPFunctions { try { return URLEncoder.encode(value,code); } catch (UnsupportedEncodingException e) { - e.printStackTrace(); + FRContext.getLogger().info(e.getMessage()); } - return null; + return ""; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java b/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java index 09868af15..0b58b2bdd 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java +++ b/designer_base/src/com/fr/design/extra/ucenter/XMLHelper.java @@ -1,5 +1,6 @@ package com.fr.design.extra.ucenter; +import com.fr.base.FRContext; import com.sun.org.apache.xerces.internal.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.NodeList; @@ -14,7 +15,9 @@ import java.util.LinkedList; * Created by lp on 2016/9/9. */ public class XMLHelper { + public static LinkedList uc_unserialize(String input){ + LinkedList result = new LinkedList(); DOMParser parser = new DOMParser(); try { @@ -27,9 +30,9 @@ public class XMLHelper { result.add(nl.item(i).getTextContent()); } } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); + FRContext.getLogger().info(e.getMessage()); + } catch (IOException e1) { + FRContext.getLogger().info(e1.getLocalizedMessage()); } return result; } From bac818b56649545c5bf8d1bc129e4a0a3063b445 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 20:17:39 +0800 Subject: [PATCH 57/92] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DownLoadDependenceUI.java | 3 --- .../src/com/fr/design/utils/DesignUtils.java | 2 +- designer_base/src/com/fr/env/RemoteEnv.java | 20 +++++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 7d0aca64a..aff5f4e60 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -206,9 +206,6 @@ public class DownLoadDependenceUI implements ActionListener { //如果是服务器环境,则只会安装一份 private void installPluginDependenceFile(String filePath){ IOUtils.unzip(new File(filePath), FRContext.getCurrentEnv().getPath() + dependenceDir); - if (dependenceType == PluginDependenceType.SERVICE) { - IOUtils.unzip(new File(filePath), StableUtils.getInstallHome() + dependenceDir); - } } public void actionPerformed(ActionEvent e) { diff --git a/designer_base/src/com/fr/design/utils/DesignUtils.java b/designer_base/src/com/fr/design/utils/DesignUtils.java index d6a2ab8a5..1023b3ce3 100644 --- a/designer_base/src/com/fr/design/utils/DesignUtils.java +++ b/designer_base/src/com/fr/design/utils/DesignUtils.java @@ -52,7 +52,7 @@ public class DesignUtils { public static boolean isStarted() { try { new Socket("localhost", port); - return true; + /*return true;*/ } catch (Exception exp) { } diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index a779026ea..b736517b8 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -31,6 +31,7 @@ import com.fr.plugin.Plugin; import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; +import com.fr.plugin.dependence.PluginServiceCreator; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; @@ -2079,7 +2080,26 @@ public class RemoteEnv implements Env { } } + @Override + public String pluginServiceAction(PluginServiceCreator service, String req) throws Exception { + return service.remoteServiceAction(req); + } + @Override public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { + + } + + /** + * 提供一个可以再插件自定义请求数据的方法 + * 返回的数据可自行处理 + * @param para + * @return + * @throws Exception + */ + public InputStream getDataFormRemote(HashMap para) throws Exception { + HttpClient client = createHttpMethod(para); //jim :加上user,远程设计点击预览时传递用户角色信息 + return execute4InputStream(client); } + } \ No newline at end of file From a86323108b46c9b00cc0042beb55af5c8e1e9acd Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 20:27:48 +0800 Subject: [PATCH 58/92] update --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 +- .../design/extra/plugindependence/DownLoadDependenceUI.java | 5 +---- .../design/extra/plugindependence/PluginDependenceUtils.java | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index bff696fed..82fe55999 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -134,7 +134,7 @@ public class PluginHelper { for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit dependenceUnit = list.get(i); if (!dependenceUnit.checkFileEnv()){ - PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(),dependenceUnit.getDependenceType(), dependenceUnit.getDependenceDir()); + PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(), dependenceUnit.getDependenceDir()); } } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index aff5f4e60..3173c8495 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -1,6 +1,5 @@ package com.fr.design.extra.plugindependence; -import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.extra.PluginConstants; import com.fr.design.extra.PluginHelper; @@ -48,7 +47,6 @@ public class DownLoadDependenceUI implements ActionListener { private String currentID; private String dependenceID; private String dependenceDir; - private PluginDependenceType dependenceType; //安装结果 private boolean result = false; //链接服务器的客户端 @@ -60,11 +58,10 @@ public class DownLoadDependenceUI implements ActionListener { public DownLoadDependenceUI() { } - public DownLoadDependenceUI(String currentID, String dependenceID, PluginDependenceType dependenceType, String dependenceDir) { + public DownLoadDependenceUI(String currentID, String dependenceID, String dependenceDir) { this.currentID = currentID; this.dependenceID = dependenceID; this.dependenceDir = dependenceDir; - this.dependenceType = dependenceType; this.totalSize = getFileLength(); init(); } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java index 9b4d1224d..0f1eaf165 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java @@ -8,8 +8,8 @@ import com.fr.plugin.dependence.PluginDependenceType; public class PluginDependenceUtils { - public static boolean installDependenceOnline(String currentID, String dependenceID, PluginDependenceType dependenceType, String dependenceDir) { - DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceType, dependenceDir); + public static boolean installDependenceOnline(String currentID, String dependenceID, String dependenceDir) { + DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceDir); return ui.installOnline(); } } From 720fde404c8ec9f6d52eef1716ab05105d679f87 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 20:28:19 +0800 Subject: [PATCH 59/92] update --- .../fr/design/extra/plugindependence/DownLoadDependenceUI.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 3173c8495..a09db3f0e 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -8,7 +8,6 @@ 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.dependence.PluginDependenceType; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; From 57930b0100a55eb458f3085adedd1828ac82e91a Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 20:28:52 +0800 Subject: [PATCH 60/92] update --- .../fr/design/extra/plugindependence/PluginDependenceUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java index 0f1eaf165..96784f3e3 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java @@ -1,6 +1,5 @@ package com.fr.design.extra.plugindependence; -import com.fr.plugin.dependence.PluginDependenceType; /** * Created by hufan on 2016/8/31. From 5435099b55beac706a69d6883bfdcd8c97c629c3 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 20:29:36 +0800 Subject: [PATCH 61/92] update --- designer_base/src/com/fr/design/utils/DesignUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/utils/DesignUtils.java b/designer_base/src/com/fr/design/utils/DesignUtils.java index 1023b3ce3..d6a2ab8a5 100644 --- a/designer_base/src/com/fr/design/utils/DesignUtils.java +++ b/designer_base/src/com/fr/design/utils/DesignUtils.java @@ -52,7 +52,7 @@ public class DesignUtils { public static boolean isStarted() { try { new Socket("localhost", port); - /*return true;*/ + return true; } catch (Exception exp) { } From 22e74532d622390818b3424f01e219212afce7b5 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 21:15:27 +0800 Subject: [PATCH 62/92] update --- .../com/fr/dependservice/PluginService.java | 43 +++++++++++++++++++ .../fr/dependservice/PluginServiceUtils.java | 18 ++++++++ 2 files changed, 61 insertions(+) create mode 100644 designer_base/src/com/fr/dependservice/PluginService.java create mode 100644 designer_base/src/com/fr/dependservice/PluginServiceUtils.java diff --git a/designer_base/src/com/fr/dependservice/PluginService.java b/designer_base/src/com/fr/dependservice/PluginService.java new file mode 100644 index 000000000..c76b22b50 --- /dev/null +++ b/designer_base/src/com/fr/dependservice/PluginService.java @@ -0,0 +1,43 @@ +package com.fr.dependservice; + +import com.fr.base.FRContext; +import com.fr.general.FRLogger; +import com.fr.plugin.dependence.PluginServiceCreator; + +import java.util.HashMap; + +/** + * Created by hufan on 2016/9/9. + */ +public abstract class PluginService implements PluginServiceCreator { + @Override + public String remoteServiceAction(String req) throws Exception { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_get_plugin_service_data"); + para.put("serviceID", getServiceID()); + para.put("req", req); + return PluginServiceUtils.getDataFormRemote(para); + } + /** + * 服务ID + * @return + */ + protected abstract String getServiceID(); + + /** + * 获取数据 + * @param req + * @return + */ + @Override + public String fetchServiceData(String req) { + try { + //设置请求数据,这个地方可能涉及到多线程同时到达,拿错请求和回应的问题 + return FRContext.getCurrentEnv().pluginServiceAction(this, req); + //返回 + } catch (Exception e) { + return null; + } + } +} diff --git a/designer_base/src/com/fr/dependservice/PluginServiceUtils.java b/designer_base/src/com/fr/dependservice/PluginServiceUtils.java new file mode 100644 index 000000000..b5304aa72 --- /dev/null +++ b/designer_base/src/com/fr/dependservice/PluginServiceUtils.java @@ -0,0 +1,18 @@ +package com.fr.dependservice; + +import com.fr.base.FRContext; +import com.fr.env.RemoteEnv; +import com.fr.general.IOUtils; + +import java.io.InputStream; +import java.util.HashMap; + +/** + * Created by hufan on 2016/9/9. + */ +public class PluginServiceUtils { + public static String getDataFormRemote(HashMap para) throws Exception { + InputStream inputStream = ((RemoteEnv)FRContext.getCurrentEnv()).getDataFormRemote(para); + return IOUtils.inputStream2String(inputStream); + } +} From dbc3a0fbf7b51e4ecab9518170d60cf90e4eb1b7 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 9 Sep 2016 21:30:16 +0800 Subject: [PATCH 63/92] update --- .../src/com/fr/dependservice/PluginService.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/dependservice/PluginService.java b/designer_base/src/com/fr/dependservice/PluginService.java index c76b22b50..0ba4895cb 100644 --- a/designer_base/src/com/fr/dependservice/PluginService.java +++ b/designer_base/src/com/fr/dependservice/PluginService.java @@ -31,13 +31,7 @@ public abstract class PluginService implements PluginServiceCreator { * @return */ @Override - public String fetchServiceData(String req) { - try { - //设置请求数据,这个地方可能涉及到多线程同时到达,拿错请求和回应的问题 - return FRContext.getCurrentEnv().pluginServiceAction(this, req); - //返回 - } catch (Exception e) { - return null; - } + public String fetchServiceData(String req) throws Exception { + return FRContext.getCurrentEnv().pluginServiceAction(this, req); } } From f4b3b96e656200037c1e904a8b8f128f0e741f6d Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 10 Sep 2016 00:23:51 +0800 Subject: [PATCH 64/92] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E4=B8=8D=E5=90=AF?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index b736517b8..8a51d3628 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2085,6 +2085,11 @@ public class RemoteEnv implements Env { return service.remoteServiceAction(req); } + @Override + public void pluginServiceStart(PluginServiceCreator service) throws Exception { + + } + @Override public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { From f7061429045e90fe04b1b6099ed372e3c214c2ce Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 10 Sep 2016 01:14:23 +0800 Subject: [PATCH 65/92] update --- designer_base/src/com/fr/design/utils/DesignUtils.java | 2 +- designer_base/src/com/fr/env/RemoteEnv.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/utils/DesignUtils.java b/designer_base/src/com/fr/design/utils/DesignUtils.java index d6a2ab8a5..1023b3ce3 100644 --- a/designer_base/src/com/fr/design/utils/DesignUtils.java +++ b/designer_base/src/com/fr/design/utils/DesignUtils.java @@ -52,7 +52,7 @@ public class DesignUtils { public static boolean isStarted() { try { new Socket("localhost", port); - return true; + /*return true;*/ } catch (Exception exp) { } diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 8a51d3628..059fda3b8 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2086,8 +2086,8 @@ public class RemoteEnv implements Env { } @Override - public void pluginServiceStart(PluginServiceCreator service) throws Exception { - + public boolean pluginServiceStart(PluginServiceCreator service){ + return false; } @Override From 74ec8c4f360e88769b71c82f22111d140f7aefd5 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 10 Sep 2016 01:14:54 +0800 Subject: [PATCH 66/92] update --- designer_base/src/com/fr/design/utils/DesignUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/utils/DesignUtils.java b/designer_base/src/com/fr/design/utils/DesignUtils.java index 1023b3ce3..d6a2ab8a5 100644 --- a/designer_base/src/com/fr/design/utils/DesignUtils.java +++ b/designer_base/src/com/fr/design/utils/DesignUtils.java @@ -52,7 +52,7 @@ public class DesignUtils { public static boolean isStarted() { try { new Socket("localhost", port); - /*return true;*/ + return true; } catch (Exception exp) { } From 55daae9c72a780db36135ec2f28de0152548afcc Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 10 Sep 2016 01:29:54 +0800 Subject: [PATCH 67/92] update --- designer_base/src/com/fr/env/RemoteEnv.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 059fda3b8..927743012 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2085,9 +2085,12 @@ public class RemoteEnv implements Env { return service.remoteServiceAction(req); } + /** + * 远程不启动,使用虚拟服务 + * @param service + */ @Override - public boolean pluginServiceStart(PluginServiceCreator service){ - return false; + public void pluginServiceStart(PluginServiceCreator service){ } @Override From e1bbeb8a6b3be47151f4528108a1112c4a210e8b Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sat, 10 Sep 2016 18:28:32 +0800 Subject: [PATCH 68/92] =?UTF-8?q?=E6=89=80=E6=9C=89=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E4=B8=80=E8=B5=B7=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginHelper.java | 16 +- .../DownLoadDependenceUI.java | 146 +++++++++++------- .../PluginDependenceUtils.java | 11 +- 3 files changed, 108 insertions(+), 65 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 82fe55999..eef4b0297 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -10,6 +10,7 @@ import com.fr.plugin.Plugin; import com.fr.plugin.PluginLoader; import com.fr.plugin.PluginManagerHelper; import com.fr.plugin.dependence.PluginDependence; +import com.fr.plugin.dependence.PluginDependenceException; import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; @@ -21,6 +22,7 @@ import javax.swing.*; import java.io.*; import java.net.HttpURLConnection; import java.net.URLDecoder; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutionException; @@ -124,19 +126,29 @@ public class PluginHelper { } //将所有未配置好的资源文件依赖准备好 - private static void checkDependenceEnv(Plugin plugin) { + private static void checkDependenceEnv(Plugin plugin) throws PluginDependenceException { PluginDependence dependence = plugin.getDependence(); if (dependence == null){ return; } + + List needInstallDependence = new ArrayList(); + String currentID = dependence.getCurrentPluginID(); List list = dependence.getDependPlugins(); for (int i = 0;list != null && i < list.size(); i++){ PluginDependenceUnit dependenceUnit = list.get(i); if (!dependenceUnit.checkFileEnv()){ - PluginDependenceUtils.installDependenceOnline(currentID, dependenceUnit.getDependenceID(), dependenceUnit.getDependenceDir()); + needInstallDependence.add(dependenceUnit); } } + + if (needInstallDependence.isEmpty()){ + return; + } + + //安装插件依赖 + PluginDependenceUtils.installDependenceOnline(currentID, needInstallDependence); } /** diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index a09db3f0e..4209857bc 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -8,6 +8,8 @@ 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.dependence.PluginDependenceException; +import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -22,7 +24,8 @@ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; - +import java.util.ArrayList; +import java.util.List; /** * Created by hufan on 2016/9/5. */ @@ -44,8 +47,7 @@ public class DownLoadDependenceUI implements ActionListener { //安装环境相关信息 private String currentID; - private String dependenceID; - private String dependenceDir; + private List list = null; //安装结果 private boolean result = false; //链接服务器的客户端 @@ -57,10 +59,9 @@ public class DownLoadDependenceUI implements ActionListener { public DownLoadDependenceUI() { } - public DownLoadDependenceUI(String currentID, String dependenceID, String dependenceDir) { + public DownLoadDependenceUI(String currentID, List list) { this.currentID = currentID; - this.dependenceID = dependenceID; - this.dependenceDir = dependenceDir; + this.list = list; this.totalSize = getFileLength(); init(); } @@ -89,7 +90,7 @@ public class DownLoadDependenceUI implements ActionListener { timer = new Timer(100, this); frame = new JDialog(DesignerContext.getDesignerFrame(), true); - frame.setTitle(Inter.getLocText("FR-Designer-Dependence_Install_Online") + dependenceID); + frame.setTitle(Inter.getLocText("FR-Designer-Dependence_Install_Online")); frame.setSize(LOAD_WIDTH, LOAD_HEIGHT); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(screenSize.width / 2 - LOAD_WIDTH / 2, screenSize.height / 2 - LOAD_HEIGHT / 2); @@ -112,17 +113,29 @@ public class DownLoadDependenceUI implements ActionListener { //是否可以连接服务器 private boolean connectToServer() { - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); - return httpClient.getResponseCode() == HttpURLConnection.HTTP_OK; + for (int i = 0; i < list.size(); i++) { + PluginDependenceUnit dependenceUnit = list.get(i); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); + if (httpClient.getResponseCode() != HttpURLConnection.HTTP_OK){ + return false; + } + } + return true; } //获取依赖文件大小 - private int getFileLength() { - HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - return httpClient.getContentLength(); + private int getFileLength(){ + int size = 0; + for (int i = 0; i < list.size(); i++) { + PluginDependenceUnit dependenceUnit = list.get(i); + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + size += httpClient.getContentLength(); + }else { + return -1; + } } - return -1; + return size; } //安装 @@ -143,7 +156,7 @@ public class DownLoadDependenceUI implements ActionListener { try { thread.join(); } catch (InterruptedException e) { - e.printStackTrace(); + FRContext.getLogger().error(e.getMessage()); return false; } //停止时钟 @@ -151,57 +164,71 @@ public class DownLoadDependenceUI implements ActionListener { return result; } - private String downloadPluginDependenceFile() throws Exception { - httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceID)); - if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { - InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); - StableUtils.makesureFileExist(new File(temp)); - FileOutputStream writer = new FileOutputStream(temp); - byte[] buffer = new byte[PluginConstants.BYTES_NUM]; - int bytesRead = 0; - totalBytesRead = 0; - - while ((bytesRead = reader.read(buffer)) > 0 && flag) { - writer.write(buffer, 0, bytesRead); - buffer = new byte[PluginConstants.BYTES_NUM]; - totalBytesRead += bytesRead; - } - reader.close(); - writer.flush(); - writer.close(); + private List downloadPluginDependenceFile() throws Exception { + totalBytesRead = 0; + List pathList = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + PluginDependenceUnit dependenceUnit = list.get(i); + httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + while ((bytesRead = reader.read(buffer)) > 0 && flag) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + totalBytesRead += bytesRead; + } + reader.close(); + writer.flush(); + writer.close(); + + //下载被取消 + if (flag == false) { + result = false; + throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); + } + pathList.add(temp); - //下载被取消 - if (flag == false) { + } else { result = false; - return StringUtils.EMPTY; + throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } - return temp; - - } else { - result = false; - throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); } + return pathList; } public void installDependenceOnline() { try { - String filePath = downloadPluginDependenceFile(); - if (!StringUtils.EMPTY.equals(filePath)) { - //安装文件 - installPluginDependenceFile(filePath); - result = true; - } + List filePathList = downloadPluginDependenceFile(); + //安装文件 + installPluginDependenceFile(filePathList); } catch (Exception e) { - e.printStackTrace(); + result = false; + FRContext.getLogger().error(e.getMessage()); } } //安装已经下载好的文件,如果是服务文件,则需要复制一份到安装目录下, //以便切换远程时,使用本地的服务 //如果是服务器环境,则只会安装一份 - private void installPluginDependenceFile(String filePath){ - IOUtils.unzip(new File(filePath), FRContext.getCurrentEnv().getPath() + dependenceDir); + private void installPluginDependenceFile(List filePathList){ + if (filePathList.isEmpty()){ + result = false; + return; + } + for(int i = 0; i < filePathList.size(); i++) { + if (StringUtils.EMPTY.equals(filePathList.get(i))){ + result = false; + return; + } + PluginDependenceUnit dependenceUnit = list.get(i); + IOUtils.unzip(new File(filePathList.get(i)), FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); + result = true; + } } public void actionPerformed(ActionEvent e) { @@ -216,23 +243,22 @@ public class DownLoadDependenceUI implements ActionListener { } } - public boolean installOnline() { - int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + currentID + Inter.getLocText("FR-Designer-Need") + " " + dependenceID + " " + Inter.getLocText("FR-Designer-Support") + "," + Inter.getLocText("FR-Designer-Dependence_Need_Install") + " " + dependenceID + " " + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); + public void installOnline()throws PluginDependenceException { + int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + Inter.getLocText("FR-Designer-Need") + Inter.getLocText("FR-Designer-Dependence") + Inter.getLocText("FR-Designer-Support") + "," + Inter.getLocText("FR-Designer-Dependence_Need_Install") + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0) {//下载安装 if (!connectToServer()) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); - return false; + throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error")); } //安装依赖环境 if (install()) { - JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); - return true; + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); } else { - JOptionPane.showMessageDialog(null, dependenceID + Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); - return false; + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); + throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } - } else {//不安装。无需为用户准备环境 - return true; + }else {//不选择下载,则不安装图标插件 + throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } } diff --git a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java index 96784f3e3..9dba8bcf4 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java @@ -1,14 +1,19 @@ package com.fr.design.extra.plugindependence; +import com.fr.plugin.dependence.PluginDependenceException; +import com.fr.plugin.dependence.PluginDependenceUnit; + +import java.util.List; + /** * Created by hufan on 2016/8/31. */ public class PluginDependenceUtils { - public static boolean installDependenceOnline(String currentID, String dependenceID, String dependenceDir) { - DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, dependenceID, dependenceDir); - return ui.installOnline(); + public static void installDependenceOnline(String currentID, List list) throws PluginDependenceException{ + DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, list); + ui.installOnline(); } } From bd06e8242ed106b2436ac9cdcad2d91d43a79e47 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sun, 11 Sep 2016 15:23:55 +0800 Subject: [PATCH 69/92] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DownLoadDependenceUI.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 4209857bc..5fa360753 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -164,9 +164,13 @@ public class DownLoadDependenceUI implements ActionListener { return result; } - private List downloadPluginDependenceFile() throws Exception { + /** + * 下载和安装不分开是因为,本地如果只安装好了一个依赖,下次就不需要重复下载了 + * @return + * @throws Exception + */ + private void downloadAndInstallPluginDependenceFile() throws Exception { totalBytesRead = 0; - List pathList = new ArrayList(); for (int i = 0; i < list.size(); i++) { PluginDependenceUnit dependenceUnit = list.get(i); httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); @@ -191,21 +195,23 @@ public class DownLoadDependenceUI implements ActionListener { result = false; throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } - pathList.add(temp); + + //安装文件 + IOUtils.unzip(new File(temp), FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); } else { result = false; throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } } - return pathList; + //所有依赖都正常安装下载完毕,则结果为true + result = true; } public void installDependenceOnline() { try { - List filePathList = downloadPluginDependenceFile(); - //安装文件 - installPluginDependenceFile(filePathList); + //下载并安装文件 + downloadAndInstallPluginDependenceFile(); } catch (Exception e) { result = false; FRContext.getLogger().error(e.getMessage()); From 06832dc1d94ac5ac27ff26f9818cdf4ab55d9850 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sun, 11 Sep 2016 17:03:13 +0800 Subject: [PATCH 70/92] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/exe/InstallOnlineExecutor.java | 3 +++ .../design/extra/plugindependence/DownLoadDependenceUI.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java index 0844a7110..53fc738ad 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java @@ -9,6 +9,7 @@ import com.fr.design.extra.PluginHelper; import com.fr.design.extra.Process; import com.fr.general.Inter; import com.fr.plugin.PluginVerifyException; +import com.fr.plugin.dependence.PluginDependenceException; import com.fr.stable.StringUtils; import javax.swing.*; @@ -89,6 +90,8 @@ public class InstallOnlineExecutor implements Executor { }); } catch (PluginVerifyException e) { JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } catch (PluginDependenceException e){ + JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } catch (InterruptedException e) { e.printStackTrace(); } catch (Exception e) { diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 5fa360753..8f9e3b509 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -253,14 +253,14 @@ public class DownLoadDependenceUI implements ActionListener { int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + Inter.getLocText("FR-Designer-Need") + Inter.getLocText("FR-Designer-Dependence") + Inter.getLocText("FR-Designer-Support") + "," + Inter.getLocText("FR-Designer-Dependence_Need_Install") + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0) {//下载安装 if (!connectToServer()) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); + //JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error")); } //安装依赖环境 if (install()) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); + //JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } }else {//不选择下载,则不安装图标插件 From 269d1d1210157270e5d3cf0918b452a6bc4d08f5 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Sun, 11 Sep 2016 19:37:34 +0800 Subject: [PATCH 71/92] =?UTF-8?q?=E4=BE=9D=E8=B5=96=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginHelper.java | 2 ++ .../fr/design/extra/plugindependence/DownLoadDependenceUI.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index eef4b0297..6c2313532 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -35,6 +35,8 @@ import java.util.concurrent.ExecutionException; public class PluginHelper { private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; + //插件依赖的下载位置 + public static final String DEPENDENCE_DOWNLOAD_PATH = System.getProperty("user.dir") + "/download/dependence"; public static final String TEMP_FILE = "temp.zip"; /** diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 8f9e3b509..5b0de740c 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -166,6 +166,7 @@ public class DownLoadDependenceUI implements ActionListener { /** * 下载和安装不分开是因为,本地如果只安装好了一个依赖,下次就不需要重复下载了 + * 如果下载依赖后不安装,则后面的插件会把前面的插件覆盖,故而下载好了一个安装一个 * @return * @throws Exception */ @@ -176,7 +177,7 @@ public class DownLoadDependenceUI implements ActionListener { httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind(dependenceUnit.getDependenceID())); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream reader = httpClient.getResponseStream(); - String temp = StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE); + String temp = StableUtils.pathJoin(PluginHelper.DEPENDENCE_DOWNLOAD_PATH, PluginHelper.TEMP_FILE); StableUtils.makesureFileExist(new File(temp)); FileOutputStream writer = new FileOutputStream(temp); byte[] buffer = new byte[PluginConstants.BYTES_NUM]; From c5c1cea90b1a0fbcfaa210b22aecbeb33a58b0dc Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 12 Sep 2016 10:26:47 +0800 Subject: [PATCH 72/92] update --- .../com/fr/dependservice/PluginService.java | 37 ------------------- .../fr/dependservice/PluginServiceUtils.java | 18 --------- designer_base/src/com/fr/env/RemoteEnv.java | 21 ++++++++--- 3 files changed, 16 insertions(+), 60 deletions(-) delete mode 100644 designer_base/src/com/fr/dependservice/PluginService.java delete mode 100644 designer_base/src/com/fr/dependservice/PluginServiceUtils.java diff --git a/designer_base/src/com/fr/dependservice/PluginService.java b/designer_base/src/com/fr/dependservice/PluginService.java deleted file mode 100644 index 0ba4895cb..000000000 --- a/designer_base/src/com/fr/dependservice/PluginService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.fr.dependservice; - -import com.fr.base.FRContext; -import com.fr.general.FRLogger; -import com.fr.plugin.dependence.PluginServiceCreator; - -import java.util.HashMap; - -/** - * Created by hufan on 2016/9/9. - */ -public abstract class PluginService implements PluginServiceCreator { - @Override - public String remoteServiceAction(String req) throws Exception { - HashMap para = new HashMap(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_plugin_service_data"); - para.put("serviceID", getServiceID()); - para.put("req", req); - return PluginServiceUtils.getDataFormRemote(para); - } - /** - * 服务ID - * @return - */ - protected abstract String getServiceID(); - - /** - * 获取数据 - * @param req - * @return - */ - @Override - public String fetchServiceData(String req) throws Exception { - return FRContext.getCurrentEnv().pluginServiceAction(this, req); - } -} diff --git a/designer_base/src/com/fr/dependservice/PluginServiceUtils.java b/designer_base/src/com/fr/dependservice/PluginServiceUtils.java deleted file mode 100644 index b5304aa72..000000000 --- a/designer_base/src/com/fr/dependservice/PluginServiceUtils.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fr.dependservice; - -import com.fr.base.FRContext; -import com.fr.env.RemoteEnv; -import com.fr.general.IOUtils; - -import java.io.InputStream; -import java.util.HashMap; - -/** - * Created by hufan on 2016/9/9. - */ -public class PluginServiceUtils { - public static String getDataFormRemote(HashMap para) throws Exception { - InputStream inputStream = ((RemoteEnv)FRContext.getCurrentEnv()).getDataFormRemote(para); - return IOUtils.inputStream2String(inputStream); - } -} diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 927743012..3085991d4 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -32,6 +32,7 @@ import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; import com.fr.plugin.dependence.PluginServiceCreator; +import com.fr.plugin.dependence.PluginServiceManager; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; @@ -2081,16 +2082,26 @@ public class RemoteEnv implements Env { } @Override - public String pluginServiceAction(PluginServiceCreator service, String req) throws Exception { - return service.remoteServiceAction(req); + public String pluginServiceAction(String serviceID, String req) throws Exception { + PluginServiceCreator service = PluginServiceManager.getService(serviceID); + if (service == null){ + return null; + } + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_get_plugin_service_data"); + para.put("serviceID", service.getServiceID()); + para.put("req", req); + InputStream inputStream = getDataFormRemote(para); + return IOUtils.inputStream2String(inputStream); } /** * 远程不启动,使用虚拟服务 - * @param service + * @param serviceID */ @Override - public void pluginServiceStart(PluginServiceCreator service){ + public void pluginServiceStart(String serviceID){ } @Override @@ -2105,7 +2116,7 @@ public class RemoteEnv implements Env { * @return * @throws Exception */ - public InputStream getDataFormRemote(HashMap para) throws Exception { + private InputStream getDataFormRemote(HashMap para) throws Exception { HttpClient client = createHttpMethod(para); //jim :加上user,远程设计点击预览时传递用户角色信息 return execute4InputStream(client); } From 506e0bc7a11f20fa94d28fa26b36e6bdbbc0dbd0 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 12 Sep 2016 10:45:25 +0800 Subject: [PATCH 73/92] update --- .../src/com/fr/design/extra/PluginHelper.java | 15 +++++++++++-- .../PluginDependenceUtils.java | 19 ---------------- designer_base/src/com/fr/env/RemoteEnv.java | 22 +++---------------- 3 files changed, 16 insertions(+), 40 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 6c2313532..5d0c9fa1a 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -3,7 +3,7 @@ package com.fr.design.extra; import com.fr.base.Env; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.extra.plugindependence.PluginDependenceUtils; +import com.fr.design.extra.plugindependence.DownLoadDependenceUI; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.plugin.Plugin; @@ -150,9 +150,20 @@ public class PluginHelper { } //安装插件依赖 - PluginDependenceUtils.installDependenceOnline(currentID, needInstallDependence); + installDependenceOnline(currentID, needInstallDependence); } + + /** + * 构造一个下载UI + * @param currentID + * @param list + * @throws PluginDependenceException + */ + private static void installDependenceOnline(String currentID, List list) throws PluginDependenceException{ + DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, list); + ui.installOnline(); + } /** * 从选中的压缩文件中安装插件 * diff --git a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java b/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java deleted file mode 100644 index 9dba8bcf4..000000000 --- a/designer_base/src/com/fr/design/extra/plugindependence/PluginDependenceUtils.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.fr.design.extra.plugindependence; - - -import com.fr.plugin.dependence.PluginDependenceException; -import com.fr.plugin.dependence.PluginDependenceUnit; - -import java.util.List; - -/** - * Created by hufan on 2016/8/31. - */ - - -public class PluginDependenceUtils { - public static void installDependenceOnline(String currentID, List list) throws PluginDependenceException{ - DownLoadDependenceUI ui = new DownLoadDependenceUI(currentID, list); - ui.installOnline(); - } -} diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 3085991d4..6aff74d7c 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2083,16 +2083,13 @@ public class RemoteEnv implements Env { @Override public String pluginServiceAction(String serviceID, String req) throws Exception { - PluginServiceCreator service = PluginServiceManager.getService(serviceID); - if (service == null){ - return null; - } HashMap para = new HashMap(); para.put("op", "fr_remote_design"); para.put("cmd", "design_get_plugin_service_data"); - para.put("serviceID", service.getServiceID()); + para.put("serviceID", serviceID); para.put("req", req); - InputStream inputStream = getDataFormRemote(para); + HttpClient client = createHttpMethod(para); //jim :加上user,远程设计点击预览时传递用户角色信息 + InputStream inputStream = execute4InputStream(client); return IOUtils.inputStream2String(inputStream); } @@ -2108,17 +2105,4 @@ public class RemoteEnv implements Env { public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { } - - /** - * 提供一个可以再插件自定义请求数据的方法 - * 返回的数据可自行处理 - * @param para - * @return - * @throws Exception - */ - private InputStream getDataFormRemote(HashMap para) throws Exception { - HttpClient client = createHttpMethod(para); //jim :加上user,远程设计点击预览时传递用户角色信息 - return execute4InputStream(client); - } - } \ No newline at end of file From c0989e28fd8fcc2b22758be03521e405a0f2a1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Mon, 12 Sep 2016 19:21:48 +0800 Subject: [PATCH 74/92] =?UTF-8?q?=E7=BD=91=E5=9D=80=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginWebBridge.java | 5 ----- designer_base/src/com/fr/design/extra/ucenter/Client.java | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 23b6fa460..4446ffae8 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -43,11 +43,6 @@ public class PluginWebBridge { private String KEYWORD = "keyword"; private Map config; - private static final String LOGININ = "0"; - private static final String LOGIN_INFO_EMPTY = "-1"; - private static final String DISCONNECTED = "-2"; - private static final String LOGININFO_ERROR = "-3"; - private UILabel uiLabel; /** diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index 66796a0b7..eeb6cd57e 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -1,6 +1,7 @@ package com.fr.design.extra.ucenter; import com.fr.base.FRContext; +import com.fr.general.SiteCenter; import java.io.BufferedReader; import java.io.IOException; @@ -18,7 +19,7 @@ import java.util.Map; public class Client extends PHPFunctions{ public static String UC_IP = "211.149.195.54"; - public static String UC_API = "http://bbs.fanruan.com/uc_server"; + public static String UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi"); public static String UC_CONNECT = ""; public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; public static String UC_APPID = "4"; From aeb14505debbf2f4113060123f6fe07f69c956f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Wed, 14 Sep 2016 15:56:12 +0800 Subject: [PATCH 75/92] =?UTF-8?q?bugfix=EF=BC=9A=E4=BB=8E=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E7=AE=A1=E7=90=86=E9=87=8C=E9=9D=A2=E7=99=BB=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E6=88=B7=E5=90=8D=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/LoginWebBridge.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index c1c32b11f..482dde490 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -254,7 +254,7 @@ public class LoginWebBridge { String loginResult = login(username, password); if (loginResult.equals(LOGININ)) { updateUserInfo(username, password); - loginSuccess(username); + loginSuccess(username, uiLabel); setUserName(username, uiLabel); } return loginResult; @@ -287,7 +287,7 @@ public class LoginWebBridge { * 关闭窗口并且重新赋值 * @param username */ - public void loginSuccess(String username) { + public void loginSuccess(String username, UILabel uiLabel) { closeWindow(); uiLabel.setText(username); } From 0af416d3cdcd1d5bc500c160121e6acd84e78361 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 14 Sep 2016 16:49:26 +0800 Subject: [PATCH 76/92] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/chart/ChartTypePane.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index 5cc09a3b4..dcff11869 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -35,6 +35,9 @@ public class ChartTypePane extends ChartCommonWizardPane { charts4Icon[i] = new Chart[rowChartsCount]; for (int j = 0; j < rowChartsCount; j++) { try { + //此时,为图片生成模型数据 + rowCharts[j].createSlotImage(); + //获取图片模型 charts4Icon[i][j] = (Chart) rowCharts[j].clone(); charts4Icon[i][j].setTitle(null); if(charts4Icon[i][j].getPlot() != null){ From c0675ef3f738d14023c8bc07e956c7feeefd23af Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 14 Sep 2016 17:17:58 +0800 Subject: [PATCH 77/92] update --- .../src/com/fr/design/ChartTypeInterfaceManager.java | 12 ++++++++++++ .../src/com/fr/design/chart/ChartTypePane.java | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 1d5cd101a..2dfb2b8cd 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -94,6 +94,10 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh if(rowChart == null) { continue; } + + //初始化图表模型图片 + initChartsDemoImage(rowChart); + String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID); Icon icon = IOUtils.readIcon(iconPath); child[i] = new ChartWidgetOption(Inter.getLocText(typeName[i].getName()), icon, ChartEditor.class, rowChart[0]); @@ -101,6 +105,14 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh return child; } + private static void initChartsDemoImage(Chart[] rowChart) { + int rowChartsCount = rowChart.length; + for (int j = 0; j < rowChartsCount; j++) { + //此时,为图片生成模型数据 + rowChart[j].createSlotImage(); + } + } + private synchronized static void envChanged() { classManager = null; } diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index dcff11869..9ef53f9bf 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -35,8 +35,6 @@ public class ChartTypePane extends ChartCommonWizardPane { charts4Icon[i] = new Chart[rowChartsCount]; for (int j = 0; j < rowChartsCount; j++) { try { - //此时,为图片生成模型数据 - rowCharts[j].createSlotImage(); //获取图片模型 charts4Icon[i][j] = (Chart) rowCharts[j].clone(); charts4Icon[i][j].setTitle(null); From 650d29a1f40bfde51f456f814cedaafdd2922c20 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 14 Sep 2016 17:19:32 +0800 Subject: [PATCH 78/92] update --- designer_chart/src/com/fr/design/chart/ChartTypePane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/ChartTypePane.java b/designer_chart/src/com/fr/design/chart/ChartTypePane.java index 9ef53f9bf..5cc09a3b4 100644 --- a/designer_chart/src/com/fr/design/chart/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/chart/ChartTypePane.java @@ -35,7 +35,6 @@ public class ChartTypePane extends ChartCommonWizardPane { charts4Icon[i] = new Chart[rowChartsCount]; for (int j = 0; j < rowChartsCount; j++) { try { - //获取图片模型 charts4Icon[i][j] = (Chart) rowCharts[j].clone(); charts4Icon[i][j].setTitle(null); if(charts4Icon[i][j].getPlot() != null){ From 34c7a1b08027645289d200754892c98f0717e350 Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Sun, 18 Sep 2016 11:57:49 +0800 Subject: [PATCH 79/92] =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E6=97=B6=E5=80=99=E6=B2=A1=E6=9C=89=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8=E8=B0=83=E7=94=A8=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E5=8E=BB=E5=8F=96=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/ucenter/Client.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index eeb6cd57e..9f7d27b22 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -19,7 +19,7 @@ import java.util.Map; public class Client extends PHPFunctions{ public static String UC_IP = "211.149.195.54"; - public static String UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi"); + public static String UC_API = ""; public static String UC_CONNECT = ""; public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; public static String UC_APPID = "4"; @@ -86,6 +86,7 @@ public class Client extends PHPFunctions{ sep = "&"; } String $postdata = uc_api_requestdata(module, action, str.toString(), ""); + UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi"); return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true); } From c1e3dbf04eb7a3efe92b1a840d243ec1b9bdf69d Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Sun, 18 Sep 2016 16:58:44 +0800 Subject: [PATCH 80/92] =?UTF-8?q?ip=E9=83=A8=E5=88=86=20sitecenter?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bugfix:按钮初始化内容 --- designer_base/src/com/fr/design/extra/QQLoginWebPane.java | 3 +-- designer_base/src/com/fr/design/extra/ucenter/Client.java | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index 2d950bb11..5861bb9ed 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -150,7 +150,6 @@ public class QQLoginWebPane extends JFXPanel { final BooleanProperty confirmationResult = new SimpleBooleanProperty(); // initialize the confirmation dialog final Stage dialog = new Stage(StageStyle.UTILITY); - dialog.setTitle(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); dialog.setX(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 - DEFAULT_CONFIRM_WIDTH / 2 + DEFAULT_OFFEST); dialog.setY(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 + DEFAULT_OFFEST); dialog.setHeight(DEFAULT_CONFIRM_HEIGHT); @@ -162,7 +161,7 @@ public class QQLoginWebPane extends JFXPanel { new Scene( HBoxBuilder.create().styleClass("modal-dialog").children( LabelBuilder.create().text(msg).build(), - ButtonBuilder.create().text(Inter.getLocText("")).defaultButton(true).onAction(new EventHandler() { + ButtonBuilder.create().text(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")).defaultButton(true).onAction(new EventHandler() { @Override public void handle(ActionEvent actionEvent) { // take action and close the dialog. confirmationResult.set(true); diff --git a/designer_base/src/com/fr/design/extra/ucenter/Client.java b/designer_base/src/com/fr/design/extra/ucenter/Client.java index 9f7d27b22..d63d48bd6 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/Client.java +++ b/designer_base/src/com/fr/design/extra/ucenter/Client.java @@ -18,7 +18,7 @@ import java.util.Map; */ public class Client extends PHPFunctions{ - public static String UC_IP = "211.149.195.54"; + public static String UC_IP = ""; public static String UC_API = ""; public static String UC_CONNECT = ""; public static String UC_KEY = "Rc85U37411p4zdvcedm8D4t4D3l9Sa42H0kd98Gbd82aA99a61S2Z5LbQ9u430M0"; @@ -87,6 +87,7 @@ public class Client extends PHPFunctions{ } String $postdata = uc_api_requestdata(module, action, str.toString(), ""); UC_API = SiteCenter.getInstance().acquireUrlByKind("bbs.ucapi"); + UC_IP = SiteCenter.getInstance().acquireUrlByKind("bbs.ip"); return uc_fopen2(UC_API + "/index.php", 500000, $postdata, "", true, UC_IP, 20, true); } From b07345407484dca0b4794a29eb71888d0735950b Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 19 Sep 2016 16:18:35 +0800 Subject: [PATCH 81/92] =?UTF-8?q?=E6=97=A5=E6=96=87=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=EF=BC=8C=E6=8A=A5=E8=A1=A8Web=E5=B1=9E=E6=80=A7=5F?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E9=A1=B5=E9=9D=A2=E8=AE=BE=E7=BD=AE=E6=8E=92?= =?UTF-8?q?=E7=89=88=E9=97=AE=E9=A2=98=EF=BC=8C=E6=8A=8A=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E6=8E=92=E6=8C=89=E9=92=AE=E9=81=AE=E4=BD=8F=E4=BA=86?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E8=AE=BE=E7=BD=AE=E6=B0=B4=E5=B9=B3=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/icontainer/UIScrollPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/icontainer/UIScrollPane.java b/designer_base/src/com/fr/design/gui/icontainer/UIScrollPane.java index 62a580c38..5c71efc7a 100644 --- a/designer_base/src/com/fr/design/gui/icontainer/UIScrollPane.java +++ b/designer_base/src/com/fr/design/gui/icontainer/UIScrollPane.java @@ -15,7 +15,7 @@ public class UIScrollPane extends JScrollPane { private static final long serialVersionUID = 1L; public UIScrollPane(Component c) { - super(c, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + super(c, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); this.setHorizontalScrollBar(createHorizontalScrollBar()); this.getVerticalScrollBar().setUnitIncrement(30); this.getVerticalScrollBar().setBlockIncrement(30); From 56e4b211a3dd76abfa19b8c8e44a497e9f5290db Mon Sep 17 00:00:00 2001 From: loy Date: Tue, 20 Sep 2016 09:49:13 +0800 Subject: [PATCH 82/92] =?UTF-8?q?=E5=B0=86=E2=80=9C=E8=BD=BB=E9=87=8F?= =?UTF-8?q?=E9=87=8D=E8=BE=93=E5=87=BA=E2=80=9D=E5=86=99=E6=88=90=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=8E=BB=E6=8E=89=E5=8E=9F=E6=9D=A5=E7=9A=84?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/webattr/PageToolBarPane.java | 6 ------ .../src/com/fr/design/webattr/PageWebSettingPane.java | 8 +------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/designer/src/com/fr/design/webattr/PageToolBarPane.java b/designer/src/com/fr/design/webattr/PageToolBarPane.java index 105d17353..b9e8c2bf7 100644 --- a/designer/src/com/fr/design/webattr/PageToolBarPane.java +++ b/designer/src/com/fr/design/webattr/PageToolBarPane.java @@ -34,7 +34,6 @@ public class PageToolBarPane extends AbstractEditToolBarPane { private UICheckBox isShowAsImageBox; private UICheckBox isAutoScaleBox; private UICheckBox isTDHeavyBox; - private UICheckBox isTDHeavyUseLightBox; private EventPane eventPane; private UILabel showLocationLabel = new UILabel(Inter.getLocText("FR-Designer_Report_Show_Location") + ":"); @@ -60,8 +59,6 @@ public class PageToolBarPane extends AbstractEditToolBarPane { north.add(GUICoreUtils.createFlowPane(isAutoScaleBox, FlowLayout.LEFT)); isTDHeavyBox = new UICheckBox(Inter.getLocText("FR-Designer_IS_TD_HEAVY_EXPORT"), false); north.add(GUICoreUtils.createFlowPane(isTDHeavyBox, FlowLayout.LEFT)); - isTDHeavyUseLightBox = new UICheckBox(Inter.getLocText("FR-Designer_USE_TD_HEAVY_LIGHT"), false); - north.add(GUICoreUtils.createFlowPane(isTDHeavyUseLightBox, FlowLayout.LEFT)); editToolBarButton.addActionListener(editBtnListener); isUseToolBarCheckBox.setSelected(true); @@ -96,7 +93,6 @@ public class PageToolBarPane extends AbstractEditToolBarPane { this.centerRadioButton.setEnabled(isEnabled); this.eventPane.setEnabled(isEnabled); this.isTDHeavyBox.setEnabled(isEnabled); - this.isTDHeavyUseLightBox.setEnabled(isEnabled); this.isAutoScaleBox.setEnabled(isEnabled); this.isShowAsImageBox.setEnabled(isEnabled); this.leftRadioButton.setEnabled(isEnabled); @@ -126,7 +122,6 @@ public class PageToolBarPane extends AbstractEditToolBarPane { isShowAsImageBox.setSelected(webPage.isShowAsImage()); isAutoScaleBox.setSelected(webPage.isAutoScaleWhenEmbeddedInIframe()); isTDHeavyBox.setSelected(webPage.isTDHeavy()); - isTDHeavyUseLightBox.setSelected(webPage.isLightTDHeavy()); if (webPage.isUseToolBar()) { this.toolBarManagers = webPage.getToolBarManagers(); this.isUseToolBarCheckBox.setSelected(true); @@ -161,7 +156,6 @@ public class PageToolBarPane extends AbstractEditToolBarPane { webPage.setShowAsImage(isShowAsImageBox.isSelected()); webPage.setAutoScaleWhenEmbeddedInIframe(isAutoScaleBox.isSelected()); webPage.setTDHeavy(isTDHeavyBox.isSelected()); - webPage.setLightTDHeavy(isTDHeavyUseLightBox.isSelected()); return webPage; } diff --git a/designer/src/com/fr/design/webattr/PageWebSettingPane.java b/designer/src/com/fr/design/webattr/PageWebSettingPane.java index e38240c36..504687e89 100644 --- a/designer/src/com/fr/design/webattr/PageWebSettingPane.java +++ b/designer/src/com/fr/design/webattr/PageWebSettingPane.java @@ -29,7 +29,6 @@ public class PageWebSettingPane extends WebSettingPane { private UICheckBox isShowAsImageBox; private UICheckBox isAutoScaleBox; private UICheckBox isTDHeavyBox; - private UICheckBox isTDHeavyUseLightBox; public PageWebSettingPane() { super(); @@ -49,14 +48,13 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox = new UICheckBox(Inter.getLocText("Is_Paint_Page")); isAutoScaleBox = new UICheckBox(Inter.getLocText("IS_Auto_Scale")); isTDHeavyBox = new UICheckBox(Inter.getLocText("IS_TD_HEAVY_EXPORT"), false); - isTDHeavyUseLightBox = new UICheckBox(Inter.getLocText("USE_TD_HEAVY_LIGHT"), false); double p = TableLayout.PREFERRED; double[] columnSize = { p,p,p}; double[] rowSize = { p, p,p,p }; Component[][] components = new Component[][]{ new Component[]{new UILabel(Inter.getLocText("Report_Show_Location") + ":", UILabel.RIGHT), buttonpane,null}, new Component[]{new UILabel(Inter.getLocText("PageSetup-Page") + ":", UILabel.RIGHT), isShowAsImageBox, isAutoScaleBox}, - new Component[]{null, isTDHeavyBox, isTDHeavyUseLightBox} + new Component[]{null, isTDHeavyBox, null} }; return TableLayoutHelper.createTableLayoutPane(components,rowSize,columnSize); @@ -71,7 +69,6 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setEnabled(isSelected); isAutoScaleBox.setEnabled(isSelected); isTDHeavyBox.setEnabled(isSelected); - isTDHeavyUseLightBox.setEnabled(isSelected); } protected void setDefault(){ super.setDefault(); @@ -79,7 +76,6 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setSelected(false); isAutoScaleBox.setSelected(false); isTDHeavyBox.setSelected(false); - isTDHeavyUseLightBox.setSelected(false); } @Override protected void populateSubWebSettingrBean(WebPage webPage) { @@ -95,7 +91,6 @@ public class PageWebSettingPane extends WebSettingPane { isShowAsImageBox.setSelected(webPage.isShowAsImage()); isAutoScaleBox.setSelected(webPage.isAutoScaleWhenEmbeddedInIframe()); isTDHeavyBox.setSelected(webPage.isTDHeavy()); - isTDHeavyUseLightBox.setSelected(webPage.isLightTDHeavy()); } @Override @@ -105,7 +100,6 @@ public class PageWebSettingPane extends WebSettingPane { webPage.setShowAsImage(isShowAsImageBox.isSelected()); webPage.setAutoScaleWhenEmbeddedInIframe(isAutoScaleBox.isSelected()); webPage.setTDHeavy(isTDHeavyBox.isSelected()); - webPage.setLightTDHeavy(isTDHeavyUseLightBox.isSelected()); return webPage; } From 7afeb646a28a9367cac208a582af43004d992ed1 Mon Sep 17 00:00:00 2001 From: zhouping Date: Wed, 21 Sep 2016 17:31:17 +0800 Subject: [PATCH 83/92] =?UTF-8?q?REPORT-341:=E8=A1=A8=E5=8D=95=E4=B8=8B?= =?UTF-8?q?=E8=BE=B9=E8=B7=9D=E8=AE=BE=E7=BD=AE=E6=AF=94=E8=BE=83=E5=A4=A7?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99,=20=E4=BC=9A=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E4=BA=8C=E5=88=86=E5=87=BA=E6=9D=A5=E6=95=88=E6=9E=9C=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/designer/creator/XWFitLayout.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java index 8f4df6e74..20b12d888 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java @@ -53,6 +53,8 @@ public class XWFitLayout extends XLayoutContainer { super(widget, initSize); initPercent(); + + widget.setResolutionScaling(containerPercent); } //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% From 8ac23ad7c7c318f3062a93190e3ba8f02014ed43 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 22 Sep 2016 16:02:14 +0800 Subject: [PATCH 84/92] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E4=B9=B1=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DownLoadDependenceUI.java | 71 +++++++++++++++++-- 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 5b0de740c..67d3a0354 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -20,12 +20,14 @@ import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; +import java.io.*; import java.net.HttpURLConnection; -import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; + +import org.apache.tools.zip.ZipEntry; +import org.apache.tools.zip.ZipFile; + /** * Created by hufan on 2016/9/5. */ @@ -198,7 +200,7 @@ public class DownLoadDependenceUI implements ActionListener { } //安装文件 - IOUtils.unzip(new File(temp), FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); + unZipFiles(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); } else { result = false; @@ -254,14 +256,12 @@ public class DownLoadDependenceUI implements ActionListener { int choose = JOptionPane.showConfirmDialog(null, Inter.getLocText("FR-Designer-Plugin_Plugin") + Inter.getLocText("FR-Designer-Need") + Inter.getLocText("FR-Designer-Dependence") + Inter.getLocText("FR-Designer-Support") + "," + Inter.getLocText("FR-Designer-Dependence_Need_Install") + "(" + showFileLength() + " m)?", "install tooltip", JOptionPane.YES_NO_OPTION); if (choose == 0) {//下载安装 if (!connectToServer()) { - //JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error"), "alert", JOptionPane.ERROR_MESSAGE); throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Connect_Server_Error")); } //安装依赖环境 if (install()) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Succeed") + "!!"); } else { - //JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Dependence_Install_Failed") + "!!", "alert", JOptionPane.ERROR_MESSAGE); throw new PluginDependenceException(Inter.getLocText("FR-Designer-Dependence_Install_Failed")); } }else {//不选择下载,则不安装图标插件 @@ -272,4 +272,61 @@ public class DownLoadDependenceUI implements ActionListener { private String showFileLength() { return totalSize == -1 ? "NAN" : totalSize / Math.pow(10, 6) + ""; } + + + @SuppressWarnings("unchecked") + public static boolean unZipFiles(String zipFileName, String extPlace) throws Exception { + System.setProperty("sun.zip.encoding", System.getProperty("sun.jnu.encoding")); + try { + (new File(extPlace)).mkdirs(); + File f = new File(zipFileName); + ZipFile zipFile = new ZipFile(zipFileName,"GBK"); //处理中文文件名乱码的问题 + if((!f.exists()) && (f.length() <= 0)) { + throw new Exception("no zip file!"); + } + String strPath, gbkPath, strtemp; + File tempFile = new File(extPlace); + strPath = tempFile.getAbsolutePath(); + Enumeration e = zipFile.getEntries(); + while(e.hasMoreElements()){ + ZipEntry zipEnt = (ZipEntry) e.nextElement(); + gbkPath=zipEnt.getName(); + if(zipEnt.isDirectory()){ + strtemp = strPath + File.separator + gbkPath; + File dir = new File(strtemp); + dir.mkdirs(); + continue; + } else { + //读写文件 + InputStream is = zipFile.getInputStream(zipEnt); + BufferedInputStream bis = new BufferedInputStream(is); + gbkPath=zipEnt.getName(); + strtemp = strPath + File.separator + gbkPath; + + //建目录 + String strsubdir = gbkPath; + for(int i = 0; i < strsubdir.length(); i++) { + if(strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) { + String temp = strPath + File.separator + strsubdir.substring(0, i); + File subdir = new File(temp); + if(!subdir.exists()) + subdir.mkdir(); + } + } + FileOutputStream fos = new FileOutputStream(strtemp); + BufferedOutputStream bos = new BufferedOutputStream(fos); + int c; + while((c = bis.read()) != -1) { + bos.write((byte) c); + } + bos.close(); + fos.close(); + } + } + return true; + } catch(Exception e) { + FRContext.getLogger().info(e.getMessage()); + return false; + } + } } From 3ace747624f84006b0ff2d932e284160bdf87ab5 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 22 Sep 2016 16:18:23 +0800 Subject: [PATCH 85/92] update --- .../DownLoadDependenceUI.java | 59 +------------------ 1 file changed, 1 insertion(+), 58 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 67d3a0354..9edfc21fe 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -200,7 +200,7 @@ public class DownLoadDependenceUI implements ActionListener { } //安装文件 - unZipFiles(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); + IOUtils.unZipFilesGBK(temp, FRContext.getCurrentEnv().getPath() + dependenceUnit.getDependenceDir()); } else { result = false; @@ -272,61 +272,4 @@ public class DownLoadDependenceUI implements ActionListener { private String showFileLength() { return totalSize == -1 ? "NAN" : totalSize / Math.pow(10, 6) + ""; } - - - @SuppressWarnings("unchecked") - public static boolean unZipFiles(String zipFileName, String extPlace) throws Exception { - System.setProperty("sun.zip.encoding", System.getProperty("sun.jnu.encoding")); - try { - (new File(extPlace)).mkdirs(); - File f = new File(zipFileName); - ZipFile zipFile = new ZipFile(zipFileName,"GBK"); //处理中文文件名乱码的问题 - if((!f.exists()) && (f.length() <= 0)) { - throw new Exception("no zip file!"); - } - String strPath, gbkPath, strtemp; - File tempFile = new File(extPlace); - strPath = tempFile.getAbsolutePath(); - Enumeration e = zipFile.getEntries(); - while(e.hasMoreElements()){ - ZipEntry zipEnt = (ZipEntry) e.nextElement(); - gbkPath=zipEnt.getName(); - if(zipEnt.isDirectory()){ - strtemp = strPath + File.separator + gbkPath; - File dir = new File(strtemp); - dir.mkdirs(); - continue; - } else { - //读写文件 - InputStream is = zipFile.getInputStream(zipEnt); - BufferedInputStream bis = new BufferedInputStream(is); - gbkPath=zipEnt.getName(); - strtemp = strPath + File.separator + gbkPath; - - //建目录 - String strsubdir = gbkPath; - for(int i = 0; i < strsubdir.length(); i++) { - if(strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) { - String temp = strPath + File.separator + strsubdir.substring(0, i); - File subdir = new File(temp); - if(!subdir.exists()) - subdir.mkdir(); - } - } - FileOutputStream fos = new FileOutputStream(strtemp); - BufferedOutputStream bos = new BufferedOutputStream(fos); - int c; - while((c = bis.read()) != -1) { - bos.write((byte) c); - } - bos.close(); - fos.close(); - } - } - return true; - } catch(Exception e) { - FRContext.getLogger().info(e.getMessage()); - return false; - } - } } From b9e4c576f49232ef8d344cb25276be32239afa8e Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 22 Sep 2016 16:19:16 +0800 Subject: [PATCH 86/92] update --- .../design/extra/plugindependence/DownLoadDependenceUI.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java index 9edfc21fe..eb7af116b 100644 --- a/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java +++ b/designer_base/src/com/fr/design/extra/plugindependence/DownLoadDependenceUI.java @@ -22,12 +22,8 @@ import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.*; import java.net.HttpURLConnection; -import java.util.Enumeration; import java.util.List; -import org.apache.tools.zip.ZipEntry; -import org.apache.tools.zip.ZipFile; - /** * Created by hufan on 2016/9/5. */ From 3d5880b7cb83067262fb674237a743fa613b4dd6 Mon Sep 17 00:00:00 2001 From: zhouping Date: Fri, 23 Sep 2016 09:41:24 +0800 Subject: [PATCH 87/92] =?UTF-8?q?=E5=8F=AA=E5=BC=80=E6=94=BE=E7=BB=99?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=AE=A2=E6=88=B7=E6=B5=8B=E8=AF=95=EF=BC=8C?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=A0=8F=E4=B8=8A=E5=85=88=E5=B1=8F=E8=94=BD?= =?UTF-8?q?=E7=BB=9D=E5=AF=B9=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/src/com/fr/design/gui/core/FormWidgetOption.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java b/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java index 214d2cd67..fef70c588 100644 --- a/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java +++ b/designer_form/src/com/fr/design/gui/core/FormWidgetOption.java @@ -1 +1 @@ -package com.fr.design.gui.core; import javax.swing.Icon; import com.fr.base.BaseUtils; import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WHorizontalBoxLayout; import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WVerticalBoxLayout; import com.fr.general.Inter; /** * Author : Shockway * Date: 13-6-17 * Time: 上午10:40 */ public class FormWidgetOption extends WidgetOption { /** * 返回名字 * @return 名字 */ @Override public String optionName() { return null; } /** * 返回图标 * @return 图标 */ @Override public Icon optionIcon() { return null; } /** * 组件类 * @return 类 */ @Override public Class widgetClass() { return null; } /** * 返回组件 * @return 控件 */ @Override public Widget createWidget() { return null; } /* * 表单容器 */ public static WidgetOption[] getFormContainerInstance() { return new WidgetOption[] { ABSOLUTELAYOUTCONTAINER, BORDERLAYOUTCONTAINER, HORIZONTALBOXLAYOUTCONTAINER, VERTICALBOXLAYOUTCONTAINER, CARDLAYOUTCONTAINER, FITLAYOUTCONTAINER }; } /** * 表单工具栏上的布局 * @return 控件 */ public static WidgetOption[] getFormLayoutInstance() { return new WidgetOption[] {CARDLAYOUTCONTAINER, ABSOLUTELAYOUTCONTAINER}; } public static final WidgetOption ABSOLUTELAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_AbsoluteLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_absolute_new.png"), WAbsoluteLayout.class); public static final WidgetOption BORDERLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_BorderLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_border.png"), WBorderLayout.class); public static final WidgetOption CARDLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_CardLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/card_layout_16.png"), WCardLayout.class); public static final WidgetOption HORIZONTALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Layout-HBox"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_h_16.png"), WHorizontalBoxLayout.class); public static final WidgetOption VERTICALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_VerticalBoxLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WVerticalBoxLayout.class); public static final WidgetOption FITLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WFitLayout.class); public static final WidgetOption PARAMETERCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Para-Body"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter.png"), WParameterLayout.class); public static final WidgetOption ELEMENTCASE = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Form-Report"), BaseUtils.readIcon("/com/fr/web/images/form/resources/report_16.png"), ElementCaseEditor.class); } \ No newline at end of file +package com.fr.design.gui.core; import javax.swing.Icon; import com.fr.base.BaseUtils; import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WHorizontalBoxLayout; import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WVerticalBoxLayout; import com.fr.general.Inter; /** * Author : Shockway * Date: 13-6-17 * Time: 上午10:40 */ public class FormWidgetOption extends WidgetOption { /** * 返回名字 * @return 名字 */ @Override public String optionName() { return null; } /** * 返回图标 * @return 图标 */ @Override public Icon optionIcon() { return null; } /** * 组件类 * @return 类 */ @Override public Class widgetClass() { return null; } /** * 返回组件 * @return 控件 */ @Override public Widget createWidget() { return null; } /* * 表单容器 */ public static WidgetOption[] getFormContainerInstance() { return new WidgetOption[] { ABSOLUTELAYOUTCONTAINER, BORDERLAYOUTCONTAINER, HORIZONTALBOXLAYOUTCONTAINER, VERTICALBOXLAYOUTCONTAINER, CARDLAYOUTCONTAINER, FITLAYOUTCONTAINER }; } /** * 表单工具栏上的布局 * @return 控件 */ public static WidgetOption[] getFormLayoutInstance() { return new WidgetOption[] {CARDLAYOUTCONTAINER/*, ABSOLUTELAYOUTCONTAINER*/}; } public static final WidgetOption ABSOLUTELAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_AbsoluteLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_absolute_new.png"), WAbsoluteLayout.class); public static final WidgetOption BORDERLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_BorderLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_border.png"), WBorderLayout.class); public static final WidgetOption CARDLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_CardLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/card_layout_16.png"), WCardLayout.class); public static final WidgetOption HORIZONTALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Layout-HBox"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_h_16.png"), WHorizontalBoxLayout.class); public static final WidgetOption VERTICALBOXLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_VerticalBoxLayout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WVerticalBoxLayout.class); public static final WidgetOption FITLAYOUTCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"), BaseUtils.readIcon("/com/fr/web/images/form/resources/boxlayout_v_16.png"), WFitLayout.class); public static final WidgetOption PARAMETERCONTAINER = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Para-Body"), BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter.png"), WParameterLayout.class); public static final WidgetOption ELEMENTCASE = WidgetOptionFactory.createByWidgetClass(Inter .getLocText("FR-Designer_Form-Report"), BaseUtils.readIcon("/com/fr/web/images/form/resources/report_16.png"), ElementCaseEditor.class); } \ No newline at end of file From 94dec668df5e7d063475e321c60a17cbd7b700c1 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 26 Sep 2016 11:57:53 +0800 Subject: [PATCH 88/92] ct --- .../fr/design/mainframe/toolbar/ToolBarMenuDock.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index b04e1e5b1..5392f2dfe 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -120,7 +120,7 @@ public abstract class ToolBarMenuDock { ///////////////////////////////menu below///////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// - private MenuDef[] menus(final ToolBarMenuDockPlus plus) { + public MenuDef[] menus(final ToolBarMenuDockPlus plus) { java.util.List menuList = new java.util.ArrayList(); // 添加文件菜单 menuList.add(createFileMenuDef(plus)); @@ -142,7 +142,7 @@ public abstract class ToolBarMenuDock { return menuList.toArray(new MenuDef[menuList.size()]); } - private void insertTemplateExtendMenu(ToolBarMenuDockPlus plus, MenuDef[] menuDefs) { + public void insertTemplateExtendMenu(ToolBarMenuDockPlus plus, MenuDef[] menuDefs) { // 给菜单加插件入口 for (MenuDef m : menuDefs) { switch (m.getAnchor()) { @@ -171,7 +171,7 @@ public abstract class ToolBarMenuDock { return plus.menus4Target(); } - private MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) { + public MenuDef createFileMenuDef(ToolBarMenuDockPlus plus) { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_File"), 'F'); ShortCut[] scs = new ShortCut[0]; @@ -284,7 +284,7 @@ public abstract class ToolBarMenuDock { return processor == null ? new GlobalTableDataAction() : processor.createServerTDAction(); } - protected boolean shouldShowPlugin() { + private boolean shouldShowPlugin() { return FRContext.isChineseEnv() || ComparatorUtils.equals(GeneralContext.getLocale(), Locale.TAIWAN); } @@ -326,7 +326,6 @@ public abstract class ToolBarMenuDock { shortCuts.add(new SignAction()); return shortCuts.toArray(new ShortCut[shortCuts.size()]); } - public MenuDef createHelpMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_Help"), 'H'); ShortCut[] otherHelpShortCuts = createHelpShortCuts(); @@ -336,7 +335,6 @@ public abstract class ToolBarMenuDock { insertMenu(menuDef, MenuHandler.HELP); return menuDef; } - public MenuDef createCommunityMenuDef() { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_COMMUNITY"), 'C'); ShortCut[] otherCommunityShortCuts = createCommunityShortCuts(); From 56adea3eea3219c2a44ec71bf91c4be465e9399f Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 26 Sep 2016 11:58:34 +0800 Subject: [PATCH 89/92] ct --- build.gradle.bak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.bak b/build.gradle.bak index 67a8a0e70..633739a74 100644 --- a/build.gradle.bak +++ b/build.gradle.bak @@ -2,10 +2,10 @@ apply plugin: "java" tasks.withType(JavaCompile){ options.encoding = "UTF-8" } -sourceCompatibility=1.7 + def basicDir="../../" def libDir="${basicDir}/finereport-lib-stable" -//获取什么分支名 +//ȡʲô֧ FileTree files =fileTree(dir:"./",include:"build.gradle") def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) From 28986f8d268ecb3ff458ba43cd29dd64b76cbb19 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 26 Sep 2016 11:59:07 +0800 Subject: [PATCH 90/92] 1 --- .../src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 5392f2dfe..a607420d4 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -40,7 +40,7 @@ import java.util.Locale; import java.util.Set; /** - * @author richer + * @author richer * @since 6.5.5 创建于2011-6-13 */ /* From 49106fb2c021e67a7a889311741300e1a25b9ab2 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 26 Sep 2016 11:59:16 +0800 Subject: [PATCH 91/92] 1 --- .../src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index a607420d4..5392f2dfe 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -40,7 +40,7 @@ import java.util.Locale; import java.util.Set; /** - * @author richer + * @author richer * @since 6.5.5 创建于2011-6-13 */ /* From 661fcbe959eb4d84b8605937b6e4fe7b600165a2 Mon Sep 17 00:00:00 2001 From: neil Date: Mon, 26 Sep 2016 12:00:30 +0800 Subject: [PATCH 92/92] 1 --- designer_form/build.gradle.bak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/build.gradle.bak b/designer_form/build.gradle.bak index 6c0df949c..7210a96e4 100644 --- a/designer_form/build.gradle.bak +++ b/designer_form/build.gradle.bak @@ -4,7 +4,7 @@ tasks.withType(JavaCompile){ options.encoding = 'UTF-8' } //指定构建的jdk版本 -sourceCompatibility=1.8 +sourceCompatibility=1.7 //指定生成的jar包版本 version='8.0' @@ -30,6 +30,7 @@ FileTree files =fileTree(dir:'./',include:'build.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) + //声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable',include:'**/*.jar') @@ -62,7 +63,6 @@ task copyFile(type:Copy,dependsOn:compileJava){ task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { - fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } }