mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[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:
committed by
intellij-monorepo-bot
parent
8b61ff43e7
commit
6e8b44548e
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
@@ -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")
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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) }
|
||||
}
|
||||
Reference in New Issue
Block a user