@Override
  public void invoke(
      @NotNull Project project, Editor editor, PsiFile file, DataContext dataContext) {
    ResourceBundleEditor bundleEditor = ResourceBundleUtil.getEditor(dataContext);
    if (bundleEditor == null) {
      return;
    }

    String propertyName = bundleEditor.getState(FileEditorStateLevel.NAVIGATION).getPropertyName();
    if (propertyName == null) {
      return;
    }

    ResourceBundle bundle = ResourceBundleUtil.getResourceBundleFromDataContext(dataContext);
    if (bundle == null) {
      return;
    }
    Messages.showInputDialog(
        project,
        PropertiesBundle.message("rename.bundle.enter.new.resource.bundle.key.name.prompt.text"),
        PropertiesBundle.message("rename.resource.bundle.key.dialog.title"),
        Messages.getQuestionIcon(),
        propertyName,
        new ResourceBundleKeyRenameValidator(project, bundleEditor, bundle, propertyName));
  }
 @Override
 public boolean isAvailableOnDataContext(DataContext dataContext) {
   final Project project = CommonDataKeys.PROJECT.getData(dataContext);
   if (project == null) {
     return false;
   }
   final ResourceBundle bundle = ResourceBundleUtil.getResourceBundleFromDataContext(dataContext);
   if (bundle == null) {
     return false;
   }
   final FileEditor fileEditor = PlatformDataKeys.FILE_EDITOR.getData(dataContext);
   if (fileEditor == null || !(fileEditor instanceof ResourceBundleEditor)) {
     return false;
   }
   final VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext);
   return !(virtualFile == null || !(virtualFile instanceof ResourceBundleAsVirtualFile));
 }