Class Widget

    • Field Detail

      • eventsToSink

        int eventsToSink
        A bit-map of the events that should be sunk when the widget is attached to the DOM. (We delay the sinking of events to improve startup performance.) When the widget is attached, this is set to -1

        Package protected to allow Composite to see it.

    • Constructor Detail

      • Widget

        public Widget()
    • Method Detail

      • asWidgetOrNull

        public static Widget asWidgetOrNull​(IsWidget w)
        This convenience method makes a null-safe call to IsWidget.asWidget().
        Returns:
        the widget aspect, or null if w is null
      • addDomHandler

        public final <H extends EventHandlerHandlerRegistration addDomHandler​(H handler,
                                                                                DomEvent.Type<H> type)
        Adds a native event handler to the widget and sinks the corresponding native event. If you do not want to sink the native event, use the generic addHandler method instead.
        Type Parameters:
        H - the type of handler to add
        Parameters:
        type - the event key
        handler - the handler
        Returns:
        HandlerRegistration used to remove the handler
      • addHandler

        public final <H extends EventHandlerHandlerRegistration addHandler​(H handler,
                                                                             GwtEvent.Type<H> type)
        Adds this handler to the widget.
        Type Parameters:
        H - the type of handler to add
        Parameters:
        type - the event type
        handler - the handler
        Returns:
        HandlerRegistration used to remove the handler
      • fireEvent

        public void fireEvent​(GwtEvent<?> event)
        Description copied from interface: HasHandlers
        Fires the given event to the handlers listening to the event's type.

        Any exceptions thrown by handlers will be bundled into a UmbrellaException and then re-thrown after all handlers have completed. An exception thrown by a handler will not prevent other handlers from executing.

        Specified by:
        fireEvent in interface HasHandlers
        Parameters:
        event - the event
      • getLayoutData

        public java.lang.Object getLayoutData()
        Gets the panel-defined layout data associated with this widget.
        Returns:
        the widget's layout data
        See Also:
        setLayoutData(java.lang.Object)
      • getParent

        public Widget getParent()
        Gets this widget's parent panel.
        Returns:
        the widget's parent panel
      • isAttached

        public boolean isAttached()
        Determines whether this widget is currently attached to the browser's document (i.e., there is an unbroken chain of widgets between this widget and the underlying browser document).
        Specified by:
        isAttached in interface HasAttachHandlers
        Returns:
        true if the widget is attached
      • onBrowserEvent

        public void onBrowserEvent​(Event event)
        Description copied from interface: EventListener
        Fired whenever a browser event is received.
        Specified by:
        onBrowserEvent in interface EventListener
        Parameters:
        event - the event received
      • removeFromParent

        public void removeFromParent()
        Removes this widget from its parent widget, if one exists.

        If it has no parent, this method does nothing. If it is a "root" widget (meaning it's been added to the detach list via RootPanel.detachOnWindowClose(Widget)), it will be removed from the detached immediately. This makes it possible for Composites and Panels to adopt root widgets.

        Throws:
        java.lang.IllegalStateException - if this widget's parent does not support removal (e.g. Composite)
      • setLayoutData

        public void setLayoutData​(java.lang.Object layoutData)
        Sets the panel-defined layout data associated with this widget. Only the panel that currently contains a widget should ever set this value. It serves as a place to store layout bookkeeping data associated with a widget.
        Parameters:
        layoutData - the widget's layout data
      • sinkEvents

        public void sinkEvents​(int eventBitsToAdd)
        Overridden to defer the call to super.sinkEvents until the first time this widget is attached to the dom, as a performance enhancement. Subclasses wishing to customize sinkEvents can preserve this deferred sink behavior by putting their implementation behind a check of isOrWasAttached():
         @Override
         public void sinkEvents(int eventBitsToAdd) {
           if (isOrWasAttached()) {
             /* customized sink code goes here */
           } else {
             super.sinkEvents(eventBitsToAdd);
          }
        } 
        Overrides:
        sinkEvents in class UIObject
        Parameters:
        eventBitsToAdd - a bitfield representing the set of events to be added to this element's event set
        See Also:
        Event
      • unsinkEvents

        public void unsinkEvents​(int eventBitsToRemove)
        Description copied from class: UIObject
        Removes a set of events from this object's event list.
        Overrides:
        unsinkEvents in class UIObject
        Parameters:
        eventBitsToRemove - a bitfield representing the set of events to be removed from this element's event set
        See Also:
        UIObject.sinkEvents(int), Event
      • delegateEvent

        protected void delegateEvent​(Widget target,
                                     GwtEvent<?> event)
        Fires an event on a child widget. Used to delegate the handling of an event from one widget to another.
        Parameters:
        event - the event
        target - fire the event on the given target
      • doAttachChildren

        protected void doAttachChildren()
        If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onAttach() for each of its child widgets.
        See Also:
        onAttach()
      • doDetachChildren

        protected void doDetachChildren()
        If a widget contains one or more child widgets that are not in the logical widget hierarchy (the child is physically connected only on the DOM level), it must override this method and call onDetach() for each of its child widgets.
        See Also:
        onDetach()
      • getHandlerCount

        protected int getHandlerCount​(GwtEvent.Type<?> type)
        Gets the number of handlers listening to the event type.
        Parameters:
        type - the event type
        Returns:
        the number of registered handlers
      • isOrWasAttached

        protected final boolean isOrWasAttached()
        Has this widget ever been attached?
        Returns:
        true if this widget ever been attached to the DOM, false otherwise
      • onAttach

        protected void onAttach()

        This method is called when a widget is attached to the browser's document. To receive notification after a Widget has been added to the document, override the onLoad() method or use addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler).

        It is strongly recommended that you override onLoad() or doAttachChildren() instead of this method to avoid inconsistencies between logical and physical attachment states.

        Subclasses that override this method must call super.onAttach() to ensure that the Widget has been attached to its underlying Element.

        Throws:
        java.lang.IllegalStateException - if this widget is already attached
        See Also:
        onLoad(), doAttachChildren()
      • onDetach

        protected void onDetach()

        This method is called when a widget is detached from the browser's document. To receive notification before a Widget is removed from the document, override the onUnload() method or use addAttachHandler(com.google.gwt.event.logical.shared.AttachEvent.Handler).

        It is strongly recommended that you override onUnload() or doDetachChildren() instead of this method to avoid inconsistencies between logical and physical attachment states.

        Subclasses that override this method must call super.onDetach() to ensure that the Widget has been detached from the underlying Element. Failure to do so will result in application memory leaks due to circular references between DOM Elements and JavaScript objects.

        Throws:
        java.lang.IllegalStateException - if this widget is already detached
        See Also:
        onUnload(), doDetachChildren()
      • onLoad

        protected void onLoad()
        This method is called immediately after a widget becomes attached to the browser's document.
      • onUnload

        protected void onUnload()
        This method is called immediately before a widget will be detached from the browser's document.
      • ensureHandlers

        HandlerManager ensureHandlers()
        Ensures the existence of the handler manager.
        Returns:
        the handler manager
      • replaceElement

        void replaceElement​(Element elem)
        Description copied from class: UIObject
        Replaces this object's browser element. This method exists only to support a specific use-case in Image, and should not be used by other classes.
        Overrides:
        replaceElement in class UIObject
        Parameters:
        elem - the object's new element
      • setParent

        void setParent​(Widget parent)
        Sets this widget's parent. This method should only be called by Panel and Composite.
        Parameters:
        parent - the widget's new parent
        Throws:
        java.lang.IllegalStateException - if parent is non-null and the widget already has a parent