VideoOS.Platform.PluginDefinition Class Referenceabstract

The PluginDefinition is the ‘entry’ point to any plug-in.
This is the starting point for any plug-in development and the class MUST be available for a plug-in to be loaded.
Here the references to all other plug-in known objects and classes are defined. The class is an abstract class where all implemented methods and properties need to be declared with override. The class is constructed when the environment is loading the DLL. More...

Public Member Functions

virtual void Close ()
 The main application is about to be in an undetermined state, either logging off or exiting. You can release resources at this point, it should match what you acquired during Init, so additional call to Init() work.
 
virtual UserControl GenerateAlarmPreviewUserControl (object alarmOrBaseEvent)
 For new plugins it is recommended to use the WPF version, GenerateAlarmPreviewWpfUserControl, instead.
 
virtual System.Windows.Controls.UserControl GenerateAlarmPreviewWpfUserControl (object alarmOrBaseEvent)
 For displaying detail information about an Alarm or an Event, this method can be implemented to return a UserControl to be displayed when the user selects an Alarm in the alarm list, or a Event in the event list, in the Smart Client.
The returned UserControl will be placed together with other relevant information like CameraViewItem's within the AlarmPreview ViewItem.
This UserControl can be used to interpret custom data in an event/alarm from e.g. an Analytics event.
 
virtual ExportManager GenerateExportManager (ExportParameters exportParameters)
 When this property returns an ExportManager and IncludePluginFilesInExport is true, all files in the plug-ins own folder is copied.
This property is only relevant when executing in the Smart Client.
The ExportManager must implement the actual copying of data relevant for the time period being exported.
 
virtual UserControl GenerateUserControl ()
 A user control to display when the administrator clicks on the top TreeNode.
 
virtual void Init ()
 This method is called when the environment is up and running. Registration of Messages via RegisterReceiver can be done at this point.
 
virtual void ShowHelp ()
 Show the general help for this plugin definition.
 
virtual void ShowHelp (ItemNode itemNode)
 Show help in relation to a specific ItemNode.
 

Properties

virtual ActionManager ActionManager [get]
 ActionManager used to specify and execute actions.
 
virtual AdminPlacementHint AdminPlacementHint [get, set]
 The suggested location for the plug-in's root UI node.
The default placement is under the 'MIP Plugins' node.
 
virtual List< BackgroundPluginBackgroundPlugins [get]
 An extension plug-in to run in the background.
 
virtual List< ClientActionGroupClientActionGroups [get]
 List of client action groups containing client actions that can be activated by the operators of the Smart Client.
 
virtual string CustomLicenseType [get]
 If it is not null or empty, this is the license type that will appear in the license overview section in the license page in Management Client. This is to be used when all the license information requests of this plugin have the same values (activated devices, expired devices, etc), so that we only show this information once and showing a custom license type instead of the one from each request object.
 
virtual Collection< Guid > CustomSettingsGuids [get]
 A list of the GUIDs other than the Id member for which the plugin expects to load and save custom settings.
 
virtual bool ExcludeFromAboutBox [get, set]
 Can be set to true, to avoid plugin information to show up in about box plugin overview.
 
virtual List< HidPluginHidPlugins [get]
 NOTE: BETA. Might change in future release. An extension plug-in to serve Human Interface Device(s) (HID). Available from Smart Client 2024 R2.
 
Image Icon [get]
 Icon to be used on top level - e.g. a product or company logo.
 
Guid Id [get]
 Gets the unique id identifying this plug-in component.
 
virtual bool IncludeInExport [get]
 Identify if this plug-in should be included in an export process
When this property is true the GenerateExportManager is called to assist in the export process.
 
virtual List< ItemNodeItemNodes [get]
 List the types of Items managed by this plug-in.
