Class DefaultTableRenderer<V>

    • Field Detail

      • verticalScrollBar

        private final ScrollBar verticalScrollBar
      • horizontalScrollBar

        private final ScrollBar horizontalScrollBar
      • viewTopRow

        private int viewTopRow
      • viewLeftColumn

        private int viewLeftColumn
      • visibleRowsOnLastDraw

        private int visibleRowsOnLastDraw
      • preferredColumnSizes

        private final java.util.List<java.lang.Integer> preferredColumnSizes
      • preferredRowSizes

        private final java.util.List<java.lang.Integer> preferredRowSizes
      • expandableColumns

        private final java.util.Set<java.lang.Integer> expandableColumns
      • headerSizeInRows

        private int headerSizeInRows
      • allowPartialColumn

        private boolean allowPartialColumn
      • scrollBarsHidden

        private boolean scrollBarsHidden
    • Constructor Detail

      • DefaultTableRenderer

        public DefaultTableRenderer()
        Default constructor
    • Method Detail

      • setHeaderVerticalBorderStyle

        public void setHeaderVerticalBorderStyle​(TableCellBorderStyle headerVerticalBorderStyle)
        Sets the style to be used when separating the table header row from the actual "data" cells below. This will cause a new line to be added under the header labels, unless set to TableCellBorderStyle.None.
        Parameters:
        headerVerticalBorderStyle - Style to use to separate Table header from body
      • setHeaderHorizontalBorderStyle

        public void setHeaderHorizontalBorderStyle​(TableCellBorderStyle headerHorizontalBorderStyle)
        Sets the style to be used when separating the table header labels from each other. This will cause a new column to be added in between each label, unless set to TableCellBorderStyle.None.
        Parameters:
        headerHorizontalBorderStyle - Style to use when separating header columns horizontally
      • setCellVerticalBorderStyle

        public void setCellVerticalBorderStyle​(TableCellBorderStyle cellVerticalBorderStyle)
        Sets the style to be used when vertically separating table cells from each other. This will cause a new line to be added between every row, unless set to TableCellBorderStyle.None.
        Parameters:
        cellVerticalBorderStyle - Style to use to separate table cells vertically
      • setCellHorizontalBorderStyle

        public void setCellHorizontalBorderStyle​(TableCellBorderStyle cellHorizontalBorderStyle)
        Sets the style to be used when horizontally separating table cells from each other. This will cause a new column to be added between every row, unless set to TableCellBorderStyle.None.
        Parameters:
        cellHorizontalBorderStyle - Style to use to separate table cells horizontally
      • setExpandableColumns

        public void setExpandableColumns​(java.util.Collection<java.lang.Integer> expandableColumns)
        Sets the list of columns (by index, where 0 is the first column) that can be expanded, should the drawable area be larger than the table is requesting.
        Parameters:
        expandableColumns - Collection of indexes for expandable columns
      • isHorizontallySpaced

        private boolean isHorizontallySpaced()
      • getVisibleRowsOnLastDraw

        public int getVisibleRowsOnLastDraw()
        Returns the number of rows that could be drawn on the last draw operation. If the table doesn't have any visible row count set through Table.setVisibleRows(int), this is the only way to find out exactly how large the table ended up. But even if you did set the number of visible rows explicitly, due to terminal size constraints the actually drawn size might have been different.
        Specified by:
        getVisibleRowsOnLastDraw in interface TableRenderer<V>
        Returns:
        Number of rows that could be drawn on the last UI update call, will also return 0 if the table has not yet been drawn out
      • getViewTopRow

        public int getViewTopRow()
        Description copied from interface: TableRenderer
        Returns the index of the first visible row with the renderers current state
        Specified by:
        getViewTopRow in interface TableRenderer<V>
        Returns:
        Index of the first visible row of the table
      • setViewTopRow

        public void setViewTopRow​(int viewTopRow)
        Description copied from interface: TableRenderer
        Modifies which row is the first visible, this may be overwritten depending on the circumstances when drawing the table.
        Specified by:
        setViewTopRow in interface TableRenderer<V>
        Parameters:
        viewTopRow - First row to be displayed when drawing the table
      • getViewLeftColumn

        public int getViewLeftColumn()
        Description copied from interface: TableRenderer
        Returns the index of the first visible column with the renderers current state
        Specified by:
        getViewLeftColumn in interface TableRenderer<V>
        Returns:
        Index of the first visible column of the table
      • setViewLeftColumn

        public void setViewLeftColumn​(int viewLeftColumn)
        Description copied from interface: TableRenderer
        Modifies which column is the first visible, this may be overwritten depending on the circumstances when drawing the table.
        Specified by:
        setViewLeftColumn in interface TableRenderer<V>
        Parameters:
        viewLeftColumn - First column to be displayed when drawing the table
      • setAllowPartialColumn

        public void setAllowPartialColumn​(boolean allowPartialColumn)
        Specified by:
        setAllowPartialColumn in interface TableRenderer<V>
        Parameters:
        allowPartialColumn - when not all columns fit on the screen, whether to render part of a column, or skip rendering that column entirely
      • getPreferredSize

        public TerminalSize getPreferredSize​(Table<V> table)
        Description copied from interface: ComponentRenderer
        Given the supplied component, how large does this renderer want the component to be? Notice that this is the responsibility of the renderer and not the component itself, since the component has no idea what its visual representation looks like.
        Specified by:
        getPreferredSize in interface ComponentRenderer<V>
        Specified by:
        getPreferredSize in interface TableRenderer<V>
        Parameters:
        table - Component to calculate the preferred size of
        Returns:
        The size this renderer would like the component to take up
      • calculateVisibleRows

        private int calculateVisibleRows​(TerminalSize area,
                                         int viewTopRow,
                                         int preferredVisibleRows)
      • calculateVisibleColumns

        private int calculateVisibleColumns​(TerminalSize area,
                                            int viewLeftColumn,
                                            int preferredVisibleColumns)
      • fitColumnsInAvailableSpace

        private java.util.List<java.lang.Integer> fitColumnsInAvailableSpace​(Table<V> table,
                                                                             TerminalSize area,
                                                                             int visibleColumns)
      • drawHeader

        private void drawHeader​(TextGUIGraphics graphics,
                                Table<V> table,
                                java.util.List<java.lang.Integer> columnSizes)
      • drawRows

        private void drawRows​(TextGUIGraphics graphics,
                              Table<V> table,
                              java.util.List<java.lang.Integer> columnSizes,
                              int visibleRows,
                              int visibleColumns,
                              int renderColumns,
                              boolean needVerticalScrollBar,
                              boolean needHorizontalScrollBar)