▼ |  | Framework: Racket GUI Application Framework

1 | Application
2 | Autosave
3 | Canvas
4 | Color Model
5 | Color Prefs
6 | Color
7 | Comment Box
8 | Editor Snip
9 | Editor
10 | Exit
11 | Finder
12 | Frame
13 | Group
14 | GUI Utilities
15 | Handler
16 | Icon
17 | Keymap
18 | Menu
19 | Mode
20 | Number Snip
21 | Panel
22 | Pasteboard
23 | Path Utils
24 | Preferences
25 | Preferences, Textual
26 | Racket
27 | Text
28 | Splash
29 | Test
30 | Version
| Index

On this page:

panel: single<%>
active-child
panel: single-mixin
after-new-child
container-size
place-children
panel: single-window<%>
panel: single-window-mixin
container-size
panel: single%
panel: single-pane%
panel: dragable<%>
after-percentage-change
set-percentages
get-percentages
get-vertical?
panel: vertical-dragable<%>
panel: horizontal-dragable<%>
panel: dragable-mixin
after-new-child
on-subwindow-event
place-children
container-size
panel: vertical-dragable-mixin
get-vertical?
panel: horizontal-dragable-mixin
get-vertical?
panel: vertical-dragable%
panel: horizontal-dragable%

top ← prev up next →

### 21`` Panel

panel:single<%> : interface?

implements: | area-container<%>

See panel:single-mixin%.

> ( send a-panel:single active-child child) → void
> child : ( is-a?/c area<%> )
> ( send a-panel:single active-child ) → ( is-a?/c area<%> )

> Sets the active child to be child

> Returns the current active child.

panel:single-mixin : ( class? . -> . class? )

argument extends/implements: | area-container<%>

result implements: | panel:single<%>

This mixin adds single panel functionality to an implementation of the area-container<%> interface.
Single panels place all of the children in the center of the panel, and allow make one child to be visible at a time. The active-child method controls which panel is currently active.
The show method is used to hide and show the children of a single panel.

> ( send a-panel:single after-new-child child) → void
> child : subarea<%>

> Overrides after-new-child in area-container<%>.
> Hides this child by calling ( send child show #f), unless this is the first child in which case it does nothing.

> ( send a-panel:single container-size )

> →

> exact-integer |  | exact-integer

> Overrides container-size in area-container<%>.
> Returns the maximum width of all the children and the maximum height of all of the children.

> ( send a-panel:single place-children )
> → ( listof ( list exact-integer exact-integer exact-integer exact-integer))

> Overrides place-children in area-container<%>.
> Returns the positions for single panels and panes.

panel:single-window<%> : interface?

implements: | panel:single<%>
| window<%>

panel:single-window-mixin : ( class? . -> . class? )

argument extends/implements: | panel:single<%>
| window<%>

result implements: | panel:single-window<%>

> ( send a-panel:single-window container-size info)

> →

> exact-integer |  | exact-integer

> info : (list-of ( list exact-integer exact-integer boolean boolean? ))

> Overrides container-size in area-container<%>.
> Factors the border width into the size calculation.

panel:single% : class?
superclass: ( panel:single-window-mixin ( panel:single-mixin panel% ))

panel:single-pane% : class?
superclass: ( panel:single-mixin pane% )

panel:dragable<%> : interface?

implements: | window<%>
| area-container<%>

Classes matching this interface implement a panel where the user can adjust the percentage of the space that each takes up. The user adjusts the size by clicking and dragging the empty space between the children.

> ( send a-panel:dragable after-percentage-change ) → void

> This method is called when the user changes the percentage by dragging the bar between the children, or when a new child is added to the frame, but not when set-percentages is called.

> Use get-percentages to find the current percentages.

> ( send a-panel:dragable set-percentages new-percentages) → void
> new-percentages : ( listof number)

> Call this method to set the percentages that each window takes up of the panel.

> The argument, new-percentages must be a list of numbers that sums to 1. It’s length must be equal to the number of children of the panel (see get-children) and each percentage must correspond to a number of pixels that is equal to or larger than the minimum with of the child, as reported by min-width.

> ( send a-panel:dragable get-percentages ) → ( listof numbers)

> Return the current percentages of the children.

> ( send a-panel:dragable get-vertical? ) → boolean?

> This method controls the behavior of the other overridden methods in mixins that implement this interface.

> If it returns #t, the panel will be vertically aligned and if it returns #f, they will be horizontally aligned.

panel:vertical-dragable<%> : interface?

implements: | panel:dragable<%>

A panel that implements panel:vertical-dragable<%>. It aligns its children vertically.

panel:horizontal-dragable<%> : interface?

implements: | panel:dragable<%>

A panel that implements panel:horizontal-dragable<%>. It aligns its children horizontally.

panel:dragable-mixin : ( class? . -> . class? )

argument extends/implements: | window<%>
| area-container<%>

result implements: | panel:dragable<%>

This mixin adds the panel:dragable<%> functionality to a panel%.
It is not useful unless the get-vertical? method is overridden.

> ( send a-panel:dragable after-new-child child) → void
> child : (instance-of ( is-a?/c area<%> ))

> Overrides after-new-child in area-container<%>.
> Updates the number of percentages to make sure that it matches the number of children and calls after-percentage-change.

> ( send a-panel:dragable on-subwindow-event |  | receiver |  |  |  |
> |  | event) |  | → |  | boolean?

> receiver : (instanceof window<%> )
> event : (instanceof mouse-event% )

> Overrides on-subwindow-event in window<%>.
> When the cursor is dragging the middle bar around, this method handles the resizing of the two panes.

> ( send a-panel:dragable place-children |  | info |
> |  | w |
> |  | h) |

> → (list-of ( list exact-int exact-int exact-int exact-int))
> info : (list-of ( list exact-int exact-int))
> w : exact-int
> h : exact-int

> Overrides place-children in area-container<%>.
> Places the children vertically in the panel, based on the percentages returned from get-percentages. Also leaves a little gap between each pair of children.

> ( send a-panel:dragable container-size info) → two
> info : list

> Overrides container-size in area-container<%>.
> Computes the minimum size the panel would have to be in order to have the current percentages (see get-percentages).

panel:vertical-dragable-mixin : ( class? . -> . class? )

argument extends/implements: | panel:dragable<%>

result implements: | panel:vertical-dragable<%>

This mixin merely overrides the get-vertical? method of the panel:dragable-mixin to return #t.

> ( send a-panel:vertical-dragable get-vertical? ) → boolean?

> Overrides get-vertical? in panel:dragable<%>.
> Returns #t.

panel:horizontal-dragable-mixin : ( class? . -> . class? )

argument extends/implements: | panel:dragable<%>

result implements: | panel:vertical-dragable<%>

This mixin merely overrides the get-vertical? method of the panel:dragable-mixin to return #f.

> ( send a-panel:horizontal-dragable get-vertical? ) → boolean?

> Overrides get-vertical? in panel:dragable<%>.
> Returns #f.

panel:vertical-dragable% : class?
superclass: ( panel:vertical-dragable-mixin ( panel:dragable-mixin vertical-panel% ))

panel:horizontal-dragable% : class?
superclass: ( panel:horizontal-dragable-mixin ( panel:dragable-mixin horizontal-panel% ))

top ← prev up next →