mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
vcs: preselect default vcs in "Add VCS Directory Mapping" dialog
GitOrigin-RevId: f505d16a570ae87d927b32f0df29e783e12617ca
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e6eba962fa
commit
f4a3a5bfae
@@ -5688,6 +5688,9 @@ c:com.intellij.openapi.vcs.configurable.ShelfStorageConfigurationDialog
|
||||
- p:doValidate():com.intellij.openapi.ui.ValidationInfo
|
||||
- p:getHelpId():java.lang.String
|
||||
- p:postponeValidation():Z
|
||||
f:com.intellij.openapi.vcs.configurable.SuggestedVcsComparator
|
||||
- sf:INSTANCE:com.intellij.openapi.vcs.configurable.SuggestedVcsComparator
|
||||
- sf:create(com.intellij.openapi.project.Project):java.util.Comparator
|
||||
a:com.intellij.openapi.vcs.configurable.VcsCheckBoxWithSpinnerConfigurable
|
||||
- com.intellij.openapi.options.Configurable
|
||||
- p:myHighlightInterval:javax.swing.JSpinner
|
||||
|
||||
@@ -8,39 +8,33 @@ import com.intellij.openapi.ui.MultiLineLabelUI;
|
||||
import com.intellij.openapi.vcs.AbstractVcs;
|
||||
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
|
||||
import com.intellij.openapi.vcs.VcsBundle;
|
||||
import com.intellij.openapi.vcs.configurable.SuggestedVcsComparator;
|
||||
import com.intellij.ui.SimpleListCellRenderer;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.NamedColorUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.Comparator;
|
||||
|
||||
import static com.intellij.openapi.util.SystemInfo.isMac;
|
||||
|
||||
public final class StartUseVcsDialog extends DialogWrapper {
|
||||
@NonNls private static final String GIT = "Git";
|
||||
|
||||
private final ComboBox<AbstractVcs> myVcsCombo;
|
||||
|
||||
@NotNull
|
||||
private final String myTargetDirectory;
|
||||
|
||||
private static final Comparator<AbstractVcs> VCS_COMPARATOR = Comparator
|
||||
.comparingInt((AbstractVcs vcs) -> GIT.equals(vcs.getName()) ? -1 : 0)
|
||||
.thenComparing(vcs -> vcs.getDisplayName(), String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
public StartUseVcsDialog(@NotNull Project project, @NotNull String targetDirectory) {
|
||||
super(project, true);
|
||||
|
||||
myTargetDirectory = targetDirectory;
|
||||
AbstractVcs[] vcses = ProjectLevelVcsManager.getInstance(project).getAllSupportedVcss();
|
||||
ContainerUtil.sort(vcses, VCS_COMPARATOR);
|
||||
ContainerUtil.sort(vcses, SuggestedVcsComparator.create(project));
|
||||
myVcsCombo = new ComboBox<>(vcses);
|
||||
myVcsCombo.setRenderer(SimpleListCellRenderer.create("", AbstractVcs::getDisplayName));
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.openapi.vcs.configurable
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.text.NaturalComparator
|
||||
import com.intellij.openapi.vcs.AbstractVcs
|
||||
import com.intellij.openapi.vcs.ProjectLevelVcsManager
|
||||
import org.jetbrains.annotations.NonNls
|
||||
|
||||
object SuggestedVcsComparator {
|
||||
private const val GIT_VCS_NAME: @NonNls String = "Git"
|
||||
|
||||
@JvmStatic
|
||||
fun create(project: Project): Comparator<AbstractVcs?> {
|
||||
val activeVcss = ProjectLevelVcsManager.getInstance(project).getAllActiveVcss();
|
||||
return compareBy<AbstractVcs?> { vcs ->
|
||||
when {
|
||||
vcs == null -> 1 // <None> is last
|
||||
activeVcss.contains(vcs) -> -2
|
||||
vcs.name == GIT_VCS_NAME -> -1
|
||||
else -> 0
|
||||
}
|
||||
}.thenComparing({ vcs -> vcs?.displayName ?: "" }, NaturalComparator.INSTANCE)
|
||||
}
|
||||
}
|
||||
@@ -37,12 +37,12 @@ import java.awt.Component
|
||||
import java.awt.GridBagConstraints
|
||||
import java.awt.GridBagLayout
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.JTable
|
||||
import javax.swing.table.TableCellEditor
|
||||
import javax.swing.table.TableCellRenderer
|
||||
import kotlin.Throws
|
||||
|
||||
class VcsDirectoryConfigurationPanel(private val project: Project) : JPanel(), Disposable {
|
||||
private val POSTPONE_MAPPINGS_LOADING_PANEL = ProgressIndicatorWithDelayedPresentation.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS
|
||||
@@ -151,7 +151,7 @@ class VcsDirectoryConfigurationPanel(private val project: Project) : JPanel(), D
|
||||
|
||||
initializeModel()
|
||||
|
||||
vcsComboBox = buildVcsesComboBox(allSupportedVcss)
|
||||
vcsComboBox = buildVcsesComboBox(project, allSupportedVcss)
|
||||
vcsComboBox.addItemListener {
|
||||
if (mappingTable.isEditing) {
|
||||
mappingTable.stopEditing()
|
||||
@@ -471,11 +471,11 @@ class VcsDirectoryConfigurationPanel(private val project: Project) : JPanel(), D
|
||||
@JvmStatic
|
||||
fun buildVcsesComboBox(project: Project): ComboBox<AbstractVcs?> {
|
||||
val allVcses = ProjectLevelVcsManager.getInstance(project).allSupportedVcss
|
||||
return buildVcsesComboBox(allVcses.asList())
|
||||
return buildVcsesComboBox(project, allVcses.asList())
|
||||
}
|
||||
|
||||
private fun buildVcsesComboBox(allVcses: List<AbstractVcs>): ComboBox<AbstractVcs?> {
|
||||
val comboBox = ComboBox((allVcses + null).toTypedArray())
|
||||
private fun buildVcsesComboBox(project: Project, allVcses: List<AbstractVcs>): ComboBox<AbstractVcs?> {
|
||||
val comboBox = ComboBox((allVcses + null).sortedWith(SuggestedVcsComparator.create(project)).toTypedArray())
|
||||
comboBox.renderer = SimpleListCellRenderer.create(VcsBundle.message("none.vcs.presentation")) { obj: AbstractVcs? -> obj?.displayName }
|
||||
return comboBox
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.intellij.openapi.vcs.impl.DefaultVcsRootPolicy;
|
||||
import com.intellij.openapi.vcs.impl.VcsDescriptor;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -67,9 +68,13 @@ public class VcsMappingConfigurationDialog extends DialogWrapper {
|
||||
|
||||
@NotNull
|
||||
private static VcsDirectoryMapping suggestDefaultMapping(@NotNull Project project) {
|
||||
AbstractVcs[] vcses = ProjectLevelVcsManager.getInstance(project).getAllSupportedVcss();
|
||||
ContainerUtil.sort(vcses, SuggestedVcsComparator.create(project));
|
||||
String defaultVcsName = vcses.length > 0 ? vcses[0].getName() : "";
|
||||
|
||||
String basePath = project.getBasePath();
|
||||
if (basePath == null) return VcsDirectoryMapping.createDefault("");
|
||||
return new VcsDirectoryMapping(basePath, "");
|
||||
if (basePath == null) return VcsDirectoryMapping.createDefault(defaultVcsName);
|
||||
return new VcsDirectoryMapping(basePath, defaultVcsName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user