|
|
|
@ -42,6 +42,14 @@ public class HistoryTemplateListCache implements CallbackEvent {
|
|
|
|
|
private List<JTemplate<?, ?>> historyList; |
|
|
|
|
private JTemplate<?, ?> editingTemplate; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 当设计器打开的模板数大于模板缓存对象个数时,会产生JVirtualTemplate(个数=打开的总模板数 - 缓存模板数) |
|
|
|
|
* 每次点击切换模板时,当切换到JVirtualTemplate,会创建真实的JTemplate,但是该JTemplate创建后不会释放掉,需要调用whenClose主动释放 |
|
|
|
|
* 该变量对JVirtualTemplate创建真实的JTemplate管理 |
|
|
|
|
*/ |
|
|
|
|
private JTemplate<?, ?> currentVirtualReplaceTemplate; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static HistoryTemplateListCache getInstance() { |
|
|
|
|
return Holder.INSTANCE; |
|
|
|
|
} |
|
|
|
@ -112,6 +120,14 @@ public class HistoryTemplateListCache implements CallbackEvent {
|
|
|
|
|
* @see DesignerFrameFileDealerPane#setCurrentEditingTemplate(JTemplate) |
|
|
|
|
*/ |
|
|
|
|
public void setCurrentEditingTemplate(JTemplate<?, ?> jt) { |
|
|
|
|
|
|
|
|
|
// 模板之间切换 如果存在上次JVirtualTemplate创建的真实模板 需要在此关闭,并释放掉
|
|
|
|
|
boolean canReleaseVirtualReplaceTemplate = this.currentVirtualReplaceTemplate != null && jt != null |
|
|
|
|
&& !ComparatorUtils.equals(this.currentVirtualReplaceTemplate.getEditingFILE(), jt.getEditingFILE()); |
|
|
|
|
if (canReleaseVirtualReplaceTemplate) { |
|
|
|
|
HistoryTemplateListCache.getInstance().releaseVirtualReplaceTemplate(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.editingTemplate = jt; |
|
|
|
|
//如果当前历史面板中没有
|
|
|
|
|
|
|
|
|
@ -423,4 +439,24 @@ public class HistoryTemplateListCache implements CallbackEvent {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setCurrentVirtualReplaceTemplate(JTemplate<?, ?> currentVirtualReplaceTemplate) { |
|
|
|
|
// 保证先释放
|
|
|
|
|
releaseVirtualReplaceTemplate(); |
|
|
|
|
this.currentVirtualReplaceTemplate = currentVirtualReplaceTemplate; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public JTemplate<?, ?> getCurrentVirtualReplaceTemplate() { |
|
|
|
|
return currentVirtualReplaceTemplate; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 释放JVirtualTemplate创建的真实模板JTemplate |
|
|
|
|
*/ |
|
|
|
|
private void releaseVirtualReplaceTemplate() { |
|
|
|
|
if (this.currentVirtualReplaceTemplate != null) { |
|
|
|
|
this.currentVirtualReplaceTemplate.whenClose(); |
|
|
|
|
this.currentVirtualReplaceTemplate = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|