private void get()

in src/com/intellij/vssSupport/commands/GetFilesCommand.java [80:129]


  private void get( int idx )
  {
    if( idx >= myFilesToBeGot.size() )
    {
      for( VirtualFile file : myFiles )
        file.refresh( true, true );
      
      return;
    }

    File file = getFileToBeGot( idx );

    // Test whether file is writable.
    // User is free to replace or skip writable files. It means
    // that command's options can be different for each file.

    GetOptions options = myBaseOptions;
    if( file.exists() && file.canWrite() && GetOptions.OPTION_ASK == options.REPLACE_WRITABLE )
    {
      options = myBaseOptions.getCopy();
      if( myReplaceAllWritable ){
        options.REPLACE_WRITABLE = GetOptions.OPTION_REPLACE;
      }else if( myDoNotReplaceAllWritable ){
        options.REPLACE_WRITABLE = GetOptions.OPTION_SKIP;
      }else{
        ConfirmMultipleDialog dialog = new ConfirmMultipleDialog(
          VssBundle.message("dialog.title.confirm.replace"),
          VssBundle.message("dialog.label.file.is.writable.confirm.replace", file.getAbsolutePath()),
          myProject);
        dialog.show();
        int exitCode = dialog.getExitCode();
        if(ConfirmMultipleDialog.YES_EXIT_CODE == exitCode){
          options.REPLACE_WRITABLE = GetOptions.OPTION_REPLACE;
        }else if(ConfirmMultipleDialog.YES_ALL_EXIT_CODE == exitCode){
          myReplaceAllWritable = true;
          options.REPLACE_WRITABLE = GetOptions.OPTION_REPLACE;
        }else if(ConfirmMultipleDialog.NO_EXIT_CODE==exitCode){
          options.REPLACE_WRITABLE = GetOptions.OPTION_SKIP;
        }else if(ConfirmMultipleDialog.NO_ALL_EXIT_CODE==exitCode){
          myDoNotReplaceAllWritable = true;
          options.REPLACE_WRITABLE = GetOptions.OPTION_SKIP;
        }else if(ConfirmMultipleDialog.CANCEL_OPTION==exitCode){
          return;
        }
      }
    }

    GetListener checkoutListener = new GetListener( idx, myErrors );
    runProcess( options.getOptions( file ), file.getParentFile().getAbsolutePath(), checkoutListener );
  }