diff --git a/java/java-tests/testSrc/com/intellij/ide/fileTemplates/JavaFileTemplatesTest.java b/java/java-tests/testSrc/com/intellij/ide/fileTemplates/JavaFileTemplatesTest.java index 65f4a60a983a..a11fab663abb 100644 --- a/java/java-tests/testSrc/com/intellij/ide/fileTemplates/JavaFileTemplatesTest.java +++ b/java/java-tests/testSrc/com/intellij/ide/fileTemplates/JavaFileTemplatesTest.java @@ -15,8 +15,10 @@ */ package com.intellij.ide.fileTemplates; +import com.intellij.ide.IdeBundle; import com.intellij.ide.fileTemplates.actions.CreateFromTemplateAction; import com.intellij.ide.fileTemplates.actions.CreateFromTemplateGroup; +import com.intellij.ide.fileTemplates.impl.FileTemplateManagerImpl; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.util.Condition; import com.intellij.testFramework.TestActionEvent; @@ -24,6 +26,8 @@ import com.intellij.testFramework.TestDataProvider; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import com.intellij.util.containers.ContainerUtil; +import java.util.Arrays; + public class JavaFileTemplatesTest extends LightCodeInsightFixtureTestCase { public void testCreateFromTemplateGroup() throws Exception { @@ -43,4 +47,23 @@ public class JavaFileTemplatesTest extends LightCodeInsightFixtureTestCase { } })); } + + @SuppressWarnings("ConstantConditions") + public void testManyTemplates() throws Exception { + FileTemplateManagerImpl templateManager = (FileTemplateManagerImpl)FileTemplateManager.getInstance(getProject()); + templateManager.getState().RECENT_TEMPLATES.clear(); + FileTemplate[] before = templateManager.getAllTemplates(); + try { + for (int i = 0; i < 30; i++) { + templateManager.addTemplate("foo" + i, "java"); + } + AnAction[] children = new CreateFromTemplateGroup().getChildren(new TestActionEvent(new TestDataProvider(getProject()))); + assertEquals(3, children.length); + assertTrue(IdeBundle.message("action.from.file.template").equals(children[0].getTemplatePresentation().getText())); + } + finally { + templateManager.setTemplates(FileTemplateManager.DEFAULT_TEMPLATES_CATEGORY, Arrays.asList(before)); + templateManager.getState().RECENT_TEMPLATES.clear(); + } + } } diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateGroup.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateGroup.java index 0ac61c17f613..9aaf58ba285e 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateGroup.java @@ -57,8 +57,9 @@ public class CreateFromTemplateGroup extends ActionGroup implements DumbAware { @Override @NotNull public AnAction[] getChildren(@Nullable AnActionEvent e){ - Project project; - if (e == null || (project = CommonDataKeys.PROJECT.getData(e.getDataContext())) == null) return EMPTY_ARRAY; + if (e == null) return EMPTY_ARRAY; + Project project = CommonDataKeys.PROJECT.getData(e.getDataContext()); + if (project == null) return EMPTY_ARRAY; FileTemplateManager manager = FileTemplateManager.getInstance(project); FileTemplate[] templates = manager.getAllTemplates(); @@ -106,7 +107,7 @@ public class CreateFromTemplateGroup extends ActionGroup implements DumbAware { } } - if (!result.isEmpty()) { + if (!result.isEmpty() || !showAll) { if (!showAll) { result.add(new CreateFromTemplatesAction(IdeBundle.message("action.from.file.template"))); }