generate toString: highlight unavailable options in red

This commit is contained in:
Anna.Kozlova
2016-03-21 19:35:58 +01:00
parent a3aca75748
commit aabf15c80f
2 changed files with 22 additions and 6 deletions
@@ -32,8 +32,11 @@ import com.intellij.openapi.ui.ComboBox;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.Disposer;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.ui.JBColor;
import com.intellij.ui.ListCellRendererWrapper;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.generate.tostring.GenerateToStringClassFilter;
@@ -169,7 +172,7 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
public static class MemberChooserHeaderPanel extends JPanel {
private MemberChooser<PsiElementClassMember> chooser;
private final JComboBox comboBox;
private final JComboBox<TemplateResource> comboBox;
public void setChooser(MemberChooser chooser) {
this.chooser = chooser;
@@ -184,7 +187,20 @@ public class GenerateToStringActionHandlerImpl implements GenerateToStringAction
final JButton settingsButton = new JButton("Settings");
settingsButton.setMnemonic(KeyEvent.VK_S);
comboBox = new ComboBox(all);
comboBox = new ComboBox<>(all);
final JavaPsiFacade instance = JavaPsiFacade.getInstance(clazz.getProject());
final GlobalSearchScope resolveScope = clazz.getResolveScope();
final ListCellRendererWrapper<TemplateResource> renderer = new ListCellRendererWrapper<TemplateResource>() {
@Override
public void customize(JList list, TemplateResource value, int index, boolean selected, boolean hasFocus) {
setText(value.getName());
final String className = value.getClassName();
if (className != null && instance.findClass(className, resolveScope) == null) {
setForeground(JBColor.RED);
}
}
};
comboBox.setRenderer(renderer);
settingsButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final TemplatesPanel ui = new TemplatesPanel(clazz.getProject());
@@ -49,10 +49,10 @@ public class ToStringTemplatesManager extends TemplatesManager {
new TemplateResource("String concat (+) and super.toString()", readFile(DEFAULT_CONCAT_SUPER), true),
new TemplateResource("StringBuffer", readFile(DEFAULT_BUFFER), true),
new TemplateResource("StringBuilder (JDK 1.5)", readFile(DEFAULT_BUILDER), true),
new TemplateResource("ToStringBuilder (Apache commons-lang)", readFile(DEFAULT_TOSTRINGBUILDER), true),
new TemplateResource("ToStringBuilder (Apache commons-lang 3)", readFile(DEFAULT_TOSTRINGBUILDER3), true),
new TemplateResource("Objects.toStringHelper (Guava)", readFile(DEFAULT_GUAVA), true),
new TemplateResource("MoreObjects.toStringHelper (Guava 18+)", readFile(DEFAULT_GUAVA_18), true),
new TemplateResource("ToStringBuilder (Apache commons-lang)", readFile(DEFAULT_TOSTRINGBUILDER), true, "org.apache.commons.lang.builder.ToStringBuilder"),
new TemplateResource("ToStringBuilder (Apache commons-lang 3)", readFile(DEFAULT_TOSTRINGBUILDER3), true, "org.apache.commons.lang3.builder.ToStringBuilder"),
new TemplateResource("Objects.toStringHelper (Guava)", readFile(DEFAULT_GUAVA), true, "com.google.common.base.Objects"),
new TemplateResource("MoreObjects.toStringHelper (Guava 18+)", readFile(DEFAULT_GUAVA_18), true, "com.google.common.base.MoreObjects"),
new TemplateResource("Groovy: String concat (+)", readFile(DEFAULT_CONCAT_GROOVY), true),
new TemplateResource("Groovy: String concat (+) and super.toString()", readFile(DEFAULT_CONCAT_SUPER_GROOVY), true),
};