Coverage Report - net.mtu.eggplant.util.gui.TableUtils
 
Classes in this File Line Coverage Branch Coverage Complexity
TableUtils
0%
0/21
0%
0/10
3.5
 
 1  
 /*
 2  
  * Copyright (c) 2000
 3  
  *      Jon Schewe.  All rights reserved
 4  
  *
 5  
  * Redistribution and use in source and binary forms, with or without
 6  
  * modification, are permitted provided that the following conditions
 7  
  * are met:
 8  
  * 1. Redistributions of source code must retain the above copyright
 9  
  *    notice, this list of conditions and the following disclaimer.
 10  
  * 2. Redistributions in binary form must reproduce the above copyright
 11  
  *    notice, this list of conditions and the following disclaimer in the
 12  
  *    documentation and/or other materials provided with the distribution.
 13  
  *
 14  
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 15  
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 16  
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 17  
  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 18  
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 19  
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 20  
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 21  
  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 22  
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 23  
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 24  
  * SUCH DAMAGE.
 25  
  *
 26  
  * I'd appreciate comments/suggestions on the code jpschewe@mtu.net
 27  
  */
 28  
 package net.mtu.eggplant.util.gui;
 29  
 
 30  
 import javax.swing.JTable;
 31  
 import javax.swing.table.TableCellRenderer;
 32  
 import javax.swing.table.TableColumn;
 33  
 import javax.swing.table.TableColumnModel;
 34  
 
 35  
 /**
 36  
  * utilities for working with tables
 37  
  * 
 38  
  * @version $Revision$
 39  
  */
 40  
 public final class TableUtils {
 41  
 
 42  0
   private TableUtils() {
 43  
     // don't create instances
 44  0
   }
 45  
 
 46  
   /**
 47  
    * set the widths of all of the columns to the max width of the object in the
 48  
    * column.
 49  
    * 
 50  
    * @pre (table != null)
 51  
    **/
 52  
   public static void setColumnMinWidths(final JTable table) {
 53  0
     final TableColumnModel colModel = table.getColumnModel();
 54  
     /**
 55  
      * @assert (colModel.getColumnCount() == table.getColumnCount()),
 56  
      *         "table and column model don't agree";
 57  
      **/
 58  0
     final int columns = colModel.getColumnCount();
 59  
 
 60  0
     for (int columnIndex = 0; columnIndex < columns; columnIndex++) {
 61  0
       int maxWidth = 0;
 62  0
       final TableColumn column = colModel.getColumn(columnIndex);
 63  
       /**
 64  
        * @assert (column != null)
 65  
        **/
 66  0
       TableCellRenderer renderer = column.getCellRenderer();
 67  
 
 68  0
       if (renderer == null) {
 69  0
         renderer = table.getDefaultRenderer(table.getColumnClass(columnIndex));
 70  
       }
 71  0
       if (renderer != null) {
 72  0
         final int rows = table.getRowCount();
 73  0
         for (int rowIndex = 0; rowIndex < rows; rowIndex++) {
 74  0
           final Object object = table.getValueAt(rowIndex, columnIndex);
 75  0
           maxWidth = Math.max(maxWidth, renderer.getTableCellRendererComponent(
 76  
               table, object, false, false, rowIndex, columnIndex)
 77  
               .getPreferredSize().width);
 78  
         }
 79  
         // ?????
 80  
         // maxWidth = Math.max(maxWidth, column.getWidth());
 81  
 
 82  0
         renderer = column.getHeaderRenderer();
 83  0
         if (renderer == null) {
 84  0
           renderer = table.getTableHeader().getDefaultRenderer();
 85  
         }
 86  0
         maxWidth = Math.max(maxWidth, renderer.getTableCellRendererComponent(
 87  
             table, column.getHeaderValue(), false, false, -1, columnIndex)
 88  
             .getPreferredSize().width);
 89  0
         column.setMinWidth(maxWidth + 5);
 90  
       }
 91  
     }
 92  0
   }
 93  
 }