2017-05-09 1 views
0

J'ai déjà un plugin Intellij personnalisé. Je peux obtenir et vérifier le message de validation existant, mais je veux être en mesure de désactiver le bouton Valider si le message ne contient pas certaines informations.Comment activer/désactiver le bouton VCS Commit, dans Intellij en utilisant un plugin?

@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); 
    } 
} 

Je veux faire désactiver le bouton ci-dessous: Commit Panel's Commit Button

Le problème est que je ne sais pas comment accéder au bouton. Je peux le voir dans le panneau Variables de débogage, mais ces accesseurs sont protégés et ne peuvent pas être utilisés dans le code compilé.

Invalid Accessors

enter image description here

C'est ma montre de débogage (image ci-dessus peut ne pas être assez clair):

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

Ainsi, le bouton est là, je ne tout simplement pas savoir comment l'obtenir.

Aide appréciée. Merci beaucoup d'avance.

Répondre

2

La manière standard de faire de telles choses est d'implémenter un CheckinHandler et de retourner CheckinHandler.ReturnResult.CANCEL si une exigence n'est pas satisfaite. Ces CheckinHandlers sont lancés après que l'utilisateur a appuyé sur le bouton Valider. Voir GitCheckinHandlerFactory par exemple.