Skip to content

Commit 41f7b01

Browse files
committed
introduce a new trait IHaveVisualization.CanBeVisualized for type handlers
1 parent d3c03f7 commit 41f7b01

File tree

14 files changed

+84
-45
lines changed

14 files changed

+84
-45
lines changed

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/MemberAccessorByFunc.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public override ReadResult Read(SnoopableContext context, TSnoopedObjectType @ob
2525
var value = new ValueContainer<TReturnType>();
2626
var result = get(context.Document, @object);
2727
value.SetValueTyped(context, result);
28-
return new ReadResult(value.ValueAsString, "[ByFunc] " + value.TypeName, value.CanBeSnooped, value);
28+
return new ReadResult(value.ValueAsString, "[ByFunc] " + value.TypeHandlerName, value.CanBeSnooped, value);
2929
}
3030
public override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, TSnoopedObjectType @object, IValueContainer state)
3131
{

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/MemberAccessorByRef.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public override ReadResult Read(SnoopableContext context, object @object)
2828
var resolvedArgs = ResolveArguments(paramsDef, context.Document, @object);
2929
var result = getMethod.Invoke(@object, resolvedArgs);
3030
value.SetValue(context, result);
31-
return new ReadResult(value.ValueAsString, "[ByRef] " + value.TypeName, value.CanBeSnooped, value);
31+
return new ReadResult(value.ValueAsString, "[ByRef] " + value.TypeHandlerName, value.CanBeSnooped, value);
3232
}
3333
public override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, object @object, IValueContainer state)
3434
{

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/MemberAccessorByRefCompiled.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public override ReadResult Read(SnoopableContext context, TSnoopedObjectType typ
2525
var value = new ValueContainer<TReturnType>();
2626
var result = func(typedObject);
2727
value.SetValueTyped(context, result);
28-
return new ReadResult(value.ValueAsString, "[ByRefComp] " + value.TypeName, value.CanBeSnooped, value);
28+
return new ReadResult(value.ValueAsString, "[ByRefComp] " + value.TypeHandlerName, value.CanBeSnooped, value);
2929
}
3030

3131
public override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, TSnoopedObjectType typedObject, IValueContainer state)

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/MemberAccessorForConstValue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public MemberAccessorForConstValue(Type type, SnoopableContext context, object v
2121

2222
public override ReadResult Read(SnoopableContext context, object @object)
2323
{
24-
return new ReadResult(value.ValueAsString, value.TypeName, value.CanBeSnooped, value);
24+
return new ReadResult(value.ValueAsString, value.TypeHandlerName, value.CanBeSnooped, value);
2525
}
2626
public override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, object @object, IValueContainer state)
2727
{

sources/RevitDBExplorer/Domain/DataModel/Parameters/ParameterAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public ReadResult Read(SnoopableContext context, object @object)
6161
case StorageType.None:
6262
break;
6363
}
64-
return new ReadResult(value.ValueAsString, "[ByParam] " + value.TypeName, value.CanBeSnooped, value);
64+
return new ReadResult(value.ValueAsString, "[ByParam] " + value.TypeHandlerName, value.CanBeSnooped, value);
6565

6666
}
6767
public IEnumerable<SnoopableObject> Snoop(SnoopableContext context, object @object, IValueContainer state)

