Package org.jfree.layouting.renderer.model.table.cols

Source Code of org.jfree.layouting.renderer.model.table.cols.TableColumn

/**
* ===========================================
* LibLayout : a free Java layouting library
* ===========================================
*
* Project Info:  http://reporting.pentaho.org/liblayout/
*
* (C) Copyright 2006-2007, by Pentaho Corporation and Contributors.
*
* This library 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 library 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
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* ------------
* $Id: TableColumn.java,v 1.8 2007/04/02 11:41:18 taqua Exp $
* ------------
* (C) Copyright 2006-2007, by Pentaho Corporation.
*/
package org.jfree.layouting.renderer.model.table.cols;

import org.jfree.layouting.renderer.border.Border;
import org.jfree.layouting.renderer.border.RenderLength;
import org.jfree.layouting.util.LongList;

/**
* A column definition. A column has an effective definedWidth, which
* corresponds with the computed definedWidth of the content. If that
* definedWidth gets greater than the initial definedWidth (the definedWidth
* that has been computed by the table at the beginning of the rendering), we
* entered the auto-mode.
*
* Once a column has been explicitly marked as validated, any attempt to
* redefine the computed sizes must fail. (This makes sure that the table
* stays in sync and does not get disordered if its rendered incrementally.)
*
* A column is constrained by three metrics:
*
* The Minimum ChunkSize defines the smallest non-breakable content item in
* the column. A column will always consume at least this space. (This is zero,
* if the column has overflow enabled.)
*
* The Maximum Box-Width is the size the content would consume, if there is
* infinite space available. Manual linebreaks are taken into account, but not
* automatic ones.
*
* If the column explicitly defines a width, the preferred size indicates that.
* If no preferred width is defined, the preferred size will be zero.
*
* @author Thomas Morgner
*/
public class TableColumn
{
  private Border border;
  private RenderLength definedWidth;

  private long computedMinChunkSize;
  private long computedMaximumWidth;
  private long computedPreferredSize;

  private long effectiveSize;
  private long effectiveCellPosition;

  private LongList minimumChunkSizes;
  private LongList maximumBoxWidths;
  private LongList preferredSizes;

  private boolean autoGenerated;
  private boolean validated;

  public TableColumn(final Border border,
                     final RenderLength definedWidth,
                     final boolean autoGenerated)
  {
    if (border == null)
    {
      throw new NullPointerException();
    }
    if (definedWidth == null)
    {
      throw new NullPointerException();
    }

    this.definedWidth = definedWidth;
    this.border = border;
    this.autoGenerated = autoGenerated;
    this.minimumChunkSizes = new LongList(10);
    this.maximumBoxWidths = new LongList(10);
    this.preferredSizes = new LongList(10);
  }

  public RenderLength getDefinedWidth()
  {
    return definedWidth;
  }

  public Border getBorder()
  {
    return border;
  }

  public long getComputedPreferredSize()
  {
    return computedPreferredSize;
  }

  public void setComputedPreferredSize(final long computedPreferredSize)
  {
    this.computedPreferredSize = computedPreferredSize;
  }

  public long getComputedMinChunkSize()
  {
    return computedMinChunkSize;
  }

  public void setComputedMinChunkSize(final long computedMinChunkSize)
  {
    if (isValidated())
    {
      throw new IllegalStateException();
    }
    this.computedMinChunkSize = computedMinChunkSize;
  }

  public long getComputedMaximumWidth()
  {
    return computedMaximumWidth;
  }

  public void setComputedMaximumWidth(final long computedMaximumWidth)
  {
    if (isValidated())
    {
      throw new IllegalStateException();
    }
    this.computedMaximumWidth = computedMaximumWidth;
  }

  public long getEffectiveSize()
  {
    return effectiveSize;
  }

  public void setEffectiveSize(final long effectiveSize)
  {
    this.effectiveSize = effectiveSize;
  }

  public boolean isValidated()
  {
    return validated;
  }

  public void setValidated(final boolean validated)
  {
    this.validated = validated;
  }

  public boolean isAutoGenerated()
  {
    return autoGenerated;
  }
//
//  public void setMinimumChunkSize(final int colspan,
//                                  final long chunkSize)
//  {
//    minimumChunkSizes.set(colspan - 1, chunkSize);
//  }
//
//  public void setMaxBoxSize(final int colspan,
//                            final long maxBoxSize)
//  {
//    maximumBoxWidths.set(colspan - 1, maxBoxSize);
//  }
//
//  public void setPreferredSize(final int colspan,
//                            final long prefSize)
//  {
//    preferredSizes.set(colspan - 1, prefSize);
//  }

  public long getMinimumChunkSize(final int colspan)
  {
    final int idx = colspan - 1;
    if (idx < minimumChunkSizes.size())
    {
      return minimumChunkSizes.get(colspan - 1);
    }
    return 0;
  }

  public long getMaximumBoxWidth(final int colspan)
  {
    final int idx = colspan - 1;
    if (idx < maximumBoxWidths.size())
    {
      return maximumBoxWidths.get(colspan - 1);
    }
    return 0;
  }

  public long getPreferredWidth(final int colspan)
  {
    final int idx = colspan - 1;
    if (idx < preferredSizes.size())
    {
      return preferredSizes.get(colspan - 1);
    }
    return 0;
  }

  public void updateMinimumChunkSize(final int colspan,
                                     final long chunkSize)
  {
    final int idx = colspan - 1;
    if (minimumChunkSizes.size() <= idx)
    {
      minimumChunkSizes.set(idx, chunkSize);
    }
    else if (minimumChunkSizes.get(idx) < chunkSize)
    {
      minimumChunkSizes.set(idx, chunkSize);
    }
  }

  public void updateMaxBoxSize(final int colspan,
                               final long colSize)
  {
    final int idx = colspan - 1;
    if (maximumBoxWidths.size() <= idx)
    {
      maximumBoxWidths.set(idx, colSize);
    }
    else if (maximumBoxWidths.get(idx) < colSize)
    {
      maximumBoxWidths.set(idx, colSize);
    }
  }

  public void updatePreferredSize(final int colspan,
                                  final long colSize)
  {
    final int idx = colspan - 1;
    if (preferredSizes.size() <= idx)
    {
      preferredSizes.set(idx, colSize);
    }
    else if (preferredSizes.get(idx) < colSize)
    {
      preferredSizes.set(idx, colSize);
    }
  }

  public int getMaxColspan()
  {
    return maximumBoxWidths.size();
  }

  public long getEffectiveCellPosition()
  {
    return effectiveCellPosition;
  }

  public void setEffectiveCellPosition(final long effectiveCellPosition)
  {
    this.effectiveCellPosition = effectiveCellPosition;
  }
}
TOP

Related Classes of org.jfree.layouting.renderer.model.table.cols.TableColumn

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.