home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / ResourceableItemPainter.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.  * ResourceableItemPainter - a resourceable item painter.
  31.  * Assumes the item to paint is actually a lookup key into a specified
  32.  * resource bundle.  The object retrieved from the resource bundle
  33.  * (usually, but not necessarily a string) becomes the item to be painted.
  34.  */
  35. public class ResourceableItemPainter implements ItemPainter {
  36.   ItemPainter itemPainter;
  37.   ResourceBundle resourceBundle;
  38.  
  39.   /**
  40.    * By default, use a Focusable, Selectable, TextItemPainter to paint items.
  41.    */
  42.   public ResourceableItemPainter() {
  43.     itemPainter = new FocusableItemPainter(new SelectableItemPainter(new TextItemPainter()));
  44.   }
  45.  
  46.   /**
  47.    * By default, use the specified ItemPainter to paint items.
  48.    *
  49.    * @param itemPainter ItemPainter to use to paint items
  50.    */
  51.   public ResourceableItemPainter(ItemPainter itemPainter) {
  52.     this.itemPainter = itemPainter;
  53.   }
  54.  
  55.   /**
  56.    * Sets the resource bundle in which to look up items to display.
  57.    *
  58.    * @param resourceBundle resourceBundle to use for key lookups
  59.    */
  60.   public void setResourceBundle(ResourceBundle resourceBundle) {
  61.     this.resourceBundle = resourceBundle;
  62.   }
  63.  
  64.   /**
  65.    * Returns the resource bundle used to look up resource keys.
  66.    *
  67.    * @return resource bundle for key lookups.
  68.    */
  69.   public ResourceBundle getResourceBundle() {
  70.     return resourceBundle;
  71.   }
  72.  
  73.   /**
  74.    * Sets the ItemPainter used to display items.
  75.    *
  76.    * @param itemPainter ItemPainter to use.
  77.    */
  78.   public void setItemPainter(ItemPainter itemPainter) {
  79.     this.itemPainter = itemPainter;
  80.   }
  81.  
  82.   /**
  83.    * Returns ItemPainter used to display text.
  84.    *
  85.    * @return ItemPainter in use.
  86.    */
  87.   public ItemPainter getItemPainter() {
  88.     return itemPainter;
  89.   }
  90.  
  91.   // required for implementation of ItemPainter interface
  92.   public Dimension getPreferredSize(Object object, Graphics g, int state, ItemPaintSite site) {
  93.     if (!(object.toString().length() == 0) && resourceBundle != null) {
  94.       return itemPainter.getPreferredSize(resourceBundle.getString(object.toString()), 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.     String s = object.toString();
  103.     if (!(object.toString().length() == 0) && resourceBundle != null) {
  104.       itemPainter.paint(resourceBundle.getString(object.toString()), g, r, state, site);
  105.     } else {
  106.       itemPainter.paint(object, g, r, state, site);
  107.     }
  108.   }
  109.  
  110. }
  111.