diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java index e574c9278598..e2560ef88855 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/GenerateToStringActionHandlerImpl.java @@ -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 chooser; - private final JComboBox comboBox; + private final JComboBox 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 renderer = new ListCellRendererWrapper() { + @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()); diff --git a/plugins/generate-tostring/src/org/jetbrains/java/generate/template/toString/ToStringTemplatesManager.java b/plugins/generate-tostring/src/org/jetbrains/java/generate/template/toString/ToStringTemplatesManager.java index 15e9534dd08d..2ea2485693bf 100644 --- a/plugins/generate-tostring/src/org/jetbrains/java/generate/template/toString/ToStringTemplatesManager.java +++ b/plugins/generate-tostring/src/org/jetbrains/java/generate/template/toString/ToStringTemplatesManager.java @@ -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), };