diff --git a/designer_base/src/com/fr/design/extra/LoginWebBridge.java b/designer_base/src/com/fr/design/extra/LoginWebBridge.java index 611166bc0..6592e1601 100644 --- a/designer_base/src/com/fr/design/extra/LoginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/LoginWebBridge.java @@ -108,7 +108,7 @@ public class LoginWebBridge { if (StringUtils.isEmpty(userName)) { return; } - if (!StringUtils.isEmpty(this.userName)) { + if (StringUtils.isNotEmpty(this.userName)) { updateMessageCount(); } this.userName = userName; diff --git a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java index 7dfa277eb..f3c96d219 100644 --- a/designer_base/src/com/fr/design/extra/QQLoginWebPane.java +++ b/designer_base/src/com/fr/design/extra/QQLoginWebPane.java @@ -40,6 +40,7 @@ import java.awt.*; public class QQLoginWebPane extends JFXPanel { private WebEngine webEngine; + private String url; private static JSObject window; @@ -50,7 +51,9 @@ public class QQLoginWebPane extends JFXPanel { private static int DEFAULT_CONFIRM_HEIGHT = 160; private static int DEFAULT_OFFEST = 20; - class Delta { double x, y; } + class Delta { + double x, y; + } public QQLoginWebPane(final String installHome) { Platform.setImplicitExit(false); @@ -62,7 +65,8 @@ public class QQLoginWebPane extends JFXPanel { QQLoginWebPane.this.setScene(scene); final WebView webView = new WebView(); webEngine = webView.getEngine(); - webEngine.load("file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"); + url = "file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html"; + webEngine.load(url); final Stage primaryStage = new Stage(); @@ -76,51 +80,56 @@ public class QQLoginWebPane extends JFXPanel { primaryStage.setX(0); primaryStage.setY(Screen.getPrimary().getBounds().getHeight() + DEFAULT_PRIMARYSTAGE_HEIGHT); primaryStage.show(); - }catch (Exception e) { + } 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) { - disableLink(webEngine); - // webView好像默认以手机版显示网页,浏览器里过滤掉这个跳转 - if (ComparatorUtils.equals(newValue, "file:///" + installHome + "/scripts/qqLogin/web/qqLogin.html") || ComparatorUtils.equals(newValue, SiteCenter.getInstance().acquireUrlByKind("bbs.mobile"))) { - return; - } - LoginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); - } - }); - webEngine.setOnAlert(new EventHandler>() { + webEngine.setConfirmHandler(new Callback() { @Override - public void handle(WebEvent event) { - showAlert(event.getData()); + public Boolean call(String msg) { + Boolean confirmed = confirm(primaryStage, msg, webView); + return confirmed; } }); - 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", LoginWebBridge.getHelper()); - } - } - } - ); - + configWebEngine(); webView.setContextMenuEnabled(false);//屏蔽右键 root.setCenter(webView); } }); } + private void configWebEngine() { + + webEngine.locationProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, final String oldValue, String newValue) { + disableLink(webEngine); + // webView好像默认以手机版显示网页,浏览器里过滤掉这个跳转 + if (ComparatorUtils.equals(newValue, url) || ComparatorUtils.equals(newValue, SiteCenter.getInstance().acquireUrlByKind("bbs.mobile"))) { + return; + } + LoginWebBridge.getHelper().openUrlAtLocalWebBrowser(webEngine, newValue); + } + }); + + webEngine.setOnAlert(new EventHandler>() { + @Override + public void handle(WebEvent event) { + showAlert(event.getData()); + } + }); + + 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", LoginWebBridge.getHelper()); + } + } + } + ); + } + private void showAlert(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override @@ -146,12 +155,12 @@ public class QQLoginWebPane extends JFXPanel { } } - private Boolean confirm(final Stage parent, String msg, final String installHome,final WebView webView) { + private Boolean confirm(final Stage parent, String msg, final WebView webView) { final BooleanProperty confirmationResult = new SimpleBooleanProperty(); // initialize the confirmation dialog final Stage dialog = new Stage(StageStyle.UTILITY); - dialog.setX(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 - DEFAULT_CONFIRM_WIDTH / 2 + DEFAULT_OFFEST); - dialog.setY(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 + DEFAULT_OFFEST); + 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); @@ -162,7 +171,8 @@ public class QQLoginWebPane extends JFXPanel { HBoxBuilder.create().styleClass("modal-dialog").children( LabelBuilder.create().text(msg).build(), ButtonBuilder.create().text(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")).defaultButton(true).onAction(new EventHandler() { - @Override public void handle(ActionEvent actionEvent) { + @Override + public void handle(ActionEvent actionEvent) { // take action and close the dialog. confirmationResult.set(true); webView.getEngine().reload(); @@ -170,7 +180,8 @@ public class QQLoginWebPane extends JFXPanel { } }).build(), ButtonBuilder.create().text(Inter.getLocText("FR-Engine_Cancel")).cancelButton(true).onAction(new EventHandler() { - @Override public void handle(ActionEvent actionEvent) { + @Override + public void handle(ActionEvent actionEvent) { // abort action and close the dialog. confirmationResult.set(false); dialog.close(); @@ -180,35 +191,39 @@ public class QQLoginWebPane extends JFXPanel { , Color.TRANSPARENT ) ); + configDrag(dialog); + // 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(); + } + + private void configDrag(final Stage dialog) { // 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) { + @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) { + @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/WebViewDlgHelper.java b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java index f07a4edd5..481498fc8 100644 --- a/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -76,7 +76,7 @@ public class WebViewDlgHelper { } public static void createLoginDialog() { - if (StableUtils.getMajorJavaVersion() == 8) { + if (StableUtils.getMajorJavaVersion() == VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { int rv = JOptionPane.showConfirmDialog(