我已经有了一个有效的自定义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);
}
}
问题在于我不知道如何获得按钮的访问权限。 我可以在调试变量面板中看到它,但这些访问器受到保护,不能在编译代码中使用。
这是我的调试手表(上图可能不够清晰):
((CommitChangeListDialog) checkinPanel).getButton(((CommitChangeListDialog) checkinPanel).getOKAction())
所以,按钮在那里,我只是不知道如何获得它。
帮助表示感谢。非常感谢提前。
答案 0 :(得分:2)
执行此类操作的标准方法是实现CheckinHandler并在不满足要求时返回CheckinHandler.ReturnResult.CANCEL
。用户按下“提交”按钮后会运行此类CheckinHandler。例如,请参阅GitCheckinHandlerFactory
。