From 86f3440d47b1f176d8fd03e5be34fc957394ca2d Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 9 Feb 2010 21:15:20 +0300 Subject: [PATCH] refactoring, cancel custom template by Escape --- .../CreateConstructorFromCallFix.java | 2 +- .../CreateConstructorFromThisOrSuperFix.java | 2 +- .../CreateLocalVarFromInstanceofAction.java | 2 +- .../quickfix/CreateMethodFromUsageFix.java | 2 +- .../GenerateMembersHandlerBase.java | 2 +- .../testIntegration/TestIntegrationUtils.java | 2 +- .../completion/TemplateInsertHandler.java | 2 +- .../template/CustomTemplateCallback.java | 3 ++- .../template/TemplateEditingAdapter.java | 2 +- .../template/TemplateEditingListener.java | 2 +- .../template/impl/TemplateState.java | 22 +++++++++++-------- .../impl/editorActions/EscapeHandler.java | 2 +- .../inplace/VariableInplaceRenamer.java | 4 ++-- .../completion/XmlTagInsertHandler.java | 2 +- .../xml/refactoring/XmlTagInplaceRenamer.java | 2 +- 15 files changed, 29 insertions(+), 24 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromCallFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromCallFix.java index 0527f0b18f7d..e2e669006723 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromCallFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromCallFix.java @@ -65,7 +65,7 @@ public class CreateConstructorFromCallFix extends CreateFromUsageBaseFix { editor.getCaretModel().moveToOffset(textRange.getStartOffset()); startTemplate(editor, template, project, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { try { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromThisOrSuperFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromThisOrSuperFix.java index 5b650ba422dd..f954e5cefb7a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromThisOrSuperFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorFromThisOrSuperFix.java @@ -108,7 +108,7 @@ public abstract class CreateConstructorFromThisOrSuperFix extends CreateFromUsag editor.getCaretModel().moveToOffset(textRange.getStartOffset()); startTemplate(editor, template, project, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { try { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateLocalVarFromInstanceofAction.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateLocalVarFromInstanceofAction.java index 14f04687e1c4..9e80437e43a9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateLocalVarFromInstanceofAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateLocalVarFromInstanceofAction.java @@ -166,7 +166,7 @@ public class CreateLocalVarFromInstanceofAction extends BaseIntentionAction { newEditor.getDocument().deleteString(range.getStartOffset(), range.getEndOffset()); CreateFromUsageBaseFix.startTemplate(newEditor, template, project, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java index bc461090e45c..bc3a15c092e4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java @@ -231,7 +231,7 @@ public class CreateMethodFromUsageFix extends CreateFromUsageBaseFix { if (!shouldBeAbstract) { startTemplate(newEditor, template, project, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { PsiDocumentManager.getInstance(project).commitDocument(newEditor.getDocument()); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java index a9755aa83b2d..9d9da0b92338 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersHandlerBase.java @@ -145,7 +145,7 @@ public abstract class GenerateMembersHandlerBase implements CodeInsightActionHan editor.getCaretModel().moveToOffset(offset); editor.getScrollingModel().scrollToCaret(ScrollType.CENTER); TemplateManager.getInstance(myProject).startTemplate(editor, template, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { if (index + 1 < templates.size()){ ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { diff --git a/java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java b/java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java index ab864f3aeece..130e6f58b4d1 100644 --- a/java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java +++ b/java/java-impl/src/com/intellij/testIntegration/TestIntegrationUtils.java @@ -141,7 +141,7 @@ public class TestIntegrationUtils { if (!automatic) { adapter = new TemplateEditingAdapter() { @Override - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/TemplateInsertHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/TemplateInsertHandler.java index bd7edb0b857c..977adac61580 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/TemplateInsertHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/TemplateInsertHandler.java @@ -67,7 +67,7 @@ public abstract class TemplateInsertHandler implements InsertHandler { final RangeMarker offsetRangeMarker = document.createRangeMarker(templateStartOffset, templateStartOffset); TemplateManager.getInstance(editor.getProject()).startTemplate(editor, template, new TemplateEditingAdapter() { - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { lookupItem.setAttribute(EXPANDED_TEMPLATE_ATTR, Boolean.TRUE); if (!offsetRangeMarker.isValid()) return; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java index a21c5a1bb9d9..d7b4bdeb5f68 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java @@ -93,7 +93,8 @@ public class CustomTemplateCallback { } @Override - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { + if (brokenOff) return; templateFinished[0] = true; if (templateEnded[0] && listener != null) { listener.finished(true, true); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingAdapter.java b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingAdapter.java index cf2f82d599e2..743f8eb708f7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingAdapter.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingAdapter.java @@ -26,7 +26,7 @@ public abstract class TemplateEditingAdapter implements TemplateEditingListener public void beforeTemplateFinished(final TemplateState state, final Template template) { } - public void templateFinished(Template template) { + public void templateFinished(Template template, boolean brokenOff) { } public void templateCancelled(Template template) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingListener.java b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingListener.java index 1fc89f4fd39f..0412c9a0a097 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingListener.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingListener.java @@ -23,7 +23,7 @@ import com.intellij.codeInsight.template.impl.TemplateState; */ public interface TemplateEditingListener { void beforeTemplateFinished(TemplateState state, Template template); - void templateFinished(Template template); + void templateFinished(Template template, boolean brokenOff); void templateCancelled(Template template); void currentVariableChanged(TemplateState templateState, Template template, int oldIndex, int newIndex); void templateExpanded(Template template); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java index 7d870c0158ca..36283f15a0e3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java @@ -322,7 +322,7 @@ public class TemplateState implements Disposable { int nextVariableNumber = getNextVariableNumber(-1); if (nextVariableNumber == -1) { - finishTemplateEditing(); + finishTemplateEditing(false); } else { setCurrentVariableNumber(nextVariableNumber); @@ -538,7 +538,7 @@ public class TemplateState implements Disposable { final TextResult value = getVariableValue(variableName); if (value != null && value.getText().length() > 0) { if (!myProcessor.process(variableName, value.getText())) { - finishTemplateEditing(); // nextTab(); ? + finishTemplateEditing(false); // nextTab(); ? return; } } @@ -686,7 +686,7 @@ public class TemplateState implements Disposable { reformat(); } }); - finishTemplateEditing(); + finishTemplateEditing(false); return; } focusCurrentHighlighter(false); @@ -735,13 +735,17 @@ public class TemplateState implements Disposable { }; } - public void gotoEnd() { + public void gotoEnd(boolean brokenOff) { calcResults(false); doReformat(); - finishTemplateEditing(); + finishTemplateEditing(brokenOff); } - private void finishTemplateEditing() { + public void gotoEnd() { + gotoEnd(false); + } + + private void finishTemplateEditing(boolean brokenOff) { if (myTemplate == null) return; LookupManager.getInstance(myProject).hideActiveLookup(); @@ -774,7 +778,7 @@ public class TemplateState implements Disposable { setCurrentVariableNumber(-1); currentVariableChanged(oldVar); ((TemplateManagerImpl)TemplateManager.getInstance(myProject)).clearTemplateState(editor); - fireTemplateFinished(); + fireTemplateFinished(brokenOff); myListeners.clear(); myProject = null; } @@ -992,12 +996,12 @@ public class TemplateState implements Disposable { myListeners.add(listener); } - private void fireTemplateFinished() { + private void fireTemplateFinished(boolean brokenOff) { if (myFinished) return; myFinished = true; TemplateEditingListener[] listeners = myListeners.toArray(new TemplateEditingListener[myListeners.size()]); for (TemplateEditingListener listener : listeners) { - listener.templateFinished(myTemplate); + listener.templateFinished(myTemplate, brokenOff); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java index 2ef75be62b69..943bb7d7210b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java @@ -36,7 +36,7 @@ public class EscapeHandler extends EditorActionHandler { final TemplateState templateState = TemplateManagerImpl.getTemplateState(editor); if (templateState != null && !templateState.isFinished()) { CommandProcessor.getInstance().setCurrentCommandName(CodeInsightBundle.message("finish.template.command")); - templateState.gotoEnd(); + templateState.gotoEnd(true); return; } } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index d5fbe7650153..8b5f4db0883f 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -202,8 +202,8 @@ public class VariableInplaceRenamer { } @Override - public void templateFinished(Template template) { - super.templateFinished(template); + public void templateFinished(Template template, boolean brokenOff) { + super.templateFinished(template, brokenOff); if (myNewName != null) { performAutomaticRename(myNewName, PsiTreeUtil.getParentOfType(containingFile.findElementAt(renameOffset), PsiNameIdentifierOwner.class)); } diff --git a/xml/impl/src/com/intellij/codeInsight/completion/XmlTagInsertHandler.java b/xml/impl/src/com/intellij/codeInsight/completion/XmlTagInsertHandler.java index 59fd8b5197fc..76234e05e4af 100644 --- a/xml/impl/src/com/intellij/codeInsight/completion/XmlTagInsertHandler.java +++ b/xml/impl/src/com/intellij/codeInsight/completion/XmlTagInsertHandler.java @@ -220,7 +220,7 @@ public class XmlTagInsertHandler implements InsertHandler { final boolean weInsertedSomeCodeThatCouldBeInvalidated1 = weInsertedSomeCodeThatCouldBeInvalidated; templateManager.startTemplate(editor, template, new TemplateEditingAdapter() { - public void templateFinished(final Template template) { + public void templateFinished(final Template template, boolean brokenOff) { final int offset = editor.getCaretModel().getOffset(); if (weInsertedSomeCodeThatCouldBeInvalidated1 && diff --git a/xml/impl/src/com/intellij/xml/refactoring/XmlTagInplaceRenamer.java b/xml/impl/src/com/intellij/xml/refactoring/XmlTagInplaceRenamer.java index c2184d72068f..9585643b775a 100644 --- a/xml/impl/src/com/intellij/xml/refactoring/XmlTagInplaceRenamer.java +++ b/xml/impl/src/com/intellij/xml/refactoring/XmlTagInplaceRenamer.java @@ -99,7 +99,7 @@ public class XmlTagInplaceRenamer { final Template t = buildTemplate(tag, pair); TemplateManager.getInstance(project).startTemplate(myEditor, t, new TemplateEditingAdapter() { - public void templateFinished(final Template template) { + public void templateFinished(final Template template, boolean brokenOff) { finish(); }