From 0082b48cc24d134b582f92967f7e1d5a0f0dd00e Mon Sep 17 00:00:00 2001 From: Dmitry Zhuravlev Date: Wed, 19 Jun 2019 16:02:37 +0300 Subject: [PATCH] vcs-ignore: add checkbox to control external files addition * restore setting (checkbox) losted in 0301b114eb2d950079743d2bb9995154b3304d17 * use VcsConfiguration settings to control external files addition instead of generic property. GitOrigin-RevId: 9a23130f2adf62153061aa29c5f5aa0c127bc662 --- .../vcs/ExternallyAddedFilesProcessorImpl.kt | 25 +++++++++++-------- .../VcsGeneralConfigurationPanel.form | 14 ++++++++--- .../VcsGeneralConfigurationPanel.java | 14 +++++++++++ 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ExternallyAddedFilesProcessorImpl.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/ExternallyAddedFilesProcessorImpl.kt index a2235dcf99a4..c5d89453e3b2 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ExternallyAddedFilesProcessorImpl.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ExternallyAddedFilesProcessorImpl.kt @@ -7,6 +7,9 @@ import com.intellij.openapi.application.runReadAction import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.project.Project import com.intellij.openapi.util.registry.Registry +import com.intellij.openapi.vcs.VcsConfiguration.StandardConfirmation.ADD +import com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.DO_ACTION_SILENTLY +import com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY import com.intellij.openapi.vcs.changes.ChangeListListener import com.intellij.openapi.vcs.changes.ChangeListManagerImpl import com.intellij.openapi.vcs.changes.VcsIgnoreManager @@ -21,7 +24,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.read import kotlin.concurrent.write -private const val ADD_EXTERNAL_FILES_PROPERTY = "ADD_EXTERNAL_FILES" private const val ASKED_ADD_EXTERNAL_FILES_PROPERTY = "ASKED_ADD_EXTERNAL_FILES" private val LOG = logger() @@ -59,7 +61,7 @@ class ExternallyAddedFilesProcessorImpl(project: Project, val files = UNPROCESSED_FILES_LOCK.read { unprocessedFiles.toList() } if (files.isEmpty()) return - if (needAddSilently()) { + if (needDoForCurrentProject()) { LOG.debug("Add external files to ${vcs.displayName} silently ", files) addChosenFiles(doFilterFiles(files)) } @@ -91,13 +93,7 @@ class ExternallyAddedFilesProcessorImpl(project: Project, } } - private fun needAddSilently() = - vcsManager.getStandardConfirmation(VcsConfiguration.StandardConfirmation.ADD, - vcs).value == VcsShowConfirmationOption.Value.DO_ACTION_SILENTLY - && VcsConfiguration.getInstance(project).ADD_EXTERNAL_FILES_SILENTLY - - private fun doNothingSilently() = vcsManager.getStandardConfirmation(VcsConfiguration.StandardConfirmation.ADD, - vcs).value == VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY + private fun doNothingSilently() = vcsManager.getStandardConfirmation(ADD, vcs).value == DO_NOTHING_SILENTLY private fun needProcessExternalFiles(): Boolean { if (doNothingSilently()) return false @@ -113,7 +109,7 @@ class ExternallyAddedFilesProcessorImpl(project: Project, } override val askedBeforeProperty = ASKED_ADD_EXTERNAL_FILES_PROPERTY - override val doForCurrentProjectProperty = ADD_EXTERNAL_FILES_PROPERTY + override val doForCurrentProjectProperty: String? = null override val showActionText: String = VcsBundle.message("external.files.add.notification.action.view") override val forCurrentProjectActionText: String = VcsBundle.message("external.files.add.notification.action.add") @@ -130,6 +126,15 @@ class ExternallyAddedFilesProcessorImpl(project: Project, addChosenFiles(files) } + override fun rememberForCurrentProject() { + vcsManager.getStandardConfirmation(ADD, vcs).value = DO_ACTION_SILENTLY + VcsConfiguration.getInstance(project).ADD_EXTERNAL_FILES_SILENTLY = true + } + + override fun needDoForCurrentProject() = + vcsManager.getStandardConfirmation(ADD, vcs).value == DO_ACTION_SILENTLY + && VcsConfiguration.getInstance(project).ADD_EXTERNAL_FILES_SILENTLY + override fun doFilterFiles(files: Collection): Collection = changeListManager.unversionedFiles .asSequence() diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.form b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.form index d3aa04685829..d2b6e718ac34 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.form +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.form @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -43,12 +43,20 @@ - + + + + + + + + + diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.java index a0f7dcbaee40..465ef28f3611 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsGeneralConfigurationPanel.java @@ -17,6 +17,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.List; import java.util.*; @@ -48,6 +50,7 @@ public class VcsGeneralConfigurationPanel { private JCheckBox myReloadContext; private JLabel myOnPatchCreationLabel; private JPanel myEmptyChangeListPanel; + private JCheckBox myAddExternalFiles; private ButtonGroup myEmptyChangelistRemovingGroup; public VcsGeneralConfigurationPanel(final Project project) { @@ -62,6 +65,13 @@ public class VcsGeneralConfigurationPanel { myDoNothingOnAddingFile }; + myPerformActionOnAddingFile.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + myAddExternalFiles.setEnabled(myPerformActionOnAddingFile.isSelected()); + } + }); + myOnFileRemovingGroup = new JRadioButton[]{ myShowDialogOnRemovingFile, myPerformActionOnRemovingFile, @@ -91,6 +101,7 @@ public class VcsGeneralConfigurationPanel { settings.REMOVE_EMPTY_INACTIVE_CHANGELISTS = getSelected(myEmptyChangelistRemovingGroup); settings.RELOAD_CONTEXT = myReloadContext.isSelected(); + settings.ADD_EXTERNAL_FILES_SILENTLY = myAddExternalFiles.isSelected(); for (VcsShowOptionsSettingImpl setting : myPromptOptions.keySet()) { setting.setValue(myPromptOptions.get(setting).isSelected()); @@ -176,6 +187,7 @@ public class VcsGeneralConfigurationPanel { return true; } if (settings.RELOAD_CONTEXT != myReloadContext.isSelected()) return true; + if (settings.ADD_EXTERNAL_FILES_SILENTLY != myAddExternalFiles.isSelected()) return true; if (getReadOnlyStatusHandler().getState().SHOW_DIALOG != myShowReadOnlyStatusDialog.isSelected()) { return true; @@ -195,6 +207,8 @@ public class VcsGeneralConfigurationPanel { public void reset() { VcsConfiguration settings = VcsConfiguration.getInstance(myProject); myReloadContext.setSelected(settings.RELOAD_CONTEXT); + myAddExternalFiles.setSelected(settings.ADD_EXTERNAL_FILES_SILENTLY); + myAddExternalFiles.setEnabled(myPerformActionOnAddingFile.isSelected()); VcsShowConfirmationOption.Value value = settings.REMOVE_EMPTY_INACTIVE_CHANGELISTS; UIUtil.setSelectedButton(myEmptyChangelistRemovingGroup, value == VcsShowConfirmationOption.Value.SHOW_CONFIRMATION ? 0