mirror of https://gitee.com/makejava/EasyCode.git
解决PackageChooserDialog导致的兼容性问题
This commit is contained in:
parent
d8454e041a
commit
a97508f766
|
@ -1,6 +1,5 @@
|
|||
package com.sjhy.plugin.ui;
|
||||
|
||||
import com.intellij.ide.util.PackageChooserDialog;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.module.Module;
|
||||
|
@ -8,7 +7,7 @@ import com.intellij.openapi.module.ModuleManager;
|
|||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import com.sjhy.plugin.config.Settings;
|
||||
import com.sjhy.plugin.constants.MsgValue;
|
||||
import com.sjhy.plugin.constants.StrState;
|
||||
|
@ -22,6 +21,9 @@ import com.sjhy.plugin.tool.*;
|
|||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
@ -283,17 +285,28 @@ public class SelectSavePath extends JDialog {
|
|||
});
|
||||
|
||||
try {
|
||||
Class.forName("com.intellij.ide.util.PackageChooserDialog");
|
||||
Class<?> cls = Class.forName("com.intellij.ide.util.PackageChooserDialog");
|
||||
//添加包选择事件
|
||||
packageChooseButton.addActionListener(e -> {
|
||||
PackageChooserDialog dialog = new PackageChooserDialog("Package Chooser", project);
|
||||
dialog.show();
|
||||
PsiPackage psiPackage = dialog.getSelectedPackage();
|
||||
try {
|
||||
Constructor<?> constructor = cls.getConstructor(String.class, Project.class);
|
||||
Object dialog = constructor.newInstance("Package Chooser", project);
|
||||
// 显示窗口
|
||||
Method showMethod = cls.getMethod("show");
|
||||
showMethod.invoke(dialog);
|
||||
// 获取选中的包名
|
||||
Method getSelectedPackageMethod = cls.getMethod("getSelectedPackage");
|
||||
Object psiPackage = getSelectedPackageMethod.invoke(dialog);
|
||||
if (psiPackage != null) {
|
||||
packageField.setText(psiPackage.getQualifiedName());
|
||||
Method getQualifiedNameMethod = psiPackage.getClass().getMethod("getQualifiedName");
|
||||
String packageName = (String) getQualifiedNameMethod.invoke(psiPackage);
|
||||
packageField.setText(packageName);
|
||||
// 刷新路径
|
||||
refreshPath();
|
||||
}
|
||||
} catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e1) {
|
||||
ExceptionUtil.rethrow(e1);
|
||||
}
|
||||
});
|
||||
|
||||
// 添加包编辑框失去焦点事件
|
||||
|
|
Loading…
Reference in New Issue