SlideShare a Scribd company logo
1 of 28
(ATS6-DEV07) Building Widgets for
the Accelrys ELN Home Page
Bill Buote
CTO ADQM
ADQM Business Unit
Bill.Buote@accelrys.com
• The information on the roadmap and future software
development efforts are intended to outline general
product direction and should not be relied on in making a
purchasing decision.
Home Page
• The Home Page is a container of widgets
• Handles widget layout and persistence of widget settings
Home Page
Demo
• A quick overview of the home page and out-of-the-box
widgets
HomePageWidget
• To start developing a custom widget, extend
HomePageWidget (Widget SDK)
• Subclass is responsible for returning factory classes that
create:
– widget view
– widget settings view
• Subclass must also manage widget settings
• Primary Namespaces
– Symyx.Notebook.HomePage
– Symyx.Notebook.Applications.HomePage
• New widget
– Main class derives from
• Symyx.Notebook.Applications.HomePage.HomePageWidget
– View class derives from
• Symyx.Notebook.HomePage.UserControlWidgetView
– Factory class derives from
• Symyx.Notebook.HomePage.WidgetViewBuilder
– Custom configuration? Derive from
• Symyx.Notebook.HomePage.UserControlConfigurationView
• Symyx.Notebook.HomePage.ConfigurationViewBuilder
– Custom configuration storage
• Symyx.Notebook.HomePage.Widget.WidgetMemento
Widget Development
Demo
• First example: RSS Feed Widget
– Display
RSS Feed Widget
Widget View
• The widget view is the user control that appears on the
home page
• Create your view by extending UserControlWidgetView
Publishing a Widget
• See the sample code in the PublishWidgetToVault project
• Command line utility takes 6 parameters:
– Server
– Username
– Password
– Vault path of widget folder
– Widget title
– Assembly-qualified name of the main widget class
Refreshing the Widget View
• View may need to periodically refresh (ex., inbox widget)
• Manual refresh supported by refresh button in widget
title bar
• Refresh button triggers call to RefreshView
• If you want auto-refresh, your view must handle this
• Use ShowBusySpinner and HideBusySpinner while view is
updating
Widget View
• Use DisplayMessage for messages such as errors
• Override Dispose to dispose of resources
Demo
• Second example: RSS Feed Widget
– Settings
RSS Feed Widget
Adding Widget Settings - Overview
• Extend WidgetMemento to persist settings
• Extend UserControlConfigurationView for settings UI
• Extend ConfigurationViewBuilder as a factory for the
settings UI
• Modify the widget view to respond to settings
Settings Persistence
• Extend Widget.WidgetMemento
• Implement properties for settings in the memento
• Add serialization decorators (DataContract and DataMember)
• Use your memento in the main widget class by overriding
SaveToMemento and RestoreFromMemento
• Implement properties for settings in the main widget
• Also override ResetDefaultValues so the Reset button works
OK
Settings UI
• Extend UserControlConfigurationView
• Override OnWidgetSet or use Widget property to access the
main widget and its state
• Override SetConfigurationView, and update the UI based on
the state of the main widget
• Add event handlers to set the state of the main widget as UI is
manipulated
• Widget view subscribes to ConfigurationChanged event of the
main widget in its override of OnWidgetSet
ConfigurationViewBuilder
• ConfigurationViewBuilder is a factory that creates the
settings UI
• Extend ConfigurationViewBuilder, overriding
CreateConfigurationView and CreateConfigurationView
• Override ConfigurationViewBuilders in the main widget
to return this new class
Demo
• Third example: Structure Search Widget
Structure Search Widget
Widgets that Search
• Work in Progress widget is an example of a widget that presents
search results
• Extend QueryWidget to implement the main widget class for a
query-based widget
• QueryWidgetViewBuilder can be used as is to create widget views
that execute a query and present the results in a grid
• Auto-refresh also handled for you
• Extend QueryWidgetConfigurationView to implement the settings
UI
• The configuration view sets the main widget’s Query property,
when the settings UI is changed
Demo
• Fourth example: Pipeline Pilot Protocol Widget
Pipeline Protocol Widget
ProtocolWidget
• ProtocolWidget can be configured to run a Pipeline Pilot
protocol that produces HTML
• Views the result in the WebBrowser control
• Modify the PipelinePilot | RunProtocol application permission
to add a new configuration key that specifies the location in
the protocol tree where you will publish widget protocols
– Name: WidgetProtocolRoot
– Value: Protocols/Web Services/Accelrys/Notebook Widgets
• If you need to pass parameters to a protocol, override the
GenerateProtocolParameters method
Performance Considerations
• Performance and memory profiling are critical
• Widgets that refresh periodically can have a significant negative
impact on performance
• Consider adding random amount to refresh interval to avoid
simultaneous refreshes (QueryWidgetView will handle this for you)
• Notebook has 2 connections to Vault, so Widgets that refresh and
talk to Vault have the biggest potential to degrade system
performance
• QueryWidgetView handles connection limitation for you
(VaultObjectGrid.GridLoader set to a
KeyedAsynchronousGridLoadStrategy that uses "share" as a key)
Summary
• Learned how to build custom widgets
– Extend base classes in Symyx.Notebook.Applications.HomePage
and Symyx.Notebook.HomePage
– QueryWidget base classes can be extended for widgets that
search
– Performance and memory considerations
• Sample widgets and documentation in the Notebook SDK
28
Thank you.
Accelrys, Inc.
9 Industrial Road
Milford, MA 01757

