add command to slightly undo

This commit is contained in:
Anna Kozlova
2011-05-12 13:29:24 +04:00
parent 866db199b8
commit a7ea388df2
3 changed files with 42 additions and 20 deletions
@@ -549,12 +549,17 @@ public class InplaceIntroduceConstantPopup {
myReplaceAllCb.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
templateState.gotoEnd(true);
myTypeSelectorManager = new TypeSelectorManagerImpl(myProject, myDefaultParameterTypePointer.getType(), null, myExpr, myOccurrences);
startIntroduceTemplate(isReplaceAllOccurrences(), myFieldTypePointer.getType());
}
Runnable restartTemplateRunnable = new Runnable() {
public void run() {
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
templateState.gotoEnd(true);
myTypeSelectorManager = new TypeSelectorManagerImpl(myProject, myDefaultParameterTypePointer.getType(), null, myExpr, myOccurrences);
startIntroduceTemplate(isReplaceAllOccurrences(), myFieldTypePointer.getType());
}
}
};
CommandProcessor.getInstance().executeCommand(myProject, restartTemplateRunnable, IntroduceConstantHandler.REFACTORING_NAME, IntroduceConstantHandler.REFACTORING_NAME);
}
});
@@ -15,11 +15,14 @@
*/
package com.intellij.refactoring.introduceField;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.intention.impl.TypeExpression;
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
import com.intellij.codeInsight.template.impl.TemplateState;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.editor.ScrollType;
@@ -309,12 +312,21 @@ public class InplaceIntroduceFieldPopup {
myIntroduceFieldPanel.addOccurrenceListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
templateState.gotoEnd(true);
myTypeSelectorManager = new TypeSelectorManagerImpl(myProject, myDefaultParameterTypePointer.getType(), null, myInitializerExpression, myOccurrences);
startTemplate(myIntroduceFieldPanel.isReplaceAllOccurrences(), myFieldTypePointer.getType());
}
final Runnable restartTemplate = new Runnable() {
@Override
public void run() {
final TemplateState templateState =
TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
templateState.gotoEnd(true);
myTypeSelectorManager = new TypeSelectorManagerImpl(myProject, myDefaultParameterTypePointer.getType(), null, myInitializerExpression, myOccurrences);
startTemplate(myIntroduceFieldPanel.isReplaceAllOccurrences(), myFieldTypePointer.getType());
}
}
};
CommandProcessor.getInstance().executeCommand(myProject, restartTemplate,
IntroduceFieldHandler.REFACTORING_NAME,
IntroduceFieldHandler.REFACTORING_NAME);
}
});
}
@@ -424,14 +424,19 @@ class InplaceIntroduceParameterPopup extends IntroduceParameterSettingsUI {
protected void updateControls(JCheckBox[] removeParamsCb) {
super.updateControls(removeParamsCb);
if (myParameterIndex < 0) return;
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
final PsiParameter parameter = getParameter();
final boolean hasFinalModifier = parameter.hasModifierProperty(PsiModifier.FINAL);
templateState.gotoEnd(true);
startIntroduceTemplate(isReplaceAllOccurences(), hasFinalModifier);
}
Runnable restartTemplateRunnable = new Runnable() {
public void run() {
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
final PsiParameter parameter = getParameter();
final boolean hasFinalModifier = parameter.hasModifierProperty(PsiModifier.FINAL);
templateState.gotoEnd(true);
startIntroduceTemplate(isReplaceAllOccurences(), hasFinalModifier);
}
}
};
CommandProcessor.getInstance().executeCommand(myProject, restartTemplateRunnable, IntroduceParameterHandler.REFACTORING_NAME, IntroduceParameterHandler.REFACTORING_NAME);
}