blob: 37cb3bd4f5d8d9aeb014d4b936bdc05927d02cd6 [file] [log] [blame]
package com.intellij.internal.statistic.updater;
import com.intellij.internal.statistic.configurable.StatisticsConfigurable;
import com.intellij.internal.statistic.connect.StatisticsService;
import com.intellij.internal.statistic.persistence.UsageStatisticsPersistenceComponent;
import com.intellij.notification.Notification;
import com.intellij.notification.NotificationListener;
import com.intellij.notification.Notifications;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.IdeFrame;
import com.intellij.openapi.wm.ex.WindowManagerEx;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
public class StatisticsNotificationManager {
public static final String GROUP_DISPLAY_ID = "IDE Usage Statistics";
private StatisticsNotificationManager() {
}
public static void showNotification(@NotNull StatisticsService statisticsService, Project project) {
MyNotificationListener listener =
new MyNotificationListener(statisticsService, UsageStatisticsPersistenceComponent.getInstance());
Notifications.Bus.notify(statisticsService.createNotification(GROUP_DISPLAY_ID, listener), project);
}
private static class MyNotificationListener implements NotificationListener {
private StatisticsService myStatisticsService;
private final UsageStatisticsPersistenceComponent mySettings;
public MyNotificationListener(@NotNull StatisticsService statisticsService,
@NotNull UsageStatisticsPersistenceComponent settings) {
myStatisticsService = statisticsService;
mySettings = settings;
}
@Override
public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) {
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
final String description = event.getDescription();
if ("allow".equals(description)) {
mySettings.setAllowed(true);
mySettings.setShowNotification(false);
notification.expire();
ApplicationManager.getApplication().executeOnPooledThread(new Runnable() {
@Override
public void run() {
myStatisticsService.send();
}
});
}
else if ("decline".equals(description)) {
mySettings.setAllowed(false);
mySettings.setShowNotification(false);
notification.expire();
}
else if ("settings".equals(description)) {
final ShowSettingsUtil util = ShowSettingsUtil.getInstance();
IdeFrame ideFrame = WindowManagerEx.getInstanceEx().findFrameFor(null);
util.editConfigurable((JFrame)ideFrame, new StatisticsConfigurable(true));
notification.expire();
}
}
}
}
}