Case Study: Adding "-> Logbook..." to CSS Data Browser
- Decide on the level of integration
- Check out the CSS source code
- Install Mercurial locally
- Clone the CSS repository
- Increase JVM memory for Eclipse
- Edit eclipse.ini in $ECLIPSE_HOME (1024 MB is what I ended up with)
- Import the necessary CSS plugins as Eclipse projects (by trail & error, need clarification from Kay & Co.)
- The minimum list of plugins to develop with DataBrowser:
- Checkout the HLA source code (from CVS)
- Create the edu.stanford.slac.logbook plugin
- Copy the HLA Save2Logbook source code to edu.stanford.slac.logbook
- Configure the plugin to be used by other plugins (the Eclipse help is good, plus I simply remembered some of it)
- Add to the DataBrowser plugin the dependency on edu.stanford.slac.logbook
- Eclipse bug: If plugins panel is empty, start typing the plugin name
- Implement the new features in DataBrowser and edu.stanford.slac.logbook plugins
- Find the class in the DataBrowser that handles buttons (Plot)
- Create a JFace button; set size, label, and background color; add it to the proper JFace figure
- Add a JFace ActionListener that generates an Eclipse (Graphics) image from XYGraph
- Add a method to edu.stanford.slac.logbook that saves an Eclipse image as a JPEG file and creates the logbook XML files as well as directories
- Call the new edu.stanford.slac.logbook method from the new JFace ActionListener
- Test the save2logbook feature by running DataBrowser as an Eclipse application within Eclipse
- Create a SLAC DataBrowser product configuration (the Eclipse help is no good; I needed to understand the SNS CSS product configuration)
- Select CSS Data Browser as the actual application
- Modify the CSS splash image
- Export the SLAC DataBrowser product to a local directory and distribute it from there
- When launching the SLAC DataBrowser for the first time, configure the EPICS and DataBrowser preferences with correct SLAC settings
Major To-Dos
- Headless build
- "Workspace in use" issues
Resources
How to develop with CSS
- Development environment
- Tools
- API
- Documentation
- Eclipse Architecture
- CSS Architecture
- Build and release procedures
- Production environment
How to contribute to CSS
- Level of integration http://css.desy.de/content/e760/e761/index_eng.html
- Standards
- Procedure http://css.desy.de/content/e760/e761/index_eng.html
- Select the level of integration for your plugin from the list above
- Use existing interfaces and extension points
- Add new extension points whenever useful
- Use Eclipse contributions to integrate your plugin seamlessly with other plugins
- Use common data types (IData) to exchange data (not only strings) with other plugins
- Localize strings in your code
- Decouple local requirements from CSS implementations. Use interfaces to decouple.
- Test CSS core versions and plugins on several platforms (at least Windows, Linux Mac-OS)
- Code style
Links