Переопределить действие щелчка маркера - PullRequest
0 голосов
/ 26 октября 2018

Я хочу добавить пользовательское действие, когда пользователь нажимает на маркер в левой вертикальной линейке редактора

enter image description here

Мне удалось запустить пользовательское действие, добавив в plugin.xml следующий код:

<extension point="org.eclipse.ui.editorActions">
    <editorContribution targetID="org.eclipse.cdt.ui.editor.CEditor"
        id="org.eclipse.cdt.debug.ui.CEditor.MyRulerActions">
        <action label="%Dummy.label"
            class="com.example.MarkerClickAction"
            actionID="RulerClick"
            id="com.example.MarkerClickAction">
        </action>
    </editorContribution>
</extension>

Я хочу вызвать пользовательскую реализацию IQuickFixProcessor, но реализованный метод getCorrections требует IInvocationContext и IProblemLocation[]. Как я могу получить эту информацию?

Действительно плохая имплантация, о которой я подумал, состояла в том, чтобы смоделировать горячее нажатие Ctrl+1, но если каретка не располагается на одной линии с маркером, на который нажали, она покажет быстрые исправления для метки из кареты:

public class MarkerClickAction implements IEditorActionDelegate {

    @Override
    public void run(IAction action) {
        Robot robot = null;
        try {
            robot = new Robot();
        } catch (AWTException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_1);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_1);
    }

    @Override
    public void selectionChanged(IAction action, ISelection selection) {
        // TODO Auto-generated method stub

    }

    @Override
    public void setActiveEditor(IAction action, IEditorPart targetEditor) {
        // TODO Auto-generated method stub

    }

}

Если невозможно вызвать методы, стоящие за ярлыком Ctrl + 1, как я могу расположить carret к линии маркера?

...