@@ -2,7 +2,7 @@ import { App } from "../common/app";
22import { DisposableObject } from "../common/disposable-object" ;
33import { AppEvent , AppEventEmitter } from "../common/events" ;
44import { DatabaseItem } from "../databases/local-databases" ;
5- import { Method } from "./method" ;
5+ import { Method , Usage } from "./method" ;
66import { ModeledMethod } from "./modeled-method" ;
77import { INITIAL_HIDE_MODELED_METHODS_VALUE } from "./shared/hide-modeled-methods" ;
88
@@ -12,6 +12,8 @@ interface DbModelingState {
1212 hideModeledMethods : boolean ;
1313 modeledMethods : Record < string , ModeledMethod > ;
1414 modifiedMethodSignatures : Set < string > ;
15+ selectedMethod : Method | undefined ;
16+ selectedUsage : Usage | undefined ;
1517}
1618
1719interface MethodsChangedEvent {
@@ -37,13 +39,22 @@ interface ModifiedMethodsChangedEvent {
3739 isActiveDb : boolean ;
3840}
3941
42+ interface SelectedMethodChangedEvent {
43+ databaseItem : DatabaseItem ;
44+ method : Method ;
45+ usage : Usage ;
46+ modeledMethod : ModeledMethod | undefined ;
47+ isModified : boolean ;
48+ }
49+
4050export class ModelingStore extends DisposableObject {
4151 public readonly onActiveDbChanged : AppEvent < void > ;
4252 public readonly onDbClosed : AppEvent < string > ;
4353 public readonly onMethodsChanged : AppEvent < MethodsChangedEvent > ;
4454 public readonly onHideModeledMethodsChanged : AppEvent < HideModeledMethodsChangedEvent > ;
4555 public readonly onModeledMethodsChanged : AppEvent < ModeledMethodsChangedEvent > ;
4656 public readonly onModifiedMethodsChanged : AppEvent < ModifiedMethodsChangedEvent > ;
57+ public readonly onSelectedMethodChanged : AppEvent < SelectedMethodChangedEvent > ;
4758
4859 private readonly state : Map < string , DbModelingState > ;
4960 private activeDb : string | undefined ;
@@ -54,6 +65,7 @@ export class ModelingStore extends DisposableObject {
5465 private readonly onHideModeledMethodsChangedEventEmitter : AppEventEmitter < HideModeledMethodsChangedEvent > ;
5566 private readonly onModeledMethodsChangedEventEmitter : AppEventEmitter < ModeledMethodsChangedEvent > ;
5667 private readonly onModifiedMethodsChangedEventEmitter : AppEventEmitter < ModifiedMethodsChangedEvent > ;
68+ private readonly onSelectedMethodChangedEventEmitter : AppEventEmitter < SelectedMethodChangedEvent > ;
5769
5870 constructor ( app : App ) {
5971 super ( ) ;
@@ -92,6 +104,12 @@ export class ModelingStore extends DisposableObject {
92104 ) ;
93105 this . onModifiedMethodsChanged =
94106 this . onModifiedMethodsChangedEventEmitter . event ;
107+
108+ this . onSelectedMethodChangedEventEmitter = this . push (
109+ app . createEventEmitter < SelectedMethodChangedEvent > ( ) ,
110+ ) ;
111+ this . onSelectedMethodChanged =
112+ this . onSelectedMethodChangedEventEmitter . event ;
95113 }
96114
97115 public initializeStateForDb ( databaseItem : DatabaseItem ) {
@@ -102,6 +120,8 @@ export class ModelingStore extends DisposableObject {
102120 hideModeledMethods : INITIAL_HIDE_MODELED_METHODS_VALUE ,
103121 modeledMethods : { } ,
104122 modifiedMethodSignatures : new Set ( ) ,
123+ selectedMethod : undefined ,
124+ selectedUsage : undefined ,
105125 } ) ;
106126 }
107127
@@ -229,6 +249,21 @@ export class ModelingStore extends DisposableObject {
229249 } ) ;
230250 }
231251
252+ public setSelectedMethod ( dbItem : DatabaseItem , method : Method , usage : Usage ) {
253+ const dbState = this . getState ( dbItem ) ;
254+
255+ dbState . selectedMethod = method ;
256+ dbState . selectedUsage = usage ;
257+
258+ this . onSelectedMethodChangedEventEmitter . fire ( {
259+ databaseItem : dbItem ,
260+ method,
261+ usage,
262+ modeledMethod : dbState . modeledMethods [ method . signature ] ,
263+ isModified : dbState . modifiedMethodSignatures . has ( method . signature ) ,
264+ } ) ;
265+ }
266+
232267 private getState ( databaseItem : DatabaseItem ) : DbModelingState {
233268 if ( ! this . state . has ( databaseItem . databaseUri . toString ( ) ) ) {
234269 throw Error (
0 commit comments