Coverage Report - net.wotonomy.ui.swing.components.MultiLineLabel
 
Classes in this File Line Coverage Branch Coverage Complexity
MultiLineLabel
0% 
0% 
1.167
 
 1  
 /*
 2  
 Wotonomy: OpenStep design patterns for pure Java applications.
 3  
 Copyright (C) 2000 Blacksmith, Inc.
 4  
 
 5  
 This library is free software; you can redistribute it and/or
 6  
 modify it under the terms of the GNU Lesser General Public
 7  
 License as published by the Free Software Foundation; either
 8  
 version 2.1 of the License, or (at your option) any later version.
 9  
 
 10  
 This library is distributed in the hope that it will be useful,
 11  
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 13  
 Lesser General Public License for more details.
 14  
 
 15  
 You should have received a copy of the GNU Lesser General Public
 16  
 License along with this library; if not, see http://www.gnu.org
 17  
 */
 18  
 
 19  
 package net.wotonomy.ui.swing.components;
 20  
 
 21  
 import javax.swing.JTextArea;
 22  
 import javax.swing.LookAndFeel;
 23  
 import javax.swing.text.Highlighter;
 24  
 
 25  
 /**
 26  
 * A custom JTextArea that looks and feels like a JLabel, but supports
 27  
 * line wrapping.  This works a lot more like the IFC label component.
 28  
 * NOTE: doesn't support icons (yet).
 29  
 *
 30  
 * @author michael@mpowers.net
 31  
 * @author $Author: cgruber $
 32  
 * @date $Date: 2006-02-18 23:19:05 +0000 (Sat, 18 Feb 2006) $
 33  
 * @revision $Revision: 904 $
 34  
 */
 35  
 public class MultiLineLabel extends JTextArea
 36  
 {
 37  
         /**
 38  
         * Saves a reference to the original highlighter
 39  
         * to enable/disable text selection. 
 40  
         */
 41  
         protected Highlighter originalHighlighter;
 42  
         
 43  
 /*
 44  
 * Creates a MultiLineLabel instance with an empty string for the title.
 45  
 */
 46  
     public MultiLineLabel()
 47  
     {
 48  0
         super();
 49  
 
 50  
         // turn on wrapping and disable editing and highlighting
 51  
 
 52  0
         setLineWrap(true);
 53  0
         setWrapStyleWord(true);
 54  0
         setEditable(false);
 55  0
                 setSelectable( false );
 56  0
     }
 57  
 
 58  
 /*
 59  
 * Creates a MultiLineLabel instance with the specified text.
 60  
 * @param text The specified text.
 61  
 */
 62  
     public MultiLineLabel( String text )
 63  
     {
 64  0
         super( text );
 65  
 
 66  
         // turn on wrapping and disable editing and highlighting
 67  
 
 68  0
         setLineWrap(true);
 69  0
         setWrapStyleWord(true);
 70  0
         setEditable(false);
 71  0
                 setSelectable( false );
 72  0
     }
 73  
 
 74  
 /*
 75  
 * Overridden to look like a label.
 76  
 * @param text The specified text.
 77  
 */
 78  
     public void updateUI()
 79  
     {
 80  
         // got the implementation idea from usenet
 81  
 
 82  0
         super.updateUI();
 83  
 
 84  
         // turn on wrapping and disable editing and highlighting
 85  
 
 86  0
         setLineWrap(true);
 87  0
         setWrapStyleWord(true);
 88  0
         setEditable(false);
 89  0
                 setSelectable( false );
 90  
 
 91  
         // Set the text area's border, colors and font to
 92  
         // that of a label
 93  
 
 94  0
         LookAndFeel.installBorder(this, "Label.border");
 95  
 
 96  0
         LookAndFeel.installColorsAndFont(this,
 97  0
             "Label.background",
 98  0
             "Label.foreground",
 99  0
             "Label.font");
 100  0
     }
 101  
 
 102  
 /**
 103  
 * Sets whether text is selectable.
 104  
 * Default is non-selectable text.
 105  
 */
 106  
         public void setSelectable( boolean selectable )
 107  
         {
 108  0
                 if ( selectable )
 109  
                 {
 110  0
                         setHighlighter( originalHighlighter );
 111  0
                 }
 112  
                 else
 113  
                 {
 114  0
                         originalHighlighter = getHighlighter();
 115  0
                         setHighlighter( null );
 116  
                 }
 117  0
         }
 118  
         
 119  
 /**
 120  
 * Gets whether text is selectable.
 121  
 * Default is non-selectable text.
 122  
 */
 123  
         public boolean isSelectable()
 124  
         {
 125  0
                 return ( getHighlighter() != null );        
 126  
         }
 127  
 
 128  
 /**
 129  
 * Overridden to return false.
 130  
 */
 131  
         public boolean isFocusTraversable()
 132  
         {
 133  0
                 return false;
 134  
         }        
 135  
 }