如何使用插件在 Intellij 中 enable/disable VCS Commit 按钮?
How can I enable/disable the VCS Commit button, in Intellij using a 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);
}
}
我想禁用以下按钮:
问题是我不知道如何访问该按钮。
我可以在调试变量面板中看到它,但是那些访问器受到保护,不能在编译代码中使用。
这是我调试的手表(上图可能不够清楚):
((CommitChangeListDialog) checkinPanel).getButton(((CommitChangeListDialog) checkinPanel).getOKAction())
所以,按钮就在那里,我只是不知道如何得到它。
感谢帮助。非常感谢。
执行此类操作的标准方法是实施 CheckinHandler 和 return CheckinHandler.ReturnResult.CANCEL
(如果未满足要求)。在用户按下 Commit 按钮后,此类 CheckinHandlers 为 运行。例如,参见 GitCheckinHandlerFactory
。
我已经有了一个可用的自定义 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())
所以,按钮就在那里,我只是不知道如何得到它。
感谢帮助。非常感谢。
执行此类操作的标准方法是实施 CheckinHandler 和 return CheckinHandler.ReturnResult.CANCEL
(如果未满足要求)。在用户按下 Commit 按钮后,此类 CheckinHandlers 为 运行。例如,参见 GitCheckinHandlerFactory
。