Commit ec9902a5 authored by Vladimir Krivosheev's avatar Vladimir Krivosheev
Browse files

extract ConfigureIcsAction

parent 5e4eb870
Branches unavailable Tags unavailable
No related merge requests found
Showing with 49 additions and 38 deletions
+49 -38
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.settingsRepository.actions
import com.intellij.configurationStore.StateStorageManagerImpl
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.stateStore
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.ui.TextFieldWithBrowseButton
import com.intellij.ui.components.dialog
import com.intellij.ui.layout.*
import org.jetbrains.settingsRepository.createMergeActions
import org.jetbrains.settingsRepository.icsManager
import org.jetbrains.settingsRepository.icsMessage
import kotlin.properties.Delegates
internal class ConfigureIcsAction : DumbAwareAction() {
override fun actionPerformed(e: AnActionEvent) {
var urlTextField: TextFieldWithBrowseButton by Delegates.notNull()
icsManager.runInAutoCommitDisabledMode {
val panel = panel {
row(icsMessage("settings.upstream.url")) {
urlTextField = textFieldWithBrowseButton(value = icsManager.repositoryManager.getUpstream(),
browseDialogTitle = "Choose Local Git Repository",
fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor())
}
}
dialog(title = icsMessage("settings.panel.title"),
panel = panel,
focusedComponent = urlTextField,
project = e.project,
createActions = {
createMergeActions(e.project, urlTextField, it)
}).show()
}
}
override fun update(e: AnActionEvent) {
val application = ApplicationManager.getApplication()
if (application.isUnitTestMode) {
return
}
e.presentation.isEnabledAndVisible = icsManager.isActive || !(application.stateStore.storageManager as StateStorageManagerImpl).compoundStreamProvider.enabled
e.presentation.icon = null
}
}
\ No newline at end of file
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.settingsRepository.actions package org.jetbrains.settingsRepository.actions
import com.intellij.configurationStore.StateStorageManagerImpl
import com.intellij.notification.NotificationGroup import com.intellij.notification.NotificationGroup
import com.intellij.notification.NotificationType import com.intellij.notification.NotificationType
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.stateStore
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.TextFieldWithBrowseButton
import com.intellij.ui.components.dialog
import com.intellij.ui.layout.*
import org.jetbrains.settingsRepository.* import org.jetbrains.settingsRepository.*
import kotlin.properties.Delegates.notNull
internal val NOTIFICATION_GROUP = NotificationGroup.balloonGroup(PLUGIN_NAME) internal val NOTIFICATION_GROUP = NotificationGroup.balloonGroup(PLUGIN_NAME)
...@@ -52,34 +45,4 @@ private fun syncAndNotify(syncType: SyncType, project: Project?) { ...@@ -52,34 +45,4 @@ private fun syncAndNotify(syncType: SyncType, project: Project?) {
internal class MergeAction : SyncAction(SyncType.MERGE) internal class MergeAction : SyncAction(SyncType.MERGE)
internal class ResetToTheirsAction : SyncAction(SyncType.OVERWRITE_LOCAL) internal class ResetToTheirsAction : SyncAction(SyncType.OVERWRITE_LOCAL)
internal class ResetToMyAction : SyncAction(SyncType.OVERWRITE_REMOTE) internal class ResetToMyAction : SyncAction(SyncType.OVERWRITE_REMOTE)
\ No newline at end of file
internal class ConfigureIcsAction : DumbAwareAction() {
override fun actionPerformed(e: AnActionEvent) {
var urlTextField: TextFieldWithBrowseButton by notNull()
icsManager.runInAutoCommitDisabledMode {
val panel = panel {
row(icsMessage("settings.upstream.url")) {
urlTextField = textFieldWithBrowseButton(value = icsManager.repositoryManager.getUpstream(),
browseDialogTitle = "Choose Local Git Repository",
fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor())
}
}
dialog(title = icsMessage("settings.panel.title"),
panel = panel,
focusedComponent = urlTextField,
project = e.project,
createActions = { createMergeActions(e.project, urlTextField, it) }).show()
}
}
override fun update(e: AnActionEvent) {
val application = ApplicationManager.getApplication()
if (application.isUnitTestMode) {
return
}
e.presentation.isEnabledAndVisible = icsManager.isActive || !(application.stateStore.storageManager as StateStorageManagerImpl).compoundStreamProvider.enabled
e.presentation.icon = null
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment