}
result.set(started);
if (!started) {
- finish();
+ finish(true);
}
}
@Override
- public void finish() {
+ public void finish(boolean success) {
myFinished = true;
final TemplateState templateState = TemplateManagerImpl.getTemplateState(myEditor);
if (templateState != null) {
if (myBalloon == null) {
releaseIfNotRestart();
}
- super.finish();
- PsiDocumentManager.getInstance(myProject).commitAllDocuments();
- final V variable = getVariable();
- if (variable == null) {
- return;
+ super.finish(success);
+ if (success) {
+ PsiDocumentManager.getInstance(myProject).commitAllDocuments();
+ final V variable = getVariable();
+ if (variable == null) {
+ return;
+ }
+ restoreState(variable);
}
- restoreState(variable);
}
@Override
@Override
protected void navigateToAlreadyStarted(Document oldDocument, int exitCode) {
- finish();
+ finish(true);
super.navigateToAlreadyStarted(oldDocument, exitCode);
}
protected Balloon myBalloon;
protected String myTitle;
protected RelativePoint myTarget;
- private RangeMarker myCaretRangeMarker;
+
public InplaceVariableIntroducer(PsiNamedElement elementToRename,
Editor editor,
}
@Override
- protected int restoreCaretOffset(int offset) {
- return myCaretRangeMarker.isValid() ? myCaretRangeMarker.getStartOffset() : offset;
- }
-
- @Override
protected StartMarkAction startRename() throws StartMarkAction.AlreadyStartedException {
return null;
}
}
@Override
- protected void beforeTemplateStart() {
- myCaretRangeMarker = myEditor.getDocument()
- .createRangeMarker(new TextRange(myEditor.getCaretModel().getOffset(), myEditor.getCaretModel().getOffset()));
- }
-
- @Override
protected void collectAdditionalElementsToRename(List<Pair<PsiElement, TextRange>> stringUsages) {
}
marker.dispose();
}
}
- if (myCaretRangeMarker != null) {
- myCaretRangeMarker.dispose();
- }
if (myExprMarker != null && !isRestart()) {
myExprMarker.dispose();
}
}
@Override
- public void finish() {
- super.finish();
+ public void finish(boolean success) {
+ super.finish(success);
if (myBalloon != null) {
final Boolean isRestart = myEditor.getUserData(INTRODUCE_RESTART);
if (isRestart == null || !isRestart.booleanValue()) {
protected StartMarkAction myMarkAction;
protected PsiElement myScope;
+
+ private RangeMarker myCaretRangeMarker;
public InplaceRefactoring(Editor editor, PsiNamedElement elementToRename, Project project) {
this(editor, elementToRename, project, elementToRename != null ? elementToRename.getName() : null,
return true;
}
- protected abstract void beforeTemplateStart();
+ protected void beforeTemplateStart() {
+ myCaretRangeMarker = myEditor.getDocument()
+ .createRangeMarker(new TextRange(myEditor.getCaretModel().getOffset(), myEditor.getCaretModel().getOffset()));
+ }
private void startTemplate(final TemplateBuilderImpl builder) {
}
protected int restoreCaretOffset(int offset) {
- return offset;
+ return myCaretRangeMarker.isValid() ? myCaretRangeMarker.getStartOffset() : offset;
}
protected void navigateToAlreadyStarted(Document oldDocument, int exitCode) {
* @param success true if the refactoring was accepted, false if it was cancelled (by undo or Esc)
*/
protected void moveOffsetAfter(boolean success) {
+ if (myCaretRangeMarker != null) {
+ myCaretRangeMarker.dispose();
+ }
}
protected void addAdditionalVariables(TemplateBuilderImpl builder) {
*/
protected abstract String getCommandName();
- public void finish() {
+ public void finish(boolean success) {
if (!ourRenamersStack.isEmpty() && ourRenamersStack.peek() == this) {
ourRenamersStack.pop();
}
if (myBeforeRevert != null) {
myBeforeRevert.setGreedyToRight(true);
}
- finish();
+ finish(true);
}
finally {
restoreDaemonUpdateState();
try {
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(myProject);
documentManager.commitAllDocuments();
- finish();
+ finish(false);
moveOffsetAfter(false);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
}
@Override
- public void finish() {
- super.finish();
- revertState();
+ public void finish(boolean success) {
+ super.finish(success);
+ if (success) {
+ revertState();
+ }
}
@Nullable
@Override
protected void beforeTemplateStart() {
+ super.beforeTemplateStart();
myLanguage = myScope.getLanguage();
final ResolveSnapshotProvider resolveSnapshotProvider = INSTANCE.forLanguage(myLanguage);
mySnapshot = resolveSnapshotProvider != null ? resolveSnapshotProvider.createSnapshot(myScope) : null;
}
protected void performOnInvalidIdentifier(final String newName, final LinkedHashSet<String> nameSuggestions) {
- revertState();
- JBPopupFactory.getInstance()
- .createConfirmation("Inserted identifier is not valid", "Continue editing", "Cancel", new Runnable() {
- @Override
- public void run() {
- createInplaceRenamerToRestart(getVariable(), myEditor, newName).performInplaceRefactoring(nameSuggestions);
- }
- }, 0).showInBestPositionFor(myEditor);
+ final PsiNamedElement variable = getVariable();
+ if (variable != null) {
+ final int offset = variable.getTextOffset();
+ restoreCaretOffset(offset);
+ JBPopupFactory.getInstance()
+ .createConfirmation("Inserted identifier is not valid", "Continue editing", "Cancel", new Runnable() {
+ @Override
+ public void run() {
+ createInplaceRenamerToRestart(variable, myEditor, newName).performInplaceRefactoring(nameSuggestions);
+ }
+ }, 0).showInBestPositionFor(myEditor);
+ }
}
protected void performRefactoringRename(final String newName,