From cc0a6e1d255bd394c22a1eda5778de1ab63a8bcf Mon Sep 17 00:00:00 2001 From: tangcent Date: Fri, 14 Feb 2020 18:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=BC=80=E5=A4=9A?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=97=B6=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sjhy/plugin/tool/ProjectUtils.java | 49 +++++++++++++++++++ .../plugin/ui/GlobalConfigSettingPanel.java | 6 +-- .../java/com/sjhy/plugin/ui/MainSetting.java | 6 +-- .../sjhy/plugin/ui/TemplateSettingPanel.java | 6 +-- 4 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/sjhy/plugin/tool/ProjectUtils.java 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 0000000..484b036 --- /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 9240cd6..184f53a 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 8e22215..9458bff 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 9706def..3bec224 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(); // 克隆对象 -- Gitee