This property returns a hierarchy of ItemNodes. When the system builds the structure of the administrators TreeView, the PluginDefinition items will be placed as root nodes containing the ItemNodes in the hierarchy they are defined, e.g. children of top level ItemNodes will be created as sub-nodes to top level nodes. ItemNodes with a ParentId of Guid.Empty will be considered a top node from a configuration point of view. Items created on any node below this top level node will use the ServerId of Item created on from the top level ItemNode. E.g. the ServerId should be the same for all Items created below one specific top level node.
The structure is used both in the Management Client as well as in Map and Smart Map in the item selection dialog.
For Map the actual items will be fetched from the Event Server and thus even items created on the fly by the plug-in and not stored in the database can be supported, whereas for Smart Map the items will be retrieved from the persisted VMS configuration and therefore only items stored in the database is supported.

Note: This Property is accessed many times, it is suggested that it is created and stored in a private field.
 
virtual List< LoginPluginLoginPlugins [get]
 A list of Login plugins for the Smart Client. Note that since these plugins are used during the Smart Client login this property will be called before Init() is called on the plugin definition. When Init() is called on the plugin definition it is guaranteed that processing calls (LoginFlowExecute() and GenerateCustomLoginUserControl()) on the login plugins have been completed. This is also beneficial for the code in plugin definition because the login information that the LoginPlugin gather during the login is available when Init() is called.
 
virtual bool ManageDatabaseExport [get]
 If IncludeInExport is true and ManageDatabaseExport is true the generated ExportManager will be called when database export is included in the export process.
 
virtual bool ManageMovieClipExport [get]
 If IncludeInExport is true and ManageMovieClipExport is true the generated ExportManager will be called when movie clip export is included in the export process.
 
virtual bool ManageStillImageExport [get]
 If IncludeInExport is true and ManageStillImageExport is true the generated ExportManager will be called when still image export is included in the export process.
 
virtual String Manufacturer [get]
 The name of your company.
 
String Name [get]
 Define the product name that will be shown in e.g. the about list.
 
virtual Collection< Guid > OptionDialogGuids [get]
 A list of the GUIDs that this plug-in will use on the Configuration.Instance.GetOptionsConfiguration() and the Configuration.Instance.SaveOptionsConfiguration() methods.
 
virtual List< OptionsDialogPluginOptionsDialogPlugins [get]
 This property is deprecated. Windows Forms controls are no longer supported. Use SettingsPanelPlugins instead. An extension plug-in running in the Smart Client to add more choices in 'Application options' of Settings panel.
 
virtual List< String > PluginDefinedMessageIds [get]
 A list of the MessageIds that the plugin have defined. If the plugin does not defined any new messageIds a null or empty list is returned.
 
virtual Collection< License.LicenseInformationPluginLicenseRequest [get]
 Returns a list of licenses relevant for this type of plug-in. Default is that the plug-in does not have any license requirements, and will return an empty collection.


 
virtual string RolesTabName [get]
 Define the name shown for the tab representing this plug-in in the Roles section of the Management Client.
 
virtual IEnumerable< SearchAgentPluginSearchAgentPlugins [get]
 An extension plug-in running in the Smart Client for adding custom search agents.
This is for future use!
 
virtual IEnumerable< SearchToolbarPluginSearchToolbarPlugins [get]
 An extension plug-in to add to the search toolbar in the Smart Client.
This is for future use!
 
virtual IEnumerable< SearchUserControlsPluginSearchUserControlsPlugins [get]
 An extension plug-in running in the Smart Client for adding/modifying custom UI for search results and/or criteria attributes.
This is for future use!
 
virtual List< SecurityActionSecurityActions [get, set]
 Specifies the list of actions the administrator can manage. These apply for the application or function as a whole. (See ItemNode for more on authorization on specific Items) If the list is null, no authorization is done for this plug-in and everyone can perform all actions.
 
virtual Collection< SettingsPanelPluginSettingsPanelPlugins [get]
 An extension plug-in running in the Smart Client to add more choices on the Settings panel.
 
virtual Guid SharedNodeId [get]
 This Guid can be defined on several different PluginDefinitions with the same value, and will result in a combination of this top level Node for several plug-ins. Set to Guid.Empty if no sharing is enabled.
 
virtual string SharedNodeName [get]
 Define name of top level Tree node if such node is used.
 
