boolean (PsiExpression selectedExpr, @Nullable Editor editor, PsiFile file, final Project project, PsiType tempType) { if (myParentClass == null) { if (FileTypeUtils.isInServerPageFile(file)) { CommonRefactoringUtil.showErrorHint(project, editor, JavaRefactoringBundle.message("error.not.supported.for.jsp", getRefactoringName()), getRefactoringName(), getHelpID()); return true; } else if ("package-info.java".equals(file.getName())) { CommonRefactoringUtil .showErrorHint(project, editor, JavaRefactoringBundle.message("error.not.supported.for.package.info", getRefactoringName()), getRefactoringName(), getHelpID()); return true; } else { LOG.error("Unexpected file: " + file); return true; } } if (!validClass(myParentClass, selectedExpr, editor)) { return true; } if (!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) return true; final OccurrenceManager occurrenceManager = createOccurrenceManager(selectedExpr, myParentClass); final PsiExpression[] occurrences = occurrenceManager.getOccurrences(); final PsiElement anchorStatementIfAll = occurrenceManager.getAnchorStatementForAll(); List<RangeHighlighter> highlighters = null; if (editor != null) { highlighters = RefactoringUtil.highlightAllOccurrences(project, occurrences, editor); } PsiElement tempAnchorElement = CommonJavaRefactoringUtil.getParentExpressionAnchorElement(selectedExpr); if (!Comparing.strEqual(IntroduceConstantHandler.getRefactoringNameText(), getRefactoringName()) && IntroduceFieldHandler.isInSuperOrThis(selectedExpr) && isStaticFinalInitializer(selectedExpr) != null) { String message = RefactoringBundle.getCannotRefactorMessage(JavaRefactoringBundle.message("invalid.expression.context")); CommonRefactoringUtil.showErrorHint(project, editor, message, getRefactoringName(), getHelpID()); return true; } final Settings settings = showRefactoringDialog(project, editor, myParentClass, selectedExpr, tempType, occurrences, tempAnchorElement, anchorStatementIfAll); if (settings == null) return true; if (settings.getForcedType() != null) { tempType = settings.getForcedType(); } final PsiType type = tempType; if (editor != null) { HighlightManager highlightManager = HighlightManager.getInstance(project); for (RangeHighlighter highlighter : highlighters) { highlightManager.removeSegmentHighlighter(editor, highlighter); } } final Runnable runnable = new ConvertToFieldRunnable(settings.getSelectedExpr(), settings, type, settings.getOccurrences(), anchorStatementIfAll, tempAnchorElement, editor, myParentClass); if (IntentionPreviewUtils.isPreviewElement(myParentClass)) { runnable.run(); } else { WriteCommandAction.writeCommandAction(project).withName(getRefactoringName()).run(runnable::run); } return false; }