blob: 0acfc0915f93475f7ac83bf1fc5fe0ceaea27a3b [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.cvsSupport2.cvsBrowser;
import com.intellij.CvsBundle;
import com.intellij.cvsSupport2.config.CvsRootConfiguration;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.io.File;
/**
* author: lesya
*/
public class CheckoutHelper {
private File myCheckoutLocation;
private final CvsRootConfiguration myConfiguration;
private final Component myPanel;
private CvsElement myElement;
public CheckoutHelper(CvsRootConfiguration configuration, Component panel) {
myConfiguration = configuration;
myPanel = panel;
}
public boolean prepareCheckoutData(CvsElement element, boolean useAltCheckoutPath) {
myElement = element;
if (!useAltCheckoutPath) {
if (!requestLocation()) {
return false;
}
if (shouldCreateDirectoryOfTheSameName()) {
if (!creatingConfirmation()) {
return false;
}
}
}
return true;
}
private boolean creatingConfirmation() {
File checkoutDirectory = new File(myCheckoutLocation, myElement.getCheckoutPath());
if (checkoutDirectory.isDirectory()) return true;
return Messages.showYesNoDialog(CvsBundle.message("confirmation.text.directory.will.be.created", checkoutDirectory),
CvsBundle.message("operation.name.check.out.project"), Messages.getQuestionIcon()) == Messages.YES;
}
private boolean shouldCreateDirectoryOfTheSameName() {
int compareResult =
new File(myCheckoutLocation.getName()).compareTo(new File(myElement.getCheckoutDirectoryName()));
return compareResult == 0;
}
@Nullable
public VirtualFile chooseCheckoutLocation(String pathToSuggestedFolder) {
FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
descriptor.setTitle(CvsBundle.message("dialog.description.select.a.directory.to.check.out.the.files.to"));
VirtualFile suggestedCheckoutFolder =
LocalFileSystem.getInstance().findFileByPath(pathToSuggestedFolder.replace(File.separatorChar, '/'));
return FileChooser.chooseFile(descriptor, myPanel, null, suggestedCheckoutFolder);
}
private boolean requestLocation() {
VirtualFile virtualFile = chooseCheckoutLocation(myConfiguration.PATH_TO_WORKING_FOLDER);
if (virtualFile == null) return false;
myCheckoutLocation = VfsUtil.virtualToIoFile(virtualFile);
myConfiguration.PATH_TO_WORKING_FOLDER = myCheckoutLocation.getAbsolutePath();
return true;
}
public File getCheckoutLocation() {
return myCheckoutLocation;
}
}