/* * 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 com.intellij.openapi.vcs.changes.conflicts; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.changes.ChangeList; import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.openapi.vcs.changes.ChangeListManagerImpl; import com.intellij.openapi.vcs.readOnlyHandler.FileListRenderer; import com.intellij.openapi.vcs.readOnlyHandler.ReadOnlyStatusDialog; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.CollectionListModel; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.List; /** * @author Dmitry Avdeev */ public class ChangelistConflictDialog extends DialogWrapper { private JPanel myPanel; private JRadioButton myShelveChangesRadioButton; private JRadioButton myMoveChangesToActiveRadioButton; private JRadioButton mySwitchToChangelistRadioButton; private JRadioButton myIgnoreRadioButton; private JLabel myListTitle; private JList myFileList; private final Project myProject; public ChangelistConflictDialog(Project project, List<ChangeList> changeLists, List<VirtualFile> conflicts) { super(project); myProject = project; setTitle("Resolve Changelist Conflict"); myListTitle.setText(StringUtil.capitalize(ReadOnlyStatusDialog.getTheseFilesMessage(conflicts)) + " " + (conflicts.size() > 1 ? "do" : "does") + " not belong to the active changelist:"); myFileList.setCellRenderer(new FileListRenderer()); myFileList.setModel(new CollectionListModel(conflicts)); ChangeListManagerImpl manager = ChangeListManagerImpl.getInstanceImpl(myProject); ChangelistConflictResolution resolution = manager.getConflictTracker().getOptions().LAST_RESOLUTION; if (changeLists.size() > 1) { mySwitchToChangelistRadioButton.setEnabled(false); if (resolution == ChangelistConflictResolution.SWITCH) { resolution = ChangelistConflictResolution.IGNORE; } } mySwitchToChangelistRadioButton.setText(VcsBundle.message("switch.to.changelist", changeLists.iterator().next().getName())); myMoveChangesToActiveRadioButton.setText(VcsBundle.message("move.to.changelist", manager.getDefaultChangeList().getName())); switch (resolution) { case SHELVE: myShelveChangesRadioButton.setSelected(true); break; case MOVE: myMoveChangesToActiveRadioButton.setSelected(true); break; case SWITCH: mySwitchToChangelistRadioButton.setSelected(true) ; break; case IGNORE: myIgnoreRadioButton.setSelected(true); break; } init(); } @Override protected JComponent createCenterPanel() { return myPanel; } public ChangelistConflictResolution getResolution() { if (myShelveChangesRadioButton.isSelected()) return ChangelistConflictResolution.SHELVE; if (myMoveChangesToActiveRadioButton.isSelected()) return ChangelistConflictResolution.MOVE; if (mySwitchToChangelistRadioButton.isSelected()) return ChangelistConflictResolution.SWITCH; return ChangelistConflictResolution.IGNORE; } @NotNull @Override protected Action[] createLeftSideActions() { return new Action[] { new AbstractAction("&Configure...") { public void actionPerformed(ActionEvent e) { ChangeListManagerImpl manager = (ChangeListManagerImpl)ChangeListManager.getInstance(myProject); ShowSettingsUtil.getInstance().editConfigurable(myPanel, new ChangelistConflictConfigurable(manager)); } }}; } protected String getHelpId() { return "project.propVCSSupport.ChangelistConflict"; } }