mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-147808 Make "Change template data language" more discoverable
This commit is contained in:
+9
-7
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package com.intellij.psi.templateLanguages;
|
||||
|
||||
import com.intellij.lang.LangBundle;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.lang.LangBundle;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -60,7 +61,10 @@ public class ChangeTemplateDataLanguageAction extends AnAction {
|
||||
Project project = e.getData(CommonDataKeys.PROJECT);
|
||||
if (project == null) return;
|
||||
|
||||
final VirtualFile virtualFile = e.getData(CommonDataKeys.VIRTUAL_FILE);
|
||||
editSettings(project, e.getData(CommonDataKeys.VIRTUAL_FILE));
|
||||
}
|
||||
|
||||
public static void editSettings(@NotNull Project project, @Nullable final VirtualFile virtualFile) {
|
||||
final TemplateDataLanguageConfigurable configurable = new TemplateDataLanguageConfigurable(project);
|
||||
ShowSettingsUtil.getInstance().editConfigurable(project, configurable, new Runnable() {
|
||||
@Override
|
||||
@@ -71,6 +75,4 @@ public class ChangeTemplateDataLanguageAction extends AnAction {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -81,6 +81,8 @@
|
||||
|
||||
<action id="ChangeTemplateDataLanguage" class="com.intellij.psi.templateLanguages.ChangeTemplateDataLanguageAction">
|
||||
<add-to-group group-id="FileMenu" anchor="before" relative-to-action="ToggleReadOnlyAttribute"/>
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="before" relative-to-action="ToggleReadOnlyAttribute"/>
|
||||
<add-to-group group-id="EditorTabPopupMenu" anchor="after" relative-to-action="CopyReference"/>
|
||||
</action>
|
||||
|
||||
<group id="PowerSaveGroup">
|
||||
@@ -627,10 +629,6 @@
|
||||
<add-to-group group-id="EditorTabPopupMenu" anchor="last"/>
|
||||
</group>
|
||||
|
||||
<reference ref="ChangeTemplateDataLanguage">
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="before" relative-to-action="ToggleReadOnlyAttribute"/>
|
||||
</reference>
|
||||
|
||||
<group id="UsageView.Popup">
|
||||
<action id="UsageView.Rerun" class="com.intellij.usages.actions.RerunSearchAction" icon="AllIcons.Actions.Rerun" use-shortcut-of="Rerun"/>
|
||||
<separator/>
|
||||
|
||||
+49
@@ -16,13 +16,25 @@
|
||||
|
||||
package com.intellij.codeInspection.htmlInspections;
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.LocalQuickFixOnPsiElement;
|
||||
import com.intellij.lang.LangBundle;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.templateLanguages.ChangeTemplateDataLanguageAction;
|
||||
import com.intellij.psi.templateLanguages.ConfigurableTemplateLanguageFileViewProvider;
|
||||
import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider;
|
||||
import com.intellij.psi.templateLanguages.TemplateLanguageUtil;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.FieldPanel;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -119,4 +131,41 @@ public class HtmlUnknownTagInspection extends HtmlUnknownTagInspectionBase {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected LocalQuickFix createChangeTemplateDataFix(PsiFile file) {
|
||||
if (file != TemplateLanguageUtil.getTemplateFile(file)) return null;
|
||||
|
||||
FileViewProvider vp = file.getViewProvider();
|
||||
if (vp instanceof ConfigurableTemplateLanguageFileViewProvider) {
|
||||
final TemplateLanguageFileViewProvider viewProvider = (TemplateLanguageFileViewProvider)vp;
|
||||
final String text =
|
||||
LangBundle.message("quickfix.change.template.data.language.text", viewProvider.getTemplateDataLanguage().getDisplayName());
|
||||
|
||||
return new LocalQuickFixOnPsiElement(file) {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project,
|
||||
@NotNull PsiFile file,
|
||||
@NotNull PsiElement startElement,
|
||||
@NotNull PsiElement endElement) {
|
||||
ChangeTemplateDataLanguageAction.editSettings(project, file.getVirtualFile());
|
||||
}
|
||||
|
||||
@Nls
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFamilyName() {
|
||||
return "Change template data language";
|
||||
}
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+15
-7
@@ -24,6 +24,7 @@ import com.intellij.codeInspection.XmlQuickFixFactory;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.html.HtmlTag;
|
||||
import com.intellij.psi.impl.source.html.dtd.HtmlElementDescriptorImpl;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
@@ -38,6 +39,7 @@ import com.intellij.xml.util.XmlUtil;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -127,14 +129,15 @@ public class HtmlUnknownTagInspectionBase extends HtmlUnknownElementInspection {
|
||||
List<LocalQuickFix> quickfixes = new ArrayList<LocalQuickFix>();
|
||||
quickfixes.add(action);
|
||||
if (isOnTheFly) {
|
||||
LocalQuickFix fix;
|
||||
if (startTagName.getContainingFile() instanceof XmlFile) {
|
||||
fix = XmlQuickFixFactory.getInstance().createNSDeclarationIntentionFix(startTagName, "", null);
|
||||
PsiFile file = startTagName.getContainingFile();
|
||||
if (file instanceof XmlFile) {
|
||||
quickfixes.add(XmlQuickFixFactory.getInstance().createNSDeclarationIntentionFix(startTagName, "", null));
|
||||
}
|
||||
else {
|
||||
fix = null;
|
||||
}
|
||||
ContainerUtil.addIfNotNull(fix, quickfixes);
|
||||
|
||||
// People using non-HTML as their template data language (but having not changed this in the IDE)
|
||||
// will most likely see 'unknown html tag' error, because HTML is usually the default.
|
||||
// So if they check quick fixes for this error they'll discover Change Template Data Language feature.
|
||||
ContainerUtil.addIfNotNull(quickfixes, createChangeTemplateDataFix(file));
|
||||
}
|
||||
if (HtmlUtil.isHtml5Tag(name) && !HtmlUtil.hasNonHtml5Doctype(tag)) {
|
||||
quickfixes.add(new SwitchToHtml5WithHighPriorityAction());
|
||||
@@ -152,4 +155,9 @@ public class HtmlUnknownTagInspectionBase extends HtmlUnknownElementInspection {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected LocalQuickFix createChangeTemplateDataFix(PsiFile file) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user