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