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

131 lines
4.6 KiB

package com.fr.startup.ui;
import com.fr.design.DesignerEnvManager;
import com.fr.design.env.DesignerWorkspaceInfo;
import com.fr.design.env.DesignerWorkspaceType;
import com.fr.stable.StringUtils;
import com.fr.third.guava.collect.Lists;
import com.fr.workspace.connect.WorkspaceConnectionInfo;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* created by Harrison on 2022/07/06
**/
public class StartupPageModel {
private StartupWorkspaceBean selectWorkspaceInfo;
private List<StartupWorkspaceBean> workspaceInfos = new ArrayList<>();
private Map<String, List<String>> recentFilesMap = new HashMap<>();
private Runnable openLastTemplateRunnable;
private Runnable createNewTemplateRunnable;
private Runnable openEmptyTemplateRunnable;
public static StartupPageModel create() {
DesignerEnvManager envManager = DesignerEnvManager.getEnvManager();
String curEnvName = envManager.getCurEnvName();
Iterator<String> envNameIterator = envManager.getEnvNameIterator();
Comparator<StartupWorkspaceBean> startupWorkspaceBeanComparator = convertComparator(curEnvName);
List<StartupWorkspaceBean> infos = Lists.newArrayList(envNameIterator)
.stream()
.map((e) -> {
DesignerWorkspaceInfo workspaceInfo = envManager.getWorkspaceInfo(e);
if (workspaceInfo.getType() == DesignerWorkspaceType.Remote) {
WorkspaceConnectionInfo connection = workspaceInfo.getConnection();
String remoteAddress = StartupPageUtil.getRemoteAddress(connection.getUrl());
return new StartupWorkspaceBean(e, remoteAddress, workspaceInfo.getType());
} else {
return new StartupWorkspaceBean(e, workspaceInfo.getPath(), workspaceInfo.getType());
}
})
.sorted(startupWorkspaceBeanComparator)
.collect(Collectors.toList());
Map<String, List<String>> recentFileMap = new HashMap<>();
for (StartupWorkspaceBean info : infos) {
String name = info.getName();
List<String> recentFiles = envManager.getRecentOpenedFilePathList4Env(name);
recentFileMap.put(name, recentFiles);
}
return new StartupPageModel(infos, recentFileMap);
}
public StartupPageModel(List<StartupWorkspaceBean> workspaceInfos, Map<String, List<String>> recentFilesMap) {
this.selectWorkspaceInfo = workspaceInfos.get(0);
this.workspaceInfos = workspaceInfos;
this.recentFilesMap = recentFilesMap;
}
public StartupWorkspaceBean getSelectWorkspaceInfo() {
return selectWorkspaceInfo;
}
public void setSelectWorkspaceInfo(StartupWorkspaceBean selectWorkspaceInfo) {
this.selectWorkspaceInfo = selectWorkspaceInfo;
}
public List<StartupWorkspaceBean> getWorkspaceInfos() {
return workspaceInfos;
}
public void setWorkspaceInfos(List<StartupWorkspaceBean> workspaceInfos) {
this.workspaceInfos = workspaceInfos;
}
public Map<String, List<String>> getRecentFilesMap() {
return recentFilesMap;
}
public void setRecentFilesMap(Map<String, List<String>> recentFilesMap) {
this.recentFilesMap = recentFilesMap;
}
public Runnable getOpenLastTemplateRunnable() {
return openLastTemplateRunnable;
}
public void setOpenLastTemplateRunnable(Runnable openLastTemplateRunnable) {
this.openLastTemplateRunnable = openLastTemplateRunnable;
}
public Runnable getCreateNewTemplateRunnable() {
return createNewTemplateRunnable;
}
public void setCreateNewTemplateRunnable(Runnable createNewTemplateRunnable) {
this.createNewTemplateRunnable = createNewTemplateRunnable;
}
public Runnable getOpenEmptyTemplateRunnable() {
return openEmptyTemplateRunnable;
}
public void setOpenEmptyTemplateRunnable(Runnable openEmptyTemplateRunnable) {
this.openEmptyTemplateRunnable = openEmptyTemplateRunnable;
}
private static Comparator<StartupWorkspaceBean> convertComparator(String curEnvName) {
return (o1, o2) -> {
if (StringUtils.equals(curEnvName, o1.getName())) {
return -1;
}
if (StringUtils.equals(curEnvName, o2.getName())) {
return 1;
}
return 0;
};
}
}