diff --git a/CodeLocatorPlugin/build.gradle b/CodeLocatorPlugin/build.gradle
index c11425d..9b9f227 100644
--- a/CodeLocatorPlugin/build.gradle
+++ b/CodeLocatorPlugin/build.gradle
@@ -1,7 +1,7 @@
plugins {
id 'java'
- id 'org.jetbrains.intellij' version '0.6.1'
- id 'org.jetbrains.kotlin.jvm' version '1.3.72'
+ id 'org.jetbrains.intellij' version '1.17.4'
+ id 'org.jetbrains.kotlin.jvm' version '1.9.21'
}
group 'com.bytedance.tools'
@@ -49,9 +49,10 @@ dependencies {
}
intellij {
- updateSinceUntilBuild false
- version '191.6707.61'
- plugins = ["org.jetbrains.kotlin", "org.jetbrains.android"]
+// updateSinceUntilBuild false
+ version = "2022.2"
+ type = "IC"
+ plugins = ["org.jetbrains.kotlin", "org.jetbrains.android", "com.intellij.java"]
}
boolean isFirst = true
@@ -60,6 +61,13 @@ boolean isWindows() {
return System.getProperty("os.name").toLowerCase().indexOf("windows") != -1
}
+tasks{
+ patchPluginXml {
+ sinceBuild = "222"
+ untilBuild = "999.*"
+ }
+}
+
gradle.taskGraph.beforeTask {
if (isFirst && !isWindows()) {
isFirst = false
@@ -84,6 +92,7 @@ gradle.taskGraph.beforeTask {
}
if (it instanceof Zip && !it.toString().contains("CodeLocatorModel")) {
+ it.duplicatesStrategy = DuplicatesStrategy.INCLUDE
it.from({
file("imgcopy.m")
})
diff --git a/CodeLocatorPlugin/gradle/wrapper/gradle-wrapper.properties b/CodeLocatorPlugin/gradle/wrapper/gradle-wrapper.properties
index 6c9a224..17655d0 100644
--- a/CodeLocatorPlugin/gradle/wrapper/gradle-wrapper.properties
+++ b/CodeLocatorPlugin/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/FixJumpErrorDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/FixJumpErrorDialog.kt
index 8f4385f..bb7e1f7 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/FixJumpErrorDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/FixJumpErrorDialog.kt
@@ -13,7 +13,6 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.util.SystemInfo
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import javax.swing.*
@@ -141,7 +140,7 @@ class FixJumpErrorDialog(
close(0)
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(confirmBtn.font).stringWidth(confrimText) + 10
+ val stringWidth = confirmBtn.getFontMetrics(confirmBtn.font).stringWidth(confrimText) + 10
confirmBtn.maximumSize = Dimension(stringWidth, 40)
cancelBtn.maximumSize = Dimension(stringWidth, 40)
} catch (t: Throwable) {
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SearchColorDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SearchColorDialog.kt
index c2e2ef7..6ca3771 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SearchColorDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SearchColorDialog.kt
@@ -8,19 +8,15 @@ import com.bytedance.tools.codelocator.utils.CoordinateUtils
import com.bytedance.tools.codelocator.utils.JComponentUtils
import com.bytedance.tools.codelocator.utils.Log
import com.bytedance.tools.codelocator.utils.ResUtils
+import com.bytedance.tools.codelocator.utils.onTextChange
import com.bytedance.tools.codelocator.views.JTextHintField
import com.intellij.codeInsight.hint.HintManager
import com.intellij.codeInsight.hint.HintManagerImpl
-import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.wm.ex.WindowManagerEx
-import com.intellij.ui.LightweightHint
import com.intellij.ui.awt.RelativePoint
-import org.jetbrains.kotlin.idea.util.onTextChange
-import sun.font.FontDesignMetrics
import java.awt.Dimension
-import java.awt.FontMetrics
import java.awt.event.ActionListener
import java.awt.event.KeyEvent
import java.awt.event.MouseAdapter
@@ -172,7 +168,7 @@ class SearchColorDialog(
lineWidthRemain[line] = resultPanelBox.width
result.forEachIndexed { index, result ->
val makeJLabel = makeJLabel(result)
- val stringWidth = FontDesignMetrics.getMetrics(makeJLabel.font).stringWidth(result)
+ val stringWidth = makeJLabel.getFontMetrics(makeJLabel.font).stringWidth(result)
if (stringWidth >= resultPanelBox.width) {
val createHorizontalBox = Box.createHorizontalBox()
createHorizontalBox.add(makeJLabel)
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SendSchemaDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SendSchemaDialog.kt
index bff03f0..562efeb 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SendSchemaDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/SendSchemaDialog.kt
@@ -44,7 +44,6 @@ import com.intellij.ui.awt.RelativePoint
import com.intellij.ui.components.JBList
import com.intellij.ui.components.JBScrollPane
import com.intellij.ui.table.JBTable
-import com.sun.jndi.toolkit.url.Uri
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
import java.awt.Component
@@ -262,7 +261,6 @@ class SendSchemaDialog(
private fun convertToEncodeSchema(originSchema: String?): String {
originSchema ?: return ""
try {
- val uri = Uri(originSchema)
var hasQuery = true
val indexOfSplit = originSchema.indexOf("?")
if (indexOfSplit > -1) {
@@ -326,7 +324,6 @@ class SendSchemaDialog(
return
}
val uriStr = textField.text
- val uri = Uri(uriStr)
var hasQuery = false
val indexOfSplit = uriStr.indexOf("?")
if (indexOfSplit > -1) {
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowConfigDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowConfigDialog.kt
index dc85ca3..0221bfe 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowConfigDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowConfigDialog.kt
@@ -3,7 +3,6 @@ package com.bytedance.tools.codelocator.dialog
import com.bytedance.tools.codelocator.utils.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ex.WindowManagerEx
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import java.awt.Font
import java.awt.event.MouseAdapter
@@ -142,7 +141,7 @@ class ShowConfigDialog(
hide()
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(confirmButton!!.font).stringWidth(btnText)
+ val stringWidth = confirmButton!!.getFontMetrics(confirmButton!!.font).stringWidth(btnText)
confirmButton!!.maximumSize = Dimension(stringWidth, 38)
} catch (t: Throwable) {
Log.e("getfont width error", t)
@@ -159,7 +158,7 @@ class ShowConfigDialog(
hide()
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(dontShowButton.font).stringWidth(dontShowText)
+ val stringWidth = dontShowButton.getFontMetrics(dontShowButton.font).stringWidth(dontShowText)
dontShowButton.maximumSize = Dimension(stringWidth, 38)
} catch (t: Throwable) {
Log.e("getFont width error", t)
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowDownloadSourceDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowDownloadSourceDialog.kt
index fb4c4c3..ad40363 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowDownloadSourceDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowDownloadSourceDialog.kt
@@ -8,7 +8,6 @@ import com.intellij.openapi.progress.Task
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.util.SystemInfo
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import javax.swing.Action
import javax.swing.BorderFactory
@@ -104,7 +103,7 @@ class ShowDownloadSourceDialog(val codeLocatorWindow: CodeLocatorWindow, val pro
close(0)
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(confirmButton.font).stringWidth(btnText)
+ val stringWidth = confirmButton.getFontMetrics(confirmButton.font).stringWidth(btnText)
confirmButton.maximumSize = Dimension(stringWidth, 38)
} catch (t: Throwable) {
Log.e("getfont width error", t)
@@ -117,7 +116,7 @@ class ShowDownloadSourceDialog(val codeLocatorWindow: CodeLocatorWindow, val pro
close(0)
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(dontShowButton.font).stringWidth(dontShowText)
+ val stringWidth = dontShowButton.getFontMetrics(dontShowButton.font).stringWidth(dontShowText)
dontShowButton.maximumSize = Dimension(stringWidth, 38)
} catch (t: Throwable) {
Log.e("getFont width error", t)
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowHistoryDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowHistoryDialog.kt
index 53bb541..c87b83b 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowHistoryDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowHistoryDialog.kt
@@ -14,7 +14,6 @@ import com.intellij.openapi.wm.ex.WindowManagerEx
import com.intellij.ui.awt.RelativePoint
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import java.awt.Font
import java.awt.Image
@@ -107,7 +106,7 @@ class ShowHistoryDialog(
val buttonWidth = DIALOG_WIDTH - CoordinateUtils.DEFAULT_BORDER * 4
val jButton = JButton()
jButton.font = Font(jButton.font.name, Font.PLAIN, 12)
- val fontMetrics = FontDesignMetrics.getMetrics(jButton.font)
+ val fontMetrics = jButton.getFontMetrics(jButton.font)
var grabTime = ""
try {
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowNewsDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowNewsDialog.kt
index 27f5a70..93a3ff6 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowNewsDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowNewsDialog.kt
@@ -3,7 +3,6 @@ package com.bytedance.tools.codelocator.dialog
import com.bytedance.tools.codelocator.utils.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ex.WindowManagerEx
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import java.awt.Font
import java.io.File
@@ -109,7 +108,7 @@ class ShowNewsDialog(val project: Project, val msg: String, val version: String)
hide()
}
try {
- val stringWidth = FontDesignMetrics.getMetrics(confirmBtn.font).stringWidth(confrimText)
+ val stringWidth = confirmBtn.getFontMetrics(confirmBtn.font).stringWidth(confrimText)
confirmBtn.maximumSize = Dimension(stringWidth, 38)
} catch (t: Throwable) {
Log.e("getFont width error", t)
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowTraceDialog.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowTraceDialog.kt
index 45e770a..2b45558 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowTraceDialog.kt
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/dialog/ShowTraceDialog.kt
@@ -7,7 +7,6 @@ import com.bytedance.tools.codelocator.utils.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.wm.ex.WindowManagerEx
-import sun.font.FontDesignMetrics
import java.awt.Dimension
import java.awt.Font
import java.awt.event.MouseAdapter
@@ -100,7 +99,7 @@ class ShowTraceDialog(
val buttonWidth = DIALOG_WIDTH - CoordinateUtils.DEFAULT_BORDER * 4
val jButton = JButton()
jButton.font = Font(jButton.font.name, Font.PLAIN, 12)
- val fontMetrics = FontDesignMetrics.getMetrics(jButton.font)
+ val fontMetrics = jButton.getFontMetrics(jButton.font)
var keyWorkInfo = ""
if (showInfo.keyword != "null") {
keyWorkInfo = "
" + UIUtils.getMatchWidthStr(
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorApplicationInitializedListener.java b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorApplicationInitializedListener.java
index 0ae98e5..8c977a4 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorApplicationInitializedListener.java
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorApplicationInitializedListener.java
@@ -10,13 +10,18 @@
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.codeInsight.hint.HintManagerImpl;
import com.intellij.ide.ApplicationInitializedListener;
+import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.editor.event.SelectionEvent;
import com.intellij.openapi.editor.event.SelectionListener;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.project.ProjectManager;
+import com.intellij.openapi.project.ProjectManagerListener;
import com.intellij.openapi.project.impl.ProjectLifecycleListener;
+import com.intellij.openapi.ui.DialogWrapper;
+import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.TextRange;
import com.intellij.ui.LightweightHint;
import com.intellij.ui.awt.RelativePoint;
@@ -42,6 +47,8 @@ public class CodeLocatorApplicationInitializedListener implements ApplicationIni
private static int maxWidth;
+ private static Disposable disposable = Disposer.newDisposable();
+
public static void setColorInfo(List colorInfo) {
if (colorInfo == null || colorInfo.isEmpty()) {
return;
@@ -68,10 +75,10 @@ public void componentsInitialized() {
ThreadUtils.submit(() -> {
NetUtils.fetchConfig();
});
-
- ApplicationManager.getApplication().getMessageBus().connect().subscribe(ProjectLifecycleListener.TOPIC, new ProjectLifecycleListener() {
+ Disposer.register(ApplicationManager.getApplication(),disposable);
+ ApplicationManager.getApplication().getMessageBus().connect().subscribe(ProjectManager.TOPIC, new ProjectManagerListener() {
@Override
- public void afterProjectClosed(@NotNull Project project) {
+ public void projectClosed(@NotNull Project project) {
final Device currentDevice = DeviceManager.getCurrentDevice(project, true);
if (currentDevice != null && currentDevice.getDevice() != null) {
final String serialNumber = currentDevice.getDevice().getSerialNumber();
@@ -141,12 +148,12 @@ public void selectionChanged(@NotNull SelectionEvent e) {
point.y -= ((colorInfos.size() - 1) * CoordinateUtils.TABLE_RIGHT_MARGIN + colorInfos.size() * HINT_ITEM_HEIGHT + CoordinateUtils.TABLE_RIGHT_MARGIN);
lastSelectText = null;
HintManagerImpl.getInstanceImpl()
- .showHint(colorInfosPanel,
- new RelativePoint(e.getEditor().getComponent().getRootPane(), point),
- HintManager.HIDE_BY_ANY_KEY | HintManager.HIDE_BY_TEXT_CHANGE | HintManager.HIDE_BY_OTHER_HINT | HintManager.HIDE_BY_SCROLLING, 0);
+ .showHint(colorInfosPanel,
+ new RelativePoint(e.getEditor().getComponent().getRootPane(), point),
+ HintManager.HIDE_BY_ANY_KEY | HintManager.HIDE_BY_TEXT_CHANGE | HintManager.HIDE_BY_OTHER_HINT | HintManager.HIDE_BY_SCROLLING, 0);
Mob.mob(Mob.Action.CLICK, Mob.Button.COLOR_MODE);
}
- });
+ }, disposable);
}
}
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorStartupActivity.java b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorStartupActivity.java
index 17ae075..6b425ff 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorStartupActivity.java
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/listener/CodeLocatorStartupActivity.java
@@ -114,7 +114,7 @@ private void onSyncFinish(Project project) {
}
private void subscribeNotification(@NotNull Project project, Disposable tempDisposable) {
- project.getMessageBus().connect(tempDisposable).subscribe(Notifications.TOPIC, new NotificationsAdapter() {
+ project.getMessageBus().connect(tempDisposable).subscribe(Notifications.TOPIC, new Notifications() {
boolean hasSync = false;
@Override
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/ScaleImagePanel.java b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/ScaleImagePanel.java
index 8a97576..1f26f1e 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/ScaleImagePanel.java
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/ScaleImagePanel.java
@@ -98,7 +98,7 @@ private void paintChessboard(Graphics g) {
int patternSize = 2 * cellSize;
if (pattern == null) {
- pattern = UIUtil.createImage(g, patternSize, patternSize, BufferedImage.TYPE_INT_ARGB);
+ pattern = UIUtil.createImage(this, patternSize, patternSize, BufferedImage.TYPE_INT_ARGB);
Graphics imageGraphics = pattern.getGraphics();
imageGraphics.setColor(whiteColor);
imageGraphics.fillRect(0, 0, patternSize, patternSize);
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/TableColumnAdjuster.java b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/TableColumnAdjuster.java
index e772efa..ab5e036 100644
--- a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/TableColumnAdjuster.java
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/panels/TableColumnAdjuster.java
@@ -159,7 +159,7 @@ private void updateTableColumn(int column, int width) {
width = Math.max(width, tableColumn.getPreferredWidth());
}
- columnSizes.put(tableColumn, new Integer(tableColumn.getWidth()));
+ columnSizes.put(tableColumn, tableColumn.getWidth());
table.getTableHeader().setResizingColumn(tableColumn);
tableColumn.setWidth(width);
diff --git a/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/utils/UIUtils.kt b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/utils/UIUtils.kt
new file mode 100644
index 0000000..de572cc
--- /dev/null
+++ b/CodeLocatorPlugin/src/main/java/com/bytedance/tools/codelocator/utils/UIUtils.kt
@@ -0,0 +1,15 @@
+package com.bytedance.tools.codelocator.utils
+
+import com.intellij.ui.DocumentAdapter
+import javax.swing.event.DocumentEvent
+import javax.swing.text.JTextComponent
+
+fun JTextComponent.onTextChange(action: (DocumentEvent) -> Unit) {
+ document.addDocumentListener(
+ object : DocumentAdapter() {
+ override fun textChanged(e: DocumentEvent) {
+ action(e)
+ }
+ }
+ )
+}
\ No newline at end of file
diff --git a/CodeLocatorPlugin/src/main/resources/META-INF/plugin.xml b/CodeLocatorPlugin/src/main/resources/META-INF/plugin.xml
index c7a69a6..9b1e8ac 100644
--- a/CodeLocatorPlugin/src/main/resources/META-INF/plugin.xml
+++ b/CodeLocatorPlugin/src/main/resources/META-INF/plugin.xml
@@ -52,6 +52,10 @@
org.jetbrains.android
+
+
+
+