compatibility update

Signed-off-by: pengzhile <pengzhile@gmail.com>
pull/1/head
pengzhile 2020-06-09 12:05:04 +08:00
parent 1ad670a257
commit fd5e2d27b1
5 changed files with 33 additions and 22 deletions

View File

@ -4,7 +4,7 @@ plugins {
} }
group 'io.zhile.research.intellij' group 'io.zhile.research.intellij'
version '1.0.1' version '1.0.2'
repositories { repositories {
mavenCentral() mavenCentral()

View File

@ -6,6 +6,7 @@ import com.intellij.openapi.components.ApplicationComponent;
import io.zhile.research.intellij.action.ResetAction; import io.zhile.research.intellij.action.ResetAction;
import io.zhile.research.intellij.helper.Constants; import io.zhile.research.intellij.helper.Constants;
import io.zhile.research.intellij.helper.NotificationHelper; import io.zhile.research.intellij.helper.NotificationHelper;
import org.jetbrains.annotations.NotNull;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -19,8 +20,7 @@ public class MainComponent implements ApplicationComponent {
public void initComponent() { public void initComponent() {
Preferences prefs = Preferences.userRoot().node(Constants.PLUGIN_NAME); Preferences prefs = Preferences.userRoot().node(Constants.PLUGIN_NAME);
long lastResetTime = prefs.getLong(Constants.PRODUCT_NAME + Constants.RESET_TIME_KEY, 0L); long lastResetTime = prefs.getLong(Constants.PRODUCT_NAME + Constants.PRODUCT_HASH, 0L);
new Timer().schedule(new TimerTask() { new Timer().schedule(new TimerTask() {
@Override @Override
@ -55,4 +55,15 @@ public class MainComponent implements ApplicationComponent {
new Timer().schedule(new ResetTimerTask(lastResetTime), 3600000); // 60 min new Timer().schedule(new ResetTimerTask(lastResetTime), 3600000); // 60 min
} }
} }
@Override
public void disposeComponent() {
// for compatibility
}
@Override
public @NotNull
String getComponentName() {
return getClass().getName(); // for compatibility
}
} }

View File

@ -8,7 +8,6 @@ import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.ex.ApplicationInfoEx; import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageDialogBuilder;
import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
@ -18,11 +17,10 @@ import org.jetbrains.annotations.NotNull;
import java.io.File; import java.io.File;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences; import java.util.prefs.Preferences;
public class ResetAction extends AnAction { public class ResetAction extends AnAction {
private static final String DEVICE_ID_KEY = "device_id";
private static final String NEW_MACHINE_ID_KEY = "user_id_on_machine";
private static final String OLD_MACHINE_ID_KEY = "JetBrains.UserIdOnMachine"; private static final String OLD_MACHINE_ID_KEY = "JetBrains.UserIdOnMachine";
private static final String DEFAULT_COMPANY_NAME = "jetbrains"; private static final String DEFAULT_COMPANY_NAME = "jetbrains";
@ -45,13 +43,16 @@ public class ResetAction extends AnAction {
String companyName = appInfo.getShortCompanyName(); String companyName = appInfo.getShortCompanyName();
String node = StringUtil.isEmptyOrSpaces(companyName) ? DEFAULT_COMPANY_NAME : companyName.toLowerCase(); String node = StringUtil.isEmptyOrSpaces(companyName) ? DEFAULT_COMPANY_NAME : companyName.toLowerCase();
Preferences prefs = Preferences.userRoot().node(node);
Preferences.userRoot().remove(OLD_MACHINE_ID_KEY); try {
prefs.remove(NEW_MACHINE_ID_KEY); Preferences.userRoot().remove(OLD_MACHINE_ID_KEY);
prefs.remove(DEVICE_ID_KEY); Preferences.userRoot().node(node).removeNode();
} catch (BackingStoreException e) {
NotificationHelper.showError(project, e.getMessage());
return;
}
Preferences.userRoot().node(Constants.PLUGIN_NAME).put(Constants.PRODUCT_NAME + Constants.RESET_TIME_KEY, Long.toString(System.currentTimeMillis())); Preferences.userRoot().node(Constants.PLUGIN_NAME).put(Constants.PRODUCT_NAME + Constants.PRODUCT_HASH, Long.toString(System.currentTimeMillis()));
if (appInfo.isVendorJetBrains() && SystemInfo.isWindows) { if (appInfo.isVendorJetBrains() && SystemInfo.isWindows) {
String[] names = new String[]{"PermanentUserId", "PermanentDeviceId"}; String[] names = new String[]{"PermanentUserId", "PermanentDeviceId"};
@ -61,13 +62,12 @@ public class ResetAction extends AnAction {
} }
NotificationHelper.showError(project, "Remove " + name + " file failed!"); NotificationHelper.showError(project, "Remove " + name + " file failed!");
return;
} }
} }
MessageDialogBuilder.YesNo dialog = MessageDialogBuilder.yesNo(Constants.PLUGIN_NAME, "Reset successfully!\nWould you like to restart your IDE?"); NotificationHelper.showInfo(project, "Reset successfully!\nPlease restart your IDE and enjoy it!");
if (dialog.isYes()) { ApplicationManager.getApplication().invokeLater(() -> ApplicationManager.getApplication().restart());
ApplicationManager.getApplication().invokeLater(() -> ApplicationManager.getApplication().exit(true, false, true));
}
} }
@Override @Override

View File

@ -1,16 +1,15 @@
package io.zhile.research.intellij.helper; package io.zhile.research.intellij.helper;
import com.intellij.ide.plugins.IdeaPluginDescriptor; import com.intellij.ide.plugins.PluginManager;
import com.intellij.ide.plugins.cl.PluginClassLoader; import com.intellij.ide.plugins.cl.PluginClassLoader;
import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.extensions.PluginId;
public class Constants { public class Constants {
public static final PluginClassLoader CLASS_LOADER = (PluginClassLoader) Constants.class.getClassLoader(); public static final PluginClassLoader CLASS_LOADER = (PluginClassLoader) Constants.class.getClassLoader();
public static final IdeaPluginDescriptor PLUGIN_DESCRIPTOR = CLASS_LOADER.getPluginDescriptor();
public static final PluginId PLUGIN_ID = CLASS_LOADER.getPluginId(); public static final PluginId PLUGIN_ID = CLASS_LOADER.getPluginId();
public static final String PLUGIN_NAME = PLUGIN_DESCRIPTOR == null ? "ide-eval-resetter" : PLUGIN_DESCRIPTOR.getName(); public static final String PLUGIN_NAME = PluginManager.getPlugin(PLUGIN_ID).getName();
public static final String PRODUCT_NAME = ApplicationNamesInfo.getInstance().getProductName(); public static final String PRODUCT_NAME = ApplicationNamesInfo.getInstance().getFullProductName();
public static final String PRODUCT_HASH = Integer.toString(PathManager.getConfigPath().hashCode());
public static final String RESET_TIME_KEY = "trail_reset_time";
} }

View File

@ -1,5 +1,6 @@
package io.zhile.research.intellij.helper; package io.zhile.research.intellij.helper;
import com.intellij.icons.AllIcons;
import com.intellij.notification.Notification; import com.intellij.notification.Notification;
import com.intellij.notification.NotificationDisplayType; import com.intellij.notification.NotificationDisplayType;
import com.intellij.notification.NotificationGroup; import com.intellij.notification.NotificationGroup;
@ -8,7 +9,7 @@ import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public class NotificationHelper { public class NotificationHelper {
public static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup(Constants.PLUGIN_ID.getIdString(), NotificationDisplayType.BALLOON, true); public static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup(Constants.PLUGIN_ID.getIdString(), NotificationDisplayType.BALLOON, true, null, AllIcons.General.Reset);
public static Notification show(@Nullable Project project, String title, String subtitle, String content, NotificationType type) { public static Notification show(@Nullable Project project, String title, String subtitle, String content, NotificationType type) {
if (title == null) { if (title == null) {