diff --git a/README.md b/README.md
index 612f14d..37f90df 100644
--- a/README.md
+++ b/README.md
@@ -83,8 +83,8 @@
- 随机参数
- 默认参数
- 自定义参数
-- mapper接口/方法跳转XML文件
-- XML文件跳转mapper接口/方法
+- mapper接口/方法跳转XML文件([可配置](#4-配置))
+- XML文件跳转mapper接口/方法([可配置](#4-配置))
- 基于mock参数将mapper接口方法的xml转换成真实SQL
- 按照文件/项目维度扫描XML文件,并生成对应的真实SQL语句,并进行规约/索引相关校验
@@ -299,7 +299,13 @@ mock数据完成后,会存储主键id的范围(持久化存储到本地文

-# 4. 参考
+# 4. 配置
+
+相关配置:Preferences(Settings) > Tools > Mybatis Sql Viewer
+
+
+
+# 5. 参考
在实现过程中参考了许多非常优秀的项目,拷贝了很多代码,特此感谢。
diff --git a/README_EN.md b/README_EN.md
index ac6a7e8..d41563f 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -83,8 +83,8 @@ This plugin supports two modes: MyBatis mode and non-MyBatis mode. The differenc
- Random parameters
- Default parameters
- Custom parameters
-- Navigate from mapper interface/method to XML file
-- Navigate from XML file to mapper interface/method
+- Navigate from mapper interface/method to XML file([Configurable](#4-Configuration))
+- Navigate from XML file to mapper interface/method([Configurable](#4-Configuration))
- Convert mapper interface method XML to real SQL based on mock parameters
- Scan XML files based on file/project dimensions, generate corresponding real SQL statements, and perform specification/index verification
@@ -307,7 +307,13 @@ After the completion of mock data, the range of primary key IDs will be stored (

-# 4. Reference
+# 5. Configuration
+
+Preferences(Settings) > Tools > Mybatis Sql Viewer
+
+
+
+# 5. Reference
Many excellent projects were referenced and much code was copied during the implementation process. I would like to express my gratitude for this.
diff --git a/build.gradle b/build.gradle
index b592536..8949b91 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ plugins {
}
group 'org.linyimin'
-version '2.0.0'
+version '2.0.1'
sonarqube {
properties {
@@ -46,6 +46,13 @@ intellij {
}
patchPluginXml {
changeNotes = """
+
2.0.1
+
+ - Support for configurable file navigation
+
+
2.0.0
- Supports mybatis mode and non-mybatis mode
diff --git a/docs/mybatis-sql-viewer-configuration.png b/docs/mybatis-sql-viewer-configuration.png
new file mode 100644
index 0000000..1fc1af0
Binary files /dev/null and b/docs/mybatis-sql-viewer-configuration.png differ
diff --git a/src/main/java/io/github/linyimin/plugin/provider/jump/MapperInterfaceJumpLineMakerProvider.java b/src/main/java/io/github/linyimin/plugin/provider/jump/MapperInterfaceJumpLineMakerProvider.java
index e45c3c7..037ca1b 100644
--- a/src/main/java/io/github/linyimin/plugin/provider/jump/MapperInterfaceJumpLineMakerProvider.java
+++ b/src/main/java/io/github/linyimin/plugin/provider/jump/MapperInterfaceJumpLineMakerProvider.java
@@ -9,6 +9,7 @@
import com.intellij.psi.xml.XmlTag;
import io.github.linyimin.plugin.configuration.GlobalConfig;
import io.github.linyimin.plugin.provider.MapperInterfaceProcessor;
+import io.github.linyimin.plugin.settings.SqlViewerSettingsState;
import io.github.linyimin.plugin.utils.IconUtils;
import io.github.linyimin.plugin.utils.JavaUtils;
import org.apache.commons.collections.CollectionUtils;
@@ -27,7 +28,9 @@ public class MapperInterfaceJumpLineMakerProvider extends RelatedItemLineMarkerP
@Override
protected void collectNavigationMarkers(@NotNull PsiElement element, @NotNull Collection super RelatedItemLineMarkerInfo> result) {
- if (!GlobalConfig.isMybatisMode) {
+ SqlViewerSettingsState state = SqlViewerSettingsState.getInstance();
+
+ if (!GlobalConfig.isMybatisMode || !state.fileJumpEnable) {
return;
}
diff --git a/src/main/java/io/github/linyimin/plugin/provider/jump/MapperXmlJumpLineMakerProvider.java b/src/main/java/io/github/linyimin/plugin/provider/jump/MapperXmlJumpLineMakerProvider.java
index 6c32c6f..a368b31 100644
--- a/src/main/java/io/github/linyimin/plugin/provider/jump/MapperXmlJumpLineMakerProvider.java
+++ b/src/main/java/io/github/linyimin/plugin/provider/jump/MapperXmlJumpLineMakerProvider.java
@@ -11,6 +11,7 @@
import com.intellij.psi.xml.XmlTokenType;
import io.github.linyimin.plugin.configuration.GlobalConfig;
import io.github.linyimin.plugin.provider.MapperXmlProcessor;
+import io.github.linyimin.plugin.settings.SqlViewerSettingsState;
import io.github.linyimin.plugin.utils.IconUtils;
import org.apache.commons.collections.CollectionUtils;
import org.jetbrains.annotations.NotNull;
@@ -30,7 +31,9 @@ public class MapperXmlJumpLineMakerProvider extends RelatedItemLineMarkerProvide
@Override
protected void collectNavigationMarkers(@NotNull PsiElement element, @NotNull Collection super RelatedItemLineMarkerInfo> result) {
- if (!GlobalConfig.isMybatisMode) {
+ SqlViewerSettingsState state = SqlViewerSettingsState.getInstance();
+
+ if (!GlobalConfig.isMybatisMode || !state.fileJumpEnable) {
return;
}
diff --git a/src/main/java/io/github/linyimin/plugin/settings/SqlViewerSettingsState.java b/src/main/java/io/github/linyimin/plugin/settings/SqlViewerSettingsState.java
new file mode 100644
index 0000000..97dcf1c
--- /dev/null
+++ b/src/main/java/io/github/linyimin/plugin/settings/SqlViewerSettingsState.java
@@ -0,0 +1,33 @@
+package io.github.linyimin.plugin.settings;
+
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.components.PersistentStateComponent;
+import com.intellij.openapi.components.State;
+import com.intellij.openapi.components.Storage;
+import com.intellij.util.xmlb.XmlSerializerUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author yiminlin
+ * @date 2023/04/16 14:18
+ **/
+@State(name = "io.github.linyimin.plugin.settings.SqlViewerSettingsState", storages = {@Storage("mybatis-sql-config.xml")})
+public class SqlViewerSettingsState implements PersistentStateComponent {
+
+ public boolean fileJumpEnable = true;
+
+ @Override
+ public @Nullable SqlViewerSettingsState getState() {
+ return this;
+ }
+
+ @Override
+ public void loadState(@NotNull SqlViewerSettingsState state) {
+ XmlSerializerUtil.copyBean(state, this);
+ }
+
+ public static SqlViewerSettingsState getInstance() {
+ return ApplicationManager.getApplication().getService(SqlViewerSettingsState.class);
+ }
+}
diff --git a/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.form b/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.form
new file mode 100644
index 0000000..ea3d222
--- /dev/null
+++ b/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.form
@@ -0,0 +1,45 @@
+
+
diff --git a/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.java b/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.java
new file mode 100644
index 0000000..0fc7115
--- /dev/null
+++ b/src/main/java/io/github/linyimin/plugin/ui/SqlViewerSettingsPanel.java
@@ -0,0 +1,93 @@
+package io.github.linyimin.plugin.ui;
+
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.application.ex.ApplicationManagerEx;
+import com.intellij.openapi.options.Configurable;
+import com.intellij.openapi.options.ConfigurationException;
+import com.intellij.openapi.ui.MessageDialogBuilder;
+import com.intellij.openapi.ui.Messages;
+import com.intellij.ui.TitledSeparator;
+import io.github.linyimin.plugin.settings.SqlViewerSettingsState;
+import org.jetbrains.annotations.Nls;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * @author yiminlin
+ * @date 2023/04/16 14:30
+ **/
+public class SqlViewerSettingsPanel implements Configurable, Disposable {
+ private JPanel functionalityTitledBorderPanel;
+ private JCheckBox fileJumpEnableBox;
+ private JPanel myMainPanel;
+
+ private boolean needRestart = false;
+
+ public SqlViewerSettingsPanel() {
+ init();
+ }
+
+ private void init() {
+
+ }
+
+ @Override
+ public @Nls(capitalization = Nls.Capitalization.Title) String getDisplayName() {
+ return "Mybatis Sql Viewer";
+ }
+
+ @Override
+ public @Nullable JComponent createComponent() {
+ return myMainPanel;
+ }
+
+ @Override
+ public boolean isModified() {
+ SqlViewerSettingsState state = SqlViewerSettingsState.getInstance();
+
+ needRestart = state.fileJumpEnable != fileJumpEnableBox.isSelected();
+
+ return needRestart;
+ }
+
+ @Override
+ public void reset() {
+ SqlViewerSettingsState state = SqlViewerSettingsState.getInstance();
+ fileJumpEnableBox.setSelected(state.fileJumpEnable);
+ }
+
+ @Override
+ public void apply() throws ConfigurationException {
+
+ SqlViewerSettingsState state = SqlViewerSettingsState.getInstance();
+
+ state.fileJumpEnable = fileJumpEnableBox.isSelected();
+
+ if (!needRestart) {
+ return;
+ }
+
+ int yesNo = MessageDialogBuilder.yesNo("Settings changed!", "Requires restarting the IDE to take effect. " +
+ "Do you want to restart to apply the settings?")
+ .yesText("Restart")
+ .noText("Not Now").show();
+
+ if (yesNo == Messages.YES) {
+ ApplicationManagerEx.getApplicationEx().restart(true);
+ }
+
+ }
+
+ @Override
+ public void dispose() {
+
+ }
+
+ private void createUIComponents() {
+ functionalityTitledBorderPanel = new JPanel(new BorderLayout());
+ TitledSeparator functionalitySeparator = new TitledSeparator("Functionality Settings");
+ functionalityTitledBorderPanel.add(functionalitySeparator, BorderLayout.CENTER);
+ }
+}
diff --git a/src/main/resources/META-INF/messages/MybatisSqlViewerBundle.properties b/src/main/resources/META-INF/messages/MybatisSqlViewerBundle.properties
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 7668e7e..947e6b1 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -59,8 +59,14 @@
+
+
+
+