virtual List< SidePanelPluginSidePanelPlugins [get]
 An extension plug-in to add to the side panel of the Smart Client.
 
virtual ICollection< TabPluginTabPlugins [get]
 An extension plug-in running in the Administrator to add a tab for built-in devices and hardware.
 
virtual List< ToolsOptionsDialogPluginToolsOptionsDialogPlugins [get]
 An extension plug-in running in the Administrator to add more tabs to the Tools-Options dialog.
 
virtual bool UserControlFillEntirePanel [get]
 This property can be set to true, to be able to display your own help UserControl on the entire panel. When this is false - a standard top and left side is added by the system.
 
virtual String VersionString [get]
 The version of the plug-in.
 
virtual List< ViewItemPluginViewItemPlugins [get]
 A list of Client side definitions for Smart Client.
 
virtual List< ViewItemToolbarPluginViewItemToolbarPlugins [get]
 An extension plug-in to add to the view item toolbar in the Smart Client.
 
virtual List< ViewLayoutViewLayouts [get]
 An extension plug-in running in the Smart Client to provide extra view layouts.
 
virtual List< WorkSpacePluginWorkSpacePlugins [get]
 An extension plug-in to add to workspace of the Smart Client.
 
virtual List< WorkSpaceToolbarPluginGroupWorkSpaceToolbarPluginGroups [get]
 An extension plug-in group to add to the work space toolbar in the Smart Client.
 
virtual List< WorkSpaceToolbarPluginWorkSpaceToolbarPlugins [get]
 An extension plug-in to add to the work space toolbar in the Smart Client.
 

Detailed Description

The PluginDefinition is the ‘entry’ point to any plug-in.
This is the starting point for any plug-in development and the class MUST be available for a plug-in to be loaded.
Here the references to all other plug-in known objects and classes are defined. The class is an abstract class where all implemented methods and properties need to be declared with override. The class is constructed when the environment is loading the DLL.

Member Function Documentation

◆ Close()

virtual void VideoOS.Platform.PluginDefinition.Close ( )
inlinevirtual

The main application is about to be in an undetermined state, either logging off or exiting. You can release resources at this point, it should match what you acquired during Init, so additional call to Init() work.

◆ GenerateAlarmPreviewUserControl()

virtual UserControl VideoOS.Platform.PluginDefinition.GenerateAlarmPreviewUserControl ( object alarmOrBaseEvent)
inlinevirtual

For new plugins it is recommended to use the WPF version, GenerateAlarmPreviewWpfUserControl, instead.

For displaying detail information about an Alarm or an Event, this method can be implemented to return a UserControl to be displayed when the user selects an Alarm in the alarm list, or a Event in the event list, in the Smart Client.
The returned UserControl will be placed together with other relevant information like CameraViewItem's within the AlarmPreview ViewItem.
This UserControl can be used to interpret custom data in an event/alarm from e.g. an Analytics event.

Note: the alarmOrBaseEvent need to be checked for type and type casted accordingly, e.g. to Alarm, BaseEvent or AnalyticsEvent.
Note: a similar method is available on the ItemManager, used when an event or alarm was generated from a source item provided by the ItemManager.
Note: This UserControl does not need any other class implemented in the plugin.

Returns
null if no relevant information to display, otherwise a filled UserControl

◆ GenerateAlarmPreviewWpfUserControl()

virtual System.Windows.Controls.UserControl VideoOS.Platform.PluginDefinition.GenerateAlarmPreviewWpfUserControl ( object alarmOrBaseEvent)
inlinevirtual

For displaying detail information about an Alarm or an Event, this method can be implemented to return a UserControl to be displayed when the user selects an Alarm in the alarm list, or a Event in the event list, in the Smart Client.
The returned UserControl will be placed together with other relevant information like CameraViewItem's within the AlarmPreview ViewItem.
This UserControl can be used to interpret custom data in an event/alarm from e.g. an Analytics event.

