[platform] provide a way to specify a URL for "ProductName on YouTube" action in ExternalProductResourceUrls (IJPL-204)

IntelliJ IDEA has been migrated to use the new property.

GitOrigin-RevId: 7fed7bf4c7f102320cb3d0a139c8f863af305dd8
This commit is contained in:
Nikolay Chashnikov
2023-08-22 10:56:03 +02:00
committed by intellij-monorepo-bot
parent 8b61ff43e7
commit 6e8b44548e
7 changed files with 24 additions and 10 deletions

View File

@@ -20,7 +20,6 @@
<whatsnew url="https://www.jetbrains.com/idea/whatsnew/" show-on-update="true"/>
<keymap win="https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf"
mac="https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf"/>
<jetbrains-tv url="https://www.youtube.com/user/intellijideavideo"/>
<statistics settings="https://www.jetbrains.com/idea/statistics/stat-assistant.xml"
service="https://www.jetbrains.com/idea/statistics/index.jsp"

View File

@@ -8,5 +8,6 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
<orderEntry type="module" module-name="intellij.platform.ide.util.io" />
</component>
</module>

View File

@@ -4,6 +4,8 @@ package com.intellij.idea.customization.base
import com.intellij.platform.ide.impl.customization.BaseJetBrainsExternalProductResourceUrls
import com.intellij.platform.ide.impl.customization.ZenDeskFeedbackFormData
import com.intellij.platform.ide.impl.customization.ZenDeskFeedbackFormFieldIds
import com.intellij.util.Url
import com.intellij.util.Urls
class IntelliJIdeaExternalResourceUrls : BaseJetBrainsExternalProductResourceUrls() {
override val basePatchDownloadUrl: String
@@ -36,4 +38,7 @@ class IntelliJIdeaExternalResourceUrls : BaseJetBrainsExternalProductResourceUrl
override val topic: Long = 28116681
}
}
override val youTubeChannelUrl: Url
get() = Urls.newFromEncoded("https://www.youtube.com/user/intellijideavideo")
}

View File

@@ -68,7 +68,7 @@ public abstract class ApplicationInfo {
public abstract String getProductUrl();
public abstract String getJetBrainsTvUrl();
public abstract @Nullable String getJetBrainsTvUrl();
public abstract boolean hasHelp();

View File

@@ -76,6 +76,14 @@ interface ExternalProductResourceUrls {
*/
val downloadPageUrl: Url?
get() = null
/**
* Returns URL of the YouTube channel containing video material for the product.
* It's opened in the browser when a user invokes "`<Product>` on YouTube" action.
* If the property returns `null`, the action won't be shown.
*/
val youTubeChannelUrl: Url?
get() = null
}
/**

View File

@@ -7,23 +7,20 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification;
import com.intellij.openapi.application.ApplicationInfo;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.project.DumbAware;
import com.intellij.platform.ide.customization.ExternalProductResourceUrls;
import com.intellij.util.Url;
import org.jetbrains.annotations.NotNull;
public class JetBrainsTvAction extends AnAction implements DumbAware, ActionRemoteBehaviorSpecification.Frontend {
private final String myUrl;
public JetBrainsTvAction() {
myUrl = ApplicationInfo.getInstance().getJetBrainsTvUrl();
getTemplatePresentation().setText(() -> ActionsBundle.message("action.Help.JetBrainsTV.templateText", ApplicationNamesInfo.getInstance().getFullProductName()));
}
@Override
public void update(@NotNull AnActionEvent e) {
boolean enabled = myUrl != null;
e.getPresentation().setEnabledAndVisible(enabled);
e.getPresentation().setEnabledAndVisible(ExternalProductResourceUrls.getInstance().getYouTubeChannelUrl() != null);
}
@Override
@@ -33,8 +30,9 @@ public class JetBrainsTvAction extends AnAction implements DumbAware, ActionRemo
@Override
public void actionPerformed(@NotNull AnActionEvent e) {
if (myUrl != null) {
BrowserUtil.browse(myUrl);
Url url = ExternalProductResourceUrls.getInstance().getYouTubeChannelUrl();
if (url != null) {
BrowserUtil.browse(url.toExternalForm());
}
}
}

View File

@@ -70,4 +70,7 @@ class LegacyExternalProductResourceUrls : ExternalProductResourceUrls {
override val downloadPageUrl: Url
get() = Urls.newFromEncoded(ApplicationInfoEx.getInstanceEx().downloadUrl)
override val youTubeChannelUrl: Url?
get() = ApplicationInfoEx.getInstanceEx().jetBrainsTvUrl?.let { Urls.newFromEncoded(it) }
}