View Javadoc

    1   /*
    2    * $Id: AbstractCellRenderer.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 org.apache.struts2.components.table.WebTable;
    24
    25
    26  /***
    27   * this is the base class that most renderers will be derived from.
    28   * It allows setting the alignment.  Subclasses should set there actuall
    29   * content by implementing getCellValue
    30   */
    31  abstract public class AbstractCellRenderer implements CellRenderer {
    32
    33      /***
    34       * used for horizontal cell alignmnet
    35       */
    36      protected String _alignment = null;
    37
    38
    39      public void setAlignment(String alignment) {
    40          _alignment = alignment;
    41      }
    42
    43      public String getAlignment() {
    44          return _alignment;
    45      }
    46
    47      /***
    48       * implememnts CellRenderer renderCell.  It sets the alignment.  gets the actual
    49       * data from getCellValue
    50       */
    51      public String renderCell(WebTable table, Object data, int row, int col) {
    52          if (isAligned()) {
    53              StringBuffer buf = new StringBuffer(256);
    54              buf.append("<div align='").append(_alignment).append("'>");
    55              buf.append(getCellValue(table, data, row, col));
    56              buf.append("</div>");
    57
    58              return buf.toString();
    59          }
    60
    61          return getCellValue(table, data, row, col);
    62      }
    63
    64      protected boolean isAligned() {
    65          return _alignment != null;
    66      }
    67
    68      /***
    69       * this is the method that subclasses need to implement to set their value.
    70       * they should not override renderCell unless they want to change the alignmnent
    71       * renderering
    72       */
    73      abstract protected String getCellValue(WebTable table, Object data, int row, int col);
    74  }