[platform] provide a way to specify a URL for "Keyboard Shortcuts PDF" action in ExternalProductResourceUrls (IJPL-204)

IntelliJ IDEA has been migrated to use the new property.

GitOrigin-RevId: 1a43dcfa89dfd8e9954bb611790136c224a58bd3
This commit is contained in:
Nikolay Chashnikov
2023-08-22 11:28:35 +02:00
committed by intellij-monorepo-bot
parent 6e8b44548e
commit 9711ba4167
6 changed files with 29 additions and 14 deletions

View File

@@ -18,8 +18,6 @@
<help webhelp-url="https://www.jetbrains.com/help/idea/"/>
<documentation url="https://www.jetbrains.com/idea/resources/"/>
<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"/>
<statistics settings="https://www.jetbrains.com/idea/statistics/stat-assistant.xml"
service="https://www.jetbrains.com/idea/statistics/index.jsp"

View File

@@ -1,6 +1,7 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.idea.customization.base
import com.intellij.openapi.util.SystemInfo
import com.intellij.platform.ide.impl.customization.BaseJetBrainsExternalProductResourceUrls
import com.intellij.platform.ide.impl.customization.ZenDeskFeedbackFormData
import com.intellij.platform.ide.impl.customization.ZenDeskFeedbackFormFieldIds
@@ -41,4 +42,10 @@ class IntelliJIdeaExternalResourceUrls : BaseJetBrainsExternalProductResourceUrl
override val youTubeChannelUrl: Url
get() = Urls.newFromEncoded("https://www.youtube.com/user/intellijideavideo")
override val keyboardShortcutsPdfUrl: Url
get() {
val suffix = if (SystemInfo.isMac) "_Mac" else ""
return Urls.newFromEncoded("https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard$suffix.pdf")
}
}

View File

@@ -82,9 +82,9 @@ public abstract class ApplicationInfoEx extends ApplicationInfo {
public abstract boolean isShowWhatsNewOnUpdate();
public abstract String getWinKeymapUrl();
public abstract @Nullable String getWinKeymapUrl();
public abstract String getMacKeymapUrl();
public abstract @Nullable String getMacKeymapUrl();
public interface UpdateUrls {
String getCheckingUrl();

View File

@@ -84,6 +84,14 @@ interface ExternalProductResourceUrls {
*/
val youTubeChannelUrl: Url?
get() = null
/**
* Returns URL of a PDF file describing keyboard shortcuts of the product.
* It's opened in the browser when a user invokes the "Keyboard Shortcuts PDF" action if `help/ReferenceCard.pdf` (`help/ReferenceCardForMac.pdf`
* for macOS) is not found.
*/
val keyboardShortcutsPdfUrl: Url?
get() = null
}
/**

View File

@@ -6,13 +6,12 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.util.NullableLazyValue;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.vfs.DiskQueryRelay;
import com.intellij.platform.ide.customization.ExternalProductResourceUrls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -30,7 +29,7 @@ public class RefCardAction extends DumbAwareAction implements ActionRemoteBehavi
@Override
public void update(@NotNull AnActionEvent e) {
e.getPresentation().setEnabledAndVisible(myRefCardPath.getValue() != null || getKeymapUrl() != null);
e.getPresentation().setEnabledAndVisible(myRefCardPath.getValue() != null || ExternalProductResourceUrls.getInstance().getKeyboardShortcutsPdfUrl() != null);
}
@Override
@@ -40,15 +39,10 @@ public class RefCardAction extends DumbAwareAction implements ActionRemoteBehavi
BrowserUtil.browse(file);
}
else {
var url = getKeymapUrl();
var url = ExternalProductResourceUrls.getInstance().getKeyboardShortcutsPdfUrl();
if (url != null) {
BrowserUtil.browse(url);
BrowserUtil.browse(url.toExternalForm());
}
}
}
private static @Nullable String getKeymapUrl() {
var appInfo = ApplicationInfoEx.getInstanceEx();
return SystemInfo.isMac ? appInfo.getMacKeymapUrl() : appInfo.getWinKeymapUrl();
}
}

View File

@@ -5,6 +5,7 @@ import com.intellij.openapi.application.ApplicationInfo
import com.intellij.openapi.application.ex.ApplicationInfoEx
import com.intellij.openapi.updateSettings.impl.UpdateRequestParameters
import com.intellij.openapi.util.BuildNumber
import com.intellij.openapi.util.SystemInfo
import com.intellij.platform.ide.customization.ExternalProductResourceUrls
import com.intellij.platform.ide.customization.FeedbackReporter
import com.intellij.ui.LicensingFacade
@@ -73,4 +74,11 @@ class LegacyExternalProductResourceUrls : ExternalProductResourceUrls {
override val youTubeChannelUrl: Url?
get() = ApplicationInfoEx.getInstanceEx().jetBrainsTvUrl?.let { Urls.newFromEncoded(it) }
override val keyboardShortcutsPdfUrl: Url?
get() {
val appInfo = ApplicationInfoEx.getInstanceEx()
val url = if (SystemInfo.isMac) appInfo.getMacKeymapUrl() else appInfo.getWinKeymapUrl()
return url?.let { Urls.newFromEncoded(url) }
}
}