More Related Content

Similar to (ATS6-DEV07) Building widgets for ELN home page

Parallelminds.web partdemo
Parallelminds.web partdemoParallelminds.web partdemo
Parallelminds.web partdemoManishaChothe
 
Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)Oro Inc.
 
Parallelminds.web partdemo1
Parallelminds.web partdemo1Parallelminds.web partdemo1
Parallelminds.web partdemo1parallelminder
 
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business ToolsSUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business ToolsAnindita Bhattacharya
 
"Umbraco MVC - a journey of discovery" - Lotte Pitcher
"Umbraco MVC - a journey of discovery" - Lotte Pitcher"Umbraco MVC - a journey of discovery" - Lotte Pitcher
"Umbraco MVC - a journey of discovery" - Lotte Pitcherlottepitcher
 
Play with azure functions
Play with azure functionsPlay with azure functions
Play with azure functionsBaskar rao Dsn
 
Tips and tricks of the 2021.4 release
Tips and tricks of the 2021.4 releaseTips and tricks of the 2021.4 release
Tips and tricks of the 2021.4 releaseCristina Vidu
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020Howard Greenberg
 
Azure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaBaskar rao Dsn
 
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...SPTechCon
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationStephen Fuqua
 
Era of server less computing final
Era of server less computing finalEra of server less computing final
Era of server less computing finalBaskar rao Dsn
 
Modernising the way System Customisers Configure the Model-Driven Apps for Us...
Modernising the way System Customisers Configure the Model-Driven Apps for Us...Modernising the way System Customisers Configure the Model-Driven Apps for Us...
Modernising the way System Customisers Configure the Model-Driven Apps for Us...Linn Zaw Win
 
Era of server less computing
Era of server less computingEra of server less computing
Era of server less computingBaskar rao Dsn
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextSvilen Sabev
 
Datasheet weblogicpluginforrd
Datasheet weblogicpluginforrdDatasheet weblogicpluginforrd
Datasheet weblogicpluginforrdMidVision
 
Salesforce Spring 23 Webinar
Salesforce Spring 23 WebinarSalesforce Spring 23 Webinar
Salesforce Spring 23 Webinarbrightgenss
 
Webinar: Skytap & Jenkins
Webinar: Skytap & JenkinsWebinar: Skytap & Jenkins
Webinar: Skytap & JenkinsSkytap Cloud
 

Similar to (ATS6-DEV07) Building widgets for ELN home page (20)

Parallelminds.web partdemo
Parallelminds.web partdemoParallelminds.web partdemo
Parallelminds.web partdemo
 
Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)
 
