From 0b2406d64c1a6094ef6f37e3a091df1cfd3e309f Mon Sep 17 00:00:00 2001 From: pengda Date: Fri, 27 Sep 2019 17:51:55 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-19946=20=20Linux=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/RestartHelper.java | 21 ++++++++++++++++--- .../actions/server/ConnectionListAction.java | 3 ++- .../actions/server/PluginManagerAction.java | 12 ++++++++--- .../gui/iprogressbar/ProgressDialog.java | 5 ++++- .../fr/design/mainframe/DesignerFrame.java | 12 +++++++++-- .../mainframe/toolbar/ToolBarMenuDock.java | 3 ++- .../update/actions/SoftwareUpdateAction.java | 13 +++++++++--- .../push/DesignerPushUpdateManager.java | 11 +++++----- .../src/main/java/com/fr/start/Demo.java | 20 +++++++++++++----- .../design/mainframe/bbs/UserInfoLabel.java | 10 +++++++-- .../fr/start/module/DesignerActivator.java | 5 ++++- 11 files changed, 88 insertions(+), 27 deletions(-) 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 7f2aeeb78..09fcf83b8 100644 --- a/designer-base/src/main/java/com/fr/design/RestartHelper.java +++ b/designer-base/src/main/java/com/fr/design/RestartHelper.java @@ -5,7 +5,7 @@ import com.fr.general.ComparatorUtils; import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; -import com.fr.stable.OperatingSystem; +import com.fr.stable.os.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -168,10 +168,13 @@ public class RestartHelper { }catch (Exception e){ FineLoggerFactory.getLogger().error(e.getMessage(), e); } - if (OperatingSystem.isMacOS()) { + if (OperatingSystem.isMacos()) { restartInMacOS(installHome, filesToBeDelete); - } else { + } else if(OperatingSystem.isWindows()){ restartInWindows(installHome, filesToBeDelete); + }else{ + //增加一个Linux系统 + restartInLinux(installHome,filesToBeDelete); } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); @@ -210,4 +213,16 @@ public class RestartHelper { 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(); + } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java index 76b11b2ff..13050da33 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/ConnectionListAction.java @@ -16,6 +16,7 @@ import com.fr.design.menu.MenuKeySet; import com.fr.design.dcm.UniversalDatabaseOpener; import com.fr.file.ConnectionConfig; import com.fr.general.IOUtils; +import com.fr.stable.os.OperatingSystem; import com.fr.transaction.CallBackAdaptor; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; @@ -60,7 +61,7 @@ public class ConnectionListAction extends UpdateAction { * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { - if (ServerPreferenceConfig.getInstance().isUseUniverseDBM()) { + if (ServerPreferenceConfig.getInstance().isUseUniverseDBM() && !OperatingSystem.isLinux()) { UniversalDatabaseOpener.showUniverseDatabaseDialog(); } else { openDesignDatabaseManager(); diff --git a/designer-base/src/main/java/com/fr/design/actions/server/PluginManagerAction.java b/designer-base/src/main/java/com/fr/design/actions/server/PluginManagerAction.java index 1b7d7bbc4..6739bbef2 100644 --- a/designer-base/src/main/java/com/fr/design/actions/server/PluginManagerAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/server/PluginManagerAction.java @@ -5,7 +5,10 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.extra.WebViewDlgHelper; import com.fr.design.menu.MenuKeySet; import com.fr.design.upm.UpmFinder; +import com.fr.design.utils.DesignUtils; import com.fr.general.IOUtils; +import com.fr.stable.os.Arch; +import com.fr.stable.os.OperatingSystem; import javax.swing.*; import java.awt.event.ActionEvent; @@ -16,18 +19,21 @@ import java.awt.event.ActionEvent; * @since 8.0 */ public class PluginManagerAction extends UpdateAction { - + private static String PLUGIN_MANAGER_ROUTE = "#management/plugin"; public PluginManagerAction() { this.setMenuKeySet(PLUGIN_MANAGER); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/server/plugin.png")); } - @Override public void actionPerformed(ActionEvent e) { // 可以启用新版本的插件商店(使用JxBrowser作为容器) - if (ServerPreferenceConfig.getInstance().isUseOptimizedUPM()) { + if(Arch.getArch() == Arch.ARM){ + DesignUtils.visitEnvServerByParameters( PLUGIN_MANAGER_ROUTE,null,null); + return; + } + if (ServerPreferenceConfig.getInstance().isUseOptimizedUPM() && !OperatingSystem.isLinux()) { UpmFinder.showUPMDialog(); } else { WebViewDlgHelper.createPluginDialog(); 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 a9b470a58..74b79bb17 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 @@ -5,6 +5,7 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ilable.UILabel; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.FRFont; +import com.fr.stable.os.OperatingSystem; import javax.swing.JDialog; import javax.swing.JLabel; @@ -28,7 +29,9 @@ public class ProgressDialog extends UIDialog { setUndecorated(true); setSize(parent.getSize()); setLocationRelativeTo(null); - setOpacity(0.5f); + if(!OperatingSystem.isLinux()) { + setOpacity(0.5f); + } initComponent(); } 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 b422be44e..6bd26479f 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 @@ -58,6 +58,7 @@ import com.fr.stable.OperatingSystem; import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.stable.image4j.codec.ico.ICODecoder; +import com.fr.stable.os.Arch; import com.fr.stable.project.ProjectConstants; import com.fr.start.OemHandler; import com.fr.workspace.WorkContext; @@ -456,13 +457,20 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta northEastPane.add(LogMessageBar.getInstance()); TitlePlaceProcessor processor = ExtraDesignClassManager.getInstance().getSingle(TitlePlaceProcessor.MARK_STRING); if (processor != null) { - processor.hold(northEastPane, LogMessageBar.getInstance(), ad.createBBSLoginPane()); + if(Arch.getArch() != Arch.ARM) { + processor.hold(northEastPane, LogMessageBar.getInstance(), ad.createBBSLoginPane()); + }else{ + //暂时不知道具体插件,先传null + processor.hold(northEastPane, LogMessageBar.getInstance(), null); + } } northEastPane.add(ad.createAlphaFinePane()); if (!DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isEnabled()) { ad.createAlphaFinePane().setVisible(false); } - northEastPane.add(ad.createBBSLoginPane()); + if(Arch.getArch() != Arch.ARM) { + northEastPane.add(ad.createBBSLoginPane()); + } } public void initTitleIcon() { 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 262dbe6d5..43acd1f82 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 @@ -70,6 +70,7 @@ import com.fr.plugin.observer.PluginEventListener; import com.fr.plugin.observer.PluginEventType; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import com.fr.stable.os.OperatingSystem; import com.fr.start.OemHandler; import com.fr.workspace.WorkContext; import org.jetbrains.annotations.Nullable; @@ -540,7 +541,7 @@ public abstract class ToolBarMenuDock { } shortCuts.add(SeparatorDef.DEFAULT); - if (DesignerEnvManager.getEnvManager().isOpenDebug()) { + if (DesignerEnvManager.getEnvManager().isOpenDebug() && !OperatingSystem.isLinux()) { shortCuts.add(new FineUIAction()); } shortCuts.add(new AboutAction()); diff --git a/designer-base/src/main/java/com/fr/design/update/actions/SoftwareUpdateAction.java b/designer-base/src/main/java/com/fr/design/update/actions/SoftwareUpdateAction.java index cb412dcb1..28eb2217d 100644 --- a/designer-base/src/main/java/com/fr/design/update/actions/SoftwareUpdateAction.java +++ b/designer-base/src/main/java/com/fr/design/update/actions/SoftwareUpdateAction.java @@ -4,6 +4,8 @@ import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; import com.fr.design.mainframe.DesignerContext; import com.fr.design.update.ui.dialog.UpdateMainDialog; +import com.fr.design.utils.DesignUtils; +import com.fr.stable.os.OperatingSystem; import java.awt.event.ActionEvent; @@ -12,7 +14,7 @@ import java.awt.event.ActionEvent; */ public class SoftwareUpdateAction extends UpdateAction { - + private static String UPDATE_ROUTE = "#management/backup"; public SoftwareUpdateAction() { setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_UpdateAndUpgrade")); setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/update/update_new.png")); @@ -26,8 +28,13 @@ public class SoftwareUpdateAction extends UpdateAction { */ @Override public void actionPerformed(ActionEvent e) { - UpdateMainDialog dialog = new UpdateMainDialog(DesignerContext.getDesignerFrame()); - dialog.showDialog(); + //说之后更新升级要用jxbrowser,Linux下进平台 + if(!OperatingSystem.isLinux()) { + UpdateMainDialog dialog = new UpdateMainDialog(DesignerContext.getDesignerFrame()); + dialog.showDialog(); + }else{ + DesignUtils.visitEnvServerByParameters( UPDATE_ROUTE,null,null); + } } } 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 44cfb146b..0d2b21051 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 @@ -12,6 +12,7 @@ import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import com.fr.stable.os.OperatingSystem; import com.fr.workspace.WorkContext; import java.util.concurrent.ExecutorService; @@ -87,13 +88,13 @@ public class DesignerPushUpdateManager { public boolean isAutoPushUpdateSupported() { boolean isLocalEnv = WorkContext.getCurrent().isLocal(); boolean isChineseEnv = GeneralContext.isChineseEnv(); - - return isAutoPushUpdateSupported(isLocalEnv, isChineseEnv); + boolean isLinux = OperatingSystem.isLinux(); + return isAutoPushUpdateSupported(isLocalEnv, isChineseEnv,isLinux); } - private boolean isAutoPushUpdateSupported(boolean isLocalEnv, boolean isChineseEnv) { - // 远程设计和非中文环境,都不生效 - return isLocalEnv && isChineseEnv; + private boolean isAutoPushUpdateSupported(boolean isLocalEnv, boolean isChineseEnv,boolean isLinux) { + // 远程设计和非中文环境以及Linux环境,都不生效 + return isLocalEnv && isChineseEnv && !isLinux; } /** diff --git a/designer-base/src/main/java/com/fr/start/Demo.java b/designer-base/src/main/java/com/fr/start/Demo.java index bac5a9b0f..820d71ccf 100644 --- a/designer-base/src/main/java/com/fr/start/Demo.java +++ b/designer-base/src/main/java/com/fr/start/Demo.java @@ -2,7 +2,7 @@ package com.fr.start; import com.fr.log.FineLoggerFactory; -import com.fr.stable.OperatingSystem; +import com.fr.stable.os.OperatingSystem; import com.fr.stable.StableUtils; import java.io.IOException; @@ -17,13 +17,15 @@ public class Demo { String executorPath; - if (OperatingSystem.isMacOS()) { + if (OperatingSystem.isMacos()) { executorPath = StableUtils.pathJoin(installHome, "bin", "designer.app"); - } else { + } else if(OperatingSystem.isWindows()){ executorPath = StableUtils.pathJoin(installHome, "bin", "designer.exe demo"); + }else{ + executorPath = StableUtils.pathJoin(installHome, "bin", "designer.sh demo"); } - if (OperatingSystem.isMacOS()) { + if (OperatingSystem.isMacos()) { ProcessBuilder builder = new ProcessBuilder(); builder.command("open", "-a", executorPath, "--args", "demo"); try { @@ -31,7 +33,7 @@ public class Demo { } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } - } else { + } else if(OperatingSystem.isWindows()){ // ProcessBuilder这种方式在window下报错:系统找不到指定文件 Runtime rt = Runtime.getRuntime(); try { @@ -39,6 +41,14 @@ public class Demo { } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } + }else{ + //先用和win一样的方式 + Runtime rt = Runtime.getRuntime(); + try { + rt.exec(executorPath); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } } System.exit(0); 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 7fe8b8ff8..5f0df0d4e 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 @@ -28,7 +28,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.OperatingSystem; +import com.fr.stable.os.Arch; +import com.fr.stable.os.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -142,7 +143,8 @@ public class UserInfoLabel extends UILabel { @Override public void run() { // vito:最新mac10.12和javafx弹出框初始化时会有大几率卡死在native方法,这里先屏蔽一下。 - if (!FRContext.isChineseEnv() || OperatingSystem.isMacOS()) { + //ARM下暂时也不能用javafx + if (!shouldShowBBSDialog()) { return; } String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); @@ -242,6 +244,10 @@ 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 822a332f3..ddb268ade 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 @@ -91,6 +91,7 @@ import com.fr.report.cell.painter.CellImagePainter; import com.fr.stable.ArrayUtils; import com.fr.stable.ParameterProvider; import com.fr.stable.bridge.StableFactory; +import com.fr.stable.os.Arch; import com.fr.stable.plugin.ExtraDesignClassManagerProvider; import com.fr.stable.script.CalculatorProviderContext; import com.fr.stable.script.ValueConverter; @@ -125,7 +126,9 @@ public class DesignerActivator extends Activator { designerModuleStart(); loadLogAppender(); DesignerSocketIO.update(); - UserInfoPane.getInstance().updateBBSUserInfo(); + if(Arch.getArch() != Arch.ARM) { + UserInfoPane.getInstance().updateBBSUserInfo(); + } storePassport(); AlphaFineHelper.switchConfig4Locale(); }