diff --git a/designer-base/src/main/java/com/fr/design/RestartHelper.java b/designer-base/src/main/java/com/fr/design/RestartHelper.java index 09fcf83b8..4a0813f32 100644 --- a/designer-base/src/main/java/com/fr/design/RestartHelper.java +++ b/designer-base/src/main/java/com/fr/design/RestartHelper.java @@ -1,6 +1,7 @@ package com.fr.design; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.os.impl.RestartAction; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; @@ -8,6 +9,8 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.os.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; +import com.fr.stable.os.support.OSBasedAction; +import com.fr.stable.os.support.OSSupportCenter; import java.io.File; import java.io.FileInputStream; @@ -168,14 +171,8 @@ public class RestartHelper { }catch (Exception e){ FineLoggerFactory.getLogger().error(e.getMessage(), e); } - if (OperatingSystem.isMacos()) { - restartInMacOS(installHome, filesToBeDelete); - } else if(OperatingSystem.isWindows()){ - restartInWindows(installHome, filesToBeDelete); - }else{ - //增加一个Linux系统 - restartInLinux(installHome,filesToBeDelete); - } + OSBasedAction osBasedAction = OSSupportCenter.getAction(RestartAction.class); + osBasedAction.execute(filesToBeDelete); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } finally { @@ -190,7 +187,7 @@ public class RestartHelper { } } - private static void restartInMacOS(String installHome, String[] filesToBeDelete) throws Exception { + /* private static void restartInMacOS(String installHome, String[] filesToBeDelete) throws Exception { ProcessBuilder builder = new ProcessBuilder(); List commands = new ArrayList(); commands.add("open"); @@ -224,5 +221,5 @@ public class RestartHelper { } builder.command(commands); builder.start(); - } + }*/ } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 6a8132a60..20d2af94f 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -28,7 +28,7 @@ import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.mainframe.vcs.common.VcsHelper; -import com.fr.design.update.push.DesignerPushUpdateManager; +import com.fr.design.os.impl.SupportOSImpl; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.general.ComparatorUtils; @@ -213,10 +213,15 @@ public class PreferencePane extends BasicPane { joinProductImproveCheckBox = new UICheckBox(i18nText("Fine-Design_Basic_Join_Product_Improve")); improvePane.add(joinProductImproveCheckBox); - if (DesignerPushUpdateManager.getInstance().isAutoPushUpdateSupported()) { + if(SupportOSImpl.AUTOPUSHUPDATE.support()){ autoPushUpdateCheckBox = new UICheckBox(i18nText("Fine-Design_Automatic_Push_Update")); improvePane.add(autoPushUpdateCheckBox); } + /* + if (DesignerPushUpdateManager.getInstance().isAutoPushUpdateSupported()) { + autoPushUpdateCheckBox = new UICheckBox(i18nText("Fine-Design_Automatic_Push_Update")); + improvePane.add(autoPushUpdateCheckBox); + }*/ JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); spaceUpPane.add(oraclePane, BorderLayout.NORTH); diff --git a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java index 90318823f..e416083f7 100644 --- a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java +++ b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java @@ -33,7 +33,7 @@ public class ProgressDialog extends UIDialog { setLocationRelativeTo(null); OSSupportCenter.buildAction(new OSBasedAction() { @Override - public void execute() { + public void execute(Object... objects) { setOpacity(0.5f); } }, SupportOSImpl.OPACITY); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index c0183fb0f..56e119d6a 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -463,7 +463,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta final Component[] bbsLoginPane = {null}; OSSupportCenter.buildAction(new OSBasedAction() { @Override - public void execute() { + public void execute(Object... objects) { bbsLoginPane[0] = ad.createBBSLoginPane(); } }, SupportOSImpl.USERINFOPANE); @@ -475,7 +475,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } OSSupportCenter.buildAction(new OSBasedAction() { @Override - public void execute() { + public void execute(Object... objects) { northEastPane.add(ad.createBBSLoginPane()); } }, SupportOSImpl.USERINFOPANE); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index c24ac2484..d916d967f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -546,7 +546,7 @@ public abstract class ToolBarMenuDock { if (DesignerEnvManager.getEnvManager().isOpenDebug()) { OSSupportCenter.buildAction(new OSBasedAction() { @Override - public void execute() { + public void execute(Object... objects) { shortCuts.add(new FineUIAction()); } }, SupportOSImpl.FINEUI); diff --git a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java index a47b94cc1..7db000493 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java @@ -23,7 +23,7 @@ import static com.fr.design.actions.server.ConnectionListAction.doWithDatasource public class DatabaseDialogAction implements OSBasedAction { @Override - public void execute() { + public void execute(Object... objects) { if (ServerPreferenceConfig.getInstance().isUseUniverseDBM() && !OperatingSystem.isLinux()) { UniversalDatabaseOpener.showUniverseDatabaseDialog(); } else { diff --git a/designer-base/src/main/java/com/fr/design/os/impl/DemoAction.java b/designer-base/src/main/java/com/fr/design/os/impl/DemoAction.java index 412213184..8feb02952 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/DemoAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/DemoAction.java @@ -13,7 +13,7 @@ import java.io.IOException; public class DemoAction implements OSBasedAction { @Override - public void execute() { + public void execute(Object... objects) { String installHome = StableUtils.getInstallHome(); if (installHome == null) { FineLoggerFactory.getLogger().error("Can not find the install home, please check it."); diff --git a/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java index 0595d887c..3f2f09728 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java @@ -16,7 +16,7 @@ import com.fr.stable.os.support.OSBasedAction; public class PMDialogAction implements OSBasedAction { private static String PLUGIN_MANAGER_ROUTE = "#management/plugin"; @Override - public void execute() { + public void execute(Object... objects) { if(Arch.getArch() == Arch.ARM){ DesignUtils.visitEnvServerByParameters( PLUGIN_MANAGER_ROUTE,null,null); return; diff --git a/designer-base/src/main/java/com/fr/design/os/impl/RestartAction.java b/designer-base/src/main/java/com/fr/design/os/impl/RestartAction.java new file mode 100644 index 000000000..b18254c11 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/os/impl/RestartAction.java @@ -0,0 +1,74 @@ +package com.fr.design.os.impl; + +import com.fr.log.FineLoggerFactory; +import com.fr.stable.ArrayUtils; +import com.fr.stable.StableUtils; +import com.fr.stable.os.OperatingSystem; +import com.fr.stable.os.support.OSBasedAction; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class RestartAction implements OSBasedAction { + @Override + public void execute(Object... objects) { + String[] filesToBeDelete = (String[])objects; + String installHome = StableUtils.getInstallHome(); + try{ + if (OperatingSystem.isMacos()) { + restartInMacOS(installHome, filesToBeDelete); + } else if(OperatingSystem.isWindows()){ + restartInWindows(installHome, filesToBeDelete); + }else{ + //增加一个Linux系统 + restartInLinux(installHome,filesToBeDelete); + } + }catch(Exception e){ + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + + } + + private static void restartInMacOS(String installHome, String[] filesToBeDelete) throws Exception { + ProcessBuilder builder = new ProcessBuilder(); + List commands = new ArrayList(); + commands.add("open"); + commands.add(installHome + File.separator + "bin" + File.separator + "restart.app"); + if (ArrayUtils.isNotEmpty(filesToBeDelete)) { + commands.add("--args"); + commands.add(StableUtils.join(filesToBeDelete, "+")); + } + builder.command(commands); + builder.start(); + } + + private static void restartInWindows(String installHome, String[] filesToBeDelete) throws Exception { + ProcessBuilder builder = new ProcessBuilder(); + List commands = new ArrayList(); + commands.add(installHome + File.separator + "bin" + File.separator + "restart.exe"); + if (ArrayUtils.isNotEmpty(filesToBeDelete)) { + commands.add(StableUtils.join(filesToBeDelete, "+")); + } + builder.command(commands); + builder.start(); + } + + private static void restartInLinux(String installHome, String[] filesToBeDelete) throws Exception { + ProcessBuilder builder = new ProcessBuilder(); + List commands = new ArrayList(); + //现在先写的是restart.sh + commands.add(installHome + File.separator + "bin" + File.separator + "restart.sh"); + if (ArrayUtils.isNotEmpty(filesToBeDelete)) { + commands.add(StableUtils.join(filesToBeDelete, "+")); + } + builder.command(commands); + builder.start(); + } + + + + + + + +} diff --git a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java index dc7ea4954..31aac9aa1 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java @@ -1,8 +1,12 @@ package com.fr.design.os.impl; +import com.fr.base.FRContext; +import com.fr.general.GeneralContext; import com.fr.stable.os.Arch; import com.fr.stable.os.OperatingSystem; import com.fr.stable.os.support.SupportOS; +import com.fr.workspace.WorkContext; + /** * @author pengda * @date 2019/10/9 @@ -32,6 +36,28 @@ public enum SupportOSImpl implements SupportOS { public boolean support(){ return !OperatingSystem.isLinux(); } + }, + /** + * 自动更新推送 + */ + AUTOPUSHUPDATE{ + @Override + public boolean support() { + boolean isLocalEnv = WorkContext.getCurrent().isLocal(); + boolean isChineseEnv = GeneralContext.isChineseEnv(); + boolean isLinux = OperatingSystem.isLinux(); + // 远程设计和非中文环境以及Linux环境,都不生效 + return isLocalEnv && isChineseEnv && !isLinux; + } + }, + /** + * BBS窗口 + */ + BBSDIALOG{ + @Override + public boolean support() { + return FRContext.isChineseEnv() && !OperatingSystem.isMacos() && Arch.getArch() != Arch.ARM; + } } } diff --git a/designer-base/src/main/java/com/fr/design/os/impl/UpdateDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/UpdateDialogAction.java index f0a2a0ee8..64f8f2112 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/UpdateDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/UpdateDialogAction.java @@ -14,7 +14,7 @@ import com.fr.stable.os.support.OSBasedAction; public class UpdateDialogAction implements OSBasedAction { private static String UPDATE_ROUTE = "#management/backup"; @Override - public void execute() { + public void execute(Object... objects) { if(!OperatingSystem.isLinux()) { UpdateMainDialog dialog = new UpdateMainDialog(DesignerContext.getDesignerFrame()); dialog.showDialog(); diff --git a/designer-base/src/main/java/com/fr/design/update/push/DesignerPushUpdateManager.java b/designer-base/src/main/java/com/fr/design/update/push/DesignerPushUpdateManager.java index 0d2b21051..afec652b3 100644 --- a/designer-base/src/main/java/com/fr/design/update/push/DesignerPushUpdateManager.java +++ b/designer-base/src/main/java/com/fr/design/update/push/DesignerPushUpdateManager.java @@ -4,6 +4,7 @@ import com.fr.concurrent.NamedThreadFactory; import com.fr.design.event.DesignerOpenedListener; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerFrame; +import com.fr.design.os.impl.SupportOSImpl; import com.fr.design.update.ui.dialog.UpdateMainDialog; import com.fr.general.CloudCenter; import com.fr.general.GeneralContext; @@ -13,6 +14,8 @@ import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.stable.os.OperatingSystem; +import com.fr.stable.os.support.OSBasedAction; +import com.fr.stable.os.support.OSSupportCenter; import com.fr.workspace.WorkContext; import java.util.concurrent.ExecutorService; @@ -130,8 +133,8 @@ public class DesignerPushUpdateManager { initUpdateInfo(currentVersion, latestVersion); } } - - return isAutoPushUpdateSupported() && updateInfo.hasNewPushVersion(); + return SupportOSImpl.AUTOPUSHUPDATE.support() && updateInfo.hasNewPushVersion(); + // return isAutoPushUpdateSupported(). && updateInfo.hasNewPushVersion(); } private boolean isValidJarVersion(String fullCurrentVersion, String fullLatestVersion) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java index 5f0df0d4e..6e423e172 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -16,6 +16,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.os.impl.SupportOSImpl; import com.fr.design.upm.event.CertificateEvent; import com.fr.design.utils.concurrent.ThreadFactoryBuilder; import com.fr.design.utils.gui.GUICoreUtils; @@ -28,11 +29,8 @@ import com.fr.general.DateUtils; import com.fr.general.http.HttpClient; import com.fr.log.FineLoggerFactory; import com.fr.stable.EncodeConstants; -import com.fr.stable.os.Arch; -import com.fr.stable.os.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; - import javax.swing.SwingConstants; import java.awt.Cursor; import java.awt.Desktop; @@ -144,7 +142,7 @@ public class UserInfoLabel extends UILabel { public void run() { // vito:最新mac10.12和javafx弹出框初始化时会有大几率卡死在native方法,这里先屏蔽一下。 //ARM下暂时也不能用javafx - if (!shouldShowBBSDialog()) { + if (!SupportOSImpl.BBSDIALOG.support()) { return; } String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); @@ -244,10 +242,6 @@ public class UserInfoLabel extends UILabel { } } - private static boolean shouldShowBBSDialog(){ - return FRContext.isChineseEnv() && !OperatingSystem.isMacos() && Arch.getArch() != Arch.ARM; - } - public String getUserName() { return userName; } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index 38e6c4a6a..04d42d9ed 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -130,11 +130,10 @@ public class DesignerActivator extends Activator { DesignerSocketIO.update(); OSSupportCenter.buildAction(new OSBasedAction() { @Override - public void execute() { + public void execute(Object... objects) { UserInfoPane.getInstance().updateBBSUserInfo(); } }, SupportOSImpl.USERINFOPANE); - storePassport(); AlphaFineHelper.switchConfig4Locale(); }