diff --git a/src/main/java/com/sjhy/plugin/tool/ProjectUtils.java b/src/main/java/com/sjhy/plugin/tool/ProjectUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..484b0366be8ffb57d292a13695d3a6cc444e9802 --- /dev/null +++ b/src/main/java/com/sjhy/plugin/tool/ProjectUtils.java @@ -0,0 +1,49 @@ +package com.sjhy.plugin.tool; + +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.wm.WindowManager; + +import java.awt.*; + +/** + * IDEA项目相关工具 + * + * @author tangcent + * @version 1.0.0 + * @since 2020/02/14 18:35 + */ +public class ProjectUtils { + + /** + * 获取当前项目对象 + * + * @return 当前项目对象 + */ + public static Project getCurrProject() { + + ProjectManager projectManager = ProjectManager.getInstance(); + Project[] openProjects = projectManager.getOpenProjects(); + if (openProjects.length == 0) { + return projectManager.getDefaultProject();//正常情况下不会发生 + } else if (openProjects.length == 1) { + // 只存在一个打开的项目则使用打开的项目 + return openProjects[0]; + } + + //如果有项目窗口处于激活状态 + try { + WindowManager wm = WindowManager.getInstance(); + for (Project project : openProjects) { + Window window = wm.suggestParentWindow(project); + if (window != null && window.isActive()) { + return project; + } + } + } catch (Exception ignored) { + } + + //否则使用默认项目 + return projectManager.getDefaultProject(); + } +} diff --git a/src/main/java/com/sjhy/plugin/ui/GlobalConfigSettingPanel.java b/src/main/java/com/sjhy/plugin/ui/GlobalConfigSettingPanel.java index 9240cd63295dc992ffc03681ee036b03eb87f74f..184f53a1e720ca8d304e562c2195c474135ce052 100644 --- a/src/main/java/com/sjhy/plugin/ui/GlobalConfigSettingPanel.java +++ b/src/main/java/com/sjhy/plugin/ui/GlobalConfigSettingPanel.java @@ -12,6 +12,7 @@ import com.sjhy.plugin.entity.GlobalConfig; import com.sjhy.plugin.entity.GlobalConfigGroup; import com.sjhy.plugin.tool.CloneUtils; import com.sjhy.plugin.config.Settings; +import com.sjhy.plugin.tool.ProjectUtils; import com.sjhy.plugin.ui.base.BaseGroupPanel; import com.sjhy.plugin.ui.base.BaseItemSelectPanel; import com.sjhy.plugin.ui.base.TemplateEditor; @@ -88,11 +89,8 @@ public class GlobalConfigSettingPanel implements Configurable { * 默认构造方法 */ GlobalConfigSettingPanel() { - // 存在打开的项目则使用打开的项目,否则使用默认项目 - ProjectManager projectManager = ProjectManager.getInstance(); - Project[] openProjects = projectManager.getOpenProjects(); // 项目对象 - this.project = openProjects.length > 0 ? openProjects[0] : projectManager.getDefaultProject(); + this.project = ProjectUtils.getCurrProject(); // 配置服务实例化 this.settings = Settings.getInstance(); // 克隆对象 diff --git a/src/main/java/com/sjhy/plugin/ui/MainSetting.java b/src/main/java/com/sjhy/plugin/ui/MainSetting.java index 8e2221589c4b407a70baf1691ecbfccf13ebdbc3..9458bffcd2f4331a165792dae17078cd4df8ea35 100644 --- a/src/main/java/com/sjhy/plugin/ui/MainSetting.java +++ b/src/main/java/com/sjhy/plugin/ui/MainSetting.java @@ -7,7 +7,6 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.ui.*; import com.intellij.openapi.ui.ex.MultiLineLabel; import com.intellij.util.ExceptionUtil; @@ -17,6 +16,7 @@ import com.sjhy.plugin.constants.StrState; import com.sjhy.plugin.entity.*; import com.sjhy.plugin.tool.CollectionUtil; import com.sjhy.plugin.tool.HttpUtils; +import com.sjhy.plugin.tool.ProjectUtils; import com.sjhy.plugin.tool.StringUtils; import com.sjhy.plugin.ui.base.ListCheckboxPanel; import org.jetbrains.annotations.Nls; @@ -91,8 +91,8 @@ public class MainSetting implements Configurable, Configurable.Composite { * 默认构造方法 */ public MainSetting() { - // 获取默认项目 - Project project = ProjectManager.getInstance().getDefaultProject(); + // 获取当前项目 + Project project = ProjectUtils.getCurrProject(); init(); //初始化事件 diff --git a/src/main/java/com/sjhy/plugin/ui/TemplateSettingPanel.java b/src/main/java/com/sjhy/plugin/ui/TemplateSettingPanel.java index 9706def1e2b021e65e1c0288acf78d52c44b372d..3bec22469e3f3d7480598c60c9541ca2570321d7 100644 --- a/src/main/java/com/sjhy/plugin/ui/TemplateSettingPanel.java +++ b/src/main/java/com/sjhy/plugin/ui/TemplateSettingPanel.java @@ -41,6 +41,7 @@ import com.sjhy.plugin.service.CodeGenerateService; import com.sjhy.plugin.service.TableInfoService; import com.sjhy.plugin.tool.CloneUtils; import com.sjhy.plugin.tool.CollectionUtil; +import com.sjhy.plugin.tool.ProjectUtils; import com.sjhy.plugin.ui.base.BaseGroupPanel; import com.sjhy.plugin.ui.base.BaseItemSelectPanel; import com.sjhy.plugin.ui.base.TemplateEditor; @@ -117,11 +118,8 @@ public class TemplateSettingPanel implements Configurable { private Project project; TemplateSettingPanel() { - // 存在打开的项目则使用打开的项目,否则使用默认项目 - ProjectManager projectManager = ProjectManager.getInstance(); - Project[] openProjects = projectManager.getOpenProjects(); // 项目对象 - this.project = openProjects.length > 0 ? openProjects[0] : projectManager.getDefaultProject(); + this.project = ProjectUtils.getCurrProject(); // 配置服务实例化 this.settings = Settings.getInstance(); // 克隆对象