org.vishia.gral.base

## Interface GralWidgImpl_ifc

- All Known Implementing Classes:
    AwtButton, AwtLabel, AwtSubWindow, AwtTextBox, AwtTextField, GralButton.GraphicImplAccess, GralCurveView.GraphicImplAccess, GralHorizontalSelector.GraphicImplAccess, GralHtmlBox.ImplAccess, GralLabel.GraphicImplAccess, GralLed.GraphicImplAccess, GralPanelContent.ImplAccess, GralPanelContent.MethodsCalledbackFromImplementation, GralPlotArea._GraphicImplAccess_, GralSlider._GraphicImplAccess_, GralTabbedPanel.ImplAccess, GralTable.GraphicImplAccess, GralTextBox.GraphicImplAccess, GralTextField.GraphicImplAccess, GralValueBar.GraphicImplAccess, GralWidget.ImplAccess, GralWindow.GraphicImplAccess, SwtButton, SwtCanvasStorePanel, SwtCurveView, SwtGridPanel, SwtHorizontalSelector, SwtHtmlBox, SwtLabel, SwtLed, SwtPanel, SwtPlotArea, SwtSlider, SwtSubWindow, SwtTabbedPanel, SwtTable, SwtTextBox, SwtTextFieldWrapper, SwtValueBar, SwtWidgetSimpleWrapper

      public interface GralWidgImpl_ifc

  This interface is used as reference to the implementation layer for all widgets. It defines all possible calls from the application to the implementation widget.
  Note that most of user requirements are done by the `GralWidget` capability and the capabilities of its derived classes, for example `GralWidget.setText(CharSequence)` or `GralWidget.setBackColor(org.vishia.gral.ifc.GralColor, int)`. That methods stores the text, color etc. in graphic-independent attributes. The method `repaintGthread()` is the central method to realize that user stimuli for the implementation graphic layer. That method can use especially the `GralWidget.DynamicData` and there quest method `GralWidget.DynamicData.whatIsChanged`. There is no needing of methods such as `setText(String)` etc. because the user should able to set the text in any thread. See concept of data set described on `GralWidget.setText(CharSequence)` See `GralWidget._wdgImpl`.
  Since:
    2013-06

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `GralRectangle` | `getPixelPositionSize()`
    `java.lang.Object` | `getWidgetImplementation()` Returns the implementation class of the widget.
    `void` | `removeWidgetImplementation()` Removes the graphical widget in the graphic.
    `void` | `repaintGthread()` This method should be implemented in all Widget implementations of the adapter for the underlying graphic system.
    `void` | `setBoundsPixel(int x, int y, int dx, int dy)`
    `boolean` | `setFocusGThread()` Sets the focus to the widget.
    `void` | `setVisibleGThread(boolean bVisible)` Sets the implementation widget(s) visible state.

- - ### Method Detail

    - #### setFocusGThread

          boolean setFocusGThread()

      Sets the focus to the widget. See `GralMng_ifc#setFocus(GralWidget)`.
      Returns:
        true if it has the focus after this operation. false on any error.

    - #### setVisibleGThread

          void setVisibleGThread(boolean bVisible)

      Sets the implementation widget(s) visible state. The widgets are really invisible, or they are visible in principle, but they can be covered by other windows or clipping. This method should set the `GralWidget.bVisibleState` too. Therewith it is able to quest `GralWidget.isVisible()` in any thread.
      Parameters:
        `bVisible` - true then the widget should be visible, false it is set to invisible.

    - #### removeWidgetImplementation

          void removeWidgetImplementation()

      Removes the graphical widget in the graphic.

    - #### repaintGthread

          void repaintGthread()

      This method should be implemented in all Widget implementations of the adapter for the underlying graphic system.
      Implementation hints: In SWT it should call redraw().
      It is possible that the widget consists of more as one graphical widget, then all of it should be redrawn. It is possible that some data are set in another thread, they should be applied to the widgets firstly. It is possible that the widget is removed though a repaintGthread-order is pending from the time before deleting, for example if the graphic layout is changed.
      See `#repaintRequ`

    - #### getWidgetImplementation

          java.lang.Object getWidgetImplementation()

      Returns the implementation class of the widget. If the widget has more as one implementation widgets, this method returns one of the widgets, usual the first important one respectively that widget which represents the implementation layer. A widget of the implementation layer is a SWT.control or a `Component`.
      If more as one widget are part of the GralWidget, use the special `GralWidget._wdgImpl` class which should contain the references to that implementation widgets.

    - #### setBoundsPixel

          void setBoundsPixel(int x,
                              int y,
                              int dx,
                              int dy)

    - #### getPixelPositionSize

          GralRectangle getPixelPositionSize()