continue WEB-9047 "Open in browser" usability — remove "preview in" action from View menu

This commit is contained in:
Vladimir Krivosheev
2013-12-30 22:55:15 +01:00
parent 511e75c2ae
commit 6fe35d7553
5 changed files with 112 additions and 72 deletions
@@ -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;
}
}