From 6b45a72ff7d0814852535658664c960b450c9d08 Mon Sep 17 00:00:00 2001 From: Roman Chernyatchik Date: Fri, 12 Sep 2008 23:03:30 +0400 Subject: [PATCH] TextMate like "create file from template" dialogs for ruby and rails file templates --- .../actions/CreateFromTemplateActionBase.java | 7 ++++++- .../ide/fileTemplates/ui/CreateFromTemplateDialog.java | 5 +++-- .../ide/fileTemplates/ui/CreateFromTemplatePanel.java | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateActionBase.java b/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateActionBase.java index 090570f01f..578b7b03d9 100644 --- a/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateActionBase.java +++ b/lang-impl/src/com/intellij/ide/fileTemplates/actions/CreateFromTemplateActionBase.java @@ -39,7 +39,7 @@ public abstract class CreateFromTemplateActionBase extends AnAction { } else { FileTemplateManager.getInstance().addRecentName(selectedTemplate.getName()); - PsiElement createdElement = new CreateFromTemplateDialog(project, dir, selectedTemplate).create(); + PsiElement createdElement = new CreateFromTemplateDialog(project, dir, selectedTemplate, getDefaultFileName()).create(); if (createdElement != null) { view.selectElement(createdElement); } @@ -51,4 +51,9 @@ public abstract class CreateFromTemplateActionBase extends AnAction { protected abstract AnAction getReplacedAction(final FileTemplate selectedTemplate); protected abstract FileTemplate getTemplate(final Project project, final PsiDirectory dir); + + @Nullable + public String getDefaultFileName() { + return null; + } } diff --git a/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplateDialog.java b/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplateDialog.java index 5de9dd4879..d82bb65d57 100644 --- a/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplateDialog.java +++ b/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplateDialog.java @@ -29,7 +29,8 @@ public class CreateFromTemplateDialog extends DialogWrapper { @NotNull private final FileTemplate myTemplate; private Properties myDefaultProperties; - public CreateFromTemplateDialog(@NotNull Project project, @NotNull PsiDirectory directory, @NotNull FileTemplate template) { + public CreateFromTemplateDialog(@NotNull Project project, @NotNull PsiDirectory directory, @NotNull FileTemplate template, + @Nullable final String defaultFileName) { super(project, true); myDirectory = directory; myProject = project; @@ -48,7 +49,7 @@ public class CreateFromTemplateDialog extends DialogWrapper { } if (unsetAttributes != null) { - myAttrPanel = new CreateFromTemplatePanel(unsetAttributes, !myTemplate.isJavaClassTemplate()); + myAttrPanel = new CreateFromTemplatePanel(unsetAttributes, !myTemplate.isJavaClassTemplate(), defaultFileName); myAttrComponent = myAttrPanel.getComponent(); init(); } diff --git a/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplatePanel.java b/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplatePanel.java index ac4110d8be..52f42b96ea 100644 --- a/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplatePanel.java +++ b/lang-impl/src/com/intellij/ide/fileTemplates/ui/CreateFromTemplatePanel.java @@ -29,16 +29,19 @@ public class CreateFromTemplatePanel{ private int myHorisontalMargin = -1; private int myVerticalMargin = -1; - private boolean mustEnterName; + private boolean myMustEnterName; + private String myDefaultFileName; - public CreateFromTemplatePanel(final String[] unsetAttributes, final boolean mustEnterName){ - this.mustEnterName = mustEnterName; + public CreateFromTemplatePanel(final String[] unsetAttributes, final boolean mustEnterName, + @Nullable final String defaultFilename){ + myMustEnterName = mustEnterName; myUnsetAttributes = unsetAttributes; + myDefaultFileName = defaultFilename; Arrays.sort(myUnsetAttributes); } public boolean hasSomethingToAsk() { - return mustEnterName || myUnsetAttributes.length != 0; + return myMustEnterName || myUnsetAttributes.length != 0; } public JComponent getComponent() { @@ -54,7 +57,7 @@ public class CreateFromTemplatePanel{ myScrollPanel.setBorder(null); int attrCount = myUnsetAttributes.length; - if (mustEnterName && !Arrays.asList(myUnsetAttributes).contains(FileTemplate.ATTRIBUTE_NAME)) { + if (myMustEnterName && !Arrays.asList(myUnsetAttributes).contains(FileTemplate.ATTRIBUTE_NAME)) { attrCount++; } Insets insets = (attrCount > 1) ? new Insets(2, 2, 2, 2) : new Insets(0, 0, 0, 0); @@ -98,10 +101,13 @@ public class CreateFromTemplatePanel{ private void updateShown() { Insets insets = new Insets(2, 2, 2, 2); myAttrPanel.add(Box.createHorizontalStrut(200), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, insets, 0, 0)); - if(mustEnterName || Arrays.asList(myUnsetAttributes).contains(FileTemplate.ATTRIBUTE_NAME)){ + if(myMustEnterName || Arrays.asList(myUnsetAttributes).contains(FileTemplate.ATTRIBUTE_NAME)){ final JLabel filenameLabel = new JLabel(IdeBundle.message("label.file.name")); myAttrPanel.add(filenameLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, insets, 0, 0)); myFilenameField = new JTextField(); + if (myDefaultFileName != null) { + myFilenameField.setText(myDefaultFileName); + } myAttrPanel.add(myFilenameField, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, insets, 0, 0)); } -- 2.11.4.GIT