From ddd555fd16234756db88c38b2c365781cfc404c3 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 7 Feb 2014 11:45:32 +0100 Subject: [PATCH] extract WebBrowserBase --- .../ide/browsers/ConfigurableWebBrowser.java | 2 +- .../ide/browsers/CustomWebBrowser.java | 2 +- .../ide/browsers/StartBrowserSettings.java | 2 +- .../com/intellij/ide/browsers/WebBrowser.java | 79 ++------------- .../intellij/ide/browsers/WebBrowserBase.java | 96 +++++++++++++++++++ .../OpenFileInDefaultBrowserAction.java | 5 +- .../ide/browsers/impl/DefaultUrlOpener.java | 5 +- 7 files changed, 107 insertions(+), 84 deletions(-) create mode 100644 xml/impl/src/com/intellij/ide/browsers/WebBrowserBase.java diff --git a/xml/impl/src/com/intellij/ide/browsers/ConfigurableWebBrowser.java b/xml/impl/src/com/intellij/ide/browsers/ConfigurableWebBrowser.java index a6b44ca3a1dd..a74c1b702831 100644 --- a/xml/impl/src/com/intellij/ide/browsers/ConfigurableWebBrowser.java +++ b/xml/impl/src/com/intellij/ide/browsers/ConfigurableWebBrowser.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.UUID; -final class ConfigurableWebBrowser extends WebBrowser { +final class ConfigurableWebBrowser extends WebBrowserBase { private boolean active; private String path; diff --git a/xml/impl/src/com/intellij/ide/browsers/CustomWebBrowser.java b/xml/impl/src/com/intellij/ide/browsers/CustomWebBrowser.java index 190731fbbc29..d3f296631ae2 100644 --- a/xml/impl/src/com/intellij/ide/browsers/CustomWebBrowser.java +++ b/xml/impl/src/com/intellij/ide/browsers/CustomWebBrowser.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.UUID; -final class CustomWebBrowser extends WebBrowser { +final class CustomWebBrowser extends WebBrowserBase { private final Computable pathComputable; private final Icon icon; private final String browserNotFoundMessage; diff --git a/xml/impl/src/com/intellij/ide/browsers/StartBrowserSettings.java b/xml/impl/src/com/intellij/ide/browsers/StartBrowserSettings.java index b87fd057f191..db6045ad24f4 100644 --- a/xml/impl/src/com/intellij/ide/browsers/StartBrowserSettings.java +++ b/xml/impl/src/com/intellij/ide/browsers/StartBrowserSettings.java @@ -27,7 +27,7 @@ public class StartBrowserSettings { } @Nullable - @Attribute(value = "name", converter = WebBrowser.ReferenceConverter.class) + @Attribute(value = "name", converter = WebBrowserBase.ReferenceConverter.class) public WebBrowser getBrowser() { return myBrowser; } diff --git a/xml/impl/src/com/intellij/ide/browsers/WebBrowser.java b/xml/impl/src/com/intellij/ide/browsers/WebBrowser.java index a64b4c174381..04eaa34123e9 100644 --- a/xml/impl/src/com/intellij/ide/browsers/WebBrowser.java +++ b/xml/impl/src/com/intellij/ide/browsers/WebBrowser.java @@ -1,23 +1,5 @@ -/* - * Copyright 2000-2014 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package com.intellij.ide.browsers; -import com.intellij.openapi.util.NullableComputable; -import com.intellij.util.xmlb.Converter; -import com.intellij.xml.XmlBundle; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -25,30 +7,14 @@ import javax.swing.*; import java.util.UUID; public abstract class WebBrowser { - protected @NotNull BrowserFamily family; - protected @NotNull String name; - private final UUID id; - - protected WebBrowser(@NotNull UUID id, @NotNull BrowserFamily family, @NotNull String name) { - this.id = id; - this.family = family; - this.name = name; - } + @NotNull + public abstract String getName(); @NotNull - public String getName() { - return name; - } + public abstract UUID getId(); @NotNull - public final UUID getId() { - return id; - } - - @NotNull - public BrowserFamily getFamily() { - return family; - } + public abstract BrowserFamily getFamily(); @NotNull public abstract Icon getIcon(); @@ -57,41 +23,8 @@ public abstract class WebBrowser { public abstract String getPath(); @NotNull - public String getBrowserNotFoundMessage() { - return XmlBundle.message("error.0.browser.path.not.specified", getName()); - } + public abstract String getBrowserNotFoundMessage(); @Nullable - public BrowserSpecificSettings getSpecificSettings() { - return null; - } - - @NotNull - public static WebBrowser createCustomBrowser(@NotNull BrowserFamily family, - @NotNull String name, - @NotNull UUID id, - @NotNull Icon icon, - @NotNull NullableComputable pathComputable, - @Nullable String browserNotFoundMessage) { - return new CustomWebBrowser(id, family, name, icon, pathComputable, browserNotFoundMessage); - } - - @Override - public String toString() { - return getName() + " (" + getPath() + ")"; - } - - public static final class ReferenceConverter extends Converter { - @Nullable - @Override - public WebBrowser fromString(@NotNull String value) { - return WebBrowserManager.getInstance().findBrowserById(value); - } - - @NotNull - @Override - public String toString(@NotNull WebBrowser browser) { - return browser.getId().toString(); - } - } + public abstract BrowserSpecificSettings getSpecificSettings(); } \ No newline at end of file diff --git a/xml/impl/src/com/intellij/ide/browsers/WebBrowserBase.java b/xml/impl/src/com/intellij/ide/browsers/WebBrowserBase.java new file mode 100644 index 000000000000..bc6af2b71e71 --- /dev/null +++ b/xml/impl/src/com/intellij/ide/browsers/WebBrowserBase.java @@ -0,0 +1,96 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.browsers; + +import com.intellij.openapi.util.NullableComputable; +import com.intellij.util.xmlb.Converter; +import com.intellij.xml.XmlBundle; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.util.UUID; + +public abstract class WebBrowserBase extends WebBrowser { + protected @NotNull BrowserFamily family; + protected @NotNull String name; + private final UUID id; + + protected WebBrowserBase(@NotNull UUID id, @NotNull BrowserFamily family, @NotNull String name) { + this.id = id; + this.family = family; + this.name = name; + } + + @Override + @NotNull + public String getName() { + return name; + } + + @Override + @NotNull + public final UUID getId() { + return id; + } + + @Override + @NotNull + public BrowserFamily getFamily() { + return family; + } + + @Override + @NotNull + public String getBrowserNotFoundMessage() { + return XmlBundle.message("error.0.browser.path.not.specified", getName()); + } + + @Override + @Nullable + public BrowserSpecificSettings getSpecificSettings() { + return null; + } + + @NotNull + public static WebBrowser createCustomBrowser(@NotNull BrowserFamily family, + @NotNull String name, + @NotNull UUID id, + @NotNull Icon icon, + @NotNull NullableComputable pathComputable, + @Nullable String browserNotFoundMessage) { + return new CustomWebBrowser(id, family, name, icon, pathComputable, browserNotFoundMessage); + } + + @Override + public String toString() { + return getName() + " (" + getPath() + ")"; + } + + public static final class ReferenceConverter extends Converter { + @Nullable + @Override + public WebBrowser fromString(@NotNull String value) { + return WebBrowserManager.getInstance().findBrowserById(value); + } + + @NotNull + @Override + public String toString(@NotNull WebBrowser browser) { + return browser.getId().toString(); + } + } +} \ No newline at end of file diff --git a/xml/impl/src/com/intellij/ide/browsers/actions/OpenFileInDefaultBrowserAction.java b/xml/impl/src/com/intellij/ide/browsers/actions/OpenFileInDefaultBrowserAction.java index 48dc7bb2deb5..80ddd286fe5c 100644 --- a/xml/impl/src/com/intellij/ide/browsers/actions/OpenFileInDefaultBrowserAction.java +++ b/xml/impl/src/com/intellij/ide/browsers/actions/OpenFileInDefaultBrowserAction.java @@ -16,10 +16,7 @@ package com.intellij.ide.browsers.actions; import com.intellij.ide.GeneralSettings; -import com.intellij.ide.browsers.OpenInBrowserRequest; -import com.intellij.ide.browsers.WebBrowser; -import com.intellij.ide.browsers.WebBrowserManager; -import com.intellij.ide.browsers.WebBrowserUrlProvider; +import com.intellij.ide.browsers.*; import com.intellij.openapi.actionSystem.ActionPlaces; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; diff --git a/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java b/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java index e85420eef9d4..bc760156e229 100644 --- a/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java +++ b/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java @@ -21,10 +21,7 @@ import com.intellij.execution.configurations.GeneralCommandLine; import com.intellij.execution.util.ExecUtil; import com.intellij.ide.BrowserUtil; import com.intellij.ide.IdeBundle; -import com.intellij.ide.browsers.BrowserSettings; -import com.intellij.ide.browsers.BrowserSpecificSettings; -import com.intellij.ide.browsers.UrlOpener; -import com.intellij.ide.browsers.WebBrowser; +import com.intellij.ide.browsers.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.ShowSettingsUtil;