Browse Source

REPORT-19946 Linux设计器

research/11.0
pengda 5 years ago
parent
commit
b4ba0de716
  1. 17
      designer-base/src/main/java/com/fr/design/RestartHelper.java
  2. 9
      designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java
  3. 2
      designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java
  4. 4
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  5. 2
      designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  6. 2
      designer-base/src/main/java/com/fr/design/os/impl/DatabaseDialogAction.java
  7. 2
      designer-base/src/main/java/com/fr/design/os/impl/DemoAction.java
  8. 2
      designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java
  9. 74
      designer-base/src/main/java/com/fr/design/os/impl/RestartAction.java
  10. 26
      designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java
  11. 2
      designer-base/src/main/java/com/fr/design/os/impl/UpdateDialogAction.java
  12. 7
      designer-base/src/main/java/com/fr/design/update/push/DesignerPushUpdateManager.java
  13. 10
      designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java
  14. 3
      designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java

17
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<String> commands = new ArrayList<String>();
commands.add("open");
@ -224,5 +221,5 @@ public class RestartHelper {
}
builder.command(commands);
builder.start();
}
}*/
}

9
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);

2
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);

4
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);

2
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);

2
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 {

2
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.");

2
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;

74
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<String> commands = new ArrayList<String>();
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<String> commands = new ArrayList<String>();
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<String> commands = new ArrayList<String>();
//现在先写的是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();
}
}

26
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;
}
}
}

2
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();

7
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) {

10
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;
}

3
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();
}

Loading…
Cancel
Save