package org.openswing.swing.table.columns.client; import java.util.*; import java.awt.*; import javax.swing.table.*; import org.openswing.swing.table.client.*; import org.openswing.swing.table.editors.client.*; import org.openswing.swing.table.renderers.client.*; import org.openswing.swing.util.client.*; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Progress bar column: this is a ready only column that shows in a progress bar the current attribute value. * The type of the binded attribute must be an instance of Number.</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * * <p> This file is part of OpenSwing Framework. * This library is free software; you can redistribute it and/or * modify it under the terms of the (LGPL) Lesser General Public * License as published by the Free Software Foundation; * * GNU LESSER GENERAL PUBLIC LICENSE * Version 2.1, February 1999 * * 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * The author may be contacted at: * maurocarniel@tin.it</p> * * @author Mauro Carniel * @version 1.0 */ public class ProgressBarColumn extends Column { /** list of colored bands */ private ArrayList coloredBands = new ArrayList(); /** max value */ private double maxValue; /** minimum value */ private double minValue; /** flag used to determine how to color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band; default value: true */ private boolean showAllBands = true; /** current used color; default value: ClientSettings.GRID_SELECTION_BACKGROUND */ private Color currentColor = ClientSettings.GRID_SELECTION_BACKGROUND; public ProgressBarColumn() { } /** * @return coumn type */ public final int getColumnType() { return TYPE_PROGRESS_BAR; } /** * Add an interval [minValue,maxValue] and a color to use to paint that interval. * @param minValue minimum value of this interval * @param maxValue maximum value of this interval * @param color color to use to paint this band */ public final void addColoredBand(double minValue,double maxValue,Color color) { coloredBands.add(new Object[]{new Double(minValue),new Double(maxValue),color}); } /** * @return maximum value */ public double getMaxValue() { return maxValue; } /** * Set maximum value. * @param maxValue maximum value */ public void setMaxValue(double maxValue) { this.maxValue = maxValue; } /** * @return minimum value */ public double getMinValue() { return minValue; } /** * Set minimum value. * @param minValue minimum value */ public void setMinValue(double minValue) { this.minValue = minValue; } /** * @return flag used to determine how to color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band */ public final boolean isShowAllBands() { return showAllBands; } /** * Determine how to color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band. * @param showAllBands flag used to determine how to color the progress bar: <code>true</code> to paint the bar with many colors, each band with its color, <code>false</code> to paint the bar with ony one color: the color related to the last matched band */ public final void setShowAllBands(boolean showAllBands) { this.showAllBands = showAllBands; } /** * Set current color to used to color the bar. * @param currentColor current color to used to color the bar */ public final void setColor(Color currentColor) { this.currentColor = currentColor; } /** * @return current color to used to color the bar */ public final Color getColor() { return currentColor; } /** * @return column editing on edit grid mode */ public final boolean isEditableOnEdit() { return false; } /** * @return column editing on insert grid mode */ public final boolean isEditableOnInsert() { return false; } /** * @return list of colored bands */ public final ArrayList getColoredBands() { return coloredBands; } /** * @return TableCellRenderer for this column */ public final TableCellRenderer getCellRenderer(GridController tableContainer,Grids grids) { return new ProgressBarTableCellRenderer( tableContainer, getColoredBands(), getMinValue(), getMaxValue(), isShowAllBands(), getColor(), getColumnName() ); } /** * @return TableCellEditor for this column */ public final TableCellEditor getCellEditor(GridController tableContainer,Grids grids) { return new TextCellEditor( 0, false ); } }