Parallelminds.web partdemo1
Parallelminds.web partdemo1Parallelminds.web partdemo1
Parallelminds.web partdemo1
 
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business ToolsSUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
SUG Bangalore - Extending Sitecore Experience Commerce 9 Business Tools
 
"Umbraco MVC - a journey of discovery" - Lotte Pitcher
"Umbraco MVC - a journey of discovery" - Lotte Pitcher"Umbraco MVC - a journey of discovery" - Lotte Pitcher
"Umbraco MVC - a journey of discovery" - Lotte Pitcher
 
Play with azure functions
Play with azure functionsPlay with azure functions
Play with azure functions
 
Tips and tricks of the 2021.4 release
Tips and tricks of the 2021.4 releaseTips and tricks of the 2021.4 release
Tips and tricks of the 2021.4 release
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020
 
Azure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsa
 
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
Tutorial, Part 4: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
 
Mvc architecture
Mvc architectureMvc architecture
Mvc architecture
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test Automation
 
WSS MOSS Portfolio
WSS MOSS PortfolioWSS MOSS Portfolio
WSS MOSS Portfolio
 
Era of server less computing final
Era of server less computing finalEra of server less computing final
Era of server less computing final
 
Modernising the way System Customisers Configure the Model-Driven Apps for Us...
Modernising the way System Customisers Configure the Model-Driven Apps for Us...Modernising the way System Customisers Configure the Model-Driven Apps for Us...
Modernising the way System Customisers Configure the Model-Driven Apps for Us...
 
Era of server less computing
Era of server less computingEra of server less computing
Era of server less computing
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
 
Datasheet weblogicpluginforrd
Datasheet weblogicpluginforrdDatasheet weblogicpluginforrd
Datasheet weblogicpluginforrd
 
Salesforce Spring 23 Webinar
Salesforce Spring 23 WebinarSalesforce Spring 23 Webinar
Salesforce Spring 23 Webinar
 
Webinar: Skytap & Jenkins
Webinar: Skytap & JenkinsWebinar: Skytap & Jenkins
Webinar: Skytap & Jenkins
 

More from BIOVIA

ScienceCloud: Collaborative Workflows in Biologics R&D
ScienceCloud: Collaborative Workflows in Biologics R&DScienceCloud: Collaborative Workflows in Biologics R&D
ScienceCloud: Collaborative Workflows in Biologics R&DBIOVIA
 
(ATS6-PLAT03) What's behind Discngine collections
(ATS6-PLAT03) What's behind Discngine collections(ATS6-PLAT03) What's behind Discngine collections
(ATS6-PLAT03) What's behind Discngine collectionsBIOVIA
 
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...BIOVIA
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environmentBIOVIA
 
