Skip to content

Commit 134f4ed

Browse files
author
Maxim Volkov
committed
fixed bugs and typos, added support for abstract classes in Designer
1 parent 8031b0d commit 134f4ed

File tree

6 files changed

+50
-4
lines changed

6 files changed

+50
-4
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace Maximus.Base.Library.Console
9+
{
10+
/// <summary>
11+
/// https://stackoverflow.com/a/17661276/6763830
12+
/// </summary>
13+
/// <typeparam name="TAbstract"></typeparam>
14+
/// <typeparam name="TBase"></typeparam>
15+
public class AbstractControlDescriptionProvider<TAbstract, TBase> : TypeDescriptionProvider
16+
{
17+
public AbstractControlDescriptionProvider()
18+
: base(TypeDescriptor.GetProvider(typeof(TAbstract)))
19+
{
20+
}
21+
22+
public override Type GetReflectionType(Type objectType, object instance)
23+
{
24+
if (objectType == typeof(TAbstract))
25+
return typeof(TBase);
26+
27+
return base.GetReflectionType(objectType, instance);
28+
}
29+
30+
public override object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args)
31+
{
32+
if (objectType == typeof(TAbstract))
33+
objectType = typeof(TBase);
34+
35+
return base.CreateInstance(provider, objectType, argTypes, args);
36+
}
37+
}
38+
}

Maximus.Base.Library.Console/Grid View/SimpleGridViewDetailsPlane.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
using Microsoft.EnterpriseManagement.Mom.Internal.UI;
55
using Microsoft.EnterpriseManagement.Monitoring;
66
using Microsoft.EnterpriseManagement.Mom.Internal.UI.Common;
7+
using System.ComponentModel;
8+
using Maximus.Base.Library.Console;
79

810
namespace Maximus.Library.GridView
911
{
1012
/// <summary>
1113
/// Base class to implement details plane for <seealso cref="SimpleGridViewWithDetails"/>
1214
/// </summary>
15+
[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<SimpleGridViewDetailsPlane, CachedDetailView<PartialMonitoringObject>>))]
1316
public abstract partial class SimpleGridViewDetailsPlane : CachedDetailView<PartialMonitoringObject>, IDisposable
1417
{
1518
public SimpleGridViewDetailsPlane() : base()
@@ -81,6 +84,6 @@ public override void OnCacheUpdated(PartialMonitoringObject monitoringObjectCont
8184
/// <summary>
8285
/// Status message shown when no item in the parent view selected. Override to change.
8386
/// </summary>
84-
protected string NoItemSelectedMessage => "Select an Item to show Details Panel.";
87+
protected virtual string NoItemSelectedMessage => "Select an Item to show Details Panel.";
8588
}
8689
}

Maximus.Base.Library.Console/Grid View/SimpleGridViewWithDetails.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Collections.Generic;
44
using System.Collections.ObjectModel;
5+
using System.ComponentModel;
56
using System.ComponentModel.Design;
67
using System.Drawing;
78
using System.Globalization;
@@ -11,6 +12,7 @@
1112
using System.Threading;
1213
using System.Windows.Forms;
1314

15+
using Maximus.Base.Library.Console;
1416
using Maximus.Library.SCOMId;
1517

1618
using Microsoft.EnterpriseManagement.Common;
@@ -28,6 +30,7 @@ namespace Maximus.Library.GridView
2830
/// <summary>
2931
/// Base class to create object Grid View with details plane. No support for roles/hosted child object.
3032
/// </summary>
33+
[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<SimpleGridViewWithDetails, GridViewBase<InstanceState, StateQuery>>))]
3134
public abstract class SimpleGridViewWithDetails : GridViewBase<InstanceState, StateQuery>, IParentView
3235
{
3336
private readonly Dictionary<HealthState, Image> HealthStateImages;
@@ -74,7 +77,7 @@ protected override void AddColumns()
7477
GridControlImageTextColumn stateColumn = new GridControlImageTextColumn();
7578
stateColumn.CellContentsRequested += new EventHandler<GridControlImageTextColumn.ImageTextEventArgs>(StateCellContentsRequested);
7679
string str = $"{propertyTranslator.TargetType.Name}-*-{propertyTranslator.TargetType.Id}-*-Health";
77-
AddColumn(stateColumn, ConsoleResources.GetString("State", CurrentCulture), new Field("Health", typeof(int), str, Field.SortInfos.Sortable | Field.SortInfos.Sort, 0), false);
80+
AddColumn(stateColumn, ConsoleResources.GetString("State", CurrentCulture) ?? "State", new Field("Health", typeof(int), str, Field.SortInfos.Sortable | Field.SortInfos.Sort, 0), false);
7881

7982
// Maintenance Mode
8083
DataGridViewColumn MaintenanceModeColumn = AddColumn(new GridControlImageTextColumn(
@@ -158,6 +161,7 @@ protected override void AddContextMenu(ContextMenuHelper contextMenu)
158161
{
159162
if (contextMenu != null)
160163
{
164+
AddUserContextMenu(contextMenu);
161165
// these methods, OnCopyCommand and UpdateCopyCommandStatus, are defined in GridViewBase
162166
contextMenu.AddContextMenuItem(StandardCommands.Copy, OnCopyCommand, UpdateCopyCommandStatus);
163167
contextMenu.AddContextMenuSeparator();
@@ -210,7 +214,7 @@ public object SelectedItem
210214
{
211215
get
212216
{
213-
if (Grid == null || Grid.SelectedRows == null || Grid.SelectedRows[0] == null)
217+
if (Grid == null || Grid.SelectedRows == null || Grid.Rows == null || Grid.Rows.Count == 0 || Grid.SelectedRows[0] == null)
214218
return null;
215219

216220
if (Grid.SelectedRows[0].Cells[0].Tag is GridDataItem tag)

Maximus.Base.Library.Console/Maximus.Base.Library.Console.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
<Compile Include="..\Maximus.Base.Library.ManagedWorkflowBase\WellKnownIDs\SCOM.Windows.ID.cs">
9393
<Link>WellKnownIDs\SCOM.Windows.ID.cs</Link>
9494
</Compile>
95+
<Compile Include="AbstractControlDescriptionProvider.cs" />
9596
<Compile Include="Class Instance Editor\BindableMonitoringObject.cs" />
9697
<Compile Include="Class Instance Editor\ObjectChangedEventArgs.cs" />
9798
<Compile Include="Class Instance Editor\SCOMClassInstanceAdapter.cs" />

Maximus.Base.Library.Console/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// by using the '*' as shown below:
3333
// [assembly: AssemblyVersion("1.0.*")]
3434
[assembly: AssemblyVersion("1.0.1.0")] // to reference the library
35-
[assembly: AssemblyFileVersion("1.0.1.10")] // increase when patch
35+
[assembly: AssemblyFileVersion("1.0.1.15")] // increase when patch
3636

-1 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)