帆软报表设计器源代码。
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

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