Rewrite commit message generation action to use Grazie proxy, make it work in non-modal commit

GitOrigin-RevId: 1e772efb2cd8856ed258ad2973c06d27d6091184
This commit is contained in:
Dmitry Jemerov
2023-04-27 09:54:57 +00:00
committed by intellij-monorepo-bot
parent fbd86da90f
commit fa62fec763
3 changed files with 14 additions and 8 deletions
@@ -14,6 +14,7 @@ import com.intellij.openapi.vcs.history.VcsRevisionNumber;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.Consumer;
import com.intellij.vcs.commit.CommitWorkflowHandler;
import com.intellij.vcs.commit.CommitWorkflowUi;
import org.jetbrains.annotations.ApiStatus;
import java.io.File;
@@ -91,6 +92,7 @@ public interface VcsDataKeys {
DataKey<CommitMessageI> COMMIT_MESSAGE_CONTROL = DataKey.create("COMMIT_MESSAGE_CONTROL");
DataKey<Document> COMMIT_MESSAGE_DOCUMENT = DataKey.create("COMMIT_MESSAGE_DOCUMENT");
DataKey<CommitWorkflowHandler> COMMIT_WORKFLOW_HANDLER = DataKey.create("Vcs.CommitWorkflowHandler");
DataKey<CommitWorkflowUi> COMMIT_WORKFLOW_UI = DataKey.create("Vcs.CommitWorkflowUI");
DataKey<VcsHistorySession> HISTORY_SESSION = DataKey.create("VCS_HISTORY_SESSION");
/**
@@ -19,10 +19,7 @@ import com.intellij.openapi.ui.*;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.vcs.AbstractVcs;
import com.intellij.openapi.vcs.FilePath;
import com.intellij.openapi.vcs.VcsActions;
import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.*;
import com.intellij.openapi.vcs.changes.*;
import com.intellij.openapi.vcs.changes.actions.diff.lst.LocalChangeListDiffTool;
import com.intellij.openapi.vcs.checkin.BaseCheckinHandlerFactory;
@@ -688,6 +685,9 @@ public abstract class CommitChangeListDialog extends DialogWrapper implements Si
@Nullable
@Override
public Object getData(@NotNull String dataId) {
if (VcsDataKeys.COMMIT_WORKFLOW_UI.is(dataId)) {
return this;
}
return StreamEx.of(myDataProviders)
.map(provider -> provider.getData(dataId))
.nonNull()
@@ -1,7 +1,6 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.vcs.commit
import com.intellij.ide.IdeEventQueue
import com.intellij.openapi.Disposable
import com.intellij.openapi.actionSystem.ActionGroup
import com.intellij.openapi.actionSystem.ActionManager
@@ -17,6 +16,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.ui.popup.JBPopupListener
import com.intellij.openapi.ui.popup.LightweightWindowEvent
import com.intellij.openapi.vcs.VcsBundle.message
import com.intellij.openapi.vcs.VcsDataKeys
import com.intellij.openapi.vcs.actions.ShowCommitOptionsAction
import com.intellij.openapi.vcs.changes.InclusionListener
import com.intellij.openapi.vcs.ui.CommitMessage
@@ -35,11 +35,9 @@ import com.intellij.util.ui.components.BorderLayoutPanel
import org.jetbrains.annotations.Nls
import java.awt.Color
import java.awt.Point
import java.awt.event.MouseEvent
import javax.swing.JComponent
import javax.swing.JPanel
import javax.swing.LayoutFocusTraversalPolicy
import javax.swing.SwingUtilities
import javax.swing.border.Border
import javax.swing.border.EmptyBorder
@@ -104,7 +102,13 @@ abstract class NonModalCommitPanel(
override fun getComponent(): JComponent = this
override fun getPreferredFocusableComponent(): JComponent = commitMessage.editorField
override fun getData(dataId: String) = getDataFromProviders(dataId) ?: commitMessage.getData(dataId)
override fun getData(dataId: String): Any? {
if (VcsDataKeys.COMMIT_WORKFLOW_UI.`is`(dataId)) {
return this
}
return getDataFromProviders(dataId) ?: commitMessage.getData(dataId)
}
fun getDataFromProviders(dataId: String): Any? {
for (dataProvider in dataProviders) {
return dataProvider.getData(dataId) ?: continue