Interface NativeWindow

All Superinterfaces:
NativeSurface, NativeSurfaceHolder, SurfaceUpdatedListener
All Known Subinterfaces:
Window
All Known Implementing Classes:
GLWindow, JAWTWindow

public interface NativeWindow extends NativeSurface, NativeSurfaceHolder
Extend the NativeSurface interface with windowing information such as window-handle, window-size and window-position.

All values of this interface are represented in window units, if not stated otherwise. See NativeSurface.

Coordinate System

  • Abstract screen space has it's origin in the top-left corner, and may not be at 0/0.
  • Window origin is in it's top-left corner, see getX() and getY().
  • Window client-area excludes insets, i.e. window decoration.
  • Window origin is relative to it's parent window if exist, or the screen position (top-level).

A window toolkit such as the AWT may either implement this interface directly with one of its components, or provide and register an implementation of NativeWindowFactory which can create NativeWindow objects for its components.

  • Method Details

    • getNativeSurface

      NativeSurface getNativeSurface()
      Returns the associated NativeSurface of this NativeSurfaceHolder.

      Returns this instance, which is-a NativeSurface.

      Specified by:
      getNativeSurface in interface NativeSurfaceHolder
    • destroy

      void destroy()
      Destroys this window incl. releasing all related resources.
    • getParent

      NativeWindow getParent()
      Returns:
      The parent NativeWindow, or null if this NativeWindow is top level.
    • getWindowHandle

      long getWindowHandle()
      Returns the window handle for this NativeWindow.

      The window handle shall reflect the platform one for all window related operations, e.g. open, close, resize.

      On X11 this returns an entity of type Window.
      On Microsoft Windows this returns an entity of type HWND.

    • getInsets

      InsetsImmutable getInsets()
      Returns the insets defined as the width and height of the window decoration on the left, right, top and bottom in window units.

      Insets are zero if the window is undecorated, including child windows.

      Insets are available only after the native window has been created, ie. the native window has been made visible.
      The top-level window area's top-left corner is located at

         getX() - getInsets().getLeftWidth()
         getY() - getInsets().getTopHeight()
       
      The top-level window size is
         getWidth()  + getInsets().getTotalWidth()
         getHeight() + getInsets().getTotalHeight()
       
      Returns:
      insets
    • getX

      int getX()
      Returns the x position of the top-left corner of the client area relative to it's parent in window units.

      If no parent exist (top-level window), this coordinate equals the screen coordinate.

      Since the position reflects the client area, it does not include the insets.

      See Coordinate System.

      See Also:
    • getY

      int getY()
      Returns the current y position of the top-left corner of the client area relative to it's parent in window units.

      If no parent exist (top-level window), this coordinate equals the screen coordinate.

      Since the position reflects the client area, it does not include the insets.

      See Coordinate System.

      See Also:
    • getWidth

      int getWidth()
      Returns the width of the client area excluding insets (window decorations) in window units.
      Returns:
      width of the client area in window units
      See Also:
    • getHeight

      int getHeight()
      Returns the height of the client area excluding insets (window decorations) in window units.
      Returns:
      height of the client area in window units
      See Also:
    • getLocationOnScreen

      Point getLocationOnScreen(Point point)
      Returns the window's top-left client-area position in the screen.

      If Point is not null, it is translated about the resulting screen position and returned.

      See Coordinate System.

      Since the position reflects the client area, it does not include the insets.

      Parameters:
      point - Optional Point storage. If not null, null, it is translated about the resulting screen position and returned.
      See Also:
    • hasFocus

      boolean hasFocus()
      Returns true if this native window owns the focus, otherwise false.