DefaultListCellRenderer.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:6k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit.list;
  26. import com.sun.lwuit.Command;
  27. import com.sun.lwuit.Component;
  28. import com.sun.lwuit.Label;
  29. import com.sun.lwuit.List;
  30. import com.sun.lwuit.plaf.UIManager;
  31. import java.util.Hashtable;
  32. /**
  33.  * Default implementation of the renderer based on a label see the {@link ListCellRenderer}
  34.  * for more information about the use and purpose of this class
  35.  *
  36.  * @author Chen Fishbein
  37.  */
  38. public class DefaultListCellRenderer extends Label implements ListCellRenderer {
  39.     private boolean showNumbers;
  40.     private static boolean showNumbersDefault = true;
  41.     private Label focusComponent = new Label();
  42.     
  43.     /** 
  44.      * Creates a new instance of DefaultCellRenderer 
  45.      */
  46.     public DefaultListCellRenderer() {
  47.         super("");
  48.         setCellRenderer(true);
  49.         setEndsWith3Points(false);
  50.         showNumbers = showNumbersDefault;
  51.         focusComponent.setUIID("ListRendererFocus");
  52.         focusComponent.setFocus(true);
  53.         setUIID("ListRenderer");
  54.     }
  55.     /**
  56.      * @inheritDoc
  57.      */
  58.     public void refreshTheme() {
  59.         super.refreshTheme();
  60.         focusComponent.refreshTheme();
  61.     }
  62.     /** 
  63.      * Creates a new instance of DefaultCellRenderer 
  64.      * 
  65.      * @param showNumbers indicates numbers should be shown
  66.      */
  67.     public DefaultListCellRenderer(boolean showNumbers) {
  68.         this();
  69.         this.showNumbers = showNumbers;
  70.     }
  71.     /**
  72.      * @inheritDoc
  73.      */
  74.     public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
  75.         setFocus(isSelected);
  76.         if(showNumbers) {
  77.             String text = "" + value;
  78.             Hashtable t =  UIManager.getInstance().getResourceBundle();
  79.             if(t != null && value != null) {
  80.                 Object o = t.get(value.toString());
  81.                 if(o != null) {
  82.                     text = (String)o;
  83.                 }
  84.             }
  85.             if(isRTL()){
  86.                 setText(text+ " ." + (index + 1));
  87.             }else{
  88.                 setText("" + (index + 1) + ". " + text);
  89.             }
  90.         } else {
  91.             if(value != null) {
  92.                 setText(value.toString());
  93.             } else {
  94.                 setText("null");
  95.             }
  96.         }
  97.         if(value instanceof Command) {
  98.             setIcon(((Command)value).getIcon());
  99.         }
  100.         return this;
  101.     }
  102.     /**
  103.      * @inheritDoc
  104.      */
  105.     public Component getListFocusComponent(List list) {
  106.         return focusComponent;
  107.     }
  108.     /**
  109.      * Overriden to do nothing and remove a performance issue where renderer changes
  110.      * perform needless repaint calls
  111.      */
  112.     public void repaint() {
  113.     }
  114.     /**
  115.      * Indicate whether numbering should exist for the default cell renderer
  116.      * 
  117.      * @return true if numers are shown by the numbers
  118.      */
  119.     public boolean isShowNumbers() {
  120.         return showNumbers;
  121.     }
  122.     /**
  123.      * Indicate whether numbering should exist for the default cell renderer
  124.      * 
  125.      * @param showNumbers indicate whether numbering should exist for the default cell renderer
  126.      */
  127.     public void setShowNumbers(boolean showNumbers) {
  128.         this.showNumbers = showNumbers;
  129.     }
  130.     /**
  131.      * The background transparency factor to apply to the selection focus
  132.      * 
  133.      * @return selection transperancy value
  134.      */
  135.     public int getSelectionTransparency() {
  136.         return focusComponent.getUnselectedStyle().getBgTransparency() & 0xff;
  137.     }
  138.     /**
  139.      * The background transparency factor to apply to the selection focus
  140.      * 
  141.      * @param selectionTransparency the selection transperancy value
  142.      */
  143.     public void setSelectionTransparency(int selectionTransparency) {
  144.         focusComponent.getUnselectedStyle().setBgTransparency(selectionTransparency);
  145.     }
  146.     /**
  147.      * Inidicates whether the default list cell renderer will show numbers by default
  148.      * when constructed
  149.      *
  150.      * @param def true to show numbers for all renderers created in the future
  151.      */
  152.     public static void setShowNumbersDefault(boolean def) {
  153.         showNumbersDefault = def;
  154.     }
  155.     /**
  156.      * Inidicates whether the default list cell renderer will show numbers by default
  157.      * when constructed
  158.      *
  159.      * @return true when showing numbers, false otherwise
  160.      */
  161.     public static boolean isShowNumbersDefault() {
  162.         return showNumbersDefault;
  163.     }
  164. }