View Javadoc

    1   /*
    2    * $Id: NumericCellRenderer.java 471756 2006-11-06 15:01:43Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts2.components.table.renderer;
    22
    23  import java.text.DecimalFormat;
    24
    25  import org.apache.struts2.components.table.WebTable;
    26
    27
    28  /***
    29   */
    30  public class NumericCellRenderer extends AbstractCellRenderer {
    31
    32      DecimalFormat _formater = new DecimalFormat();
    33
    34      /***
    35       * this is the format string that DecimalFormat would use.
    36       *
    37       * @see DecimalFormat
    38       */
    39      String _formatString = null;
    40
    41      /***
    42       * if set the is the color to use if Number is negative.
    43       */
    44      String _negativeColor = null;
    45
    46      /***
    47       * if set this is the color to render if number is positive
    48       */
    49      String _positiveColor = null;
    50
    51
    52      public NumericCellRenderer() {
    53          super();
    54      }
    55
    56
    57      public String getCellValue(WebTable table, Object data, int row, int col) {
    58          StringBuffer retVal = new StringBuffer(128);
    59
    60          if (data == null) {
    61              return "";
    62          }
    63
    64          if (data instanceof Number) {
    65              double cellValue = ((Number) data).doubleValue();
    66
    67              if (cellValue >= 0) {
    68                  processNumber(retVal, _positiveColor, cellValue);
    69              } else {
    70                  processNumber(retVal, _negativeColor, cellValue);
    71              }
    72
    73              return retVal.toString();
    74          }
    75
    76          return data.toString();
    77      }
    78
    79      public void setFormatString(String format) {
    80          _formatString = format;
    81          _formater.applyPattern(_formatString);
    82      }
    83
    84      public void setNegativeColor(String color) {
    85          _negativeColor = color;
    86      }
    87
    88      public void setPositiveColor(String color) {
    89          _positiveColor = color;
    90      }
    91
    92      protected void processNumber(StringBuffer buf, String color, double cellValue) {
    93          if (color != null) {
    94              buf.append(" <font color='").append(color).append("'>");
    95          }
    96
    97          buf.append(_formater.format(cellValue));
    98
    99          if (color != null) {
    100             buf.append("</font>");
    101         }
    102     }
    103 }