Note: the alarmOrBaseEvent need to be checked for type and type casted accordingly, e.g. to Alarm, BaseEvent or AnalyticsEvent.
Note: a similar method is available on the ItemManager, used when an event or alarm was generated from a source item provided by the ItemManager.
Note: This UserControl does not need any other class implemented in the plugin.

Returns
null if no relevant information to display, otherwise a filled UserControl

◆ GenerateExportManager()

virtual ExportManager VideoOS.Platform.PluginDefinition.GenerateExportManager ( ExportParameters exportParameters)
inlinevirtual

When this property returns an ExportManager and IncludePluginFilesInExport is true, all files in the plug-ins own folder is copied.
This property is only relevant when executing in the Smart Client.
The ExportManager must implement the actual copying of data relevant for the time period being exported.

◆ GenerateUserControl()

virtual UserControl VideoOS.Platform.PluginDefinition.GenerateUserControl ( )
inlinevirtual

A user control to display when the administrator clicks on the top TreeNode.

◆ Init()

virtual void VideoOS.Platform.PluginDefinition.Init ( )
inlinevirtual

This method is called when the environment is up and running. Registration of Messages via RegisterReceiver can be done at this point.

◆ ShowHelp() [1/2]

virtual void VideoOS.Platform.PluginDefinition.ShowHelp ( )
inlinevirtual

Show the general help for this plugin definition.

◆ ShowHelp() [2/2]

virtual void VideoOS.Platform.PluginDefinition.ShowHelp ( ItemNode itemNode)
inlinevirtual

Show help in relation to a specific ItemNode.

Parameters
itemNode

Property Documentation

◆ ActionManager

virtual ActionManager VideoOS.Platform.PluginDefinition.ActionManager
get

ActionManager used to specify and execute actions.

◆ AdminPlacementHint

virtual AdminPlacementHint VideoOS.Platform.PluginDefinition.AdminPlacementHint
getset

The suggested location for the plug-in's root UI node.
The default placement is under the 'MIP Plugins' node.

◆ BackgroundPlugins

virtual List<BackgroundPlugin> VideoOS.Platform.PluginDefinition.BackgroundPlugins
get

An extension plug-in to run in the background.

◆ ClientActionGroups

virtual List<ClientActionGroup> VideoOS.Platform.PluginDefinition.ClientActionGroups
get

List of client action groups containing client actions that can be activated by the operators of the Smart Client.

◆ CustomLicenseType

virtual string VideoOS.Platform.PluginDefinition.CustomLicenseType
get

If it is not null or empty, this is the license type that will appear in the license overview section in the license page in Management Client. This is to be used when all the license information requests of this plugin have the same values (activated devices, expired devices, etc), so that we only show this information once and showing a custom license type instead of the one from each request object.

◆ CustomSettingsGuids

virtual Collection<Guid> VideoOS.Platform.PluginDefinition.CustomSettingsGuids
get

A list of the GUIDs other than the Id member for which the plugin expects to load and save custom settings.

◆ ExcludeFromAboutBox

virtual bool VideoOS.Platform.PluginDefinition.ExcludeFromAboutBox
getset

Can be set to true, to avoid plugin information to show up in about box plugin overview.

◆ HidPlugins

virtual List<HidPlugin> VideoOS.Platform.PluginDefinition.HidPlugins
get

NOTE: BETA. Might change in future release. An extension plug-in to serve Human Interface Device(s) (HID). Available from Smart Client 2024 R2.

◆ Icon

Image VideoOS.Platform.PluginDefinition.Icon
getabstract

Icon to be used on top level - e.g. a product or company logo.

◆ Id

Guid VideoOS.Platform.PluginDefinition.Id
getabstract

Gets the unique id identifying this plug-in component.

◆ IncludeInExport

virtual bool VideoOS.Platform.PluginDefinition.IncludeInExport
get

Identify if this plug-in should be included in an export process
When this property is true the GenerateExportManager is called to assist in the export process.

◆ ItemNodes

virtual List<ItemNode> VideoOS.Platform.PluginDefinition.ItemNodes
get

