Browse Source

REPORT-9668&REPORT-9656 切换环境恢复最近打开

master
rinoux 6 years ago
parent
commit
35db49e2d2
  1. 99
      designer-base/src/main/java/com/fr/design/DesignerEnvManager.java
  2. 5
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  3. 4
      designer-base/src/main/java/com/fr/file/FILEFactory.java

99
designer-base/src/main/java/com/fr/design/DesignerEnvManager.java

@ -52,6 +52,7 @@ import java.io.StringReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -75,7 +76,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private Rectangle windowBounds = null; // window bounds. private Rectangle windowBounds = null; // window bounds.
private String DialogCurrentDirectory = null; private String DialogCurrentDirectory = null;
private String CurrentDirectoryPrefix = null; private String CurrentDirectoryPrefix = null;
private List<String> recentOpenedFilePathList = new ArrayList<String>(); private Map<String, List<String>> recentOpenedFileListMap = new HashMap<>();
private List<String> tempRecentOpenedFilePathList = new ArrayList<String>();
private boolean showPaintToolBar = true; private boolean showPaintToolBar = true;
private int maxNumberOrPreviewRow = 200; private int maxNumberOrPreviewRow = 200;
// name和Env的键值对 // name和Env的键值对
@ -193,7 +195,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
return designerEnvManager; return designerEnvManager;
} }
public ColorSelectConfigManager getColorConfigManager(){ public ColorSelectConfigManager getColorConfigManager() {
return this.configManager; return this.configManager;
} }
@ -201,7 +203,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
if (designerEnvManager == null || designerEnvManager.nameEnvMap.size() > 0) { if (designerEnvManager == null || designerEnvManager.nameEnvMap.size() > 0) {
return; return;
} }
String installHome = StableUtils.getInstallHome(); String installHome = StableUtils.getInstallHome();
if (installHome != null && !".".equals(installHome)) { if (installHome != null && !".".equals(installHome)) {
String name = Inter.getLocText("FR-Engine_DEFAULT"); String name = Inter.getLocText("FR-Engine_DEFAULT");
String envPath = designerEnvManager.getDefaultenvPath(installHome); String envPath = designerEnvManager.getDefaultenvPath(installHome);
@ -339,7 +341,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
// 清空前一个版本中的工作目录和最近打开 // 清空前一个版本中的工作目录和最近打开
nameEnvMap = new ListMap<String, DesignerWorkspaceInfo>(); nameEnvMap = new ListMap<String, DesignerWorkspaceInfo>();
recentOpenedFilePathList = new ArrayList<String>();
curEnvName = null; curEnvName = null;
designerEnvManager.saveXMLFile(); designerEnvManager.saveXMLFile();
} }
@ -533,10 +534,11 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
private String getDefaultenvPath(String installHome){ private String getDefaultenvPath(String installHome) {
//这里需要转成反斜杠和生成默认路径一致 //这里需要转成反斜杠和生成默认路径一致
return new File(StableUtils.pathJoin(installHome, WEB_NAME, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME)).getPath(); return new File(StableUtils.pathJoin(installHome, WEB_NAME, ProjectConstants.WEBAPP_NAME, ProjectConstants.WEBINF_NAME)).getPath();
} }
/** /**
* 设置当前环境为默认 * 设置当前环境为默认
*/ */
@ -825,7 +827,17 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* 返回最近打开的文件路径列表 * 返回最近打开的文件路径列表
*/ */
public List<String> getRecentOpenedFilePathList() { public List<String> getRecentOpenedFilePathList() {
return this.recentOpenedFilePathList;
if (StringUtils.isEmpty(getCurEnvName())) {
return tempRecentOpenedFilePathList;
} else {
if (!recentOpenedFileListMap.containsKey(getCurEnvName())) {
recentOpenedFileListMap.put(getCurEnvName(), tempRecentOpenedFilePathList);
}
}
return recentOpenedFileListMap.get(getCurEnvName());
} }
/** /**
@ -835,11 +847,11 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
*/ */
public void addRecentOpenedFilePath(String filePath) { public void addRecentOpenedFilePath(String filePath) {
// 先删除. // 先删除.
if (this.recentOpenedFilePathList.contains(filePath)) { if (getRecentOpenedFilePathList().contains(filePath)) {
this.recentOpenedFilePathList.remove(filePath); getRecentOpenedFilePathList().remove(filePath);
} }
this.recentOpenedFilePathList.add(0, filePath); getRecentOpenedFilePathList().add(0, filePath);
checkRecentOpenedFileNum(); checkRecentOpenedFileNum();
} }
@ -850,19 +862,21 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* @param newPath 新的路径 * @param newPath 新的路径
*/ */
public void replaceRecentOpenedFilePath(String oldPath, String newPath) { public void replaceRecentOpenedFilePath(String oldPath, String newPath) {
if (this.recentOpenedFilePathList.contains(oldPath)) { List<String> list = getRecentOpenedFilePathList();
int index = recentOpenedFilePathList.indexOf(oldPath); if (list.contains(oldPath)) {
this.recentOpenedFilePathList.remove(oldPath); int index = getRecentOpenedFilePathList().indexOf(oldPath);
this.recentOpenedFilePathList.add(index, newPath); list.remove(oldPath);
list.add(index, newPath);
} }
} }
private void checkRecentOpenedFileNum() { private void checkRecentOpenedFileNum() {
if (this.recentOpenedFilePathList == null) { List<String> list = getRecentOpenedFilePathList();
if (list == null) {
return; return;
} }
while (this.recentOpenedFilePathList.size() > MAX_SHOW_NUM) { while (list.size() > MAX_SHOW_NUM) {
this.recentOpenedFilePathList.remove(this.recentOpenedFilePathList.size() - 1); list.remove(list.size() - 1);
} }
} }
@ -872,8 +886,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
* @param filePath 文件路径 * @param filePath 文件路径
*/ */
public void removeRecentOpenedFilePath(String filePath) { public void removeRecentOpenedFilePath(String filePath) {
if (this.recentOpenedFilePathList.contains(filePath)) { if (getRecentOpenedFilePathList().contains(filePath)) {
this.recentOpenedFilePathList.remove(filePath); getRecentOpenedFilePathList().remove(filePath);
} }
} }
@ -1311,7 +1325,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
} }
} }
private void readRecentColor(XMLableReader reader){ private void readRecentColor(XMLableReader reader) {
reader.readXMLObject(this.configManager); reader.readXMLObject(this.configManager);
} }
@ -1332,7 +1346,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.readAttributes(reader); this.readAttributes(reader);
} else if (name.equals("ReportPaneAttributions")) { } else if (name.equals("ReportPaneAttributions")) {
this.readReportPaneAttributions(reader); this.readReportPaneAttributions(reader);
} else if ("RecentOpenedFilePathList".equals(name) || "ResentOpenedFilePathList".equals(name)) { } else if ("RecentOpenedFilePath".equals(name)) {
this.readRecentOpenFileList(reader); this.readRecentOpenFileList(reader);
} else if ("EnvConfigMap".equals(name)) { } else if ("EnvConfigMap".equals(name)) {
this.readEnvConfigMap(reader); this.readEnvConfigMap(reader);
@ -1368,8 +1382,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
readAlphaFineAttr(reader); readAlphaFineAttr(reader);
} else if (name.equals("RecentColors")) { } else if (name.equals("RecentColors")) {
readRecentColor(reader); readRecentColor(reader);
} } else {
else {
readLayout(reader, name); readLayout(reader, name);
} }
} }
@ -1518,21 +1531,32 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void readRecentOpenFileList(XMLableReader reader) { private void readRecentOpenFileList(XMLableReader reader) {
reader.readXMLObject(new XMLReadable() { reader.readXMLObject(new XMLReadable() {
@Override @Override
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
if (reader.isAttr()) { if (reader.isAttr()) {
DesignerEnvManager.this.recentOpenedFilePathList.clear(); DesignerEnvManager.this.recentOpenedFileListMap.clear();
} }
if (reader.isChildNode()) { if (reader.isChildNode()) {
String tmpVal;
String name = reader.getTagName(); String name = reader.getTagName();
// alex:以前一直是写ResentOpenedFilePath if ("Env".equals(name)) {
if ("ResentOpenedFilePath".equals(name) || "Path".equals(name)) { // description. final String envName = reader.getAttrAsString("name", StringUtils.EMPTY);
if ((tmpVal = reader.getElementValue()) != null) { final List<String> recentOpenedFileList = new ArrayList<>();
DesignerEnvManager.this.recentOpenedFilePathList.add(tmpVal); reader.readXMLObject(new XMLReadable() {
} @Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String n = reader.getTagName();
if ("Path".equals(n)) {
String path = reader.getElementValue();
if (StringUtils.isNotEmpty(path)) {
recentOpenedFileList.add(path);
}
}
}
}
});
DesignerEnvManager.this.recentOpenedFileListMap.put(envName, recentOpenedFileList);
} }
} }
} }
@ -1623,10 +1647,15 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private void writeRecentOpenFileAndEnvList(XMLPrintWriter writer) { private void writeRecentOpenFileAndEnvList(XMLPrintWriter writer) {
checkRecentOpenedFileNum(); checkRecentOpenedFileNum();
writer.startTAG("RecentOpenedFilePathList"); writer.startTAG("RecentOpenedFilePath");
int resentOpenedFilePathCount = Math.min(12, this.recentOpenedFilePathList.size()); for (Entry<String, List<String>> entry : recentOpenedFileListMap.entrySet()) {
for (int i = 0; i < resentOpenedFilePathCount; i++) { writer.startTAG("Env").attr("name", entry.getKey());
writer.startTAG("Path").textNode(recentOpenedFilePathList.get(i)).end(); List<String> paths = entry.getValue();
int count = Math.min(12, paths.size());
for (int i = 0; i < count; i++) {
writer.startTAG("Path").textNode(paths.get(i)).end();
}
writer.end();
} }
writer.end(); writer.end();

5
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -203,7 +203,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
} }
public String getFullPathName() { public String getFullPathName() {
String editingFileName = getEditingFILE().getPath(); /*String editingFileName = getEditingFILE().getPath();
if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) { if (editingFileName.startsWith(ProjectConstants.REPORTLETS_NAME)) {
editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName; editingFileName = ((FileNodeFILE) getEditingFILE()).getEnvPath() + File.separator + editingFileName;
} }
@ -211,7 +211,8 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
return editingFileName.replaceAll("/", "\\\\"); return editingFileName.replaceAll("/", "\\\\");
} else { } else {
return editingFileName.replaceAll("\\\\", "/"); return editingFileName.replaceAll("\\\\", "/");
} }*/
return getEditingFILE().getPath();
} }
protected abstract JComponent createCenterPane(); protected abstract JComponent createCenterPane();

4
designer-base/src/main/java/com/fr/file/FILEFactory.java

@ -35,7 +35,7 @@ public class FILEFactory {
} else if (path.startsWith(FILE_PREFIX)) { } else if (path.startsWith(FILE_PREFIX)) {
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length()))); return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
} else { } else {
return new FileFILE(new java.io.File(path)); return new FileNodeFILE(new FileNode(path, WorkContext.getWorkResource().isDirectory(path)));
} }
} }
@ -52,7 +52,7 @@ public class FILEFactory {
} else if (path.startsWith(FILE_PREFIX)) { } else if (path.startsWith(FILE_PREFIX)) {
return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length()))); return new FileFILE(new java.io.File(path.substring(FILE_PREFIX.length())));
} else { } else {
return new FileFILE(new java.io.File(path)); return new FileNodeFILE(new FileNode(path, WorkContext.getWorkResource().isDirectory(path)));
} }
} }
} }
Loading…
Cancel
Save