View Javadoc

1   /*
2    *  File: DoubleCellRenderer.java 
3    *  Copyright (c) 2004-2007  Peter Kliem (Peter.Kliem@jaret.de)
4    *  A commercial license is available, see http://www.jaret.de.
5    *
6    * All rights reserved. This program and the accompanying materials
7    * are made available under the terms of the Common Public License v1.0
8    * which accompanies this distribution, and is available at
9    * http://www.eclipse.org/legal/cpl-v10.html
10   */
11  package de.jaret.util.ui.table.renderer;
12  
13  import java.text.DecimalFormat;
14  import java.text.NumberFormat;
15  
16  import org.eclipse.swt.printing.Printer;
17  
18  import de.jaret.util.ui.table.model.IColumn;
19  import de.jaret.util.ui.table.model.IRow;
20  
21  /***
22   * CellRenderer for double values.
23   * 
24   * @author Peter Kliem
25   * @version $Id: DoubleCellRenderer.java 355 2007-04-09 13:54:05Z olk $
26   */
27  public class DoubleCellRenderer extends TextCellRenderer {
28      /*** default fraction digits. */
29      protected static final int DEFAULT_FRACTION_DIGITS = 2;
30      /*** number format for text converson. */
31      protected NumberFormat _numberFormat = DecimalFormat.getIntegerInstance();
32  
33      /***
34       * Construct a double cell renderer for printing.
35       * 
36       * @param printer printer device
37       */
38      public DoubleCellRenderer(Printer printer) {
39          super(printer);
40          _numberFormat.setMaximumFractionDigits(DEFAULT_FRACTION_DIGITS);
41          _numberFormat.setMinimumFractionDigits(DEFAULT_FRACTION_DIGITS);
42      }
43  
44      /***
45       * Construct a double cell renderer for use with a display.
46       */
47      public DoubleCellRenderer() {
48          this(null);
49      }
50  
51      /***
52       * Retrieve the used number format.
53       * 
54       * @return number format
55       */
56      public NumberFormat getNumberFormat() {
57          return _numberFormat;
58      }
59  
60      /***
61       * Set number format used for text conversion.
62       * 
63       * @param numberFormat number format
64       */
65      public void setNumberFormat(NumberFormat numberFormat) {
66          _numberFormat = numberFormat;
67      }
68  
69      /***
70       * {@inheritDoc}
71       */
72      protected String convertValue(IRow row, IColumn column) {
73          Double value = (Double) column.getValue(row);
74          return value != null ? _numberFormat.format(value.doubleValue()) : null;
75      }
76  
77      /***
78       * {@inheritDoc}
79       */
80      public ICellRenderer createPrintRenderer(Printer printer) {
81          DoubleCellRenderer dcr = new DoubleCellRenderer(printer);
82          dcr.setNumberFormat(getNumberFormat());
83          return dcr;
84      }
85  
86  }