List the types of Items managed by this plug-in.
This property returns a hierarchy of ItemNodes. When the system builds the structure of the administrators TreeView, the PluginDefinition items will be placed as root nodes containing the ItemNodes in the hierarchy they are defined, e.g. children of top level ItemNodes will be created as sub-nodes to top level nodes. ItemNodes with a ParentId of Guid.Empty will be considered a top node from a configuration point of view. Items created on any node below this top level node will use the ServerId of Item created on from the top level ItemNode. E.g. the ServerId should be the same for all Items created below one specific top level node.
The structure is used both in the Management Client as well as in Map and Smart Map in the item selection dialog.
For Map the actual items will be fetched from the Event Server and thus even items created on the fly by the plug-in and not stored in the database can be supported, whereas for Smart Map the items will be retrieved from the persisted VMS configuration and therefore only items stored in the database is supported.

Note: This Property is accessed many times, it is suggested that it is created and stored in a private field.

◆ LoginPlugins

virtual List<LoginPlugin> VideoOS.Platform.PluginDefinition.LoginPlugins
get

A list of Login plugins for the Smart Client. Note that since these plugins are used during the Smart Client login this property will be called before Init() is called on the plugin definition. When Init() is called on the plugin definition it is guaranteed that processing calls (LoginFlowExecute() and GenerateCustomLoginUserControl()) on the login plugins have been completed. This is also beneficial for the code in plugin definition because the login information that the LoginPlugin gather during the login is available when Init() is called.

The Smart Client configuration will be available when this property is called.

◆ ManageDatabaseExport

virtual bool VideoOS.Platform.PluginDefinition.ManageDatabaseExport
get

If IncludeInExport is true and ManageDatabaseExport is true the generated ExportManager will be called when database export is included in the export process.

◆ ManageMovieClipExport

virtual bool VideoOS.Platform.PluginDefinition.ManageMovieClipExport
get

If IncludeInExport is true and ManageMovieClipExport is true the generated ExportManager will be called when movie clip export is included in the export process.

◆ ManageStillImageExport

virtual bool VideoOS.Platform.PluginDefinition.ManageStillImageExport
get

If IncludeInExport is true and ManageStillImageExport is true the generated ExportManager will be called when still image export is included in the export process.

◆ Manufacturer

virtual String VideoOS.Platform.PluginDefinition.Manufacturer
get

The name of your company.

◆ Name

String VideoOS.Platform.PluginDefinition.Name
getabstract

Define the product name that will be shown in e.g. the about list.

◆ OptionDialogGuids

virtual Collection<Guid> VideoOS.Platform.PluginDefinition.OptionDialogGuids
get

A list of the GUIDs that this plug-in will use on the Configuration.Instance.GetOptionsConfiguration() and the Configuration.Instance.SaveOptionsConfiguration() methods.

◆ OptionsDialogPlugins

virtual List<OptionsDialogPlugin> VideoOS.Platform.PluginDefinition.OptionsDialogPlugins
get

This property is deprecated. Windows Forms controls are no longer supported. Use SettingsPanelPlugins instead. An extension plug-in running in the Smart Client to add more choices in 'Application options' of Settings panel.

◆ PluginDefinedMessageIds

virtual List<String> VideoOS.Platform.PluginDefinition.PluginDefinedMessageIds
get

A list of the MessageIds that the plugin have defined. If the plugin does not defined any new messageIds a null or empty list is returned.

◆ PluginLicenseRequest

virtual Collection<License.LicenseInformation> VideoOS.Platform.PluginDefinition.PluginLicenseRequest
get

Returns a list of licenses relevant for this type of plug-in. Default is that the plug-in does not have any license requirements, and will return an empty collection.

◆ RolesTabName

virtual string VideoOS.Platform.PluginDefinition.RolesTabName
get

Define the name shown for the tab representing this plug-in in the Roles section of the Management Client.

◆ SearchAgentPlugins

virtual IEnumerable<SearchAgentPlugin> VideoOS.Platform.PluginDefinition.SearchAgentPlugins
get

An extension plug-in running in the Smart Client for adding custom search agents.
This is for future use!

◆ SearchToolbarPlugins

