При разработке плагина Eclipse, как получить доступ к Java-модели проекта и корневому узлу AST? - PullRequest
4 голосов
/ 17 апреля 2011

В настоящее время я разрабатываю плагин, который будет использовать Java-модель Eclipse и абстрактное синтаксическое дерево Java Eclipse.

Итак, я ищу способ получить через мой плагин корневой объект Java-модели и корневой узел AST текущего Java-проекта:

public class SampleHandler extends AbstractHandler {
    public Object execute(ExecutionEvent event) throws ExecutionException {     
        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
                ??? how to get the current Java project Java Model? and the AST node?
        }
}

Спасибо

Ответы [ 4 ]

4 голосов
/ 17 апреля 2011

Я использую следующее, чтобы получить модель:

public static IJavaModel prepareWorkspace() {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot workspaceRoot = workspace.getRoot();
    IJavaModel javaModel = JavaCore.create(workspaceRoot);
    return javaModel;
}

Вы можете найти этот и некоторые другие полезные методы утилит Eclipse в EclipseUtils.java и EclipseSearchUtils.java .

3 голосов
/ 18 апреля 2011

Вы можете получить выделение из вашего обработчика, а затем решить, что с ним делать:

ISelection sel = HandlerUtil.getCurrentSelection(event);
if (sel instanceof IStructuredSelection) {
    // check to see if it's empty first, though
    Object obj = ((IStructuredSelection)sel).getFirstElement();
    // then have a look and see what your selection is.
}

Если у вас есть IJavaElement, вы можете ходить по модели, пока не найдете точкуты ищешь.Если у вас есть IFile / IResource, вы можете использовать некоторые методы JavaCore, чтобы перейти к модели Java.

2 голосов
/ 01 мая 2011

Взгляните на это ...

http://code.google.com/a/eclipselabs.org/p/javadocasumlview/source/browse/trunk/JavadocAsUmlAPI/src/main/java/utils/CompilationUnitResolverHelper.java

и

http://code.google.com/a/eclipselabs.org/p/javadocasumlview/source/browse/trunk/JavadocAsUmlAPI/src/main/java/utils/CompilationUnitResolverCache.java

В основном

  • контекст выбора в основном представляет собой единицу компиляции, которая сама по себе является ITypeRoot
  • ищите ASTParser или SharedASTProvider для хорошей отправной точки

Удачи!

2 голосов
/ 17 апреля 2011

См. Плагин org.eclipse.jdt.core и классы IJavaProject и JavaCore.Используйте JavaCore.create ([IProject]), чтобы получить IJavaProject и перейти оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...