private boolean hasPackageNameChanged(JavaTypeInfo newTypeInfo) {
   return newTypeInfo != null
       && newTypeInfo.getPackageName() != null
       && !newTypeInfo
           .getPackageName()
           .equals(context.getEditorModelContent().getOriginalPackageName());
 }
 private boolean hasFileNameChanged(JavaTypeInfo newTypeInfo, String currentFileName) {
   return currentFileName != null
       && newTypeInfo != null
       && newTypeInfo.getName() != null
       && !currentFileName.equals(newTypeInfo.getName());
 }
  private void saveFile(final JavaTypeInfo newTypeInfo) {

    String currentFileName =
        DataModelerUtils.extractSimpleFileName(versionRecordManager.getPathToLatest());

    if (hasPackageNameChanged(newTypeInfo)) {

      YesNoCancelPopup yesNoCancelPopup =
          YesNoCancelPopup.newYesNoCancelPopup(
              CommonConstants.INSTANCE.Information(),
              Constants.INSTANCE.modelEditor_confirm_file_package_refactoring(
                  newTypeInfo.getPackageName()),
              new Command() {
                @Override
                public void execute() {
                  saveOperationService.save(
                      versionRecordManager.getPathToLatest(),
                      getSaveCommand(newTypeInfo, versionRecordManager.getPathToLatest()));
                }
              },
              Constants.INSTANCE.modelEditor_action_yes_refactor_directory(),
              ButtonType.PRIMARY,
              new Command() {
                @Override
                public void execute() {
                  saveOperationService.save(
                      versionRecordManager.getPathToLatest(),
                      getSaveCommand(null, versionRecordManager.getPathToLatest()));
                }
              },
              Constants.INSTANCE.modelEditor_action_no_dont_refactor_directory(),
              ButtonType.DANGER,
              new Command() {
                @Override
                public void execute() {
                  // do nothing
                }
              },
              null,
              null);

      yesNoCancelPopup.setClosable(false);
      yesNoCancelPopup.show();

    } else if (hasFileNameChanged(newTypeInfo, currentFileName)) {

      YesNoCancelPopup yesNoCancelPopup =
          YesNoCancelPopup.newYesNoCancelPopup(
              CommonConstants.INSTANCE.Information(),
              Constants.INSTANCE.modelEditor_confirm_file_name_refactoring(newTypeInfo.getName()),
              new Command() {
                @Override
                public void execute() {
                  saveOperationService.save(
                      versionRecordManager.getPathToLatest(),
                      getSaveCommand(newTypeInfo, versionRecordManager.getPathToLatest()));
                }
              },
              Constants.INSTANCE.modelEditor_action_yes_refactor_file_name(),
              ButtonType.PRIMARY,
              new Command() {
                @Override
                public void execute() {
                  saveOperationService.save(
                      versionRecordManager.getPathToLatest(),
                      getSaveCommand(null, versionRecordManager.getPathToLatest()));
                }
              },
              Constants.INSTANCE.modelEditor_action_no_dont_refactor_file_name(),
              ButtonType.DANGER,
              new Command() {
                @Override
                public void execute() {
                  // do nothing
                }
              },
              null,
              null);

      yesNoCancelPopup.setClosable(false);
      yesNoCancelPopup.show();

    } else {
      new SaveOperationService()
          .save(
              versionRecordManager.getPathToLatest(),
              getSaveCommand(null, versionRecordManager.getPathToLatest()));
    }
  }