EventFlow Layout Options

This topic discusses the options for preserving the layout information of components on the EventFlow Editor canvas.

Semantic and Graphical Layout Elements

The EventFlow XML grammar contains two distinct types of elements:

EventFlow Semantic elements

Describes the functionality of application components. This information changes when you add or remove components and change their properties.

Graphical Layout elements

Describes the last-saved graphical positions and dimensions of components on the EventFlow canvas. This information changes when you move or resize a component on the canvas. Changes in layout elements have no effect on your application's functionality.

By default, StreamBase stores semantic and layout elements in in separate files:

  • Semantic elements stored in the primary application file with .sbapp extension.

  • Layout elements stored in an associated layout-only file with .sblayout extension.

When a separate layout file exists for an application module, it shares the same base name, which always matches exactly in spelling and case. For example, StreamBase Studio treats the following files as a related pair that together define the application module BlendDepthOfBook:

BlendDepthOfBook.sbapp
BlendDepthOfBook.sblayout

How Studio Handles Layout Information

StreamBase Studio respects and preserves the layout status it detects for each individual EventFlow application. That is:

  • If Studio detects an .sbapp file with no matching .sblayout file, then it draws the canvas based on the layout information in the .sbapp file. On save, Studio creates the matching .sblayout file and stores all layout information there.

  • If Studio detects an .sbapp file with matching .sblayout file (with the same base name), then it uses the layout information in the .sblayout file to draw the canvas. On save, Studio stores any changed layout information back to the .sblayout file.

Your project folders might contain several EventFlow application modules with a mix of layout states: some modules with only an .sbapp file, and other modules with both .sbapp and .sblayout files.

Separate layout files are copied and deleted automatically when you copy or delete the corresponding EventFlow file. If you rename the EventFlow file with refactoring, its corresponding .sblayout file is automatically renamed. But the reverse is not true: you can copy, delete, and rename .sblayout files without affecting the corresponding EventFlow file.

Advantages of Combined and Separate Layout

StreamBase Studio's default state for newly created EventFlow modules is to keep semantic and layout information in separate files. The advantages are:

  • Better match for many version control systems. With meaningful changes isolated to the .sbapp file, difference comparison and merging are easier for version control systems to handle.

  • Easier to share application modules in a team development environment, where more than one developer might open the same file and rearrange components.

The advantage of using combined layout in the .sbapp file is simplicity of file management and in sharing of application module files with other users.

Creating Separate Layout Files

There are both manual and automatic ways to create an .sblayout file for any .sbapp file.

Manual Creation of Layout Files

Create separate layout files for individual EventFlow applications with the following steps:

  1. Select one or more .sbapp file names in the Package Explorer. (Hold the Ctrl key while clicking to select more than one.) You can select files in the same project or different projects.

  2. Right-click and select StreamBaseEventFlow LayoutExtract to Layout File from the context menu.

Automatic Creation of Layout Files

Configure Studio to automatically create separate layout files when new EventFlow application files are created:

  1. Open Studio Preferences with WindowPreferences.

  2. In the contents pane on the left, open StreamBase StudioAuthoring.

  3. Select Separate layout (.sblayout) file (the default setting).

This setting controls only whether .sblayout files are created automatically when you create EventFlow application files going forward. It does not affect existing .sbapp files in your workspace.

Recombining Layout Information

When a module has separate .sbapp and .sblayout files, you can recombine the two by removing the .sblayout file in the Package Explorer. In this case, Studio behaves as follows:

  • If the .sbapp file is open in Studio when you remove the .sblayout file, Studio detects a file system change and prompts for permission to reload the file. Let the file reload, then move one component slightly, which allows you to save the .sbapp file. When you next save the module, the current layout information is saved to the .sbapp file.

  • If the .sbapp file is not open when you remove the .sblayout file, then the next time the .sbapp file is opened, Studio applies a default layout. Rearrange the components as you prefer, then save the file.