mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
continue WEB-9047 "Open in browser" usability — remove "preview in" action from View menu
This commit is contained in:
@@ -73,16 +73,22 @@
|
||||
</action>
|
||||
|
||||
<!-- preserved to keep compatibility - if user configured shortcut for action, it should not be lost -->
|
||||
<action id="OpenInBrowser" class="com.intellij.ide.browsers.OpenFileInDefaultBrowserAction"
|
||||
<action id="OpenInBrowser" class="com.intellij.ide.browsers.actions.OpenFileInDefaultBrowserAction"
|
||||
text="Open in default _browser" description="Open selected file in default browser"
|
||||
icon="AllIcons.Nodes.PpWeb">
|
||||
</action>
|
||||
|
||||
<group id="OpenInBrowserGroup" class="com.intellij.ide.browsers.actions.OpenInBrowserGroupAction" text="Open in _Browser"
|
||||
description="Open selected file in browser" icon="AllIcons.Nodes.PpWeb">
|
||||
<group id="OpenInBrowserGroup"
|
||||
class="com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserGroupAction"
|
||||
text="Open in _Browser" description="Open selected file in browser" icon="AllIcons.Nodes.PpWeb">
|
||||
<add-to-group group-id="ViewMenu" anchor="after" relative-to-action="ViewSource"/>
|
||||
<add-to-group group-id="RunContextPopupGroup" anchor="last"/>
|
||||
</group>
|
||||
<group id="OpenInBrowserEditorContextBarGroupAction"
|
||||
class="com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserEditorContextBarGroupAction"
|
||||
description="Open In...">
|
||||
<add-to-group group-id="EditorContextBarMenu" anchor="last"/>
|
||||
</group>
|
||||
|
||||
<action id="SurroundWithEmmet" class="com.intellij.codeInsight.template.emmet.SurroundWithEmmetAction"
|
||||
text="Surround with Emmet" description="Surround selected code with Emmet abbreviation"/>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.intellij.ide.browsers.actions;
|
||||
|
||||
import com.intellij.ide.browsers.*;
|
||||
import com.intellij.ide.browsers.BrowsersConfiguration;
|
||||
import com.intellij.ide.browsers.OpenInBrowserRequest;
|
||||
import com.intellij.ide.browsers.WebBrowser;
|
||||
import com.intellij.ide.browsers.WebBrowserUrlProvider;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
@@ -11,7 +14,7 @@ import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.xml.util.HtmlUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class BaseWebBrowserAction extends DumbAwareAction {
|
||||
final class BaseWebBrowserAction extends DumbAwareAction {
|
||||
private final WebBrowser browser;
|
||||
|
||||
public BaseWebBrowserAction(@NotNull WebBrowser browser) {
|
||||
@@ -20,10 +23,6 @@ public class BaseWebBrowserAction extends DumbAwareAction {
|
||||
this.browser = browser;
|
||||
}
|
||||
|
||||
public BaseWebBrowserAction(@NotNull BrowsersConfiguration.BrowserFamily family) {
|
||||
this(WebBrowser.getStandardBrowser(family));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final AnActionEvent e) {
|
||||
if (!BrowsersConfiguration.getInstance().getBrowserSettings(browser.getFamily()).isActive()) {
|
||||
@@ -32,7 +31,7 @@ public class BaseWebBrowserAction extends DumbAwareAction {
|
||||
return;
|
||||
}
|
||||
|
||||
Pair<OpenInBrowserRequest, WebBrowserUrlProvider> result = OpenFileInDefaultBrowserAction.doUpdate(e);
|
||||
Pair<OpenInBrowserRequest, WebBrowserUrlProvider> result = OpenInBrowserBaseGroupAction.doUpdate(e);
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ package com.intellij.ide.browsers.actions;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.GeneralSettings;
|
||||
import com.intellij.ide.browsers.*;
|
||||
import com.intellij.ide.browsers.impl.WebBrowserServiceImpl;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -34,7 +33,6 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import com.intellij.ui.ColoredListCellRenderer;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.util.Consumer;
|
||||
@@ -53,30 +51,11 @@ import java.util.Collection;
|
||||
public class OpenFileInDefaultBrowserAction extends DumbAwareAction {
|
||||
private static final Logger LOG = Logger.getInstance(OpenFileInDefaultBrowserAction.class);
|
||||
|
||||
@Nullable
|
||||
public static Pair<OpenInBrowserRequest, WebBrowserUrlProvider> doUpdate(AnActionEvent event) {
|
||||
OpenInBrowserRequest request = createRequest(event.getDataContext());
|
||||
boolean applicable = false;
|
||||
WebBrowserUrlProvider provider = null;
|
||||
if (request != null) {
|
||||
applicable = HtmlUtil.isHtmlFile(request.getFile()) && !(request.getVirtualFile() instanceof LightVirtualFile);
|
||||
if (!applicable) {
|
||||
provider = WebBrowserServiceImpl.getProvider(request);
|
||||
applicable = provider != null;
|
||||
}
|
||||
}
|
||||
|
||||
Presentation presentation = event.getPresentation();
|
||||
presentation.setVisible(applicable);
|
||||
presentation.setVisible(applicable);
|
||||
return applicable ? Pair.create(request, provider) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
Presentation presentation = e.getPresentation();
|
||||
|
||||
Pair<OpenInBrowserRequest, WebBrowserUrlProvider> result = doUpdate(e);
|
||||
Pair<OpenInBrowserRequest, WebBrowserUrlProvider> result = OpenInBrowserBaseGroupAction.doUpdate(e);
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.intellij.ide.browsers.actions;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.browsers.BrowsersConfiguration;
|
||||
import com.intellij.ide.browsers.OpenInBrowserRequest;
|
||||
import com.intellij.ide.browsers.WebBrowser;
|
||||
import com.intellij.ide.browsers.WebBrowserUrlProvider;
|
||||
import com.intellij.ide.browsers.impl.WebBrowserServiceImpl;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import com.intellij.xml.util.HtmlUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class OpenInBrowserBaseGroupAction extends ActionGroup implements DumbAware {
|
||||
public static final DataKey<OpenInBrowserRequest> OPEN_IN_BROWSER_REQUEST = DataKey.create("OPEN_IN_BROWSER_REQUEST");
|
||||
|
||||
private OpenFileInDefaultBrowserAction myDefaultBrowserAction;
|
||||
|
||||
protected OpenInBrowserBaseGroupAction(boolean popup) {
|
||||
super(null, popup);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Pair<OpenInBrowserRequest, WebBrowserUrlProvider> doUpdate(@NotNull AnActionEvent event) {
|
||||
OpenInBrowserRequest request = OpenFileInDefaultBrowserAction.createRequest(event.getDataContext());
|
||||
boolean applicable = false;
|
||||
WebBrowserUrlProvider provider = null;
|
||||
if (request != null) {
|
||||
applicable = HtmlUtil.isHtmlFile(request.getFile()) && !(request.getVirtualFile() instanceof LightVirtualFile);
|
||||
if (!applicable) {
|
||||
provider = WebBrowserServiceImpl.getProvider(request);
|
||||
applicable = provider != null;
|
||||
}
|
||||
}
|
||||
|
||||
Presentation presentation = event.getPresentation();
|
||||
presentation.setVisible(applicable);
|
||||
presentation.setVisible(applicable);
|
||||
return applicable ? Pair.create(request, provider) : null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public AnAction[] getChildren(@Nullable AnActionEvent e) {
|
||||
if (e == null) {
|
||||
return EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
Pair<OpenInBrowserRequest, WebBrowserUrlProvider> result = doUpdate(e);
|
||||
if (result == null) {
|
||||
return EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
return computeActions();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private AnAction[] computeActions() {
|
||||
List<WebBrowser> browsers = BrowsersConfiguration.getInstance().getActive();
|
||||
boolean addDefaultBrowser = isPopup();
|
||||
int offset = addDefaultBrowser ? 1 : 0;
|
||||
AnAction[] actions = new AnAction[browsers.size() + offset];
|
||||
|
||||
if (addDefaultBrowser) {
|
||||
if (myDefaultBrowserAction == null) {
|
||||
myDefaultBrowserAction = new OpenFileInDefaultBrowserAction();
|
||||
myDefaultBrowserAction.getTemplatePresentation().setText("Default");
|
||||
myDefaultBrowserAction.getTemplatePresentation().setIcon(AllIcons.Nodes.PpWeb);
|
||||
}
|
||||
actions[0] = myDefaultBrowserAction;
|
||||
}
|
||||
|
||||
for (int i = 0, size = browsers.size(); i < size; i++) {
|
||||
WebBrowser browser = browsers.get(i);
|
||||
actions[i + offset] = new BaseWebBrowserAction(browser);
|
||||
}
|
||||
return actions;
|
||||
}
|
||||
|
||||
public static final class OpenInBrowserGroupAction extends OpenInBrowserBaseGroupAction implements DumbAware {
|
||||
public OpenInBrowserGroupAction() {
|
||||
super(true);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class OpenInBrowserEditorContextBarGroupAction extends OpenInBrowserBaseGroupAction {
|
||||
public OpenInBrowserEditorContextBarGroupAction() {
|
||||
super(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.intellij.ide.browsers.actions;
|
||||
|
||||
import com.intellij.ide.browsers.BrowsersConfiguration;
|
||||
import com.intellij.ide.browsers.WebBrowser;
|
||||
import com.intellij.openapi.actionSystem.ActionGroup;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class OpenInBrowserGroupAction extends ActionGroup implements DumbAware {
|
||||
private AnAction[] myActions;
|
||||
|
||||
public OpenInBrowserGroupAction() {
|
||||
super(null, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public AnAction[] getChildren(@Nullable AnActionEvent e) {
|
||||
if (myActions == null) {
|
||||
myActions = computeActions();
|
||||
}
|
||||
return myActions;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static AnAction[] computeActions() {
|
||||
List<WebBrowser> browsers = BrowsersConfiguration.getInstance().getActive();
|
||||
AnAction[] actions = new AnAction[browsers.size()];
|
||||
for (int i = 0, size = browsers.size(); i < size; i++) {
|
||||
WebBrowser browser = browsers.get(i);
|
||||
actions[i] = new BaseWebBrowserAction(browser);
|
||||
}
|
||||
return actions;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user