@@ -212,8 +212,41 @@ public VisualElement CreateVisualElement(ICollection<IDisposable> disposables)
212212 }
213213 }
214214
215+ internal sealed class DebugEnumFieldFactory < TEnum > : IDebugUIElementFactory
216+ where TEnum : Enum
217+ {
218+ public string Label { get ; set ; }
219+ public Func < TEnum > Getter { get ; set ; }
220+ public Action < TEnum > Setter { get ; set ; }
221+
222+ public VisualElement CreateVisualElement ( ICollection < IDisposable > disposables )
223+ {
224+ var field = new EnumField ( Getter ( ) )
225+ {
226+ label = Label ,
227+ } ;
228+
229+ if ( Setter == null )
230+ {
231+ VisualElementHelper . SetInputFieldsEnabled ( field , false ) ;
232+ }
233+ else
234+ {
235+ field . RegisterValueChangedCallback ( x => Setter ( ( TEnum ) x . newValue ) ) ;
236+ }
237+
238+ MinimalRx . EveryValueChanged ( this , x => x . Getter ( ) )
239+ . Subscribe ( x =>
240+ {
241+ field . value = x ;
242+ } )
243+ . AddTo ( disposables ) ;
244+
245+ return field ;
246+ }
247+ }
248+
215249 internal sealed class DebugFieldFactory < TValue , TField > : IDebugUIElementFactory
216- where TValue : IEquatable < TValue >
217250 where TField : BaseField < TValue > , new ( )
218251 {
219252 public string Label { get ; set ; }
@@ -249,7 +282,6 @@ public VisualElement CreateVisualElement(ICollection<IDisposable> disposables)
249282 }
250283
251284 internal sealed class DebugCompositeFieldFactory < TValue , TCompositeField , TField , TFieldValue > : IDebugUIElementFactory
252- where TValue : IEquatable < TValue >
253285 where TCompositeField : BaseCompositeField < TValue , TField , TFieldValue > , new ( )
254286 where TField : TextValueField < TFieldValue > , new ( )
255287 {
0 commit comments