1 package com.intellij.ide.browsers;
3 import com.intellij.icons.AllIcons;
4 import com.intellij.ide.IdeBundle;
5 import com.intellij.openapi.util.Comparing;
6 import com.intellij.openapi.util.text.StringUtil;
7 import com.intellij.util.PathUtil;
8 import org.jetbrains.annotations.NotNull;
9 import org.jetbrains.annotations.Nullable;
12 import java.util.UUID;
14 final class ConfigurableWebBrowser extends WebBrowser {
15 private final UUID id;
16 @NotNull private BrowserFamily family;
17 @NotNull private String name;
18 private boolean active;
21 private BrowserSpecificSettings specificSettings;
23 @SuppressWarnings("UnusedDeclaration")
24 public ConfigurableWebBrowser() {
25 this(UUID.randomUUID(), BrowserFamily.CHROME);
28 public ConfigurableWebBrowser(@NotNull UUID id, @NotNull BrowserFamily family) {
29 this(id, family, family.getName(), family.getExecutionPath(), true, family.createBrowserSpecificSettings());
32 public ConfigurableWebBrowser(@NotNull UUID id,
33 @NotNull BrowserFamily family,
35 @Nullable String path,
37 @Nullable BrowserSpecificSettings specificSettings) {
42 this.path = StringUtil.nullize(path);
44 this.specificSettings = specificSettings;
47 public void setName(@NotNull String value) {
51 public void setFamily(@NotNull BrowserFamily value) {
57 public Icon getIcon() {
58 if (family == BrowserFamily.CHROME) {
59 if (WebBrowserManager.isYandexBrowser(this)) {
60 return AllIcons.Xml.Browsers.Yandex16;
62 else if (checkNameAndPath("Dartium") || checkNameAndPath("Chromium")) {
63 return AllIcons.Xml.Browsers.Chromium16;
65 else if (checkNameAndPath("Canary")) {
66 return AllIcons.Xml.Browsers.Canary16;
68 else if (checkNameAndPath("Opera")) {
69 return AllIcons.Xml.Browsers.Opera16;
71 else if (checkNameAndPath("node-webkit") || checkNameAndPath("nw") || checkNameAndPath("nwjs")) {
72 return AllIcons.Xml.Browsers.Nwjs16;
75 return family.getIcon();
78 private boolean checkNameAndPath(@NotNull String what) {
79 return WebBrowserManager.checkNameAndPath(what, this);
84 public String getPath() {
88 public void setPath(@Nullable String value) {
89 path = PathUtil.toSystemIndependentName(StringUtil.nullize(value));
94 public BrowserSpecificSettings getSpecificSettings() {
95 return specificSettings;
98 public void setSpecificSettings(@Nullable BrowserSpecificSettings value) {
99 specificSettings = value;
102 public boolean isActive() {
106 public void setActive(boolean value) {
111 public boolean equals(Object o) {
115 if (!(o instanceof ConfigurableWebBrowser)) {
119 ConfigurableWebBrowser browser = (ConfigurableWebBrowser)o;
120 return getId().equals(browser.getId()) &&
121 family.equals(browser.family) &&
122 active == browser.active &&
123 Comparing.strEqual(name, browser.name) &&
124 Comparing.equal(path, browser.path) &&
125 Comparing.equal(specificSettings, browser.specificSettings);
129 public int hashCode() {
130 return getId().hashCode();
135 public String getName() {
141 public final UUID getId() {
147 public BrowserFamily getFamily() {
153 public String getBrowserNotFoundMessage() {
154 return IdeBundle.message("error.0.browser.path.not.specified", getName());
158 public String toString() {
159 return getName() + " (" + getPath() + ")";