Windows

Layouts

Overview

The Layouts API allows you to save the arrangement and context of any set of applications running in Glue42 Enterprise as a named layout and later restore it. You can also choose a default Global layout which Glue42 Enterprise will load upon startup.

The Layouts library supports different types of layouts:

  • Global

This type of layout can contain floating Glue42 Windows, Glue42 Window Groups, Swimlane workspaces, Workspaces, Activities. A Global layout describes the bounds and context of all components participating in it.

  • Application Default

The default layout of an application instance describes the last saved window bounds, the window state (maximized, minimized, normal), whether the window is collapsed and the default window context.

Note that the ignoreSavedLayout property in the application configuration can be used to ignore the last saved application layout. In this case, when you restart the application, it will use its default bounds, state and context set in the application configuration file.

  • Activity

The layout of an Activity instance describes the arrangement of all windows participating in the Activity, as well as the context of the Activity owner window.

  • Swimlane

The layout of a Swimlane workspace describes the arrangement of the lanes in a Swimlane workspace, its bounds and the context of the applications participating in it.

  • Workspace

The layout of a Workspace instance describes the arrangement of the Workspace elements, its bounds and the context of the applications participating in it.

Default Global Layout

A default Global layout is an already saved arrangement of Glue42 enabled applications that is restored upon startup of Glue42 Enterprise. Often users need the same set of starting applications when fulfilling daily routines. Setting up a default Global layout will save them the time and effort they usually spend in finding, starting and arranging the required applications on system start/restart.

In the example below, you can see how the user first creates and then saves and restores a layout. After that, the user sets the saved layout as the default Global layout which is restored upon restart of Glue42 Enterprise:

Layouts

Layout Stores

Glue42 Enterprise can load layouts from a local store or from a remote REST service.

Local Path Layout Store

By default, the layouts are saved to and loaded from a local layouts store, located in the %LocalAppData%\Tick42\UserData\T42-DEMO\layouts folder where you can store/customize/delete your layout files locally.

REST Service Layout Store

Layout definitions can also be hosted on a server and obtained from a REST service.

For a reference implementation of a remote layout definitions store, see the Node.js REST Config example. This basic implementation stores the user layouts in files (they have the same structure as the local layouts files) and returns the same set of data for all users (does not take the user into account). New layouts are stored in files (using the name of the layout - there is no validation whether the layouts name can be used as a file name). The remove layout operation is not implemented and just logs to the console. For instructions on running the sample server on your machine, see the README.md in the repository.

For a .NET implementation of a remote layout definitions store, see the .NET REST Config example.

If your Glue42 Enterprise copy is not configured to load layouts from a REST service, you need to edit the system.json file located in the %LocalAppData%\Tick42\GlueDesktop\config folder.

  1. Locate the layouts top-level property:
 "layouts": {
    "store": {
        "type": "file"
    }
  }
  1. Update the layouts store to:
 "layouts": {
    "store": {
        "type": "rest",
        "restURL": "http://localhost:8004/",
        "restFetchInterval": 20
      }
  } 
  • type - can be file or rest, depending on the type of layouts store you want to setup;
  • restURL - the URL address of the layouts REST service;
  • restFetchInterval - interval (in seconds) for fetching layouts from the REST service;