From d3e15d42308c88ebd50c99ea7b3f470bfc625d5b Mon Sep 17 00:00:00 2001 From: Nikolay Matveev Date: Mon, 26 Mar 2012 12:29:09 +0400 Subject: [PATCH] IDEA-83313 Custom file templates EAP PS-114.158 (cherry picked from commit 536e453) --- .../ide/fileTemplates/FileTemplateUtil.java | 9 ++++++++- .../actions/CreateFromTemplateAction.java | 6 +++--- .../fileTemplates/impl/FileTemplateTabAsList.java | 6 +++--- .../ide/fileTemplates/ui/SelectTemplateDialog.java | 14 ++++++++++++-- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java index 0d0ec3f10408..747312d7ee40 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx; @@ -55,6 +56,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.io.*; import java.util.*; @@ -351,4 +353,9 @@ public class FileTemplateUtil{ CreateFromTemplateHandler handler = findHandler(template); return handler.canCreate(dirs); } + + @Nullable + public static Icon getIcon(@NotNull FileTemplate fileTemplate) { + return FileTypeManager.getInstance().getFileTypeByExtension(fileTemplate.getExtension()).getIcon(); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateAction.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateAction.java index c3108ade53d3..6f02e0f73e20 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateAction.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,10 +17,10 @@ package com.intellij.ide.fileTemplates.actions; import com.intellij.ide.fileTemplates.FileTemplate; +import com.intellij.ide.fileTemplates.FileTemplateUtil; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; -import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; import org.jetbrains.annotations.Nullable; @@ -30,7 +30,7 @@ public class CreateFromTemplateAction extends CreateFromTemplateActionBase { private final FileTemplate myTemplate; public CreateFromTemplateAction(FileTemplate template){ - super(template.getName(), null, FileTypeManagerEx.getInstanceEx().getFileTypeByExtension(template.getExtension()).getIcon()); + super(template.getName(), null, FileTemplateUtil.getIcon(template)); myTemplate = template; } diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTabAsList.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTabAsList.java index c548fba03d92..0ba5720650ba 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTabAsList.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateTabAsList.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package com.intellij.ide.fileTemplates.impl; import com.intellij.ide.fileTemplates.FileTemplate; -import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.ide.fileTemplates.FileTemplateUtil; import com.intellij.ui.components.JBList; import org.jetbrains.annotations.NotNull; @@ -52,7 +52,7 @@ abstract class FileTemplateTabAsList extends FileTemplateTab { Icon icon = null; if (value instanceof FileTemplate) { FileTemplate template = (FileTemplate) value; - icon = FileTypeManager.getInstance().getFileTypeByExtension(template.getExtension()).getIcon(); + icon = FileTemplateUtil.getIcon(template); final boolean internalTemplate = AllFileTemplatesConfigurable.isInternalTemplate(template.getName(), getTitle()); if (internalTemplate) { setFont(getFont().deriveFont(Font.BOLD)); diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/ui/SelectTemplateDialog.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/ui/SelectTemplateDialog.java index 1ad5a2cf2b9a..c29e101e0216 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/ui/SelectTemplateDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/ui/SelectTemplateDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,11 @@ package com.intellij.ide.fileTemplates.ui; +import com.intellij.ide.IdeBundle; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.FileTemplateUtil; -import com.intellij.ide.IdeBundle; +import com.intellij.ide.ui.ListCellRendererWrapper; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.FixedSizeButton; @@ -80,6 +81,15 @@ public class SelectTemplateDialog extends DialogWrapper{ } if(myCbxTemplates == null){ myCbxTemplates = new JComboBox(model); + myCbxTemplates.setRenderer(new ListCellRendererWrapper(myCbxTemplates.getRenderer()) { + @Override + public void customize(JList list, FileTemplate fileTemplate, int index, boolean selected, boolean hasFocus) { + if (fileTemplate != null) { + setIcon(FileTemplateUtil.getIcon(fileTemplate)); + setText(fileTemplate.getName()); + } + } + }); } else{ Object selected = myCbxTemplates.getSelectedItem();