blob: 9df2c97164d453dd5495db5c4f98a4e0c4f50fe1 [file] [log] [blame]
/*
* Copyright 2000-2009 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 org.jetbrains.idea.svn.update;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.vcs.FilePath;
import org.jetbrains.idea.svn.SvnBundle;
import org.jetbrains.idea.svn.SvnConfiguration;
import org.jetbrains.idea.svn.SvnVcs;
import org.jetbrains.idea.svn.dialogs.SelectLocationDialog;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SvnIntegrateRootOptionsPanel implements SvnPanel{
private TextFieldWithBrowseButton myMergeText1;
private TextFieldWithBrowseButton myMergeText2;
private JPanel myPanel;
private final FilePath myRoot;
private final SvnVcs myVcs;
private SvnRevisionPanel myRevision2;
private SvnRevisionPanel myRevision1;
private JLabel myUrlLabel1;
public SvnIntegrateRootOptionsPanel(final SvnVcs vcs, FilePath root) {
myRoot = root;
myVcs = vcs;
//myPanel.setMinimumSize(new Dimension(670, 70));
myMergeText1.setEditable(true);
myUrlLabel1.setLabelFor(myMergeText1);
myMergeText2.setEditable(true);
myMergeText1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chooseUrl(myMergeText1, vcs);
}
});
myMergeText2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chooseUrl2(vcs);
}
});
myRevision1.setProject(vcs.getProject());
myRevision2.setProject(vcs.getProject());
myRevision1.setRoot(myRoot.getVirtualFile());
myRevision2.setRoot(myRoot.getVirtualFile());
myRevision1.setUrlProvider(new SvnRevisionPanel.UrlProvider() {
public String getUrl() {
return myMergeText1.getText();
}
});
myRevision2.setUrlProvider(new SvnRevisionPanel.UrlProvider() {
public String getUrl() {
return myMergeText2.getText();
}
});
}
private boolean chooseUrl2(final SvnVcs vcs) {
return chooseUrl(myMergeText2, vcs);
}
private boolean chooseUrl(final TextFieldWithBrowseButton textField, final SvnVcs vcs) {
String url = textField.getText();
final String selectedUrl = SelectLocationDialog.selectLocation(vcs.getProject(), url);
if (selectedUrl != null) {
textField.setText(selectedUrl);
return true;
} else {
return false;
}
}
public void apply(SvnConfiguration conf) throws ConfigurationException {
if (myMergeText1.getText().trim().length() == 0) {
myMergeText1.getTextField().requestFocus();
throw new ConfigurationException(SvnBundle.message("source.url.could.not.be.empty.error.message"));
}
if (myMergeText2.getText().trim().length() == 0) {
myMergeText2.getTextField().requestFocus();
throw new ConfigurationException(SvnBundle.message("source.url.could.not.be.empty.error.message"));
}
if (myMergeText1.getText().equals(myMergeText2.getText()) && myRevision1.getRevisionText().equals(myRevision2.getRevisionText())) {
throw new ConfigurationException(SvnBundle.message("no.differences.between.sources.error.message"));
}
final MergeRootInfo rootInfo = conf.getMergeRootInfo(myRoot.getIOFile(), myVcs);
rootInfo.setUrl1(myMergeText1.getText());
rootInfo.setUrl2(myMergeText2.getText());
rootInfo.setRevision1(myRevision1.getRevision());
rootInfo.setRevision2(myRevision2.getRevision());
}
public boolean canApply() {
return !myMergeText1.getText().equals(myMergeText2.getText()) || !myRevision1.getRevisionText().equals(myRevision2.getRevisionText());
}
public JPanel getPanel() {
return myPanel;
}
public void reset(SvnConfiguration config) {
final MergeRootInfo rootInfo = config.getMergeRootInfo(myRoot.getIOFile(), myVcs);
myRevision1.setRevision(rootInfo.getRevision1());
myRevision2.setRevision(rootInfo.getRevision2());
myMergeText1.setText(rootInfo.getUrlString1());
myMergeText2.setText(rootInfo.getUrlString2());
}
public void setData(SvnRevisionPanel data) {
}
public void getData(SvnRevisionPanel data) {
}
public boolean isModified(SvnRevisionPanel data) {
return false;
}
}