fix: add custom event handler if not default
This commit is contained in:
@@ -65,7 +65,7 @@ namespace Pilz.Plugins.Advanced
|
|||||||
/// You usually don't set customClickHandler if you set this parameter to <see cref="true"/>.</param>
|
/// You usually don't set customClickHandler if you set this parameter to <see cref="true"/>.</param>
|
||||||
/// <param name="customClickHandler">Adds a custom click handler. If addDefaultHandler is true, it will only work on <see cref="PluginFeature"/>s.<br/>
|
/// <param name="customClickHandler">Adds a custom click handler. If addDefaultHandler is true, it will only work on <see cref="PluginFeature"/>s.<br/>
|
||||||
/// You usually don't set addDefaultHandler to true if you set this parameter to something not null.</param>
|
/// You usually don't set addDefaultHandler to true if you set this parameter to something not null.</param>
|
||||||
public static void InsertItemsTo(this IEnumerable<PluginFeature> features, RadItemOwnerCollection itemsCollection, bool addDefaultHandler = false, EventHandler? customClickHandler = null, FeatureInsertMode insertMode = FeatureInsertMode.Default, int? customDefault = null, int? customTop = null, int? customBottom = null)
|
public static void InsertItemsTo(this IEnumerable<PluginFeature> features, RadItemOwnerCollection itemsCollection, bool addDefaultHandler = false, EventHandler? customClickHandler = null, FeatureInsertMode insertMode = FeatureInsertMode.Default, int? customDefault = null, int? customTop = null, int? customBottom = null, FeatureInsertPosition insertSplitter = FeatureInsertPosition.None)
|
||||||
{
|
{
|
||||||
var insertDefault = customDefault ?? (insertMode.HasFlag(FeatureInsertMode.DefaultStart) ? 0 : itemsCollection.Count);
|
var insertDefault = customDefault ?? (insertMode.HasFlag(FeatureInsertMode.DefaultStart) ? 0 : itemsCollection.Count);
|
||||||
var insertTop = customTop ?? (insertMode.HasFlag(FeatureInsertMode.InsertTop) || insertMode.HasFlag(FeatureInsertMode.DefaultStart) ? 0 : insertDefault);
|
var insertTop = customTop ?? (insertMode.HasFlag(FeatureInsertMode.InsertTop) || insertMode.HasFlag(FeatureInsertMode.DefaultStart) ? 0 : insertDefault);
|
||||||
@@ -82,21 +82,27 @@ namespace Pilz.Plugins.Advanced
|
|||||||
else
|
else
|
||||||
item = feature.GetAsItem(null);
|
item = feature.GetAsItem(null);
|
||||||
|
|
||||||
|
if (!addDefaultHandler && customClickHandler != null)
|
||||||
|
item.Click += customClickHandler;
|
||||||
|
|
||||||
switch (feature.Prioritization)
|
switch (feature.Prioritization)
|
||||||
{
|
{
|
||||||
case FeaturePrioritization.High:
|
case FeaturePrioritization.High:
|
||||||
if (insertDefault >= insertTop) insertDefault++;
|
if (insertDefault >= insertTop) insertDefault++;
|
||||||
if (insertBottom >= insertTop) insertBottom++;
|
if (insertBottom >= insertTop) insertBottom++;
|
||||||
|
// ...
|
||||||
itemsCollection.Insert(insertTop++, item);
|
itemsCollection.Insert(insertTop++, item);
|
||||||
break;
|
break;
|
||||||
case FeaturePrioritization.Default:
|
case FeaturePrioritization.Default:
|
||||||
if (insertBottom >= insertDefault) insertBottom++;
|
if (insertBottom >= insertDefault) insertBottom++;
|
||||||
if (insertTop >= insertDefault) insertTop++;
|
if (insertTop >= insertDefault) insertTop++;
|
||||||
|
// ...
|
||||||
itemsCollection.Insert(insertDefault++, item);
|
itemsCollection.Insert(insertDefault++, item);
|
||||||
break;
|
break;
|
||||||
case FeaturePrioritization.Low:
|
case FeaturePrioritization.Low:
|
||||||
if (insertTop >= insertBottom) insertTop++;
|
if (insertTop >= insertBottom) insertTop++;
|
||||||
if (insertDefault >= insertBottom) insertDefault++;
|
if (insertDefault >= insertBottom) insertDefault++;
|
||||||
|
// ...
|
||||||
itemsCollection.Insert(insertBottom++, item);
|
itemsCollection.Insert(insertBottom++, item);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
17
Pilz.Plugins.Advanced/FeatureInsertPosition.cs
Normal file
17
Pilz.Plugins.Advanced/FeatureInsertPosition.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Pilz.Plugins.Advanced
|
||||||
|
{
|
||||||
|
[Flags]
|
||||||
|
public enum FeatureInsertPosition
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Default = 1,
|
||||||
|
Top = 2,
|
||||||
|
Bottom = 3,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,7 +28,7 @@ namespace Pilz.Plugins.Advanced
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static PluginFeatureController Instance { get; private set; } = new();
|
public static PluginFeatureController Instance { get; private set; } = new();
|
||||||
|
|
||||||
private readonly List<PluginFeature> features = new();
|
private readonly HashSet<PluginFeature> features = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A wrapper of all registred <see cref="PluginFeature"/> instances.
|
/// A wrapper of all registred <see cref="PluginFeature"/> instances.
|
||||||
@@ -78,7 +78,7 @@ namespace Pilz.Plugins.Advanced
|
|||||||
|
|
||||||
public virtual IEnumerable<PluginFeature> GetAll()
|
public virtual IEnumerable<PluginFeature> GetAll()
|
||||||
{
|
{
|
||||||
return controller.features.AsReadOnly();
|
return controller.features.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual IEnumerable<PluginFeature> Get(string featureType)
|
public virtual IEnumerable<PluginFeature> Get(string featureType)
|
||||||
|
|||||||
Reference in New Issue
Block a user