package com.fr.startup.ui; import com.fr.design.DesignerEnvManager; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.third.guava.collect.Lists; import java.util.ArrayList; 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 workspaceInfos = new ArrayList<>(); private Map> recentFilesMap = new HashMap<>(); private Runnable openLastTemplateRunnable; private Runnable createNewTemplateRunnable; private Runnable openEmptyTemplateRunnable; public static StartupPageModel create() { DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); Iterator envNameIterator = envManager.getEnvNameIterator(); List infos = Lists.newArrayList(envNameIterator) .stream() .map((e) -> { DesignerWorkspaceInfo workspaceInfo = envManager.getWorkspaceInfo(e); return new StartupWorkspaceBean(e, workspaceInfo.getPath(), workspaceInfo.getType()); }) .collect(Collectors.toList()); Map> recentFileMap = new HashMap<>(); for (StartupWorkspaceBean info : infos) { String name = info.getName(); List recentFiles = envManager.getRecentOpenedFilePathList4Env(name); recentFileMap.put(name, recentFiles); } return new StartupPageModel(infos, recentFileMap); } public StartupPageModel(List workspaceInfos, Map> 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 getWorkspaceInfos() { return workspaceInfos; } public void setWorkspaceInfos(List workspaceInfos) { this.workspaceInfos = workspaceInfos; } public Map> getRecentFilesMap() { return recentFilesMap; } public void setRecentFilesMap(Map> 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; } }