|
1 | 1 | package com.sjhy.plugin.ui; |
2 | 2 |
|
3 | | -import com.intellij.ide.util.PackageChooserDialog; |
| 3 | +//import com.intellij.ide.util.PackageChooserDialog; |
4 | 4 | import com.intellij.openapi.fileChooser.FileChooser; |
5 | 5 | import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; |
6 | 6 | import com.intellij.openapi.module.Module; |
7 | 7 | import com.intellij.openapi.module.ModuleManager; |
8 | 8 | import com.intellij.openapi.project.Project; |
9 | 9 | import com.intellij.openapi.ui.Messages; |
10 | 10 | import com.intellij.openapi.vfs.VirtualFile; |
11 | | -import com.intellij.psi.PsiPackage; |
| 11 | +//import com.intellij.psi.PsiPackage; |
| 12 | +import com.intellij.util.ExceptionUtil; |
12 | 13 | import com.sjhy.plugin.constants.MsgValue; |
13 | 14 | import com.sjhy.plugin.constants.StrState; |
14 | 15 | import com.sjhy.plugin.entity.TableInfo; |
|
24 | 25 | import javax.swing.*; |
25 | 26 | import java.awt.*; |
26 | 27 | import java.awt.event.*; |
| 28 | +import java.lang.reflect.Constructor; |
| 29 | +import java.lang.reflect.InvocationTargetException; |
| 30 | +import java.lang.reflect.Method; |
27 | 31 | import java.util.ArrayList; |
28 | 32 | import java.util.LinkedList; |
29 | 33 | import java.util.List; |
@@ -254,14 +258,38 @@ private void init() { |
254 | 258 |
|
255 | 259 | //添加包选择事件 |
256 | 260 | packageChooseButton.addActionListener(e -> { |
257 | | - PackageChooserDialog dialog = new PackageChooserDialog("Package Chooser", project); |
258 | | - dialog.show(); |
259 | | - PsiPackage psiPackage = dialog.getSelectedPackage(); |
260 | | - if (psiPackage != null) { |
261 | | - packageField.setText(psiPackage.getQualifiedName()); |
262 | | - // 刷新路径 |
263 | | - refreshPath(); |
| 261 | + // 这里不知道发生了什么,明明类是存在的但是编译时就是找不到,只用通过反射来使用 |
| 262 | + try { |
| 263 | + // 构建dialog |
| 264 | + Class<?> cls = Class.forName("com.intellij.ide.util.PackageChooserDialog"); |
| 265 | + Constructor<?> constructor = cls.getConstructor(String.class, Project.class); |
| 266 | + Object dialog = constructor.newInstance("Package Chooser", project); |
| 267 | + // 打开dialog窗口 |
| 268 | + Method show = dialog.getClass().getMethod("show"); |
| 269 | + show.invoke(dialog); |
| 270 | + // 获取选中的包信息 |
| 271 | + Method getSelectedPackage = dialog.getClass().getMethod("getSelectedPackage"); |
| 272 | + Object psiPackage = getSelectedPackage.invoke(dialog); |
| 273 | + // 获取名字 |
| 274 | + if (psiPackage != null) { |
| 275 | + Method getQualifiedName = psiPackage.getClass().getMethod("getQualifiedName"); |
| 276 | + String packageName = (String) getQualifiedName.invoke(psiPackage); |
| 277 | + packageField.setText(packageName); |
| 278 | + // 刷新路径 |
| 279 | + refreshPath(); |
| 280 | + } |
| 281 | + } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException | InstantiationException | ClassNotFoundException e1) { |
| 282 | + // 抛出异常信息 |
| 283 | + ExceptionUtil.rethrow(e1); |
264 | 284 | } |
| 285 | +// PackageChooserDialog dialog = new PackageChooserDialog("Package Chooser", project); |
| 286 | +// dialog.show(); |
| 287 | +// PsiPackage psiPackage = dialog.getSelectedPackage(); |
| 288 | +// if (psiPackage != null) { |
| 289 | +// packageField.setText(psiPackage.getQualifiedName()); |
| 290 | +// // 刷新路径 |
| 291 | +// refreshPath(); |
| 292 | +// } |
265 | 293 | }); |
266 | 294 |
|
267 | 295 | // 添加包编辑框失去焦点事件 |
|
0 commit comments