SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
(ATS04-PLAT00) Building Widgets for
    the Accelrys ELN Home Page
                                      David Pirkle
                Principal Software Engineer, R & D
                       david.pirkle@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.
Demo
 • A quick overview of the home page and
   out-of-the-box widgets
Home Page

• The Home Page is a container of widgets
• Handles widget layout and persistence of widget settings
HomePageWidget

• To start developing a custom widget, extend
  HomePageWidget
• Subclass is responsible for returning factory classes that
  create:
   – widget view
   – widget settings view
• Subclass must also manage widget settings
Demo
 • First example: RSS Feed Widget,
   Part 1
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
Demo
 • Second example: RSS Feed Widget,
   Part 2
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
 • Third example: RSS Feed Widget,
   Part 3
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
 • Fourth example: 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
 • Fifth example: Pipeline Pilot 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
• Administration of widgets covered in session ATS4-APP02

Weitere ähnliche Inhalte

Andere mochten auch

(ATS4-DEV02) Accelrys Query Service: Technology and Tools
(ATS4-DEV02) Accelrys Query Service: Technology and Tools(ATS4-DEV02) Accelrys Query Service: Technology and Tools
(ATS4-DEV02) Accelrys Query Service: Technology and ToolsBIOVIA
 
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...BIOVIA
 
(ATS6-APP08) ADQM Solution Deployment
(ATS6-APP08) ADQM Solution Deployment(ATS6-APP08) ADQM Solution Deployment
(ATS6-APP08) ADQM Solution DeploymentBIOVIA
 
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEPBIOVIA
 
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server PerformanceBIOVIA
 
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...BIOVIA
 
Assessing Galaxy's ability to express scientific workflows in bioinformatics
Assessing Galaxy's ability to express scientific workflows in bioinformaticsAssessing Galaxy's ability to express scientific workflows in bioinformatics
Assessing Galaxy's ability to express scientific workflows in bioinformaticsPeter van Heusden
 
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)BIOVIA
 

Andere mochten auch (8)

(ATS4-DEV02) Accelrys Query Service: Technology and Tools
(ATS4-DEV02) Accelrys Query Service: Technology and Tools(ATS4-DEV02) Accelrys Query Service: Technology and Tools
(ATS4-DEV02) Accelrys Query Service: Technology and Tools
 
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...
(ATS3-APP08) Top 10 things every Symyx Notebook by Accelrys Administrator sho...
 
(ATS6-APP08) ADQM Solution Deployment
(ATS6-APP08) ADQM Solution Deployment(ATS6-APP08) ADQM Solution Deployment
(ATS6-APP08) ADQM Solution Deployment
 
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP
(ATS4-PLAT05) Accelrys Catalog: A Search Index for AEP
 
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance
(ATS4-APP09)Tips and tricks for Managing Symyx Notebook Server Performance
 
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...
(ATS6-APP07) Configuration of Accelrys ELN to Clone to the Latest Template Ve...
 
Assessing Galaxy's ability to express scientific workflows in bioinformatics
Assessing Galaxy's ability to express scientific workflows in bioinformaticsAssessing Galaxy's ability to express scientific workflows in bioinformatics
Assessing Galaxy's ability to express scientific workflows in bioinformatics
 
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
 

Ähnlich wie (ATS4-DEV08) Building Widgets for the Symyx Notebook Home Page

Porting the Legacy Application to Composite Application Guidance
Porting the Legacy Application to Composite Application GuidancePorting the Legacy Application to Composite Application Guidance
Porting the Legacy Application to Composite Application GuidanceOur Community Exchange LLC
 
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.
 
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
 
Play with azure functions
Play with azure functionsPlay with azure functions
Play with azure functionsBaskar 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
 
Azure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaBaskar rao Dsn
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020Howard Greenberg
 
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
 
Parallelminds.web partdemo1
Parallelminds.web partdemo1Parallelminds.web partdemo1
Parallelminds.web partdemo1parallelminder
 
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld
 
"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
 
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
 
Era of server less computing
Era of server less computingEra of server less computing
Era of server less computingBaskar 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
 
Custom Controllers and Controller Extensions
Custom Controllers and Controller Extensions Custom Controllers and Controller Extensions
Custom Controllers and Controller Extensions Mohammed Safwat Abu Kwaik
 
SFDC UI - Introduction to Visualforce
SFDC UI -  Introduction to VisualforceSFDC UI -  Introduction to Visualforce
SFDC UI - Introduction to VisualforceSujit Kumar
 

Ähnlich wie (ATS4-DEV08) Building Widgets for the Symyx Notebook Home Page (20)

Porting the Legacy Application to Composite Application Guidance
Porting the Legacy Application to Composite Application GuidancePorting the Legacy Application to Composite Application Guidance
Porting the Legacy Application to Composite Application Guidance
 
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)
 
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
 
Play with azure functions
Play with azure functionsPlay with azure functions
Play with azure functions
 
WSS MOSS Portfolio
WSS MOSS PortfolioWSS MOSS Portfolio
WSS MOSS Portfolio
 
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 ...
 
Azure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsaAzure Functions in Action #CodePaLOUsa
Azure Functions in Action #CodePaLOUsa
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020
 
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
 
Parallelminds.web partdemo1
Parallelminds.web partdemo1Parallelminds.web partdemo1
Parallelminds.web partdemo1
 
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
VMworld 2013: vSphere UI Platform Best Practices: Putting the Web Client SDK ...
 
"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
 
Era of server less computing final
Era of server less computing finalEra of server less computing final
Era of server less computing final
 
Era of server less computing
Era of server less computingEra of server less computing
Era of server less computing
 
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
 
Mvc summary
Mvc summaryMvc summary
Mvc summary
 
Custom Controllers and Controller Extensions
Custom Controllers and Controller Extensions Custom Controllers and Controller Extensions
Custom Controllers and Controller Extensions
 
SFDC UI - Introduction to Visualforce
SFDC UI -  Introduction to VisualforceSFDC UI -  Introduction to Visualforce
SFDC UI - Introduction to Visualforce
 
Mvc architecture
Mvc architectureMvc architecture
Mvc architecture
 

Mehr von 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
 

Mehr von 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
 

(ATS4-DEV08) Building Widgets for the Symyx Notebook Home Page

  • 1. (ATS04-PLAT00) Building Widgets for the Accelrys ELN Home Page David Pirkle Principal Software Engineer, R & D david.pirkle@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. Demo • A quick overview of the home page and out-of-the-box widgets
  • 4. Home Page • The Home Page is a container of widgets • Handles widget layout and persistence of widget settings
  • 5. HomePageWidget • To start developing a custom widget, extend HomePageWidget • Subclass is responsible for returning factory classes that create: – widget view – widget settings view • Subclass must also manage widget settings
  • 6. Demo • First example: RSS Feed Widget, Part 1
  • 7. Widget View • The widget view is the user control that appears on the home page • Create your view by extending UserControlWidgetView
  • 8. 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
  • 9. Demo • Second example: RSS Feed Widget, Part 2
  • 10. 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
  • 11. Widget View • Use DisplayMessage for messages such as errors • Override Dispose to dispose of resources
  • 12. Demo • Third example: RSS Feed Widget, Part 3
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. Demo • Fourth example: Structure Search Widget
  • 18. 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
  • 19. Demo • Fifth example: Pipeline Pilot Protocol Widget
  • 20. 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
  • 21. 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)
  • 22. 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 • Administration of widgets covered in session ATS4-APP02