diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.form b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.form index fced0a2215b9..a850d86940ac 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.form +++ b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.form @@ -43,14 +43,34 @@ - + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java index f8bc7308225d..884bfd5562c0 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java +++ b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java @@ -1,4 +1,4 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.browsers; import com.intellij.ide.GeneralSettings; @@ -9,6 +9,7 @@ import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.Comparing; import com.intellij.ui.CollectionComboBoxModel; +import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.SimpleListCellRenderer; import com.intellij.ui.TitledSeparator; import com.intellij.ui.components.JBCheckBox; @@ -126,6 +127,8 @@ final class BrowserSettingsPanel { private ComboBox defaultBrowserPolicyComboBox; private JBCheckBox showBrowserHover; + private JBCheckBox showBrowserHoverXml; + private JPanel browserPopupPanel; private TableModelEditor browsersEditor; @@ -167,6 +170,8 @@ final class BrowserSettingsPanel { if (text == null) throw new IllegalStateException(String.valueOf(value)); return text; })); + + browserPopupPanel.setBorder(IdeBorderFactory.createTitledBorder(XmlBundle.message("settings.browsers.show.browser.popup.in.the.editor"))); } private void updateCustomPathTextFieldValue(@NotNull DefaultBrowserPolicy browser) { @@ -279,7 +284,8 @@ final class BrowserSettingsPanel { DefaultBrowserPolicy defaultBrowserPolicy = getDefaultBrowser(); if (getDefaultBrowserPolicy(browserManager) != defaultBrowserPolicy || - browserManager.isShowBrowserHover() != showBrowserHover.isSelected()) { + browserManager.isShowBrowserHover() != showBrowserHover.isSelected() || + browserManager.isShowBrowserHoverXml() != showBrowserHoverXml.isSelected()) { return true; } @@ -302,6 +308,7 @@ final class BrowserSettingsPanel { WebBrowserManager browserManager = WebBrowserManager.getInstance(); browserManager.setShowBrowserHover(showBrowserHover.isSelected()); + browserManager.setShowBrowserHoverXml(showBrowserHoverXml.isSelected()); browserManager.defaultBrowserPolicy = getDefaultBrowser(); browserManager.setList(browsersEditor.apply()); } @@ -317,6 +324,7 @@ final class BrowserSettingsPanel { GeneralSettings settings = GeneralSettings.getInstance(); showBrowserHover.setSelected(browserManager.isShowBrowserHover()); + showBrowserHoverXml.setSelected(browserManager.isShowBrowserHoverXml()); browsersEditor.reset(browserManager.getList()); customPathValue = settings.getBrowserPath(); diff --git a/xml/impl/src/com/intellij/ide/browsers/WebBrowserManager.java b/xml/impl/src/com/intellij/ide/browsers/WebBrowserManager.java index 38fd623fd964..09f3cb2a143f 100644 --- a/xml/impl/src/com/intellij/ide/browsers/WebBrowserManager.java +++ b/xml/impl/src/com/intellij/ide/browsers/WebBrowserManager.java @@ -1,4 +1,4 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.browsers; import com.intellij.openapi.components.PersistentStateComponent; @@ -60,6 +60,7 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers private List browsers; private boolean myShowBrowserHover = true; + private boolean myShowBrowserHoverXml = false; DefaultBrowserPolicy defaultBrowserPolicy = DefaultBrowserPolicy.SYSTEM; public WebBrowserManager() { @@ -121,6 +122,9 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers if (!myShowBrowserHover) { state.setAttribute("showHover", "false"); } + if (myShowBrowserHoverXml) { + state.setAttribute("showHoverXml", "true"); + } if (!browsers.equals(getPredefinedBrowsers())) { for (ConfigurableWebBrowser browser : browsers) { @@ -430,7 +434,15 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers myShowBrowserHover = showBrowserHover; } + public void setShowBrowserHoverXml(boolean showBrowserHover) { + myShowBrowserHoverXml = showBrowserHover; + } + public boolean isShowBrowserHover() { return myShowBrowserHover; } + + public boolean isShowBrowserHoverXml() { + return myShowBrowserHoverXml; + } } \ No newline at end of file diff --git a/xml/impl/src/com/intellij/ide/browsers/actions/OpenInBrowserBaseGroupAction.java b/xml/impl/src/com/intellij/ide/browsers/actions/OpenInBrowserBaseGroupAction.java index f463db06088c..cca6a8e881f0 100644 --- a/xml/impl/src/com/intellij/ide/browsers/actions/OpenInBrowserBaseGroupAction.java +++ b/xml/impl/src/com/intellij/ide/browsers/actions/OpenInBrowserBaseGroupAction.java @@ -1,12 +1,14 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.browsers.actions; import com.intellij.icons.AllIcons; import com.intellij.ide.browsers.WebBrowser; import com.intellij.ide.browsers.WebBrowserManager; +import com.intellij.lang.xml.XMLLanguage; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.diff.impl.DiffUtil; import com.intellij.openapi.editor.Editor; +import com.intellij.psi.PsiFile; import com.intellij.psi.util.CachedValueProvider; import com.intellij.xml.XmlBundle; import org.jetbrains.annotations.NotNull; @@ -66,7 +68,11 @@ public abstract class OpenInBrowserBaseGroupAction extends ComputableActionGroup public void update(@NotNull AnActionEvent e) { Editor editor = e.getData(CommonDataKeys.EDITOR); final WebBrowserManager browserManager = WebBrowserManager.getInstance(); - e.getPresentation().setVisible(browserManager.isShowBrowserHover() && !browserManager.getActiveBrowsers().isEmpty() && + PsiFile psiFile = e.getData(CommonDataKeys.PSI_FILE); + boolean needShowOnHover = psiFile != null && psiFile.getViewProvider().getBaseLanguage() == XMLLanguage.INSTANCE + ? browserManager.isShowBrowserHoverXml() + : browserManager.isShowBrowserHover(); + e.getPresentation().setVisible(needShowOnHover && !browserManager.getActiveBrowsers().isEmpty() && editor != null && !DiffUtil.isDiffEditor(editor)); } } diff --git a/xml/openapi/resources/messages/XmlBundle.properties b/xml/openapi/resources/messages/XmlBundle.properties index 04e1e580c830..ce75bf84b96e 100644 --- a/xml/openapi/resources/messages/XmlBundle.properties +++ b/xml/openapi/resources/messages/XmlBundle.properties @@ -253,6 +253,8 @@ comments=Comments disable.emmet=Disable Emmet edit.emmet.settings=Edit Emmet settings settings.browsers.show.browser.popup.in.the.editor=Show browser popup in the editor +settings.browsers.show.browser.popup.html=For HTML files +settings.browsers.show.browser.popup.xml=For XML files emmet.filter.single.line=Single line checkbox.collapse.xml.tags=XML tags xml.tag.info.no.attributes=