Browse Source

Pull request #11839: REPORT-92893 锁定的模板,重复另存副本,设计器页面模板内容不更新

Merge in DESIGN/design from ~JOHN.YING/design:final/11.0 to final/11.0

* commit '938ced8b6d21a9eac28936706745d562db4cd831':
  REPORT-92893 锁定的模板,重复另存副本,设计器页面模板内容不更新--注释
  REPORT-92893 锁定的模板,重复另存副本,设计器页面模板内容不更新
new-design
John.Ying-应志浩 2 years ago
parent
commit
a8a064a90c
  1. 2
      designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java
  2. 63
      designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java

2
designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java

@ -99,7 +99,7 @@ public class LockInfoDialog extends JDialog {
return; return;
} }
final String selectedFilePath = StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, TemplateTreePane.getInstance().getFilePath()); final String selectedFilePath = StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, TemplateTreePane.getInstance().getFilePath());
TemplateUtils.createAndOpenTemplate( TemplateUtils.createAndReOpenTemplate(
Toolkit.i18nText("Fine_Design_Template_Lock_Copy"), Toolkit.i18nText("Fine_Design_Template_Lock_Copy"),
new FileNodeFILE(new FileNode(selectedFilePath, false)), new FileNodeFILE(new FileNode(selectedFilePath, false)),
false, false,

63
designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java

@ -19,6 +19,7 @@ import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator; import com.fr.workspace.server.lock.TplOperator;
import org.jetbrains.annotations.Nullable;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
import java.io.OutputStream; import java.io.OutputStream;
@ -47,7 +48,7 @@ public class TemplateUtils {
} }
/** /**
* 创建新的模板文件并打开模板并在创建备份模板成功后执行doAfterCreate * 创建新的模板文件并并判断新的模板文件是否之前已经被开打如果已经打开需要reOpen
* *
* @param prefix 模板文件名称前缀 * @param prefix 模板文件名称前缀
* @param file 模板文件 * @param file 模板文件
@ -55,14 +56,39 @@ public class TemplateUtils {
* 为true时以CurrentEditingTemplate为准创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板
* 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态 * 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态
* @param openNewTemplate 是否需要在创建后打开模板 * @param openNewTemplate 是否需要在创建后打开模板
* @param doAfterCreateTemplate 创建备份模板成功后调用
*/ */
public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { public static void createAndReOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) {
String fileName = file.getName();
String oldPath = file.getPath(); String oldPath = file.getPath();
file = getSavedFile(prefix, file);
if (file == null) {
return;
}
Runnable doAfterCreateTemplate;
//判断一下要保存的文件是否已打开
int index = HistoryTemplateListCache.getInstance().contains(file);
if (index == -1) {
doAfterCreateTemplate = () -> {};
} else {
JTemplate template = HistoryTemplateListCache.getInstance().getHistoryList().get(index);
doAfterCreateTemplate = () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template);
}
createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate);
}
/**
* 返回值可以为null, 为null表示没有点击保存按钮或者传递进来的文件file本身不满足格式要求
*
* @param prefix 模板文件名称前缀
* @param file 模板文件
* @return 最后选择的要保存的文件
*/
@Nullable
private static FILE getSavedFile(String prefix, FILE file) {
String fileName = file.getName();
int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT);
if (indexOfLastDot < 0) { if (indexOfLastDot < 0) {
return; return null;
} }
String suffix = fileName.substring(indexOfLastDot + 1); String suffix = fileName.substring(indexOfLastDot + 1);
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true);
@ -74,15 +100,36 @@ public class TemplateUtils {
fileChooserPane.enableFileNameTextFiled(); fileChooserPane.enableFileNameTextFiled();
if (isCancel(result)) { if (isCancel(result)) {
return; return null;
} }
if (isOk(result)) { if (isOk(result)) {
file = fileChooserPane.getSelectedFILE(); return fileChooserPane.getSelectedFILE();
createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate);
} }
return null;
} }
/**
* 创建新的模板文件并打开模板并在创建备份模板成功后执行doAfterCreate
*
* @param prefix 模板文件名称前缀
* @param file 模板文件
* @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板
* 为true时以CurrentEditingTemplate为准创建新模板
* 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态
* @param openNewTemplate 是否需要在创建后打开模板
* @param doAfterCreateTemplate 创建备份模板成功后调用
*/
public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) {
String oldPath = file.getPath();
file = getSavedFile(prefix, file);
if (file == null) {
return;
}
createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate);
}
private static void createAndOpenTemplate0(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { private static void createAndOpenTemplate0(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) {
new SwingWorker<Boolean, Void>() { new SwingWorker<Boolean, Void>() {

Loading…
Cancel
Save