Uploaded image for project: 'Errai'
  1. Errai
  2. ERRAI-1090

ElementWrapperWidget: Add support for inheriting wrapped Element interfaces


    • Type: Feature Request
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: ErraiUI
    • Labels:


      AppFormer uses a ScrollPanel Widget to hold the "views" for WorkbenchPanelView (that implement RequiresResize. This allows child/inner "views" to receive notification of when their parent resizes.

      To future proof ourselves from the (probable) removal of Widget from GWT (v3) we endeavour to ensure ALL new "view" development implements IsElement, have a HTML @Templated and HTML definition. In order to "use" these in a WorkbenchPanelView they must be wrapped by ElementWrapperWidget.

      However if the child IsElement based "view" implements RequiresResize (so it can resize itself based upon it's parent) the implemented interface is "lost" by the wrapping process and the "resize" chain is broken between AF's outer most ScrollPanel and a nested RequiresResize "view".

      The feature request is for any interface to be exposed by the wrapper; making the resultant Widget wrapper appear to have the same API as the wrapped IsElement; however at the moment my only use-case is for RequiresResize.

      There will no doubt be some discussion as to whether a child "view" should need to be notified of a parent resize; all things given vanilla HTML/CSS should ensure the layout of a child flows/follows etc its parent and indeed when the Widget ecosystem is killed RequiresResize may die too. However at the moment we have a (unique?) use-case that is probably easier to demonstrate than describe here. Therefore feel free to ping me!

        Gliffy Diagrams




              • Assignee:
                mbarkley Max Barkley
                manstis Michael Anstis
              • Votes:
                0 Vote for this issue
                1 Start watching this issue


                • Created: