Мне удалось создать всплывающее меню и получить IMethod
, но я не знаю, как изменить метод. В этом примере предположим, что я хочу добавить текст system.out.println("Hello, world!");
в нижнюю часть существующего метода при нажатии кнопки.Как изменить тело функции в плагине eclipse?
То, что я в настоящее время находится ниже:
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.jdt.core.IMethod;
public class HelloWorldAction implements IObjectActionDelegate {
private Shell shell;
private IMethod currentMethod;
/**
* Constructor for Action1.
*/
public HelloWorldAction() {
super();
}
/**
* @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
shell = targetPart.getSite().getShell();
}
/**
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
//TODO: preform the actions.
}
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
if (!(selection instanceof IStructuredSelection)) {
action.setEnabled(false);
return;
}
IStructuredSelection sel = (IStructuredSelection) selection;
if (!(sel.getFirstElement() instanceof IMethod)) {
//Only handles IMethods.
action.setEnabled(false);
return;
}
action.setEnabled(true);
this.currentMethod = (IMethod) sel.getFirstElement();
}
}
Я застрял на модификации currentMethod
. Я видел this help page on modifying code, но я не знаю, как получить Document
, AST
, или действительно любую из вещей, необходимых от IMethod
. Каков правильный способ сделать это?
Это полезно (хотя я решил это по-другому), но он не добавляет текст к существующему методу. Но это помогает. Я отправлю ответ с помощью решения, которое я использовал. – Pokechu22