-
Notifications
You must be signed in to change notification settings - Fork 6
workspace sdk components
Components are the extension points of the Workspace SDK. They allow modules to add functionality to Security Center client applications such as Security Desk and Config Tool. Each component type serves a specific purpose: rendering content in tiles, adding widgets to dashboards, extending maps, encoding credentials, and more.
Not all component types are available in both applications. Dashboard widgets require Security Desk. Standard map components such as providers, view builders, layers, searchers, importers, and panels are available in both applications. Map designer components are specific to Config Tool. Credential components and image extractors are also available in both applications.
Use this page when you need to choose the Workspace component type that matches a scenario, compare where component families run, or find the detailed page for a specific extension point.
- A workspace module creates a component instance during
Load(). - The module calls
Initialize(Workspace)on that component. - The module registers it with
Workspace.Components. - Security Center discovers and uses the component when the corresponding UI or workflow needs it.
- When the module unloads, it unregisters the component.
Shared components are a separate mechanism from
Workspace.Components. Use Workspace.SharedComponents and
Monitor.SharedComponents to consume built-in shared UI
components. For details, see
About shared components.
All components inherit from a specialized abstract class such as ContentBuilder, TileWidgetBuilder, or DashboardWidgetBuilder. These classes inherit from the Component base class, which provides the shared registration and initialization infrastructure.
Do not inherit from Component directly. Each specialized component class seals the Type property to return a predefined identifier that the system uses to route the component to the correct consumer. Inheriting from Component directly produces a component that the system does not know how to use.
| Member | Type | Description |
|---|---|---|
Name |
Property (abstract) | Display name for the component. |
UniqueId |
Property (abstract) | Unique identifier for this component instance. Each component must return a distinct GUID. |
Type |
Property (abstract) | Component type identifier. Sealed by each specialized class. Do not override this yourself. |
IsAvailable |
Property | Whether the component is currently available. Defaults to false. Set to true after initialization. |
Workspace |
Property | The workspace instance. Available after Initialize(Workspace) is called. |
Initialize(Workspace) |
Method | Initializes the component with the workspace. Call this before registering the component. |
Initialize() |
Method (protected virtual) | Override to perform setup after Workspace is available. Called by Initialize(Workspace). |
Register and unregister components through Workspace.Components:
public class SampleModule : Module
{
private MyContentBuilder m_component;
public override void Load()
{
m_component = new MyContentBuilder();
m_component.Initialize(Workspace);
Workspace.Components.Register(m_component);
}
public override void Unload()
{
Workspace.Components.Unregister(m_component);
}
}| Member | Description |
|---|---|
Register(Component) |
Register a component with the workspace. |
Unregister(Component) |
Remove a component from the workspace. |
this[Guid type] |
Get all registered components of the specified type as a ReadOnlyCollection<Component>. |
this[Guid type, Guid id] |
Get a specific component by type and unique identifier. |
Count |
The number of registered components. |
Genetec.Sdk.Workspace.Components.Components is the static catalog of component type GUIDs used by the specialized Workspace component base classes. In normal extension code you rarely read these fields directly because each specialized component class seals Type for you, but the identifiers are useful when you inspect Workspace.Components, compare component families, or read API tables.
Common identifiers include:
| Identifier | Used by |
|---|---|
Components.ContentBuilder |
ContentBuilder |
Components.TileWidgetBuilder |
TileWidgetBuilder |
Components.TileViewBuilder |
TileViewBuilder |
Components.ImageExtractor |
ImageExtractor |
Components.BadgePrinter |
BadgePrinter |
Components.CredentialEncoder |
CredentialEncoder |
Components.CredentialReader |
CredentialReader |
Components.CardholderFieldsExtractor |
CardholderFieldsExtractor |
Components.CustomActionBuilder |
CustomActionBuilder |
Components.MapObjectProvider |
MapObjectProvider |
Components.MapObjectViewBuilder |
MapObjectViewBuilder |
Components.MapLayerBuilder |
MapLayerBuilder |
Components.MapSearcher |
MapSearcher |
Components.MapPanelBuilder |
MapPanelBuilder |
Components.MapImporter |
MapImporter |
The SDK also exposes identifiers for other specialized families such as logon providers, incidents, pinnable content builders, and timeline providers. The detailed guides for those families call out the exact Type value that each abstract base class returns.
The SDK provides the following component types. Each type has a dedicated abstract class to inherit from.
These components extend Security Desk's tile-based monitoring interface.
| Component | Base class | Description |
|---|---|---|
| Content builder | ContentBuilder |
Controls what appears inside tiles. Handles entity drag-and-drop, events, and alarms by producing ContentGroup and Content objects. The system calls builders in priority order and uses the first non-null result. |
| Tile widget | TileWidgetBuilder |
Adds collapsible panels to the right-side controls area when a tile is selected. Displays supplementary information or controls related to the tile content. |
| Tile view | TileViewBuilder |
Renders overlays and custom visualizations directly inside the tile area. Supports placement over video, below the toolbar, or as full-tile content. |
| Tile properties | TilePropertiesBuilder |
Adds configuration tabs to the bottom of the right-side controls panel alongside the built-in "General" tab. |
See About content builders for content builder usage guidance.
See About tile extensions for tile widget, tile view, and tile properties usage guidance.
| Component | Base class | Description |
|---|---|---|
| Dashboard widget | DashboardWidgetBuilder |
Adds widgets to Security Desk dashboards. The builder creates DashboardWidget instances that provide visual content and configuration options. |
See About dashboard widgets for dashboard widget usage guidance.
These components extend Security Center's mapping capabilities. Map components are available in both Security Desk and Config Tool.
| Component | Base class | Description |
|---|---|---|
| Map panel | MapPanelBuilder |
Adds panels to the map interface. |
| Map searcher | MapSearcher |
Implements map search. Override Search(MapSearcherContext) to return IList<MapSearcherResult> with matching locations. |
| Map importer | MapImporter |
Imports external map data. Returns MapImporterResult. |
| Map object provider | MapObjectProvider |
Supplies custom objects for display on maps. |
| Map object view | MapObjectViewBuilder |
Builds visual representations of custom map objects. |
| Map layer | MapLayerBuilder |
Adds custom overlay layers to maps. |
| Map designer tool | MapDesignerTool |
Adds tools to the map designer in Config Tool. |
| Map designer widget | MapDesignerWidget |
Adds widgets to the map designer in Config Tool. |
See About map extensions for map component usage guidance.
These components extend cardholder and credential management. They are available in both Security Desk and Config Tool.
| Component | Base class | Description |
|---|---|---|
| Badge printer | BadgePrinter |
Implements badge printing through IBadgeService. |
| Credential encoder | CredentialEncoder |
Encodes credential data to external hardware. Override Encode(CredentialEncoderData). |
| Credential reader | CredentialReader |
Reads credential data from external hardware. CardholderCredentialReader provides a specialized variant for cardholder workflows. |
| Cardholder fields extractor | CardholderFieldsExtractor |
Imports cardholder data from external sources such as HR systems, vCard files, or custom integrations. Extracts fields like name, email, photo, credentials, and group assignments. |
See About badge printers for badge printer usage guidance.
See About credential encoders for credential encoder usage guidance.
See About credential readers for credential reader usage guidance.
See About cardholder fields extractors for cardholder fields extractor usage guidance.
| Component | Base class | Description |
|---|---|---|
| Image extractor | ImageExtractor |
Captures images from external sources for cardholder photos, custom fields, and entity thumbnails. Available in both Security Desk and Config Tool. |
| Timeline provider | TimelineProviderBuilder |
Provides data for timeline visualizations. The TimelineProvider class inherits from DependencyObject, not Component. Register providers through TimelineProviderBuilder. |
See About image extractors for image extractor usage guidance.
See About timeline providers for timeline provider usage guidance.
| Component | Base class | Description |
|---|---|---|
| Pinnable content builder | PinnableContentBuilder |
Creates visual content for pinnable popups (floating panels) in monitor windows. |
| Logon provider | LogonProvider |
Customizes sign-in behavior for Security Center client applications. |
| Custom action | CustomActionBuilder |
Adds custom actions to the event-to-action system. The builder creates CustomActionView instances for configuring the action. |
| Incident | IncidentBuilder |
Adds custom incident types to the incident management system. The builder creates IncidentView instances for editing incident data. |
See About pinnable content builders for pinnable content builder usage guidance.
See About logon providers for logon provider usage guidance.
See About custom actions for custom action usage guidance.
See About incidents for incident usage guidance.
- Overview
- Connecting to Security Center
- SDK certificates
- Referencing SDK assemblies
- SDK compatibility
- Entities
- Entity cache
- Transactions
- Events
- Actions
- Security Desk
- Custom events
- ReportManager
- ReportManager query reference
- DownloadAllRelatedData and StrictResults
- Privileges
- Partitions
- Logging
- Overview
- Certificates
- Lifecycle
- Threading
- State management
- Configuration
- Restricted configuration
- Events
- Queries
- Request manager
- Database
- Entity ownership
- Entity mappings
- Server management
- Custom privileges
- Custom entity types
- Resolving non-SDK assemblies
- Deploying plugins
- .NET 8 support
- Overview
- Certificates
- Creating modules
- Tasks
- Pages
- Components
- Tile extensions
- Services
- Contextual actions
- Options extensions
- Configuration pages
- Monitors
- Shared components
- Commands
- Extending events
- Map extensions
- Timeline providers
- Image extractors
- Credential encoders
- Credential readers
- Cardholder fields extractors
- Badge printers
- Content builders
- Dashboard widgets
- Incidents
- Logon providers
- Pinnable content builders
- Custom report pages
- Overview
- Getting started
- MediaPlayer
- VideoSourceFilter
- MediaExporter
- MediaFile
- G64 converters
- FileCryptingManager
- PlaybackSequenceQuerier
- PlaybackStreamReader
- OverlayFactory
- PtzCoordinatesManager
- AudioTransmitter
- AudioRecorder
- AnalogMonitorController
- Camera blocking
- Overview
- Getting started
- Referencing entities
- Entity operations
- About access control in the Web SDK
- About video in the Web SDK
- Users and user groups
- Partitions
- Custom fields
- Custom card formats
- Actions
- Events and alarms
- Incidents
- Reports
- Tasks
- Macros
- Custom entity types
- System endpoints
- Performance guide
- Reference
- Under the hood
- Troubleshooting