sources/RevitDBExplorer/Domain/DataModel/ValueContainers/Base/ITypeHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
namespace RevitDBExplorer.Domain.DataModel.ValueContainers.Base
66
{
7-
internal interface ITypeHandler : IToLabel, ICanBeSnooped, ISnoop, IHaveVisualization
7+
internal interface ITypeHandler : IHaveLabel, ISnoop, IHaveVisualization
88
{
99
Type Type { get; }
1010
}
11-
internal interface ITypeHandler<in T> : IToLabel<T>, ICanBeSnooped<T>, ISnoop<T>, IHaveVisualization<T>
11+
internal interface ITypeHandler<in T> : IHaveLabel<T>, ISnoop<T>, IHaveVisualization<T>
1212
{
1313
Type Type { get; }
1414
string GetTypeHandlerName(T value);

sources/RevitDBExplorer/Domain/DataModel/ValueContainers/Base/IValueContainer.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ internal interface IValueContainer
1010
{
1111
Type Type { get; }
1212
Type TypeHandlerType { get; }
13-
string TypeName { get; }
13+
string TypeHandlerName { get; }
1414
IValueContainer SetValue(SnoopableContext context, object value);
1515

1616

1717
string ValueAsString { get; }
1818
bool CanBeSnooped { get; }
19+
bool CanBeVisualized { get; }
1920
string ToolTip { get; }
2021
IEnumerable<SnoopableObject> Snoop();
2122
IEnumerable<DrawingVisual> GetVisualization();

sources/RevitDBExplorer/Domain/DataModel/ValueContainers/Base/Traits.cs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,42 @@
55

66
namespace RevitDBExplorer.Domain.DataModel.ValueContainers.Base
77
{
8-
internal interface ICanBeSnooped
8+
internal interface ISnoop
99
{
1010
bool CanBeSnooped(SnoopableContext context, object value);
11+
IEnumerable<SnoopableObject> Snoop(SnoopableContext context, object value);
1112
}
12-
internal interface ICanBeSnooped<in T>
13+
internal interface ISnoop<in T>
1314
{
1415
bool CanBeSnooped(SnoopableContext context, T value);
16+
IEnumerable<SnoopableObject> Snoop(SnoopableContext context, T value);
1517
}
1618

17-
internal interface IToLabel
19+
20+
internal interface IHaveLabel
1821
{
1922
string ToLabel(SnoopableContext context, object value);
2023
}
21-
internal interface IToLabel<in T>
24+
internal interface IHaveLabel<in T>
2225
{
2326
string ToLabel(SnoopableContext context, T value);
24-
}
25-
26-
internal interface ISnoop
27-
{
28-
IEnumerable<SnoopableObject> Snoop(SnoopableContext context, object value);
29-
}
30-
internal interface ISnoop<in T>
31-
{
32-
IEnumerable<SnoopableObject> Snoop(SnoopableContext context, T value);
33-
}
27+
}
3428

3529

3630
internal interface IHaveToolTip<in T>
3731
{
3832
string GetToolTip(SnoopableContext context, T value);
3933
}
4034

35+
4136
internal interface IHaveVisualization
4237
{
38+
bool CanBeVisualized(SnoopableContext context, object value);
4339
IEnumerable<DrawingVisual> GetVisualization(SnoopableContext context, object value);
4440
}
4541
internal interface IHaveVisualization<in T>
4642
{
43+
bool CanBeVisualized(SnoopableContext context, T value);
4744
IEnumerable<DrawingVisual> GetVisualization(SnoopableContext context, T value);
4845
}
4946
}

sources/RevitDBExplorer/Domain/DataModel/ValueContainers/Base/TypeHandler.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ public string GetTypeHandlerName(T value)
2424

2525

2626

27-
bool ICanBeSnooped.CanBeSnooped(SnoopableContext context, object value)
27+
bool ISnoop.CanBeSnooped(SnoopableContext context, object value)
2828
{
2929
T typedValue = value.CastValue<T>(type);
30-
return (this as ICanBeSnooped<T>).CanBeSnooped(context, typedValue);
30+
return (this as ISnoop<T>).CanBeSnooped(context, typedValue);
3131
}
32-
bool ICanBeSnooped<T>.CanBeSnooped(SnoopableContext context, T value)
32+
bool ISnoop<T>.CanBeSnooped(SnoopableContext context, T value)
3333
{
3434
if (value is null) return false;
3535
return CanBeSnoooped(context, value);
@@ -51,12 +51,12 @@ IEnumerable<SnoopableObject> ISnoop<T>.Snoop(SnoopableContext context, T value)
5151

5252

5353

54-
string IToLabel.ToLabel(SnoopableContext context, object value)
54+
string IHaveLabel.ToLabel(SnoopableContext context, object value)
5555
{
5656
T typedValue = value.CastValue<T>(type);
57-
return (this as IToLabel<T>).ToLabel(context, typedValue);
57+
return (this as IHaveLabel<T>).ToLabel(context, typedValue);
5858
}
59-
string IToLabel<T>.ToLabel(SnoopableContext context, T value)
59+
string IHaveLabel<T>.ToLabel(SnoopableContext context, T value)
6060
{
6161
if (value is null) return "<null>";
6262
var label = ToLabel(context, value);
@@ -67,6 +67,20 @@ string IToLabel<T>.ToLabel(SnoopableContext context, T value)
6767

6868

6969

70+
bool IHaveVisualization.CanBeVisualized(SnoopableContext context, object value)
71+
{
72+
T typedValue = value.CastValue<T>(type);
73+
return (this as IHaveVisualization<T>).CanBeVisualized(context, typedValue);
74+
}
75+
bool IHaveVisualization<T>.CanBeVisualized(SnoopableContext context, T value)
76+
{
77+
if (value is null) return false;
78+
return CanBeVisualized(context, value);
79+
}
80+
protected virtual bool CanBeVisualized(SnoopableContext context, T value) => false;
81+
82+
83+
7084
IEnumerable<DrawingVisual> IHaveVisualization.GetVisualization(SnoopableContext context, object value)
7185
{
7286
T typedValue = value.CastValue<T>(type);

sources/RevitDBExplorer/Domain/DataModel/ValueContainers/Base/ValueContainer.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal sealed class ValueContainer<T> : IValueContainer
1616
public Type TypeHandlerType => typeHandler.GetType();
1717
public Type Type => typeHandler.Type;
1818
public T Value => value;
19-
public string TypeName
19+
public string TypeHandlerName
2020
{
2121
get
2222
{
@@ -38,10 +38,9 @@ public ValueContainer()
3838

3939

4040
public IValueContainer SetValue(SnoopableContext context, object value)
41-
{
42-
this.context = context;
43-
this.value = value.CastValue<T>(Type);
44-
41+
{
42+
SetValueTyped(context, value.CastValue<T>(Type));
43+
4544
return this;
4645
}
4746
public ValueContainer<T> SetValueTyped(SnoopableContext context, T value)
@@ -55,6 +54,7 @@ public ValueContainer<T> SetValueTyped(SnoopableContext context, T value)
5554

5655
public string ValueAsString => typeHandler?.ToLabel(context, value) ?? "RDBE Error";
5756
public bool CanBeSnooped => typeHandler.CanBeSnooped(context, value);
57+
public bool CanBeVisualized => typeHandler.CanBeVisualized(context, value);
5858

5959
public string ToolTip
6060
{

0 commit comments

Comments
 (0)