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=