mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Assorted fixes and improvements to plugins advertiser notifications
GitOrigin-RevId: d0051bf4ba22e646631e0056f35d24bfa8e60b50
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8396388dd0
commit
9f1363b53c
+9
-3
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.application;
|
||||
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
@@ -24,4 +22,12 @@ public class IdeUrlTrackingParametersProvider {
|
||||
public String augmentUrl(@NotNull String originalUrl) {
|
||||
return originalUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code originalUrl} with appended parameters
|
||||
*/
|
||||
@NotNull
|
||||
public String augmentUrl(@NotNull String originalUrl, String campaignId) {
|
||||
return originalUrl;
|
||||
}
|
||||
}
|
||||
|
||||
+11
-7
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.ide.customization;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationInfo;
|
||||
@@ -20,14 +18,20 @@ public class UtmIdeUrlTrackingParametersProvider extends IdeUrlTrackingParameter
|
||||
@NotNull
|
||||
@Override
|
||||
public String augmentUrl(@NotNull String originalUrl) {
|
||||
return augmentUrl(originalUrl, ApplicationInfo.getInstance().getBuild().getProductCode());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String augmentUrl(@NotNull String originalUrl, String campaignId) {
|
||||
try {
|
||||
ApplicationInfo info = ApplicationInfo.getInstance();
|
||||
String productVersion = info.getMajorVersion() + "." + info.getMinorVersionMainPart();
|
||||
return new URIBuilder(originalUrl).addParameter("utm_source", "product")
|
||||
.addParameter("utm_medium", "link")
|
||||
.addParameter("utm_campaign", info.getBuild().getProductCode())
|
||||
.addParameter("utm_content", productVersion)
|
||||
.build().toString();
|
||||
.addParameter("utm_medium", "link")
|
||||
.addParameter("utm_campaign", campaignId)
|
||||
.addParameter("utm_content", productVersion)
|
||||
.build().toString();
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
LOG.warn(originalUrl, e);
|
||||
|
||||
+3
@@ -3,6 +3,7 @@ package com.intellij.openapi.updateSettings.impl.pluginsAdvertisement;
|
||||
|
||||
import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUCounterUsageLogger;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileTypes.FileTypeFactory;
|
||||
@@ -86,6 +87,7 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati
|
||||
panel.createActionLabel("Enable " + disabledPlugin.getName() + " plugin", () -> {
|
||||
myEnabledExtensions.add(extension);
|
||||
EditorNotifications.getInstance(project).updateAllNotifications();
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "enable.plugins.editor");
|
||||
PluginsAdvertiser.enablePlugins(project, Collections.singletonList(disabledPlugin));
|
||||
});
|
||||
} else if (hasNonBundledPlugin(plugins)) {
|
||||
@@ -107,6 +109,7 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati
|
||||
|
||||
panel.createActionLabel(PluginsAdvertiser.CHECK_ULTIMATE_EDITION_TITLE, () -> {
|
||||
myEnabledExtensions.add(extension);
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "open.download.page.editor");
|
||||
PluginsAdvertiser.openDownloadPage();
|
||||
});
|
||||
|
||||
|
||||
+6
-59
@@ -11,12 +11,10 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||
import com.intellij.ide.plugins.PluginManagerConfigurable;
|
||||
import com.intellij.ide.plugins.PluginManagerCore;
|
||||
import com.intellij.ide.plugins.RepositoryHelper;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationDisplayType;
|
||||
import com.intellij.notification.NotificationGroup;
|
||||
import com.intellij.notification.NotificationListener;
|
||||
import com.intellij.openapi.application.ApplicationInfo;
|
||||
import com.intellij.openapi.application.IdeUrlTrackingParametersProvider;
|
||||
import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -43,7 +41,6 @@ import com.intellij.util.xmlb.annotations.XMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.event.HyperlinkEvent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
@@ -53,11 +50,12 @@ public final class PluginsAdvertiser {
|
||||
private static final String CASHED_EXTENSIONS = "extensions.xml";
|
||||
|
||||
public static final String IGNORE_ULTIMATE_EDITION = "ignoreUltimateEdition";
|
||||
public static final String IDEA_ULTIMATE_EDITION = "IntelliJ IDEA Ultimate Edition";
|
||||
public static final String ULTIMATE_EDITION_SUGGESTION = "Do not suggest Ultimate Edition";
|
||||
public static final String CHECK_ULTIMATE_EDITION_TITLE = "Check " + IDEA_ULTIMATE_EDITION;
|
||||
public static final String IDEA_ULTIMATE_EDITION = "IntelliJ IDEA Ultimate";
|
||||
public static final String ULTIMATE_EDITION_SUGGESTION = "Do not suggest Ultimate";
|
||||
public static final String CHECK_ULTIMATE_EDITION_TITLE = "Try " + IDEA_ULTIMATE_EDITION;
|
||||
public static final String DISPLAY_ID = "Plugins Suggestion";
|
||||
public static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup(DISPLAY_ID, NotificationDisplayType.STICKY_BALLOON, true);
|
||||
public static final String FUS_GROUP_ID = "plugins.advertiser";
|
||||
|
||||
private static SoftReference<KnownExtensions> ourKnownExtensions = new SoftReference<>(null);
|
||||
|
||||
@@ -176,7 +174,7 @@ public final class PluginsAdvertiser {
|
||||
}
|
||||
|
||||
public static void openDownloadPage() {
|
||||
BrowserUtil.browse(ApplicationInfo.getInstance().getCompanyURL());
|
||||
BrowserUtil.browse(IdeUrlTrackingParametersProvider.getInstance().augmentUrl("https://www.jetbrains.com/idea/download/"));
|
||||
}
|
||||
|
||||
static void enablePlugins(Project project, final Collection<IdeaPluginDescriptor> disabledPlugins) {
|
||||
@@ -321,55 +319,4 @@ public final class PluginsAdvertiser {
|
||||
return Comparing.compare(myPluginId, other.myPluginId);
|
||||
}
|
||||
}
|
||||
|
||||
static class ConfigurePluginsListener implements NotificationListener {
|
||||
private final Set<? extends UnknownFeature> myUnknownFeatures;
|
||||
private final Project myProject;
|
||||
private final List<? extends IdeaPluginDescriptor> myAllPlugins;
|
||||
private final Set<PluginDownloader> myPlugins;
|
||||
private final Map<Plugin, IdeaPluginDescriptor> myDisabledPlugins;
|
||||
|
||||
ConfigurePluginsListener(Set<? extends UnknownFeature> unknownFeatures,
|
||||
Project project,
|
||||
List<? extends IdeaPluginDescriptor> allPlugins,
|
||||
Set<PluginDownloader> plugins,
|
||||
Map<Plugin, IdeaPluginDescriptor> disabledPlugins) {
|
||||
myUnknownFeatures = unknownFeatures;
|
||||
myProject = project;
|
||||
myAllPlugins = allPlugins;
|
||||
myPlugins = plugins;
|
||||
myDisabledPlugins = disabledPlugins;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) {
|
||||
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
|
||||
final String description = event.getDescription();
|
||||
if ("ignore".equals(description)) {
|
||||
UnknownFeaturesCollector featuresCollector = UnknownFeaturesCollector.getInstance(myProject);
|
||||
for (UnknownFeature feature : myUnknownFeatures) {
|
||||
featuresCollector.ignoreFeature(feature);
|
||||
}
|
||||
notification.expire();
|
||||
}
|
||||
else if ("configure".equals(description)) {
|
||||
LOG.assertTrue(myAllPlugins != null);
|
||||
notification.expire();
|
||||
new PluginsAdvertiserDialog(myProject, myPlugins.toArray(new PluginDownloader[0]), myAllPlugins).show();
|
||||
}
|
||||
else if ("enable".equals(description)) {
|
||||
enablePlugins(myProject, myDisabledPlugins.values());
|
||||
notification.expire();
|
||||
}
|
||||
else if ("ignoreUltimate".equals(description)) {
|
||||
PropertiesComponent.getInstance().setValue(IGNORE_ULTIMATE_EDITION, "true");
|
||||
notification.expire();
|
||||
}
|
||||
else if ("open".equals(description)) {
|
||||
openDownloadPage();
|
||||
notification.expire();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+41
-11
@@ -5,6 +5,9 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor;
|
||||
import com.intellij.ide.plugins.PluginManagerCore;
|
||||
import com.intellij.ide.plugins.RepositoryHelper;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUCounterUsageLogger;
|
||||
import com.intellij.notification.Notification;
|
||||
import com.intellij.notification.NotificationAction;
|
||||
import com.intellij.notification.NotificationType;
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -112,30 +115,57 @@ final class PluginsAdvertiserStartupActivity implements StartupActivity.Backgrou
|
||||
return;
|
||||
}
|
||||
|
||||
List<NotificationAction> notificationActions = new ArrayList<>();
|
||||
|
||||
String message = null;
|
||||
if (!plugins.isEmpty() || !disabledPlugins.isEmpty()) {
|
||||
message = getAddressedMessagePresentation(plugins, disabledPlugins, features);
|
||||
if (!disabledPlugins.isEmpty()) {
|
||||
message += "<a href=\"enable\">Enable plugins...</a><br>";
|
||||
notificationActions.add(NotificationAction.createSimpleExpiring(
|
||||
"Enable Plugins...", () -> {
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "enable.plugins.notification");
|
||||
PluginsAdvertiser.enablePlugins(project, disabledPlugins.values());
|
||||
}));
|
||||
}
|
||||
else {
|
||||
message += "<a href=\"configure\">Configure plugins...</a><br>";
|
||||
notificationActions.add(NotificationAction.createSimpleExpiring(
|
||||
"Configure Plugins...", () -> {
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "configure.plugins");
|
||||
new PluginsAdvertiserDialog(project, plugins.toArray(new PluginDownloader[0]), allPlugins).show();
|
||||
}));
|
||||
}
|
||||
|
||||
message += "<a href=\"ignore\">Ignore Unknown Features</a>";
|
||||
notificationActions.add(NotificationAction.createSimpleExpiring(
|
||||
"Ignore Unknown Features",
|
||||
() -> {
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "ignore.unknown.features");
|
||||
UnknownFeaturesCollector featuresCollector = UnknownFeaturesCollector.getInstance(project);
|
||||
for (UnknownFeature feature : unknownFeatures) {
|
||||
featuresCollector.ignoreFeature(feature);
|
||||
}
|
||||
}));
|
||||
}
|
||||
else if (bundledPlugin != null && !PropertiesComponent.getInstance().isTrueValue(PluginsAdvertiser.IGNORE_ULTIMATE_EDITION)) {
|
||||
message = "Features covered by " + PluginsAdvertiser.IDEA_ULTIMATE_EDITION +
|
||||
" (" + StringUtil.join(bundledPlugin, ", ") + ") are detected.<br>" +
|
||||
"<a href=\"open\">" + PluginsAdvertiser.CHECK_ULTIMATE_EDITION_TITLE + "</a><br>" +
|
||||
"<a href=\"ignoreUltimate\">" + PluginsAdvertiser.ULTIMATE_EDITION_SUGGESTION + "</a>";
|
||||
" (" + StringUtil.join(bundledPlugin, ", ") + ") are detected";
|
||||
notificationActions.add(NotificationAction.createSimpleExpiring(
|
||||
PluginsAdvertiser.CHECK_ULTIMATE_EDITION_TITLE, () -> {
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "open.download.page.notification");
|
||||
PluginsAdvertiser.openDownloadPage();
|
||||
}));
|
||||
notificationActions.add(NotificationAction.createSimpleExpiring(
|
||||
PluginsAdvertiser.ULTIMATE_EDITION_SUGGESTION, () -> {
|
||||
FUCounterUsageLogger.getInstance().logEvent(PluginsAdvertiser.FUS_GROUP_ID, "ignore.ultimate");
|
||||
PropertiesComponent.getInstance().setValue(PluginsAdvertiser.IGNORE_ULTIMATE_EDITION, "true");
|
||||
}));
|
||||
}
|
||||
|
||||
if (message != null) {
|
||||
PluginsAdvertiser.ConfigurePluginsListener
|
||||
notificationListener = new PluginsAdvertiser.ConfigurePluginsListener(unknownFeatures, project, allPlugins, plugins, disabledPlugins);
|
||||
PluginsAdvertiser.NOTIFICATION_GROUP
|
||||
.createNotification(PluginsAdvertiser.DISPLAY_ID, message, NotificationType.INFORMATION, notificationListener).notify(project);
|
||||
Notification notification = PluginsAdvertiser.NOTIFICATION_GROUP
|
||||
.createNotification("", message, NotificationType.INFORMATION, null);
|
||||
for (NotificationAction action : notificationActions) {
|
||||
notification.addAction(action);
|
||||
}
|
||||
notification.notify(project);
|
||||
}
|
||||
}, ModalityState.NON_MODAL);
|
||||
}
|
||||
|
||||
@@ -942,7 +942,6 @@
|
||||
<copyPastePostProcessor implementation="com.intellij.codeInsight.editorActions.CopyPasteIndentProcessor"/>
|
||||
<copyPastePostProcessor implementation="com.intellij.codeInsight.editorActions.CopyPasteFoldingProcessor"/>
|
||||
|
||||
<statistics.counterUsagesCollector groupId="ui.event" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="tooltip.action.events" version="1"/>
|
||||
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsagesCollector"/>
|
||||
|
||||
@@ -563,6 +563,8 @@
|
||||
<statistics.counterUsagesCollector groupId="vcs" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="build" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="project.import" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="ui.event" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="plugins.advertiser" version="1"/>
|
||||
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.openapi.vcs.statistics.VcsOptionsUsagesCollector"/>
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.openapi.vcs.statistics.VcsUsagesCollector"/>
|
||||
|
||||
Reference in New Issue
Block a user