diff --git a/designer-base/src/com/fr/design/extra/LoginDialog.java b/designer-base/src/com/fr/design/extra/LoginDialog.java index 6ae8a63f9..33983baf2 100644 --- a/designer-base/src/com/fr/design/extra/LoginDialog.java +++ b/designer-base/src/com/fr/design/extra/LoginDialog.java @@ -4,8 +4,12 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StableUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Frame; /** * Created by vito on 2017/5/5. @@ -15,6 +19,15 @@ public class LoginDialog extends UIDialog { public LoginDialog(Frame frame, Component pane) { super(frame); + init(pane); + } + + public LoginDialog(Dialog dialog, Component pane) { + super(dialog); + init(pane); + } + + private void init(Component pane) { if (StableUtils.getMajorJavaVersion() == 8) { setUndecorated(true); } diff --git a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java index 59fb61276..461f950bd 100644 --- a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -22,6 +22,9 @@ import javax.swing.JOptionPane; import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Component; +import java.awt.Dialog; +import java.awt.Frame; +import java.awt.Window; import java.io.File; import java.io.IOException; import java.lang.reflect.Constructor; @@ -133,18 +136,22 @@ public class WebViewDlgHelper { if (StableUtils.getMajorJavaVersion() == VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { - int rv = JOptionPane.showConfirmDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - downloadShopScripts(SHOP_SCRIPTS); - } + confirmDownLoadShopJS(); } else { - showLoginDlg(); + showLoginDlg(DesignerContext.getDesignerFrame()); + updateShopScripts(SHOP_SCRIPTS); + } + } + } + + + public static void createLoginDialog(Window parent) { + if (StableUtils.getMajorJavaVersion() == VERSION_8) { + File file = new File(StableUtils.pathJoin(installHome, "scripts")); + if (!file.exists()) { + confirmDownLoadShopJS(); + } else { + showLoginDlg(parent); updateShopScripts(SHOP_SCRIPTS); } } @@ -164,6 +171,20 @@ public class WebViewDlgHelper { } } + + private static void confirmDownLoadShopJS() { + int rv = JOptionPane.showConfirmDialog( + null, + Inter.getLocText("FR-Designer-Plugin_Shop_Need_Install"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + downloadShopScripts(SHOP_SCRIPTS); + } + } + private static void showPluginDlg(String mainJsPath) { try { Class clazz = Class.forName("com.fr.design.extra.PluginWebPane"); @@ -179,13 +200,17 @@ public class WebViewDlgHelper { } } - private static void showLoginDlg() { + private static void showLoginDlg(Window window) { try { Class clazz = Class.forName("com.fr.design.extra.LoginWebPane"); Constructor constructor = clazz.getConstructor(String.class); Component webPane = (Component) constructor.newInstance(installHome); - - UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), webPane); + UIDialog qqdlg; + if (window instanceof Dialog) { + qqdlg = new LoginDialog((Dialog) window, webPane); + } else { + qqdlg = new LoginDialog((Frame) window, webPane); + } LoginWebBridge.getHelper().setDialogHandle(qqdlg); qqdlg.setVisible(true); } catch (Throwable ignored) { diff --git a/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java b/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java index 3fae72f92..69392dd39 100644 --- a/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java +++ b/designer-realize/src/com/fr/design/mainframe/bbs/UserInfoPane.java @@ -11,7 +11,6 @@ import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.mainframe.DesignerContext; import com.fr.general.DateUtils; -import com.fr.general.FRLogger; import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.EnvChangedListener; @@ -32,27 +31,42 @@ import java.util.Date; */ public class UserInfoPane extends BasicPane { - //默认未登录颜色 + /** + * 默认未登录颜色 + */ private static final Color UN_LOGIN_BACKGROUND = UIConstants.TEMPLATE_TAB_PANE_BACKGROUND; 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; - // 等待国际化等相关初始化工作完成之后再弹出登录框 + /** + * 等待国际化等相关初始化工作完成之后再弹出登录框 + */ private static final int WAIT_TIME = 10000; private UserInfoLabel userInfoLabel; + private static UserInfoPane instance = new UserInfoPane(); + + + public static UserInfoPane getInstance() { + return instance; + } + /** * 构造函数 */ - public UserInfoPane() { + private UserInfoPane() { this.setPreferredSize(new Dimension(WIDTH, HEIGHT)); this.setLayout(new BorderLayout()); @@ -73,6 +87,34 @@ public class UserInfoPane extends BasicPane { this.userInfoLabel = userInfoLabel; } + + /** + * 标志未登录状态, 面板设置为灰色 + */ + public void markUnSignIn() { + this.userInfoLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); + this.userInfoLabel.setOpaque(true); + this.userInfoLabel.setBackground(UN_LOGIN_BACKGROUND); + this.userInfoLabel.resetUserName(); + } + + /** + * 标志登陆状态, 面包设置为蓝色 + * + * @param userName 用户名 + */ + public void markSignIn(String userName) { + this.userInfoLabel.setText(userName); + this.userInfoLabel.setUserName(userName); + this.userInfoLabel.setOpaque(true); + this.userInfoLabel.setBackground(LOGIN_BACKGROUND); + } + + @Override + protected String title4PopupWindow() { + return StringUtils.EMPTY; + } + private void addEnvChangedListener() { GeneralContext.addEnvChangedListener(new EnvChangedListener() { @Override @@ -90,11 +132,15 @@ public class UserInfoPane extends BasicPane { } - // 计算xml保存的上次弹框时间和当前时间的时间差 + /** + * 计算xml保存的上次弹框时间和当前时间的时间差 + * + * @return 时间差 + */ private int getDiffFromLastLogin() { String lastBBSTime = DesignerEnvManager.getEnvManager().getLastShowBBSTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - Date lastBBSDate = null; + Date lastBBSDate; try { if (lastBBSTime != null) { synchronized (this) { @@ -108,7 +154,7 @@ public class UserInfoPane extends BasicPane { return dayNew - dayOld; } } catch (ParseException e) { - FRLogger.getLogger().error(e.getMessage()); + FRContext.getLogger().error(e.getMessage()); } return 1; } @@ -153,31 +199,5 @@ public class UserInfoPane extends BasicPane { showBBSThread.start(); } - /** - * 标志未登录状态, 面板设置为灰色 - */ - public void markUnSignIn() { - this.userInfoLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); - this.userInfoLabel.setOpaque(true); - this.userInfoLabel.setBackground(UN_LOGIN_BACKGROUND); - this.userInfoLabel.resetUserName(); - } - - /** - * 标志登陆状态, 面包设置为蓝色 - * - * @param userName 用户名 - */ - public void markSignIn(String userName) { - this.userInfoLabel.setText(userName); - this.userInfoLabel.setUserName(userName); - this.userInfoLabel.setOpaque(true); - this.userInfoLabel.setBackground(LOGIN_BACKGROUND); - } - - @Override - protected String title4PopupWindow() { - return StringUtils.EMPTY; - } } \ No newline at end of file diff --git a/designer-realize/src/com/fr/start/Designer.java b/designer-realize/src/com/fr/start/Designer.java index af2ababb1..7ee3e6f35 100644 --- a/designer-realize/src/com/fr/start/Designer.java +++ b/designer-realize/src/com/fr/start/Designer.java @@ -369,7 +369,7 @@ public class Designer extends BaseDesigner { @Override public Component createBBSLoginPane() { if (userInfoPane == null) { - userInfoPane = new UserInfoPane(); + userInfoPane = UserInfoPane.getInstance(); } return userInfoPane; }