|
|
|
@ -212,6 +212,35 @@ public class MultiTemplateTabPane extends JComponent {
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 模板可以关闭的条件 |
|
|
|
|
*/ |
|
|
|
|
class CloseCondition { |
|
|
|
|
private CloseOption closeOption; |
|
|
|
|
|
|
|
|
|
public CloseCondition(CloseOption closeOption) { |
|
|
|
|
this.closeOption = closeOption; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 判断模板是否可以关闭,两个条件:1、是否满足CloseOption里面的条件(在左侧、在右侧等)2、是否和当前正在编辑模板属于同一种模板tab操作类型 |
|
|
|
|
* @param closeJTemplate |
|
|
|
|
* @param tplIndex |
|
|
|
|
* @param i |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public boolean shouldClose(JTemplate closeJTemplate, int tplIndex, int i) { |
|
|
|
|
boolean matchOption = this.closeOption.shouldClose(tplIndex, i); |
|
|
|
|
JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); |
|
|
|
|
if (!JTemplate.isValid(currentTemplate)) { |
|
|
|
|
return matchOption; |
|
|
|
|
} |
|
|
|
|
return matchOption && ComparatorUtils.equals(closeJTemplate.getTemplateTabOperatorType(), |
|
|
|
|
currentTemplate.getTemplateTabOperatorType()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
enum CloseOption { |
|
|
|
|
Left(Toolkit.i18nText("Fine-Design_Close_templates_To_The_Left")) { |
|
|
|
|
@Override |
|
|
|
@ -324,14 +353,15 @@ public class MultiTemplateTabPane extends JComponent {
|
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
//只有关闭所有模板才需要判断当前模板,关闭左侧、右侧、其他都不需要
|
|
|
|
|
SaveSomeTemplatePane saveSomeTemplatePane = new SaveSomeTemplatePane(option == CloseOption.All); |
|
|
|
|
if (saveSomeTemplatePane.showSavePane(option, false)) { |
|
|
|
|
CloseCondition closeCondition = new CloseCondition(option); |
|
|
|
|
if (saveSomeTemplatePane.showSavePane(closeCondition, false)) { |
|
|
|
|
|
|
|
|
|
JTemplate<?, ?>[] templates = new JTemplate<?, ?>[openedTemplate.size()]; |
|
|
|
|
for (int i = 0; i < openedTemplate.size(); i++) { |
|
|
|
|
templates[i] = openedTemplate.get(i); |
|
|
|
|
} |
|
|
|
|
JTemplate<?, ?> currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); |
|
|
|
|
closeTemplate(templates, currentTemplate); |
|
|
|
|
closeTemplate(closeCondition, templates, currentTemplate); |
|
|
|
|
|
|
|
|
|
if (openedTemplate.size() == 0) { |
|
|
|
|
DesignerContext.getDesignerFrame().addAndActivateJTemplate(); |
|
|
|
@ -346,10 +376,9 @@ public class MultiTemplateTabPane extends JComponent {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void closeTemplate(JTemplate<?, ?>[] templates, JTemplate<?, ?> currentTemplate) { |
|
|
|
|
String operator = currentTemplate.getTemplateTabOperatorType(); |
|
|
|
|
private void closeTemplate(CloseCondition closeCondition, JTemplate<?, ?>[] templates, JTemplate<?, ?> currentTemplate) { |
|
|
|
|
for (int i = 0; i < templates.length; i++) { |
|
|
|
|
if (option.shouldClose(tplIndex, i) && ComparatorUtils.equals(operator, templates[i].getTemplateTabOperatorType())) { |
|
|
|
|
if (closeCondition.shouldClose(templates[i], tplIndex, i)) { |
|
|
|
|
JTemplate<?, ?> jTemplate = templates[i]; |
|
|
|
|
if (jTemplate == currentTemplate) { |
|
|
|
|
currentTemplate = option == CloseOption.All ? null : templates[tplIndex]; |
|
|
|
|