如何使用插件在Intellij中启用/禁用VCS提交按钮?

时间:2017-05-09 13:01:54

标签: intellij-idea plugins intellij-plugin

我已经有了一个有效的自定义Intellij插件。我可以获取并检查现有的提交消息,但是如果消息不包含某些信息,我希望能够禁用“提交”按钮。

@Override
public void update(AnActionEvent e) {

    CheckinProjectPanel checkinPanel = (CheckinProjectPanel) CheckinProjectPanel.PANEL_KEY.getData(e.getDataContext());
    if (checkinPanel != null) {
        String commitMessage = checkinPanel.getCommitMessage();
        boolean isValidMessage = commitMessageIsValid(commitMessage);

        // get Commit Button...somehow
        JBOptionButton commitButton = checkinPanel.???; 

        commitButton.setEnabled(isValidMessage);
    }
}

我想禁用以下按钮: Commit Panel's Commit Button

问题在于我不知道如何获得按钮的访问权限。 我可以在调试变量面板中看到它,但这些访问器受到保护,不能在编译代码中使用。

Invalid Accessors

enter image description here

这是我的调试手表(上图可能不够清晰):

((CommitChangeListDialog) checkinPanel).getButton(((CommitChangeListDialog) checkinPanel).getOKAction())

所以,按钮在那里,我只是不知道如何获得它。

帮助表示感谢。非常感谢提前。

1 个答案:

答案 0 :(得分:2)

执行此类操作的标准方法是实现CheckinHandler并在不满足要求时返回CheckinHandler.ReturnResult.CANCEL。用户按下“提交”按钮后会运行此类CheckinHandler。例如,请参阅GitCheckinHandlerFactory