    001package org.vishia.gral.ifc;
    002
    003import org.vishia.gral.base.GralTable;
    004import org.vishia.util.MarkMask_ifc;
    005import org.vishia.util.SortedTree;
    006import org.vishia.util.TreeNode_ifc;
    007
    008
    009
    010public interface GralTableLine_ifc<UserData> extends GralWidget_ifc, MarkMask_ifc
    011, SortedTree<GralTableLine_ifc<UserData>>
    012//, TreeNode_ifc<GralTable.TableLineData<UserData>, UserData>
    013, TreeNode_ifc<GralTable<UserData>.TableLineData, UserData>
    014{
    015
    016  /**Version, history and license.
    017   * <ul>
    018   * <li>2015-07-12 Hartmut new: {@link #setBackColor(GralColor, GralColor, GralColor, GralColor, GralColor, int)} with colorSelect etc. for content-depending table presentation.
    019   * <li>2011-06-00 Hartmut created
    020   * </ul>
    021   *
    022   * <b>Copyright/Copyleft</b>:<br>
    023   * For this source the LGPL Lesser General Public License,
    024   * published by the Free Software Foundation is valid.
    025   * It means:
    026   * <ol>
    027   * <li> You can use this source without any restriction for any desired purpose.
    028   * <li> You can redistribute copies of this source to everybody.
    029   * <li> Every user of this source, also the user of redistribute copies
    030   *    with or without payment, must accept this license for further using.
    031   * <li> But the LPGL is not appropriate for a whole software product,
    032   *    if this source is only a part of them. It means, the user
    033   *    must publish this part of source,
    034   *    but doesn't need to publish the whole source of the own product.
    035   * <li> You can study and modify (improve) this source
    036   *    for own using or for redistribution, but you have to license the
    037   *    modified sources likewise under this LGPL Lesser General Public License.
    038   *    You mustn't delete this Copyright/Copyleft inscription in this source file.
    039   * </ol>
    040   * If you intent to use this source without publishing its usage, you can get
    041   * a second license subscribing a special contract with the author.
    042   *
    043   * @author Hartmut Schorrig = hartmut.schorrig@vishia.de
    044   */
    045  public static final int version = 20120303;
    046
    047
    048  /**Sets the background color for a special cell of line or for all cells of this line
    049     *   which has not a special cell color for the several states of the line.
    050     * @param colorNormal non selected, non marked
    051     * @param colorSelected non marked, the selected line.
    052     * @param colorMarked marked, not the selected line
    053     * @param colorSomeMarked some marked, not the selected line
    054     * @param colorSelectMarked marked or some marked, the selected line.
    055     * @param ix -1 for the line, 0... for one cell of the line.
    056     */
    057   void setBackColor(GralColor colorNormal, GralColor colorSelected, GralColor colorMarked, GralColor colorSomeMarked, GralColor colorSelectMarked, int ix);
    058
    059
    060
    061   /**Gets the table where this line is member of. */
    062   public GralTable<UserData> getTable();
    063
    064
    065
    066
    067  /**Returns the text which is assigned to the cell of the table.
    068   * @param column The column of table.
    069   * @return If the cell text, an empty text "" if the cell has not any text assigned.
    070   * @throws IndexOutOfBoundsException on fault column.
    071   */
    072  String getCellText(int column);
    073
    074  String[] getCellTexts();
    075
    076  String setCellText(String text, int column);
    077
    078  //void setUserData(UserData data);
    079
    080  /**Returns the instance which is related to the line on #setUserData or on construction.
    081   * It is the same like GralWidget_ifct#getContentInfo.
    082   */
    083  UserData getUserData();
    084
    085  int getSelectedColumn();
    086
    087  /**Inserts a line as child of this. This method should be used if no child line exists yet.
    088   * It adds as last line of children. If child lines are existent, one can use {@link #addPrevLine(String, String[], Object)}
    089   * or {@link #addNextLine(String, String[], Object)} in respect to a given child line too.
    090   * @param lineKey The key for the line
    091   * @param lineTexts maybe null, elsewhere texts for the cells (column texts) of the line.
    092   * @param userDataP
    093   * @return the added line.
    094   */
    095  GralTableLine_ifc<UserData> addChildLine(String childKey, String[] childTexts, UserData data);
    096
    097
    098  /**Inserts a line behind the current line.
    099   * @param lineKey The key for the line
    100   * @param lineTexts maybe null, elsewhere texts for the cells (column texts) of the line.
    101   * @param userDataP
    102   * @return the added line.
    103   */
    104  GralTableLine_ifc<UserData> addNextLine(String childKey, String[] childTexts, UserData data);
    105
    106  /**Inserts a line before the current line.
    107   * @param lineKey The key for the line
    108   * @param lineTexts maybe null, elsewhere texts for the cells (column texts) of the line.
    109   * @param userDataP
    110   * @return the added line.
    111   */
    112  GralTableLine_ifc<UserData> addPrevLine(String childKey, String[] childTexts, UserData data);
    113
    114
    115  void deleteLine();
    116
    117  GralTableLine_ifc<UserData> parentNode();
    118
    119
    120  /**Opens or closes showing children of this line. It is for tree view.
    121   * @param show true then show, false then close this bough.
    122   * @param bLeftGrandChildrenOpen if show==true, false then close sub children boughs of this, true left opened grand children open.
    123   *   This is an important behavior of operating with a tree view. Both variants are desirable in different situations.
    124   */
    125  void showChildren(boolean show, boolean bLeftGrandChildrenOpen);
    126
    127  void showChildren(boolean show, boolean bLeftGrandChildrenOpen, boolean showReally);
    128
    129}