LM-ZOOM
LM-ZOOM moves and resizes controls proportionally to the new dimensions of the window and changes the size of the font within controls according to the new control’s height.
This layout manager doesn’t affect status-bars, menu bars, tool-bars and ribbons.
For each resize action:
deltaX = current window size / previous window size,
deltaY = current window lines / previous window lines.
For each control:
RESIZE-X
size = previous size * deltaX.
RESIZE-Y
lines = previous lines * deltaY.
MOVE-X
column = previous column * deltaX.
MOVE-Y
line = previous line* deltaY.
If the Layout-Data property is not set, each control has its own default behavior.
The list below describes the default behavior of each control:
BAR HORIZONTAL
MOVE-BOTH-ANY + RESIZE-X-ANY
BAR VERTICAL
MOVE-BOTH-ANY + RESIZE-Y-ANY
BITMAP
MOVE-BOTH-ANY
CHECK-BOX
MOVE-BOTH-ANY
COMBO-BOX
MOVE-BOTH-ANY + RESIZE-X-ANY
DATE-ENTRY
MOVE-BOTH-ANY + RESIZE-X-ANY
ENTRY-FIELD
MOVE-BOTH-ANY + RESIZE-X-ANY
ENTRY-FIELD MULTILINE
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
ENTRY-FIELD SPINNER
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
FRAME
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
GRID
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
JAVA-BEAN
MOVE-BOTH-ANY
LABEL
MOVE-BOTH-ANY
LIST-BOX
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
PUSH-BUTTON
MOVE-BOTH-ANY
RADIO-BUTTON
MOVE-BOTH-ANY
SCROLL-BAR HORIZONTAL
MOVE-BOTH-ANY + RESIZE-X-ANY
SCROLL-BAR VERTICAL
MOVE-BOTH-ANY + RESIZE-Y-ANY
SLIDER HORIZONTAL
MOVE-BOTH-ANY + RESIZE-X-ANY
SLIDER VERTICAL
MOVE-BOTH-ANY + RESIZE-Y-ANY
TAB CONTROL
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
TREE-VIEW
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
WEB-BROWSER
MOVE-BOTH-ANY + RESIZE-BOTH-ANY
The user can also specify custom values for some controls directly in the handle definition, without using the Layout-Data property.
Example:
77 h-layout handle of layout-manager, lm-zoom "configuration string".
A sample configuration string is provided in the isresize.def Copybook.
The configuration string is composed of a series of <control-type>=<value> separated by a spaces or comma.
<control-type>=<value> must be a unique word. No space may be put inside. The string is case insensitive.
Example:
77 h-layout handle of layout-manager lm-zoom "bar=119 textarea=119 label=119 frame=119".
The list below describes the <control-type> you can use in the configuration string.
BAR HORIZONTAL
hbar
BAR VERTICAL
vbar
BITMAP
bitmap
CHECK-BOX
checkbox
COMBO-BOX
combobox
DATE-ENTRY
dateentry
ENTRY-FIELD
entryfield
ENTRY-FIELD MULTILINE
textarea
ENTRY-FIELD SPINNER
spinner
FRAME
frame
GRID
grid
JAVA-BEAN
javabean
LABEL
label
LIST-BOX
listbox
PUSH-BUTTON
pushbutton
RADIO-BUTTON
radiobutton
HORIZONTAL SCROLLBAR
hscrollbar
VERTICAL SCROLLBAR
vscrollbar
HORIZONTAL SLIDER
hslider
VERTICAL SLIDER
vslider
TAB CONTROL
tab
TREE-VIEW
treeview
WEB-BROWSER
webbrowser
<value> is a numeric value that is the sum of the constant values that must be used for the control.
In the above sample, 119 is the sum between rlm-resize-x, rlm-move-x, rlm-no-min-x, rlm-resize-y, rlm-move-y, rlm-no-min-y.
Note: inquiring controls Lines and Size properties after the window has been resized returns the initial values and not the new values when the Layout-Manager is LM-ZOOM.
Configuring the font zoom
You can specify a range of dimensions, expressed in percentage, in which the font will be altered. Outside this range, LM-ZOOM behaves exactly the same as LM-SCALE, so it just changes controls’ dimensions and coordinates without affecting the font.
The range is expressed via the iscobol.gui.layout_manager.max_font_zoom and the iscobol.gui.layout_manager.min_font_zoom configuration properties.
Example:
iscobol.gui.layout_manager.max_font_zoom=150
iscobol.gui.layout_manager.min_font_zoom=50
Assuming that the initial font size is 12, when the user reduces the window’s height, LM-ZOOM will reduce the font size accordingly, until it reaches a size of 6. After it, the font will not be reduced anymore. On the other hand, when the user increases the window’s height, LM-ZOOM will increase the font size accordingly, until it reaches a size of 18. After it, the font will not be increased anymore.
The same result can be obtained by adding the max-font-zoom attribute and the min-font-zoom attribute to the configuration string in the layout-manager handle definition, e.g.
77 h-layout handle of layout-manager lm-zoom "bar=119 textarea=119 label=119 frame=119 max-font-zoom=150 min-font-zoom=50".
The attributes in the handle definition have priority over the corresponding configuration properties.