org.crsh.text.ui.TableRowLineRenderer Maven / Gradle / Ivy
The newest version!
/*
* Copyright (C) 2012 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.crsh.text.ui;
import org.crsh.text.LineRenderer;
import java.util.List;
class TableRowLineRenderer {
/** . */
final TableLineRenderer table;
/** . */
final RowLineRenderer row;
/** . */
final boolean header;
/** . */
private TableRowLineRenderer previous;
/** . */
private TableRowLineRenderer next;
/** . */
private int index;
TableRowLineRenderer(TableLineRenderer table, RowElement row) {
this.table = table;
this.row = new RowLineRenderer(row, table.separator, table.leftCellPadding, table.rightCellPadding);
this.header = row.header;
this.index = 0;
}
TableRowLineRenderer add(TableRowLineRenderer next) {
next.previous = this;
next.index = index + 1;
this.next = next;
return next;
}
boolean hasTop() {
return header && previous != null;
}
boolean hasBottom() {
return header && next != null && !next.header;
}
int getIndex() {
return index;
}
int getSize() {
return index + 1;
}
TableRowLineRenderer previous() {
return previous;
}
TableRowLineRenderer next() {
return next;
}
boolean isHeader() {
return header;
}
int getColsSize() {
return row.getSize();
}
List getCols() {
return row.getCols();
}
int getActualWidth() {
return row.getActualWidth();
}
int getMinWidth() {
return row.getMinWidth();
}
int getActualHeight(int width) {
int actualHeight;
switch (table.overflow) {
case HIDDEN:
actualHeight = 1;
break;
case WRAP:
actualHeight = row.getActualHeight(width);
break;
default:
throw new AssertionError();
}
if (hasTop()) {
actualHeight++;
}
if (hasBottom()) {
actualHeight++;
}
return actualHeight;
}
int getActualHeight(int[] widths) {
int actualHeight;
switch (table.overflow) {
case HIDDEN:
actualHeight = 1;
break;
case WRAP:
actualHeight = 0;
for (int i = 0;i < widths.length;i++) {
LineRenderer col = row.getCols().get(i);
actualHeight = Math.max(actualHeight, col.getActualHeight(widths[i]));
}
break;
default:
throw new AssertionError();
}
if (hasTop()) {
actualHeight++;
}
if (hasBottom()) {
actualHeight++;
}
return actualHeight;
}
int getMinHeight(int[] widths) {
int minHeight;
switch (table.overflow) {
case HIDDEN:
minHeight = 1;
break;
case WRAP:
minHeight = 0;
for (int i = 0;i < widths.length;i++) {
LineRenderer col = row.getCols().get(i);
minHeight = Math.max(minHeight, col.getMinHeight(widths[i]));
}
break;
default:
throw new AssertionError();
}
if (hasTop()) {
minHeight++;
}
if (hasBottom()) {
minHeight++;
}
return minHeight;
}
TableRowReader renderer(int[] widths, int height) {
return new TableRowReader(this, row, widths, height);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy