📄 tableview.java
字号:
* * @deprecated Table cells are now rendered by an arbitrary * <code>View</code> implementation. */ public int getRowCount() { // TODO: Figure out if this is right. However, this is not so important // since this class isn't used anyway (except maybe be application code // that still uses this deprecated class). return 1; } /** * Sets the grid location of this table cell. * * @param r the row of this cell * @param c the column of this cell * * @deprecated Table cells are now rendered by an arbitrary * <code>View</code> implementation. */ public void setGridLocation(int r, int c) { row = r; column = c; } /** * Returns the row number of this cell. * * @return the row number of this cell * * @deprecated Table cells are now rendered by an arbitrary * <code>View</code> implementation. */ public int getGridRow() { return row; } /** * Returns the column number of this cell. * * @return the column number of this cell * * @deprecated Table cells are now rendered by an arbitrary * <code>View</code> implementation. */ public int getGridColumn() { return column; } } /** * The offsets of the columns of this table. Package private to avoid * synthetic accessor methods. */ int[] columnOffsets; /** * The spans of the columns of this table. Package private to avoid * synthetic accessor methods. */ int[] columnSpans; /** * The size requirements of the columns. */ SizeRequirements[] columnRequirements = new SizeRequirements[0]; /** * Creates a new instance of <code>TableView</code>. * * @param el the element for which to create a table view */ public TableView(Element el) { super(el, Y_AXIS); } /** * Replaces a number of child views with a set of new child views. This is * implemented to call the superclass behaviour and invalidate the layout. * * @param offset the offset at which to replace child views * @param length the number of child views to remove * @param views the new set of views */ public void replace(int offset, int length, View[] views) { super.replace(offset, length, views); layoutChanged(Y_AXIS); } /** * Creates a view for a table row. * * @param el the element that represents the table row * * @return a view for rendering the table row */ protected TableRow createTableRow(Element el) { return new TableRow(el); } /** * Creates a view for a table cell. This method is deprecated and not used * anymore. * * @param el the element that represents the table cell * * @return a view for rendering the table cell * * @deprecated Table cells are now rendered by an arbitrary * <code>View</code> implementation. */ protected TableCell createTableCell(Element el) { return new TableCell(el); } protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory vf) { // TODO: Figure out what to do here. } /** * Lays out the columns to fit within the specified target span. * * @param targetSpan the total span for the columns * @param offsets an array that holds the offsets of the columns when this * method returns * @param spans an array that holds the spans of the columns when this method * returns * @param reqs the size requirements for each column */ protected void layoutColumns(int targetSpan, int[] offsets, int spans[], SizeRequirements[] reqs) { updateColumnRequirements(); SizeRequirements r = calculateMinorAxisRequirements(X_AXIS, null); SizeRequirements.calculateTiledPositions(targetSpan, r, columnRequirements, offsets, spans); } /** * Lays out the child views along the minor axis of the table (that is the * horizontal axis). This is implemented to call {@link #layoutColumns} to * layout the column layout of this table, and then forward to the superclass * to actually lay out the rows. * * @param targetSpan the available span along the minor (horizontal) axis * @param axis the axis * @param offsets an array that holds the offsets of the columns when this * method returns * @param spans an array that holds the spans of the columns when this method * returns */ protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans) { // TODO: Prepare size requirements for the columns. layoutColumns(targetSpan, columnOffsets, columnSpans, columnRequirements); super.layoutMinorAxis(targetSpan, axis, offsets, spans); } /** * Calculates the requirements of this view for the minor (== horizontal) * axis. * * This is reimplemented to calculate the requirements as the sum of the * size requirements of the columns. * * @param axis the axis * @param req the size requirements object to use, if <code>null</code> a new * one will be created */ protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements req) { // TODO: Maybe prepare columnRequirements. SizeRequirements res = req; if (res == null) res = new SizeRequirements(); else { res.alignment = 0.5f; res.maximum = 0; res.minimum = 0; res.preferred = 0; } for (int i = 0; i < columnRequirements.length; ++i) { res.minimum += columnRequirements[i].minimum; res.preferred += columnRequirements[i].preferred; res.maximum += columnRequirements[i].maximum; // TODO: Do we have to handle alignment somehow? } return res; } /** * Returns the child view that represents the specified position in the * model. This is reimplemented because in this view we do not necessarily * have a one to one mapping of child elements to child views. * * @param pos the model position for which to query the view * @param a the allocation of this view * * @return the view that corresponds to the specified model position or * <code>null</code> if there is none */ protected View getViewAtPosition(int pos, Rectangle a) { // FIXME: Do not call super here. Instead walk through the child views // and look for a range that contains the given position. return super.getViewAtPosition(pos, a); } /** * Updates the column requirements. */ private void updateColumnRequirements() { int rowCount = getViewCount(); for (int r = 0; r < rowCount; ++r) { TableRow row = (TableRow) getView(r); int columnCount = row.getViewCount(); for (int c = 0; c < columnCount; ++c) { View cell = row.getView(c); SizeRequirements cr = columnRequirements[c]; cr.minimum = Math.max(cr.minimum, (int) cell.getMinimumSpan(X_AXIS)); cr.preferred = Math.max(cr.preferred, (int) cell.getPreferredSpan(X_AXIS)); cr.maximum = Math.max(cr.maximum, (int) cell.getMaximumSpan(X_AXIS)); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -