You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.1 KiB
218 lines
5.1 KiB
package com.fr.start.common; |
|
|
|
import com.fr.design.DesignerEnvManager; |
|
import com.fr.design.env.DesignerWorkspaceInfo; |
|
import com.fr.design.env.DesignerWorkspaceType; |
|
import com.fr.file.FileFILE; |
|
import com.fr.start.module.StartupArgs; |
|
import com.fr.startup.metric.DesignerMetrics; |
|
import com.fr.startup.ui.StartupPageModel; |
|
import com.fr.third.guava.collect.Lists; |
|
import com.fr.third.org.apache.commons.lang3.time.StopWatch; |
|
|
|
import java.util.ArrayList; |
|
import java.util.Iterator; |
|
|
|
/** |
|
* 启动页上下文 |
|
* |
|
* created by Harrison on 2022/06/22 |
|
**/ |
|
public class DesignerStartupContext { |
|
|
|
/** |
|
* 可以启动 |
|
*/ |
|
private boolean enabled = true; |
|
|
|
/** |
|
* 启动参数 |
|
*/ |
|
private StartupArgs startupArgs; |
|
|
|
/** |
|
* 启动数据 |
|
*/ |
|
private StartupPageModel startupPageModel; |
|
|
|
/** |
|
* 设计器启动埋点 |
|
*/ |
|
private final DesignerMetrics designerMetrics = new DesignerMetrics(); |
|
|
|
/** |
|
* 是否在起始页打开的等待过程中 |
|
*/ |
|
private boolean onWaiting = false; |
|
|
|
/** |
|
* 是否在启动中 |
|
*/ |
|
private boolean onStartup = true; |
|
|
|
/** |
|
* 是否在预热中 |
|
*/ |
|
private boolean onWarmup = false; |
|
|
|
/** |
|
* 打开上一次的文件 |
|
*/ |
|
private boolean openLastFile; |
|
|
|
/** |
|
* 打开空设计器 |
|
*/ |
|
private boolean openEmpty; |
|
|
|
/** |
|
* 直接创建一个新模板 |
|
*/ |
|
private boolean createNew; |
|
|
|
/** |
|
* 启动的模板 |
|
*/ |
|
private FileFILE startingTemplateFile; |
|
|
|
/** |
|
* 时间记录 |
|
*/ |
|
private static StopWatch STOP_WATCH = new StopWatch(); |
|
|
|
public static DesignerStartupContext getInstance() { |
|
return StartupContextHolder.INSTANCE; |
|
} |
|
|
|
public boolean isEnabled() { |
|
return enabled; |
|
} |
|
|
|
public void setEnabled(boolean enabled) { |
|
this.enabled = enabled; |
|
} |
|
|
|
private static class StartupContextHolder { |
|
private static final DesignerStartupContext INSTANCE = new DesignerStartupContext(); |
|
} |
|
|
|
public static StopWatch getRecorder() { |
|
return STOP_WATCH; |
|
} |
|
|
|
public DesignerMetrics getDesignerMetrics() { |
|
return designerMetrics; |
|
} |
|
|
|
/* 启动模式 */ |
|
|
|
public FileFILE getStartingTemplateFile() { |
|
return startingTemplateFile; |
|
} |
|
|
|
public void setStartingTemplateFile(FileFILE startingTemplateFile) { |
|
this.startingTemplateFile = startingTemplateFile; |
|
} |
|
|
|
/** |
|
* 展示启动页 |
|
* 1. 判断当前的工作目录数量 |
|
* 2. 判断是否是 demo、还是打开目标文件 |
|
* 3. 功能是否开启 |
|
* |
|
* @return 是/否 |
|
*/ |
|
public boolean isShowStartupPage() { |
|
|
|
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); |
|
Iterator<String> envNameIterator = envManager.getEnvNameIterator(); |
|
ArrayList<String> envs = Lists.newArrayList(envNameIterator); |
|
return !startupArgs.isDemo() && DesignerStartupUtil.convertArgs2FILE(startupArgs.get()) == null && !envs.isEmpty() && envManager.isStartupPageEnabled() && enabled; |
|
} |
|
|
|
/* 预热相关 */ |
|
|
|
public boolean onWarmup() { |
|
|
|
return this.onWarmup; |
|
} |
|
|
|
public boolean canWarmup() { |
|
|
|
String curEnvName = DesignerEnvManager.getEnvManager().getCurEnvName(); |
|
DesignerWorkspaceInfo workspaceInfo = DesignerEnvManager.getEnvManager().getWorkspaceInfo(curEnvName); |
|
boolean valid = false; |
|
try { |
|
valid = workspaceInfo.checkValid(); |
|
} catch (Exception ignore) { |
|
} |
|
return workspaceInfo.getType() == DesignerWorkspaceType.Local && valid; |
|
} |
|
|
|
public void setStartupPageModel(StartupPageModel startupPageModel) { |
|
this.startupPageModel = startupPageModel; |
|
} |
|
|
|
public StartupPageModel getStartupPageModel() { |
|
|
|
return startupPageModel; |
|
} |
|
|
|
public boolean isOnWaiting() { |
|
return onWaiting; |
|
} |
|
|
|
public void setOnWaiting(boolean onWaiting) { |
|
this.onWaiting = onWaiting; |
|
} |
|
|
|
public boolean isSupport() { |
|
return onStartup && isShowStartupPage(); |
|
} |
|
|
|
public boolean isOnStartup() { |
|
return onStartup; |
|
} |
|
|
|
public void setOnStartup(boolean onStartup) { |
|
this.onStartup = onStartup; |
|
} |
|
|
|
/* 文件相关*/ |
|
|
|
public boolean isOpenLastFile() { |
|
|
|
return this.openLastFile; |
|
} |
|
|
|
public boolean isOpenEmpty() { |
|
|
|
return this.openEmpty; |
|
} |
|
|
|
/* set */ |
|
|
|
public void setOnWarmup(boolean onWarmup) { |
|
this.onWarmup = onWarmup; |
|
} |
|
|
|
public void setOpenLastFile(boolean openLastFile) { |
|
this.openLastFile = openLastFile; |
|
} |
|
|
|
public void setOpenEmpty(boolean openEmpty) { |
|
this.openEmpty = openEmpty; |
|
} |
|
|
|
public boolean isCreateNew() { |
|
return createNew; |
|
} |
|
|
|
public void setCreateNew(boolean createNew) { |
|
this.createNew = createNew; |
|
} |
|
|
|
public void setStartupArgs(StartupArgs startupArgs) { |
|
this.startupArgs = startupArgs; |
|
} |
|
}
|
|
|