virtual IEnumerable<SearchToolbarPlugin> VideoOS.Platform.PluginDefinition.SearchToolbarPlugins
get

An extension plug-in to add to the search toolbar in the Smart Client.
This is for future use!

◆ SearchUserControlsPlugins

virtual IEnumerable<SearchUserControlsPlugin> VideoOS.Platform.PluginDefinition.SearchUserControlsPlugins
get

An extension plug-in running in the Smart Client for adding/modifying custom UI for search results and/or criteria attributes.
This is for future use!

◆ SecurityActions

virtual List<SecurityAction> VideoOS.Platform.PluginDefinition.SecurityActions
getset

Specifies the list of actions the administrator can manage. These apply for the application or function as a whole. (See ItemNode for more on authorization on specific Items) If the list is null, no authorization is done for this plug-in and everyone can perform all actions.

◆ SettingsPanelPlugins

virtual Collection<SettingsPanelPlugin> VideoOS.Platform.PluginDefinition.SettingsPanelPlugins
get

An extension plug-in running in the Smart Client to add more choices on the Settings panel.

◆ SharedNodeId

virtual Guid VideoOS.Platform.PluginDefinition.SharedNodeId
get

This Guid can be defined on several different PluginDefinitions with the same value, and will result in a combination of this top level Node for several plug-ins. Set to Guid.Empty if no sharing is enabled.

From 2023 R2 this also controls whether security settings for multiple plug-ins are shown on the same tab in the Roles section of Management Client.

◆ SharedNodeName

virtual string VideoOS.Platform.PluginDefinition.SharedNodeName
get

Define name of top level Tree node if such node is used.

◆ SidePanelPlugins

virtual List<SidePanelPlugin> VideoOS.Platform.PluginDefinition.SidePanelPlugins
get

An extension plug-in to add to the side panel of the Smart Client.

◆ TabPlugins

virtual ICollection<TabPlugin> VideoOS.Platform.PluginDefinition.TabPlugins
get

An extension plug-in running in the Administrator to add a tab for built-in devices and hardware.

◆ ToolsOptionsDialogPlugins

virtual List<ToolsOptionsDialogPlugin> VideoOS.Platform.PluginDefinition.ToolsOptionsDialogPlugins
get

An extension plug-in running in the Administrator to add more tabs to the Tools-Options dialog.

◆ UserControlFillEntirePanel

virtual bool VideoOS.Platform.PluginDefinition.UserControlFillEntirePanel
get

This property can be set to true, to be able to display your own help UserControl on the entire panel. When this is false - a standard top and left side is added by the system.

◆ VersionString

virtual String VideoOS.Platform.PluginDefinition.VersionString
get

The version of the plug-in.

◆ ViewItemPlugins

virtual List<ViewItemPlugin> VideoOS.Platform.PluginDefinition.ViewItemPlugins
get

A list of Client side definitions for Smart Client.

◆ ViewItemToolbarPlugins

virtual List<ViewItemToolbarPlugin> VideoOS.Platform.PluginDefinition.ViewItemToolbarPlugins
get

An extension plug-in to add to the view item toolbar in the Smart Client.

◆ ViewLayouts

virtual List<ViewLayout> VideoOS.Platform.PluginDefinition.ViewLayouts
get

An extension plug-in running in the Smart Client to provide extra view layouts.

◆ WorkSpacePlugins

virtual List<WorkSpacePlugin> VideoOS.Platform.PluginDefinition.WorkSpacePlugins
get

An extension plug-in to add to workspace of the Smart Client.

◆ WorkSpaceToolbarPluginGroups

virtual List<WorkSpaceToolbarPluginGroup> VideoOS.Platform.PluginDefinition.WorkSpaceToolbarPluginGroups
get

An extension plug-in group to add to the work space toolbar in the Smart Client.

◆ WorkSpaceToolbarPlugins

virtual List<WorkSpaceToolbarPlugin> VideoOS.Platform.PluginDefinition.WorkSpaceToolbarPlugins
get

An extension plug-in to add to the work space toolbar in the Smart Client.