class BaseViewPresenter {

    public void renameItem(final FolderItem folderItem) {
        final Path path = getFolderItemPath(folderItem);
        renamePopUpPresenter.show(path,
                                  new Validator() {
                                      @Override
                                      public void validate(final String value,
                                                           final ValidatorCallback callback) {
                                          validationService.call(new RemoteCallback<Object>() {
                                              @Override
                                              public void callback(Object response) {
                                                  if (Boolean.TRUE.equals(response)) {
                                                      callback.onSuccess();
                                                  } else {
                                                      callback.onFailure();
                                                  }
                                              }
                                          })
                                                  .isFileNameValid(path,
                                                                   value);
                                      }
                                  },
                                  new CommandWithFileNameAndCommitMessage() {
                                      @Override
                                      public void execute(final FileNameAndCommitMessage details) {
                                          baseView.showBusyIndicator(CommonConstants.INSTANCE.Renaming());
                                          explorerService.call(
                                                  getRenameSuccessCallback(getRenameView()),
                                                  getRenameErrorCallback(getRenameView())
                                          )
                                                  .renameItem(folderItem,
                                                              details.getNewFileName(),
                                                              details.getCommitMessage());
                                      }
                                  }
        );
    }

    public  BaseViewPresenter(BaseViewImpl baseView);

}