generate getters & setters: add notification if some setters were not generated (IDEA-201670)

This commit is contained in:
Anna.Kozlova
2018-11-26 14:57:07 +01:00
parent b1ba5d9490
commit 11ff07b6c5
2 changed files with 22 additions and 1 deletions
@@ -16,6 +16,8 @@
package com.intellij.codeInsight.generation;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import com.intellij.util.IncorrectOperationException;
@@ -24,7 +26,9 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class GenerateGetterAndSetterHandler extends GenerateGetterSetterHandlerBase{
private final GenerateGetterHandler myGenerateGetterHandler = new GenerateGetterHandler();
@@ -57,6 +61,17 @@ public class GenerateGetterAndSetterHandler extends GenerateGetterSetterHandlerB
return array.toArray(GenerationInfo.EMPTY_ARRAY);
}
@Override
protected void notifyOnSuccess(Editor editor,
ClassMember[] members,
List<? extends GenerationInfo> generatedMembers) {
super.notifyOnSuccess(editor, members, generatedMembers);
if (Arrays.stream(members).anyMatch(fm -> fm instanceof PsiFieldMember &&
GetterSetterPrototypeProvider.isReadOnlyProperty(((PsiFieldMember)fm).getElement()))) {
HintManager.getInstance().showErrorHint(editor, "Setters for read-only fields were not generated", HintManager.ABOVE);
}
}
@Override
protected String getNothingFoundMessage() {
return "No fields have been found to generate getters/setters for";
@@ -160,10 +160,16 @@ public abstract class GenerateMembersHandlerBase implements CodeInsightActionHan
runTemplates(project, editor, templates, 0);
}
else if (!newMembers.isEmpty()){
newMembers.get(0).positionCaret(editor, false);
notifyOnSuccess(editor, members, newMembers);
}
}
protected void notifyOnSuccess(Editor editor,
ClassMember[] members,
List<? extends GenerationInfo> generatedMembers) {
generatedMembers.get(0).positionCaret(editor, false);
}
protected String getNothingFoundMessage() {
return "Nothing found to insert";
}