home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / AnnotatedEmptyItemPainter.java < prev    next >
Text File  |  1998-05-08  |  4KB  |  111 lines

  1. /*
  2.  * Copyright (c) 1997-1998 Borland International, Inc. All Rights Reserved.
  3.  * 
  4.  * This SOURCE CODE FILE, which has been provided by Borland as part
  5.  * of a Borland product for use ONLY by licensed users of the product,
  6.  * includes CONFIDENTIAL and PROPRIETARY information of Borland.  
  7.  *
  8.  * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
  9.  * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
  10.  * THE PRODUCT.
  11.  *
  12.  * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD BORLAND, ITS RELATED
  13.  * COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY CLAIMS
  14.  * OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR DISTRIBUTION
  15.  * OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES ARISING OUT OF
  16.  * OR RESULTING FROM THE USE, MODIFICATION, OR DISTRIBUTION OF PROGRAMS
  17.  * OR FILES CREATED FROM, BASED ON, AND/OR DERIVED FROM THIS SOURCE
  18.  * CODE FILE.
  19.  */
  20. package borland.samples.intl.beans;
  21.  
  22. import java.awt.*;
  23. import java.util.*;
  24.  
  25. import borland.jbcl.view.*;
  26. import borland.jbcl.model.*;
  27. import borland.jbcl.util.*;
  28.  
  29. /**
  30.  * AnnotatedEmptyItemPainter -- displays a string when the item is blank, i.e. toString().length() == 0.
  31.  * Used to display a 'value required' message in blank columns which must be filled in.
  32.  * Uses a TextItemPainter if an ItemPainter is not explicitly specified.
  33.  */
  34. public class AnnotatedEmptyItemPainter implements ItemPainter {
  35.   ItemPainter itemPainter;
  36.   String displayString;
  37.  
  38.   /**
  39.    * By default, use a Focusable, Selectable, TextItemPainter to paint text.
  40.    */
  41.   public AnnotatedEmptyItemPainter() {
  42.     itemPainter = new FocusableItemPainter(new SelectableItemPainter(new TextItemPainter()));
  43.   }
  44.  
  45.   /**
  46.    * By default, use the specified ItemPainter to paint text.
  47.    *
  48.    * @param itemPainter ItemPainter to use to paint.
  49.    */
  50.   public AnnotatedEmptyItemPainter(ItemPainter itemPainter) {
  51.     this.itemPainter = itemPainter;
  52.   }
  53.  
  54.   /**
  55.    * Sets the string to display when the data is empty.
  56.    *
  57.    * @param displayString string to display
  58.    */
  59.   public void setDisplayString(String displayString) {
  60.     this.displayString = displayString;
  61.   }
  62.  
  63.   /**
  64.    * Returns the string to display when the data is empty.
  65.    *
  66.    * @return string to display
  67.    */
  68.   public String getDisplayString() {
  69.     return displayString;
  70.   }
  71.  
  72.   /**
  73.    * Sets the item painter used to paint text
  74.    *
  75.    * @param itemPainter item painter to use
  76.    */
  77.   public void setItemPainter(ItemPainter itemPainter) {
  78.     this.itemPainter = itemPainter;
  79.   }
  80.  
  81.   /**
  82.    * Returns the item painter used to paint text
  83.    *
  84.    * @return item painter to use
  85.    */
  86.   public ItemPainter getItemPainter() {
  87.     return itemPainter;
  88.   }
  89.  
  90.   // required for implementation of ItemPainter interface
  91.   public Dimension getPreferredSize(Object object, Graphics g, int state, ItemPaintSite site) {
  92.   // if the object is an empty string, use the specified display string
  93.     if ((object != null) && (object.toString().length() == 0) && displayString != null) {
  94.       return itemPainter.getPreferredSize(displayString, g, state, site);
  95.     } else {
  96.       return itemPainter.getPreferredSize(object, g, state, site);
  97.     }
  98.   }
  99.  
  100.   // required for implementation of ItemPainter interface
  101.   public void paint(Object object, Graphics g, Rectangle r, int state, ItemPaintSite site) {
  102.   // if the object is an empty string, paint the specified display string
  103.     if ((object != null) && (object.toString().length() == 0) && displayString != null) {
  104.       itemPainter.paint(displayString, g, r, state, site);
  105.     } else {
  106.       itemPainter.paint(object, g, r, state, site);
  107.     }
  108.   }
  109.  
  110. }
  111.