org.vishia.gral.base

## Class GralTable.TableLineData

- java.lang.Object
- - org.vishia.util.TreeNodeBase<GralTable.TableLineData,UserData,GralTableLine_ifc<UserData>>
  - - org.vishia.gral.base.GralTable.NodeTableLine
    - - org.vishia.gral.base.GralTable.TableLineData

- All Implemented Interfaces:
    java.lang.Iterable<GralTable.TableLineData>, GralTableLine_ifc<UserData>, GralWidget_ifc, MarkMask_ifc, Removeable, SortedTree<GralTableLine_ifc<UserData>>, TreeNode_ifc<GralTable.TableLineData,UserData>
  Enclosing class:
    GralTable<UserData>

      public final class GralTable.TableLineData
      extends GralTable.NodeTableLine
      implements MarkMask_ifc, GralTableLine_ifc<UserData>

  An instance of this class presents a line in a table or a node or leaf in a tree. It is not associated with a graphical representation primary, it is a container element only. The graphical representation refers this class. A table line contains:
  - Association to user data for application usage, unused in graphic: `TreeNodeBase.data`
  - Texts for all cells of the table: `cellTexts`
  - background and text color for the line (all cells) `colorBackground`, `colorForeground`
  - Maybe background colors for all or some cells, null if the cell have the line back color
  - Information about marking: `markMask`
  - Information whether the line was changed (any cell): `TableLineData#bChanged`.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.vishia.util.TreeNodeBase

      `TreeNodeBase.IteratorDerivedImpl, TreeNodeBase.IteratorDerivedNode, TreeNodeBase.IteratorImpl, TreeNodeBase.IteratorMetaNode, TreeNodeBase.IteratorOneNode, TreeNodeBase.MetaNode<DerivedNode extends TreeNodeBase<DerivedNode,Data,IfcType> & SortedTree<IfcType>,Data,IfcType extends SortedTree<IfcType>>, TreeNodeBase.TreeNode<Data>`

    - ### Nested classes/interfaces inherited from interface org.vishia.gral.ifc.GralWidget_ifc

      `GralWidget_ifc.ActionChange, GralWidget_ifc.ActionChangeWhen`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean[]` | `bChangedEdit` True if any of a cell text was changed by manual edit.
    `protected boolean[]` | `bChangedSet` True if any of a cell text was changed by manual edit.
    `GralColor[]` | `cellColorBack` If not null, then a special background color for the cell.
    `java.lang.String[]` | `cellTexts`
    `GralColor` | `colorBackground`
    `GralColor` | `colorBackMarked`
    `GralColor` | `colorBackSelect`
    `GralColor` | `colorBackSelectMarked`
    `GralColor` | `colorBackSelectSomeMarked`
    `GralColor` | `colorBackSomeMarked`
    `GralColor` | `colorForeground`
    `java.util.concurrent.atomic.AtomicInteger` | `ctRepaintLine` If a repaint is necessary, it is changed by increment by 1.
    `(package private) SelectMask` | `markMask`
    `private java.lang.String` | `sDataPath` A line may have its datapath adequate a `GralWidget`, only used for `getDataPath()` and `setDataPath(String)`.

    - ### Fields inherited from class org.vishia.gral.base.GralTable.NodeTableLine

      `lineCanHaveChildren, showChildren, treeDepth, zLineUnfolded`

    - ### Fields inherited from class org.vishia.util.TreeNodeBase

      `data, firstChild, idxChildren, key, lastChild, leafData, next, nrofChildren, parent, prev, version`

    - ### Fields inherited from interface org.vishia.gral.ifc.GralTableLine_ifc

      `version`

    - ### Fields inherited from interface org.vishia.gral.ifc.GralWidget_ifc

      `sVersion`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TableLineData(java.lang.String key, UserData data)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `createImplWidget_Gthread()` Sets this widget to the current panel at the current given position.
    `GralWidget_ifc.ActionChange` | `getActionChange(GralWidget_ifc.ActionChangeWhen when)`
    `GralColor` | `getBackColor(int ix)` Gets the background color for the widget.
    `java.lang.String` | `getCellText(int column)` Returns the text which is assigned to the cell of the table.
    `java.lang.String[]` | `getCellTexts()`
    `java.lang.String` | `getCmd()` Any widget can have a command String, which can be quest for example in an action.
    `long` | `getContentIdent()` Gets the content identification of the users data which are set with `GralWidget_ifc.setContentIdent(long)`.
    `java.lang.Object` | `getContentInfo()`
    `UserData` | `getData()` Gets the application specific info.
    `java.lang.String` | `getDataPath()`
    `int` | `getMark()` Returns the selection mask of this object.
    `java.lang.String` | `getName()`
    `int` | `getSelectedColumn()`
    `GralTable<UserData>` | `getTable()` Gets the table where this line is member of.
    `UserData` | `getUserData()` Returns the instance which is related to the line on #setUserData or on construction.
    `GralMng` | `gralMng()` Returns the associated singleton GralMng.
    `boolean` | `isChanged(boolean setUnchanged)` Returns true if the content is changed from a user action on GUI.
    `boolean` | `isEditable()` Query whether the table line is able to edit: Return from the whole table.
    `boolean` | `isGraphicDisposed()` Returns true if the graphic implementatin widget was initialized, and then it was disposed.
    `boolean` | `isInFocus()` Returns true if this widget is the focused one.
    `boolean` | `isNotEditableOrShouldInitialize()` Query whether this field should be written from any initial or actual data.
    `boolean` | `isVisible()` Returns whether the widget is visible or not.
    `GralTable.TableLineData` | `parentNode()`
    `private void` | `prepareAddedLine(java.lang.String[] lineTexts)`
    `void` | `refreshFromVariable(VariableContainer_ifc container)` Capability for any widget to update its content from its associated variables described in its sDataPath.
    `void` | `refreshFromVariable(VariableContainer_ifc container, long timeAtleast, GralColor colorRefreshed, GralColor colorOld)`
    `boolean` | `remove()` Removes all referenced data, close all opened resources, removes all graphical widgets etc.
    `void` | `repaint()` repaint request.
    `void` | `repaint(int delay, int latest)` Possible delayed repaint, can be called in any thread.
    `void` | `setBackColor(GralColor colorNormal, GralColor colorSelected, GralColor colorMarked, GralColor colorSomeMarked, GralColor colorSelectMarked, int ix)` Sets the background color for a special cell of line or for all cells of this line which has not a special cell color for the several states of the line.
    `void` | `setBackColor(GralColor color, int ix)` Sets the background color of the whole line or one cell.
    `GralColor` | `setBackgroundColor(GralColor color)` Deprecated.
    `void` | `setBoundsPixel(int x, int y, int dx, int dy)`
    `java.lang.String` | `setCellText(java.lang.String text, int column)`
    `void` | `setCmd(java.lang.String cmd)` Any widget can have a command String, which can be quest for example in an action.
    `long` | `setContentIdent(long date)` Sets a identification for the shown data.
    `void` | `setData(java.lang.Object data)` Sets a application specific data.
    `void` | `setDataPath(java.lang.String sDataPath)` Sets the data path.
    `void` | `setEditable(boolean editable)` Sets whether it is able to edit the content of the text field or text box.
    `void` | `setFocus()` Sets the focus to the widget. .
    `void` | `setFocus(int delay, int latest)` Sets the focus to the widget. .
    `GralColor` | `setForegroundColor(GralColor color)` Deprecated.
    `void` | `setHtmlHelp(java.lang.String url)` Sets the html help url for this widget.
    `void` | `setLineColor(GralColor color, int ix)` Sets the line color for the widget.
    `int` | `setMarked(int mask, java.lang.Object data)` Sets the mark status of the line.
    `int` | `setNonMarked(int mask, java.lang.Object data)` Sets the mark status of the line.
    `void` | `setText(java.lang.CharSequence text)` Set the text of the widget.
    `void` | `setTextColor(GralColor color)` Sets the text color for the widget.
    `void` | `setToPanel(GralMngBuild_ifc mng)` Deprecated.
    `boolean` | `setVisible(boolean visible)` Sets this widget visible on graphic or invisible.
    `void` | `showChildren(boolean show, boolean bLeftGrandChildrenOpen)` Opens or closes showing children of this line.
    `void` | `showChildren(boolean show, boolean bLeftGrandChildrenOpen, boolean showReally)`
    `java.lang.String` | `toString()`
    `int` | `treeDepth()`
    `boolean` | `wasCelltextSet(int column)`

    - ### Methods inherited from class org.vishia.gral.base.GralTable.NodeTableLine

      `addChildLine, addNextLine, addPrevLine, adjCountChildrenInParent, clear, countChildren, countChildren, deleteLine`

    - ### Methods inherited from class org.vishia.util.TreeNodeBase

      `addLeaf, addNode, addNode, addNodeFirst, addSiblingNext, addSiblingPrev, childNodes, childNodes, detach, firstChild, getChild, getContainerChildren, getKey, getNode, getOrCreateNode, getParent, getParentData, hasChildren, iterator, iteratorChildren, iteratorChildren, iterChildren, iterChildren, lastChild, listChildren, listChildren, movetoFirstChild, movetoSiblingNext, movetoSiblingPrev, newNode, nextSibling, nrofChildren, parent, parentEquals, prevSibling, removeChildren, swap, walkTree`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.vishia.gral.ifc.GralTableLine_ifc

      `addChildLine, addNextLine, addPrevLine, deleteLine`

    - ### Methods inherited from interface org.vishia.util.SortedTree

      `getChild, getParent, iterChildren, iterChildren, listChildren, listChildren`

    - ### Methods inherited from interface org.vishia.util.TreeNode_ifc

      `addNode, addNode, addNodeFirst, addSiblingNext, detach, firstChild, getKey, getNode, getOrCreateNode, getParentData, hasChildren, iteratorChildren, iteratorChildren, lastChild, nextSibling, nrofChildren, parent, parentEquals, prevSibling, removeChildren`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### markMask

          SelectMask markMask

    - #### ctRepaintLine

          public java.util.concurrent.atomic.AtomicInteger ctRepaintLine

      If a repaint is necessary, it is changed by increment by 1. If the redraw is executed and no other redraw is requested, it is set to 0. If another redraw is requested while the redraw runs but isn't finished, it should be executed a second time. Therefore it isn't reset to 0.

    - #### cellTexts

          public final java.lang.String[] cellTexts

    - #### cellColorBack

          public GralColor[] cellColorBack

      If not null, then a special background color for the cell. Elsewhere the cell will be shown in the `colorBackground` of the line or the `GralTable.colorBackMarked` etc. of the table.

    - #### sDataPath

          private java.lang.String sDataPath

      A line may have its datapath adequate a `GralWidget`, only used for `getDataPath()` and `setDataPath(String)`.

    - #### bChangedEdit

          protected final boolean[] bChangedEdit

      True if any of a cell text was changed by manual edit.

    - #### bChangedSet

          protected final boolean[] bChangedSet

      True if any of a cell text was changed by manual edit.

    - #### colorForeground

          public GralColor colorForeground

    - #### colorBackground

          public GralColor colorBackground

    - #### colorBackSelect

          public GralColor colorBackSelect

    - #### colorBackSelectMarked

          public GralColor colorBackSelectMarked

    - #### colorBackSelectSomeMarked

          public GralColor colorBackSelectSomeMarked

    - #### colorBackMarked

          public GralColor colorBackMarked

    - #### colorBackSomeMarked

          public GralColor colorBackSomeMarked

  - ### Constructor Detail

    - #### TableLineData

          TableLineData(java.lang.String key,
                        UserData data)

  - ### Method Detail

    - #### getTable

          public GralTable<UserData> getTable()

      Gets the table where this line is member of.
      Specified by:
        `getTable` in interface `GralTableLine_ifc<UserData>`

    - #### prepareAddedLine

          private void prepareAddedLine(java.lang.String[] lineTexts)

    - #### setEditable

          public void setEditable(boolean editable)

      Description copied from interface: `GralWidget_ifc`
      Sets whether it is able to edit the content of the text field or text box. If a content is not able to edit, it is a showing field or box. The user can't change the content. But the user can set the cursor, select any text and copy to the systems clipboard. If the content is able to edit, the change should be notified and the content should be gotten. To do that TODO
      Specified by:
        `setEditable` in interface `GralWidget_ifc`
      Parameters:
        `editable` - true then the content is going to be able to change. False then the edit functionality is disabled.

    - #### isEditable

          public boolean isEditable()

      Query whether the table line is able to edit: Return from the whole table.
      Specified by:
        `isEditable` in interface `GralWidget_ifc`
      See Also:
        `GralWidget_ifc.isEditable()`

    - #### isNotEditableOrShouldInitialize

          public boolean isNotEditableOrShouldInitialize()

      Description copied from interface: `GralWidget_ifc`
      Query whether this field should be written from any initial or actual data.
      Specified by:
        `isNotEditableOrShouldInitialize` in interface `GralWidget_ifc`

    - #### isGraphicDisposed

          public boolean isGraphicDisposed()

      Description copied from interface: `GralWidget_ifc`
      Returns true if the graphic implementatin widget was initialized, and then it was disposed. It is able to use especially to detect whether a sub window is closed or if the primary window was closed, to finish any other (waiting) thread. It may be used on any disposed widget.
      Specified by:
        `isGraphicDisposed` in interface `GralWidget_ifc`
      Returns:
        true if the Widget was created and after them disposed again.

    - #### isChanged

          public boolean isChanged(boolean setUnchanged)

      Description copied from interface: `GralWidget_ifc`
      Returns true if the content is changed from a user action on GUI.
      Specified by:
        `isChanged` in interface `GralWidget_ifc`
      Parameters:
        `setUnchanged` - If true then set to unchanged with this call.
      Returns:
        true if the content was changed since last setUnchanged.

    - #### wasCelltextSet

          public boolean wasCelltextSet(int column)

    - #### parentNode

          public GralTable.TableLineData parentNode()

      Specified by:
        `parentNode` in interface `GralTableLine_ifc<UserData>`

    - #### getName

          public java.lang.String getName()

      Specified by:
        `getName` in interface `GralWidget_ifc`

    - #### setCmd

          public void setCmd(java.lang.String cmd)

      Description copied from interface: `GralWidget_ifc`
      Any widget can have a command String, which can be quest for example in an action. The widget can be identified by its `GralWidget_ifc.getCmd()` independent of its name which can be set on runtime with this method.
      Specified by:
        `setCmd` in interface `GralWidget_ifc`

    - #### getCmd

          public java.lang.String getCmd()

      Description copied from interface: `GralWidget_ifc`
      Any widget can have a command String, which can be quest for example in an action. The widget can be identified by this method independent of its name. See `GralWidget_ifc.setCmd(String)`.
      Specified by:
        `getCmd` in interface `GralWidget_ifc`

    - #### getCellText

          public java.lang.String getCellText(int column)

      Description copied from interface: `GralTableLine_ifc`
      Returns the text which is assigned to the cell of the table.
      Specified by:
        `getCellText` in interface `GralTableLine_ifc<UserData>`
      Parameters:
        `column` - The column of table.
      Returns:
        If the cell text, an empty text "" if the cell has not any text assigned.

    - #### getCellTexts

          public java.lang.String[] getCellTexts()

      Specified by:
        `getCellTexts` in interface `GralTableLine_ifc<UserData>`

    - #### treeDepth

          public int treeDepth()

    - #### setCellText

          public java.lang.String setCellText(java.lang.String text,
                                              int column)

      Specified by:
        `setCellText` in interface `GralTableLine_ifc<UserData>`

    - #### getUserData

          public UserData getUserData()

      Description copied from interface: `GralTableLine_ifc`
      Returns the instance which is related to the line on #setUserData or on construction. It is the same like GralWidget_ifct#getContentInfo.
      Specified by:
        `getUserData` in interface `GralTableLine_ifc<UserData>`

    - #### setContentIdent

          public long setContentIdent(long date)

      Description copied from interface: `GralWidget_ifc`
      Sets a identification for the shown data. A widget may not need to refresh if the contentIdent is not changed. A refresh of a widget's content may have side effects in user handling such as selection of text etc. See `GralWidget_ifc.getContentIdent()`.
      Specified by:
        `setContentIdent` in interface `GralWidget_ifc`
      Parameters:
        `date` - any number which identifies the value of content.
      Returns:
        the last stored ident.

    - #### getContentIdent

          public long getContentIdent()

      Description copied from interface: `GralWidget_ifc`
      Gets the content identification of the users data which are set with `GralWidget_ifc.setContentIdent(long)`.
      Specified by:
        `getContentIdent` in interface `GralWidget_ifc`

    - #### getSelectedColumn

          public int getSelectedColumn()

      Specified by:
        `getSelectedColumn` in interface `GralTableLine_ifc<UserData>`

    - #### setVisible

          public boolean setVisible(boolean visible)

      Description copied from interface: `GralWidget_ifc`
      Sets this widget visible on graphic or invisible. Any widget can be visible or not. More as one widgets can use the same position, only one of them may set visible. For a `GralWindow`, its the visibility of the whole window. Note that a window which is invisible is not shown in the task bar of the operation system. Note that an application can have more as one window. Note that a dialog window can be set to invisible if it is not need yet instead destroy and build newly.
      Specified by:
        `setVisible` in interface `GralWidget_ifc`
      Returns:

    - #### setFocus

          public void setFocus()

      Description copied from interface: `GralWidget_ifc`
      Sets the focus to the widget. . It can be called in any thread. If it is called in the graphic thread, the repaint action is executed immediately in the thread. Elsewhere the graphic thread will be woken up.
      Specified by:
        `setFocus` in interface `GralWidget_ifc`

    - #### setFocus

          public void setFocus(int delay,
                               int latest)

      Description copied from interface: `GralWidget_ifc`
      Sets the focus to the widget. . It can be called in any thread. If it is called in the graphic thread, the repaint action is executed immediately in the thread. Elsewhere the graphic thread will be woken up.
      Specified by:
        `setFocus` in interface `GralWidget_ifc`

    - #### isInFocus

          public boolean isInFocus()

      Description copied from interface: `GralWidget_ifc`
      Returns true if this widget is the focused one.
      Specified by:
        `isInFocus` in interface `GralWidget_ifc`

    - #### isVisible

          public boolean isVisible()

      Description copied from interface: `GralWidget_ifc`
      Returns whether the widget is visible or not. This method can be invoked in any thread. It is an estimation because the state of the widget may be changed in the last time or a window can be covered by another one. The widget is not visible if it is a member of a card in a tabbed panel and that tab is not the selected one.
      Specified by:
        `isVisible` in interface `GralWidget_ifc`
      Returns:
        true if the widget seams to be visible.

    - #### setBackgroundColor

          @Deprecated
          public GralColor setBackgroundColor(GralColor color)

      Deprecated.
      Specified by:
        `setBackgroundColor` in interface `GralWidget_ifc`

    - #### setForegroundColor

          @Deprecated
          public GralColor setForegroundColor(GralColor color)

      Deprecated.
      Specified by:
        `setForegroundColor` in interface `GralWidget_ifc`

    - #### setBackColor

          public void setBackColor(GralColor color,
                                   int ix)

      Sets the background color of the whole line or one cell.
      Specified by:
        `setBackColor` in interface `GralWidget_ifc`
      Parameters:
        `ix` - -1 for the whole line, >=0 for one cell.
        `color` - Any color

    - #### getBackColor

          public GralColor getBackColor(int ix)

      Description copied from interface: `GralWidget_ifc`
      Gets the background color for the widget.
      Specified by:
        `getBackColor` in interface `GralWidget_ifc`
      Parameters:
        `ix` - 0 if only one color is supported, 1, ... if the widget has more as one background.
      Returns:
        color Any color

    - #### setBackColor

          public void setBackColor(GralColor colorNormal,
                                   GralColor colorSelected,
                                   GralColor colorMarked,
                                   GralColor colorSomeMarked,
                                   GralColor colorSelectMarked,
                                   int ix)

      Sets the background color for a special cell of line or for all cells of this line which has not a special cell color for the several states of the line.
      Specified by:
        `setBackColor` in interface `GralTableLine_ifc<UserData>`
      Parameters:
        `colorNormal` - non selected, non marked
        `colorSelected` - non marked, the selected line.
        `colorMarked` - marked, not the selected line
        `colorSomeMarked` - some marked, not the selected line
        `colorSelectMarked` - marked or some marked, the selected line.
        `ix` - -1 for the line, 0... for one cell of the line.

    - #### setLineColor

          public void setLineColor(GralColor color,
                                   int ix)

      Description copied from interface: `GralWidget_ifc`
      Sets the line color for the widget.
      Specified by:
        `setLineColor` in interface `GralWidget_ifc`
      Parameters:
        `color` - Any color
        `ix` - 0 if only one color is supported, 1, ... if the widget has more as one line.

    - #### setTextColor

          public void setTextColor(GralColor color)

      Description copied from interface: `GralWidget_ifc`
      Sets the text color for the widget.
      Specified by:
        `setTextColor` in interface `GralWidget_ifc`
      Parameters:
        `color` - Any color

    - #### setText

          public void setText(java.lang.CharSequence text)

      Description copied from interface: `GralWidget_ifc`
      Set the text of the widget. If the widget is a button, the standard button text is changed. If it is a window, its title is changed.
      Concept of changing a widget from application:
      Here the generally approach is described, appropriate for this method, but in the same kind for all methods to set something like `GralWidget_ifc.setBackColor(GralColor, int)` etc.
      With the set methods the user stores the text, color etc. in graphic-independent attributes. Then the method `GralWidget_ifc.repaint(int, int)` is invoked with the standard delay of `#repaintDelay` and `#repaintDelayMax`. With that the widget-specific private instance of `#repaintRequ` is added to the queue of requests in the `GralGraphicThread#addTimeOrder(GralGraphicTimeOrder)`. In the requested time that dispatch order is executed in the graphic thread. It calls `GralWidgImpl_ifc.repaintGthread()`. That method is implemented in the graphic implementation layer of the widget. It sets the appropriate values from the independent Gral attributes to the implementation specifics and invoke a redraw of the graphic layer.
      If more as one attribute is changed one after another, only one instance of the `GralGraphicTimeOrder` is queued. All changed attributes are stored in `DynamicData#whatIsChanged` and the `GralWidgImpl_ifc.repaintGthread()` quests all changes one after another. It means that a thread switch is invoked only one time per widget for more as one change.
      See `DynamicData`. That composite part of a widget stores all standard dynamic data of a widget.
      Specified by:
        `setText` in interface `GralWidget_ifc`

    - #### showChildren

          public void showChildren(boolean show,
                                   boolean bLeftGrandChildrenOpen)

      Description copied from interface: `GralTableLine_ifc`
      Opens or closes showing children of this line. It is for tree view.
      Specified by:
        `showChildren` in interface `GralTableLine_ifc<UserData>`
      Parameters:
        `show` - true then show, false then close this bough.
        `bLeftGrandChildrenOpen` - if show==true, false then close sub children boughs of this, true left opened grand children open. This is an important behavior of operating with a tree view. Both variants are desirable in different situations.

    - #### showChildren

          public void showChildren(boolean show,
                                   boolean bLeftGrandChildrenOpen,
                                   boolean showReally)

      Specified by:
        `showChildren` in interface `GralTableLine_ifc<UserData>`

    - #### repaint

          public void repaint()

      Description copied from interface: `GralWidget_ifc`
      repaint request. It can be called in any thread. If it is called in the graphic thread, the repaint action is executed immediately in the thread. Elsewhere the graphic thread will be waken up in the standard repaint time (about 100 ms). If this routine is invoked more as one time before the standard repaint time expires and not in the graphic thread, then the repaint is executed only one time after the given delay with the last set data. See `GralWidget_ifc.repaint(int, int)`
      Specified by:
        `repaint` in interface `GralWidget_ifc`

    - #### repaint

          public void repaint(int delay,
                              int latest)

      Description copied from interface: `GralWidget_ifc`
      Possible delayed repaint, can be called in any thread. If this method is re-called in the time where the delay is not elapsed then the delay will be set newly, the timer is winding up again. But the latest time on first call will be used.
      Specified by:
        `repaint` in interface `GralWidget_ifc`
      Parameters:
        `delay` - in milliseconds. If 0 or less 0, then it is executed immediately if the calling thread is the graphic thread.
        `latest` - The latest draw time in milliseconds. If it is less 0, then it is unused. If it is 0 or less delay if a delay is given, then the delay isn't wound up on re-call.

    - #### setBoundsPixel

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

      Specified by:
        `setBoundsPixel` in interface `GralWidget_ifc`

    - #### refreshFromVariable

          public void refreshFromVariable(VariableContainer_ifc container)

      Description copied from interface: `GralWidget_ifc`
      Capability for any widget to update its content from its associated variables described in its sDataPath.
      Specified by:
        `refreshFromVariable` in interface `GralWidget_ifc`
      Parameters:
        `container` - The container is used only if the variable is not known by direct reference in the private `GralWidget.variable` or `GralWidget.variables`. If the variable(s) is/are not known, they are searched by there data path set by `GralWidget_ifc.setDataPath(String)`. More as one variables are possible separated by "," in the setDataPath("variable1, variable2"). The variables are searched in the container calling `VariableContainer_ifc.getVariable(String)`.

    - #### refreshFromVariable

          public void refreshFromVariable(VariableContainer_ifc container,
                                          long timeAtleast,
                                          GralColor colorRefreshed,
                                          GralColor colorOld)

      Specified by:
        `refreshFromVariable` in interface `GralWidget_ifc`

    - #### setDataPath

          public void setDataPath(java.lang.String sDataPath)

      Description copied from interface: `GralWidget_ifc`
      Sets the data path. It is a String in application context. If variables are used, it is the path of one or more variables, see `GralWidget_ifc.refreshFromVariable(VariableContainer_ifc)`.
      Specified by:
        `setDataPath` in interface `GralWidget_ifc`

    - #### getDataPath

          public java.lang.String getDataPath()

      Specified by:
        `getDataPath` in interface `GralWidget_ifc`

    - #### getActionChange

          public GralWidget_ifc.ActionChange getActionChange(GralWidget_ifc.ActionChangeWhen when)

      Specified by:
        `getActionChange` in interface `GralWidget_ifc`

    - #### remove

          public boolean remove()

      Description copied from interface: `org.vishia.util.Removeable`
      Removes all referenced data, close all opened resources, removes all graphical widgets etc. This method prepares a dereferencing of the instance. It is similar to the concept of Object.finalize(). But finalize() is designed for the last clearing before the garbage collector deletes an instance. In opposite remove cleans and closes on active run time. It may be proper to call remove inside the finalize() implementation. The remove() implementation should check whether some instances are removed already to support a second call of remove() after a first one!
      Specified by:
        `remove` in interface `Removeable`
      Returns:
        true if successfully. If false it is a hint for the application that the instance itself should not be removed.

    - #### setHtmlHelp

          public void setHtmlHelp(java.lang.String url)

      Description copied from interface: `GralWidget_ifc`
      Sets the html help url for this widget. That information will be used if the widget is focused to control the help window output.
      Specified by:
        `setHtmlHelp` in interface `GralWidget_ifc`
      Parameters:
        `url` - String given url, maybe a local file too with #internalLabel.

    - #### getContentInfo

          public java.lang.Object getContentInfo()

      Specified by:
        `getContentInfo` in interface `GralWidget_ifc`

    - #### getMark

          public int getMark()

      Description copied from interface: `org.vishia.util.MarkMask_ifc`
      Returns the selection mask of this object. If the returned value is 0, the object is not selected. If it is not 0, any source (represented by each bit) has selected this source.
      Specified by:
        `getMark` in interface `MarkMask_ifc`
      Returns:
        bits of selection, 0 if it is not selected.

    - #### setNonMarked

          public int setNonMarked(int mask,
                                  java.lang.Object data)

      Sets the mark status of the line. It invokes the method given with `GralTable.specifyActionOnLineMarked(MarkMask_ifc)` with the given `#setUserData(Object)` of this line. It means a selection with the user data may be done too. This method will be called especially on pressing the mark key specified with `GralTable.specifyKeysMarkUpDn(int, int)`
      Specified by:
        `setNonMarked` in interface `MarkMask_ifc`
      Parameters:
        `mask` - This bits of the `SelectMask.selectMask` will be reseted.
        `data` - if null then don't invoke `GralTable.specifyActionOnLineMarked(MarkMask_ifc)`
      Returns:
        The mark bits before this action is done.
      See Also:
        `SelectMask.setNonMarked(int, java.lang.Object)`

    - #### setMarked

          public int setMarked(int mask,
                               java.lang.Object data)

      Sets the mark status of the line. It invokes the method given with `GralTable.specifyActionOnLineMarked(MarkMask_ifc)` with the given `getUserData()` of this line. It means a selection with the user data may be done too. This method will be called especially on pressing the mark key specified with `GralTable.specifyKeysMarkUpDn(int, int)`
      Specified by:
        `setMarked` in interface `MarkMask_ifc`
      Parameters:
        `mask` - This bits of the `SelectMask.selectMask` will be set.
        `data` - if null then don't invoke `GralTable.specifyActionOnLineMarked(MarkMask_ifc)`
      Returns:
        The mark bits before this action is done. If it is 0, this source is the only one which has marks the object.
      See Also:
        `SelectMask.setNonMarked(int, java.lang.Object)`

    - #### gralMng

          public GralMng gralMng()

      Description copied from interface: `GralWidget_ifc`
      Returns the associated singleton GralMng. The GralMng is associated only if the widget is setToPanel, see `GralWidget_ifc.setToPanel(GralMngBuild_ifc)`.
      Specified by:
        `gralMng` in interface `GralWidget_ifc`
      Returns:
        null if the Widget is created yet without connection to the graphical implementation layer

    - #### setToPanel

          public void setToPanel(GralMngBuild_ifc mng)

      Description copied from interface: `GralWidget_ifc`
      Deprecated. Use `GralWidget_ifc.createImplWidget_Gthread()`.
      Specified by:
        `setToPanel` in interface `GralWidget_ifc`
      Parameters:
        `mng` - not used. It is known as singleton. Use null as argument.

    - #### createImplWidget_Gthread

          public void createImplWidget_Gthread()

      Description copied from interface: `GralWidget_ifc`
      Sets this widget to the current panel at the current given position. This routine should be called only one time after the Gral widget was created. It creates the graphical appearance using the capabilities of the derived GralMng for the systems graphic level. This method invokes `GralMng.createImplWidget_Gthread(GralWidget)` which tests the type of the derived GralWidget to create the correct graphical widget. That method calls the implementing specific `GralMng.ImplAccess#createImplWidget_Gthread(GralWidget)` which knows the implementation graphic.
      Instance structure
      The implementation of a widget is firstly a class which is inherit from `ImplAccess`. With them the `GralWidget` is references because it is the environment class. The core graphical widget is an aggregation in this instance. It is possible that more as one implementation widget is used for a Gral Widget implementation. For example a text field with a prompt consists of two implementation widgets, the text field and a label for the prompt.
      Positioning and Registering the widget: The registering of a widget is done in `GralWidget#initPosAndRegisterWidget(GralPos)` which is called either on construction of a widget with a String-given position, before it appears on graphic, or on construction of the graphic widget. It calls the package private `GralWidget#initPosAndRegisterWidget(GralPos)`, which takes the given position, stores it in the `GralWidget.pos()` and adds the widget both to its panel which is given with the pos and registers the widget in the GralMng for simple global access. If the name of the widget starts with "@" its name in the panel is the part after "@" whereby the global name is the "panelname.widgetname". If a widget's position is given from left and from right or with percent, it is resized on resizing the window and the panel.
      Specified by:
        `createImplWidget_Gthread` in interface `GralWidget_ifc`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `TreeNodeBase<GralTable.TableLineData,UserData,GralTableLine_ifc<UserData>>`

    - #### setData

          public void setData(java.lang.Object data)

      Description copied from interface: `GralWidget_ifc`
      Sets a application specific data. It should help to present user data which are associated to this widget. This info can be set and changed anytime.
      Specified by:
        `setData` in interface `GralWidget_ifc`

    - #### getData

          public UserData getData()

      Description copied from interface: `GralWidget_ifc`
      Gets the application specific info. See `#setContentInfo(Object)`.
      Specified by:
        `getData` in interface `GralWidget_ifc`