mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Ability to delay provisioning of FileTemplate instance
This commit is contained in:
+17
-6
@@ -22,31 +22,42 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class CreateFromTemplateAction extends CreateFromTemplateActionBase {
|
||||
private final Supplier<FileTemplate> myTemplate;
|
||||
|
||||
private final FileTemplate myTemplate;
|
||||
// Avoid calling the constructor from normal IDE actions, because:
|
||||
// - Normal actions are preloaded at startup
|
||||
// - Accessing FileTemplate out of FileTemplateManager triggers costly initialization
|
||||
public CreateFromTemplateAction(@NotNull FileTemplate template) {
|
||||
this(template.getName(), FileTemplateUtil.getIcon(template), () -> template);
|
||||
}
|
||||
|
||||
public CreateFromTemplateAction(FileTemplate template){
|
||||
super(template.getName(), null, FileTemplateUtil.getIcon(template));
|
||||
public CreateFromTemplateAction(String templateName, @Nullable Icon icon, @NotNull Supplier<FileTemplate> template){
|
||||
super(templateName, null, icon);
|
||||
myTemplate = template;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FileTemplate getTemplate(final Project project, final PsiDirectory dir) {
|
||||
return myTemplate;
|
||||
return myTemplate.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e){
|
||||
super.update(e);
|
||||
Presentation presentation = e.getPresentation();
|
||||
boolean isEnabled = CreateFromTemplateGroup.canCreateFromTemplate(e, myTemplate);
|
||||
boolean isEnabled = CreateFromTemplateGroup.canCreateFromTemplate(e, myTemplate.get());
|
||||
presentation.setEnabled(isEnabled);
|
||||
presentation.setVisible(isEnabled);
|
||||
}
|
||||
|
||||
public FileTemplate getTemplate() {
|
||||
return myTemplate;
|
||||
return myTemplate.get();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user