Window Groups

Finsemble provides ways for the developer to create groups of windows that operate together: they can be launched together, focused together, and brought to front together. There are two options available to implement this kind of functionality. First, you can designate app suites, which are a way to link window management functions to a group of windows. Second, you can designate launch groups, which are a way to specify groups of windows that spawn together. These two methods are described in this tutorial.

App Suites

An app suite is a developer-defined group of windows that provide several pre-built window management actions to users.

Imagine your Finsemble application up and running. You have a trade blotter, a chart, and a news feed. You'd like for your users to quickly bring these windows to the front and minimize everything that isn't part of their group. We call this behavior hyperfocus, and it allows a user to focus on a particular workflow. By making these components part of an app suite, you get this functionality out of the box.

To create an app suite, you simply need to add a line of config to the components that you'd like to group:

    "Trade Blotter": {
        "window": {
            ...
        },
        "component": {
            "windowGroup": "TraderSuite"
        },
        "foreign": {
            ...
        }
    }

This will give all components with a component.windowGroup property value of "Trader Suite" an app suite icon in their title bar (as long as you're using the default title bar in the seed project). Clicking this icon will focus all components of the TraderSuite, even if they're on separate monitors. Holding SHIFT and clicking the icon will hyperfocus the app suite, which brings the windows to the front and also minimizes all components that aren't part of the suite.

Launch Groups

Another common use case for groups of windows is launching them together. This is distinct from app suites. Any window can be part of a launch group—they do not have to be part of an app suite (but certainly can be). Adding windows to a launch group is simple—just modify their config:

    "Trade Blotter": {
        "window": {
            ...
        },
        "component": {
            "launchGroups": "Trader Suite"
        },
        "foreign": {
            ...
        }
    }

If you're using the default App Launcher provided in the seed project, launch groups will automatically be added to the menu that the components are housed in. If you have created your own menus that spawn components, you will need to go through the list of components available to your application and add the launch group to your menu. To see how we added groups to our App Launcher, see this snippet.


check   You can define components as being part of either app suites or launch groups to give end users new ways to focus on their windows.
 


Further reading

Further information on window groups can be found in the documentation of the Launcher Client.