refactoring, zen coding shouldn't block live templates 94.450
authorEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Mon, 1 Mar 2010 17:40:04 +0000 (20:40 +0300)
committerEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Mon, 1 Mar 2010 17:40:04 +0000 (20:40 +0300)
platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java
platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingAdapter.java
platform/lang-impl/src/com/intellij/codeInsight/template/TemplateEditingListener.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java

index d159f70d2b174d1ba06c4c2651e4439d0999dbe9..de599decda28dfc78ccc16d4e31a7966626c35a1 100644 (file)
@@ -151,8 +151,7 @@ public class CustomTemplateCallback {
         ApplicationManager.getApplication().runWriteAction(new Runnable() {
           public void run() {
             if (brokenOff) {
-              CodeStyleManager style = CodeStyleManager.getInstance(myProject);
-              style.reformatText(myFile, myGlobalMarker.getStartOffset(), myGlobalMarker.getEndOffset());
+              reformat();
             }
           }
         });
@@ -162,6 +161,11 @@ public class CustomTemplateCallback {
           listener.finished(true);
         }
       }
+
+      @Override
+      public void waitingForInput(Template template) {
+        reformat();
+      }
     });
     templateEnded[0] = true;
     if (templateFinished[0] && listener != null) {
@@ -170,6 +174,11 @@ public class CustomTemplateCallback {
     return templateFinished[0];
   }
 
+  private void reformat() {
+    CodeStyleManager style = CodeStyleManager.getInstance(myProject);
+    style.reformatText(myFile, myGlobalMarker.getStartOffset(), myGlobalMarker.getEndOffset());
+  }
+
   public void fixStartOfTemplate(@NotNull Object key) {
     int offset = myEditor.getCaretModel().getOffset();
     RangeMarker marker = myEditor.getDocument().createRangeMarker(offset, offset);
index 743f8eb708f76a3b7d6090e3b5fe857f1674b3a9..ef899f1c5659620da16a7908f15bf3ed56613b65 100644 (file)
@@ -35,6 +35,6 @@ public abstract class TemplateEditingAdapter implements TemplateEditingListener
   public void currentVariableChanged(TemplateState templateState, Template template, int oldIndex, int newIndex) {
   }
 
-  public void templateExpanded(Template template) {
+  public void waitingForInput(Template template) {
   }
 }
index 73478f59a7eeafd990a32e4b0e6d4c796647c959..59ff3be18f905870707b7acd372e8a993b918fc5 100644 (file)
@@ -26,5 +26,5 @@ public interface TemplateEditingListener {
   void templateFinished(Template template, boolean brokenOff);
   void templateCancelled(Template template);
   void currentVariableChanged(TemplateState templateState, Template template, int oldIndex, int newIndex);
-  void templateExpanded(Template template);
+  void waitingForInput(Template template);
 }
index e8f033dae0cac5232f24756c786510c89436d464..c074689f6a1609ba5552bc16a41e9c2e4091d4d7 100644 (file)
@@ -319,9 +319,12 @@ public class TemplateState implements Disposable {
         calcResults(false);  //Fixed SCR #[vk500] : all variables should be recalced twice on start.
         doReformat(null);
 
-        fireTemplateExpanded();
-
         int nextVariableNumber = getNextVariableNumber(-1);
+
+        if (nextVariableNumber >= 0) {
+          fireWaitingForInput();
+        }
+
         if (nextVariableNumber == -1) {
           finishTemplateEditing(false);
         }
@@ -1022,10 +1025,10 @@ public class TemplateState implements Disposable {
     }
   }
 
-  private void fireTemplateExpanded() {
+  private void fireWaitingForInput() {
     TemplateEditingListener[] listeners = myListeners.toArray(new TemplateEditingListener[myListeners.size()]);
     for (TemplateEditingListener listener : listeners) {
-      listener.templateExpanded(myTemplate);
+      listener.waitingForInput(myTemplate);
     }
   }