As described in the chapter Hierarchies, the user can arrange dizmos in hierarchies and in a spatial order. In order not to lose this particular spatial order, the user can make a dizmo sticky in the dizmo settings. If the user wishes to not accidentally modify the dizmo, they can lock the dizmo in the dizmo settings.
When a dizmo is locked, it can not be dragged around and it can not be modified by the user. As illustrated in the picture below, the settings only show that the dizmo is locked. Only when the user unlocks the dizmo (that is, click on "Lock" the only available item in settings), can they access the other items in settings and modify the dizmo again.
You can set your dizmo to locked:
Once a dizmo is sticky, it always keeps it position relative to the four corners of dizmoViewer. Even if the user zooms out of dizmoViewer, drags it around or resizes it, the sticky dizmo always remains in the same spot.
You can provision that your dizmo is set to sticky flag, so that it always remains on the spot by using
Remember that you have to make provisions for the geometry, when a dizmo is sticky:
dizmo.setAttribute("stickyGeometry/angle", value); dizmo.setAttribute("stickyGeometry/x", value); dizmo.setAttribute("stickyGeometry/y", value); dizmo.setAttribute("stickyGeometry/zoom", value);
The UI controls location can be addressed in sticky geometry using the pixel information from the following sub-sections (pseudocode):
width is by default the width of the dizmoViewer window, while the value of
height is the height of it. The value of
zoom=1.0 is default, but can be made adaptive using:
var scale = parseFloat( ViewerCore.getProperty('/viewer/attributes/settings/uiscaling')); var dpi = parseFloat( ViewerCore.getProperty('/viewer/attributes/system/logicaldpi')); var zoom = scale * dpi / 96.0;