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.
130 lines
4.6 KiB
130 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(); |
|
return new StartupWorkspaceBean(e, connection.getUrl(), 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; |
|
}; |
|
} |
|
}
|
|
|