(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP PerformanceBIOVIA
 
(ATS6-PLAT05) Security enhancements in AEP 9
(ATS6-PLAT05) Security enhancements in AEP 9(ATS6-PLAT05) Security enhancements in AEP 9
(ATS6-PLAT05) Security enhancements in AEP 9BIOVIA
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service BIOVIA
 
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
(ATS6-PLAT02) Accelrys Catalog and Protocol ValidationBIOVIA
 
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...BIOVIA
 
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...BIOVIA
 
(ATS6-GS02) Integrating Contur and HEOS
(ATS6-GS02) Integrating Contur and HEOS(ATS6-GS02) Integrating Contur and HEOS
(ATS6-GS02) Integrating Contur and HEOSBIOVIA
 
(ATS6-GS01) Welcome
(ATS6-GS01) Welcome (ATS6-GS01) Welcome
(ATS6-GS01) Welcome BIOVIA
 
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol AuthorsBIOVIA
 
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful APIBIOVIA
 
(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery
(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery
(ATS6-DEV06) Using Packages for Protocol, Component, and Application DeliveryBIOVIA
 
(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection
(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection
(ATS6-DEV05) Building Interactive Web Applications with the Reporting CollectionBIOVIA
 
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...BIOVIA
 
(ATS6-DEV03) Building an Enterprise Web Solution with AEP
(ATS6-DEV03) Building an Enterprise Web Solution with AEP(ATS6-DEV03) Building an Enterprise Web Solution with AEP
(ATS6-DEV03) Building an Enterprise Web Solution with AEPBIOVIA
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application StrategiesBIOVIA
 
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0BIOVIA
 

More from BIOVIA (20)

ScienceCloud: Collaborative Workflows in Biologics R&D
ScienceCloud: Collaborative Workflows in Biologics R&DScienceCloud: Collaborative Workflows in Biologics R&D
ScienceCloud: Collaborative Workflows in Biologics R&D
 
(ATS6-PLAT03) What's behind Discngine collections
(ATS6-PLAT03) What's behind Discngine collections(ATS6-PLAT03) What's behind Discngine collections
(ATS6-PLAT03) What's behind Discngine collections
 
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...
(ATS6-PLAT09) Deploying Applications on load balanced AEP servers for high av...
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment
 
(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance(ATS6-PLAT06) Maximizing AEP Performance
(ATS6-PLAT06) Maximizing AEP Performance
 
(ATS6-PLAT05) Security enhancements in AEP 9
(ATS6-PLAT05) Security enhancements in AEP 9(ATS6-PLAT05) Security enhancements in AEP 9
(ATS6-PLAT05) Security enhancements in AEP 9
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service
 
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
(ATS6-PLAT02) Accelrys Catalog and Protocol Validation
 
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...
(ATS6-PLAT01) Chemistry Harmonization: Bringing together the Direct 9 and Pip...
 
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...
(ATS6-GS04) Performance Analysis of Accelrys Enterprise Platform 9.0 on IBM’s...
 
(ATS6-GS02) Integrating Contur and HEOS
(ATS6-GS02) Integrating Contur and HEOS(ATS6-GS02) Integrating Contur and HEOS
(ATS6-GS02) Integrating Contur and HEOS
 
(ATS6-GS01) Welcome
(ATS6-GS01) Welcome (ATS6-GS01) Welcome
(ATS6-GS01) Welcome
 
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
(ATS6-DEV09) Deep Dive into REST and SOAP Integration for Protocol Authors
 
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API
(ATS6-DEV08) Integrating Contur ELN with other systems using a RESTful API
 
(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery
(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery
(ATS6-DEV06) Using Packages for Protocol, Component, and Application Delivery
 
(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection
(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection
(ATS6-DEV05) Building Interactive Web Applications with the Reporting Collection
 
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...
(ATS6-DEV04) Building Web MashUp applications that include Accelrys Applicati...
 
(ATS6-DEV03) Building an Enterprise Web Solution with AEP
(ATS6-DEV03) Building an Enterprise Web Solution with AEP(ATS6-DEV03) Building an Enterprise Web Solution with AEP
(ATS6-DEV03) Building an Enterprise Web Solution with AEP
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
 
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0
(ATS6-DEV01) What’s new for Protocol and Component Developers in AEP 9.0
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

(ATS6-DEV07) Building widgets for ELN home page

  • 1. (ATS6-DEV07) Building Widgets for the Accelrys ELN Home Page Bill Buote CTO ADQM ADQM Business Unit Bill.Buote@accelrys.com
  • 2. • The information on the roadmap and future software development efforts are intended to outline general product direction and should not be relied on in making a purchasing decision.
  • 3. Home Page • The Home Page is a container of widgets • Handles widget layout and persistence of widget settings
  • 5. Demo • A quick overview of the home page and out-of-the-box widgets
  • 6. HomePageWidget • To start developing a custom widget, extend HomePageWidget (Widget SDK) • Subclass is responsible for returning factory classes that create: – widget view – widget settings view • Subclass must also manage widget settings
  • 7. • Primary Namespaces – Symyx.Notebook.HomePage – Symyx.Notebook.Applications.HomePage • New widget – Main class derives from • Symyx.Notebook.Applications.HomePage.HomePageWidget – View class derives from • Symyx.Notebook.HomePage.UserControlWidgetView – Factory class derives from • Symyx.Notebook.HomePage.WidgetViewBuilder – Custom configuration? Derive from • Symyx.Notebook.HomePage.UserControlConfigurationView • Symyx.Notebook.HomePage.ConfigurationViewBuilder – Custom configuration storage • Symyx.Notebook.HomePage.Widget.WidgetMemento Widget Development
  • 8. Demo • First example: RSS Feed Widget – Display
  • 10. Widget View • The widget view is the user control that appears on the home page • Create your view by extending UserControlWidgetView
  • 11. Publishing a Widget • See the sample code in the PublishWidgetToVault project • Command line utility takes 6 parameters: – Server – Username – Password – Vault path of widget folder – Widget title – Assembly-qualified name of the main widget class
  • 12. Refreshing the Widget View • View may need to periodically refresh (ex., inbox widget) • Manual refresh supported by refresh button in widget title bar • Refresh button triggers call to RefreshView • If you want auto-refresh, your view must handle this • Use ShowBusySpinner and HideBusySpinner while view is updating
  • 13. Widget View • Use DisplayMessage for messages such as errors • Override Dispose to dispose of resources
  • 14. Demo • Second example: RSS Feed Widget – Settings
  • 16. Adding Widget Settings - Overview • Extend WidgetMemento to persist settings • Extend UserControlConfigurationView for settings UI • Extend ConfigurationViewBuilder as a factory for the settings UI • Modify the widget view to respond to settings
  • 17. Settings Persistence • Extend Widget.WidgetMemento • Implement properties for settings in the memento • Add serialization decorators (DataContract and DataMember) • Use your memento in the main widget class by overriding SaveToMemento and RestoreFromMemento • Implement properties for settings in the main widget • Also override ResetDefaultValues so the Reset button works OK
  • 18. Settings UI • Extend UserControlConfigurationView • Override OnWidgetSet or use Widget property to access the main widget and its state • Override SetConfigurationView, and update the UI based on the state of the main widget • Add event handlers to set the state of the main widget as UI is manipulated • Widget view subscribes to ConfigurationChanged event of the main widget in its override of OnWidgetSet
  • 19. ConfigurationViewBuilder • ConfigurationViewBuilder is a factory that creates the settings UI • Extend ConfigurationViewBuilder, overriding CreateConfigurationView and CreateConfigurationView • Override ConfigurationViewBuilders in the main widget to return this new class
  • 20. Demo • Third example: Structure Search Widget
  • 22. Widgets that Search • Work in Progress widget is an example of a widget that presents search results • Extend QueryWidget to implement the main widget class for a query-based widget • QueryWidgetViewBuilder can be used as is to create widget views that execute a query and present the results in a grid • Auto-refresh also handled for you • Extend QueryWidgetConfigurationView to implement the settings UI • The configuration view sets the main widget’s Query property, when the settings UI is changed
  • 23. Demo • Fourth example: Pipeline Pilot Protocol Widget
  • 25. ProtocolWidget • ProtocolWidget can be configured to run a Pipeline Pilot protocol that produces HTML • Views the result in the WebBrowser control • Modify the PipelinePilot | RunProtocol application permission to add a new configuration key that specifies the location in the protocol tree where you will publish widget protocols – Name: WidgetProtocolRoot – Value: Protocols/Web Services/Accelrys/Notebook Widgets • If you need to pass parameters to a protocol, override the GenerateProtocolParameters method
  • 26. Performance Considerations • Performance and memory profiling are critical • Widgets that refresh periodically can have a significant negative impact on performance • Consider adding random amount to refresh interval to avoid simultaneous refreshes (QueryWidgetView will handle this for you) • Notebook has 2 connections to Vault, so Widgets that refresh and talk to Vault have the biggest potential to degrade system performance • QueryWidgetView handles connection limitation for you (VaultObjectGrid.GridLoader set to a KeyedAsynchronousGridLoadStrategy that uses "share" as a key)
  • 27. Summary • Learned how to build custom widgets – Extend base classes in Symyx.Notebook.Applications.HomePage and Symyx.Notebook.HomePage – QueryWidget base classes can be extended for widgets that search – Performance and memory considerations • Sample widgets and documentation in the Notebook SDK
  • 28. 28 Thank you. Accelrys, Inc. 9 Industrial Road Milford, MA 01757