// // Copyright (c) 2008, Brian Frank and Andy Frank // Licensed under the Academic Free License version 3.0 // // History: // 11 Jul 08 Brian Frank Creation // using gfx ** ** InsetPane creates padding along the four edges of its content. ** @Js @Serializable class InsetPane : ContentPane { ** ** Insets to leave around the edge of the content. ** The default is 12 pixels on all sides. ** Insets insets := defInsets private const static Insets defInsets := Insets(12) ** ** Construct with optional top, right, bottom, left insets. If ** one side is not specified, that value is reflected from the ** opposite side: ** ** InsetPane(5) === InsetPane(5,5,5,5) ** InsetPane(5,6) === InsetPane(5,6,5,6) ** InsetPane(5,6,7) === InsetPane(5,6,7,6) ** new make(Int top := 12, Int? right := null, Int? bottom := null, Int? left := null) { if (right == null) right = top if (bottom == null) bottom = top if (left == null) left = right insets = Insets(top, right, bottom, left) } override Size prefSize(Hints hints := Hints.defVal) { if (content == null) return Size.defVal if (!visible) return Size.defVal insetSize := insets.toSize pref := content.prefSize(hints - insetSize) return Size(pref.w + insetSize.w, pref.h + insetSize.h) } override Void onLayout() { if (content == null) return content.bounds = Rect( insets.left, insets.top, this.size.w - insets.left - insets.right, this.size.h - insets.top - insets.bottom) } }