1- import { Event , EventEmitter , Memento } from 'vscode'
1+ import { Event , EventEmitter , Memento , window } from 'vscode'
22import { ExperimentsModel } from './model'
33import { pickExperiments } from './model/quickPicks'
44import { pickAndModifyParams } from './model/queue/quickPick'
@@ -34,6 +34,8 @@ import { EventName } from '../telemetry/constants'
3434import { Toast } from '../vscode/toast'
3535import { getInput } from '../vscode/inputBox'
3636import { createTypedAccumulator } from '../util/object'
37+ import { setContextValue } from '../vscode/context'
38+ import { standardizePath } from '../fileSystem/path'
3739
3840export const ExperimentsScale = {
3941 ...ColumnType ,
@@ -42,6 +44,7 @@ export const ExperimentsScale = {
4244} as const
4345
4446export class Experiments extends BaseRepository < TableData > {
47+ public readonly onDidChangeIsParamsFileFocused : Event < string | undefined >
4548 public readonly onDidChangeExperiments : Event < ExperimentsOutput | void >
4649 public readonly onDidChangeColumns : Event < void >
4750 public readonly onDidChangeCheckpoints : Event < void >
@@ -55,6 +58,10 @@ export class Experiments extends BaseRepository<TableData> {
5558 private readonly columns : ColumnsModel
5659 private readonly checkpoints : CheckpointsModel
5760
61+ private readonly paramsFileFocused = this . dispose . track (
62+ new EventEmitter < string | undefined > ( )
63+ )
64+
5865 private readonly experimentsChanged = this . dispose . track (
5966 new EventEmitter < ExperimentsOutput | void > ( )
6067 )
@@ -80,6 +87,7 @@ export class Experiments extends BaseRepository<TableData> {
8087
8188 this . internalCommands = internalCommands
8289
90+ this . onDidChangeIsParamsFileFocused = this . paramsFileFocused . event
8391 this . onDidChangeExperiments = this . experimentsChanged . event
8492 this . onDidChangeColumns = this . columnsChanged . event
8593 this . onDidChangeCheckpoints = this . checkpointsChanged . event
@@ -113,6 +121,7 @@ export class Experiments extends BaseRepository<TableData> {
113121
114122 this . handleMessageFromWebview ( )
115123 this . setupInitialData ( )
124+ this . setActiveEditorContext ( )
116125 }
117126
118127 public update ( ) {
@@ -537,4 +546,44 @@ export class Experiments extends BaseRepository<TableData> {
537546
538547 return experiment ?. id
539548 }
549+
550+ private setActiveEditorContext ( ) {
551+ const setActiveEditorContext = ( active : boolean ) => {
552+ setContextValue ( 'dvc.params.fileActive' , active )
553+ const activeDvcRoot = active ? this . dvcRoot : undefined
554+ this . paramsFileFocused . fire ( activeDvcRoot )
555+ }
556+
557+ this . dispose . track (
558+ this . onDidChangeColumns ( ( ) => {
559+ const path = standardizePath ( window . activeTextEditor ?. document . fileName )
560+ if ( ! path ) {
561+ return
562+ }
563+
564+ if ( ! this . columns . getParamsFiles ( ) . has ( path ) ) {
565+ return
566+ }
567+ setActiveEditorContext ( true )
568+ } )
569+ )
570+
571+ this . dispose . track (
572+ window . onDidChangeActiveTextEditor ( event => {
573+ const path = standardizePath ( event ?. document . fileName )
574+ if ( ! path ) {
575+ setActiveEditorContext ( false )
576+ return
577+ }
578+
579+ if ( path . includes ( this . dvcRoot ) ) {
580+ if ( this . columns . getParamsFiles ( ) . has ( path ) ) {
581+ setActiveEditorContext ( true )
582+ return
583+ }
584+ setActiveEditorContext ( false )
585+ }
586+ } )
587+ )
588+ }
540589}
0 commit comments