Coverage Report - palmed.edit.TextBox

Classes in this Package Line Coverage Branch Coverage Complexity
TextBox
0% 
0% 
1,9

 1  
 /**
 2  
  * Redistribution  and use  in source  and binary  forms, with  or without
 3  
  * modification, are permitted provided  that the following conditions are
 4  
  * met :
 5  
  *
 6  
  * . Redistributions  of  source  code  must  retain  the  above copyright
 7  
  *   notice, this list of conditions and the following disclaimer.
 8  
  *
 9  
  * . Redistributions in  binary form  must reproduce  the above  copyright
 10  
  *   notice, this list of conditions  and the following disclaimer in  the
 11  
  *   documentation and/or other materials provided with the distribution.
 12  
  *
 13  
  * . The name of the author may not be used to endorse or promote products
 14  
  *   derived from this software without specific prior written permission.
 15  
  *
 16  
  * THIS SOFTWARE IS  PROVIDED BY THE  AUTHOR ``AS IS''  AND ANY EXPRESS  OR
 17  
  * IMPLIED  WARRANTIES,  INCLUDING,  BUT   NOT  LIMITED  TO,  THE   IMPLIED
 18  
  * WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE ARE
 19  
  * DISCLAIMED.  IN NO  EVENT SHALL  THE AUTHOR  BE LIABLE  FOR ANY  DIRECT,
 20  
  * INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES
 21  
  * (INCLUDING,  BUT  NOT LIMITED  TO,  PROCUREMENT OF  SUBSTITUTE  GOODS OR
 22  
  * SERVICES;  LOSS  OF USE,  DATA,  OR PROFITS;  OR  BUSINESS INTERRUPTION)
 23  
  * HOWEVER CAUSED  AND ON  ANY THEORY  OF LIABILITY,  WHETHER IN  CONTRACT,
 24  
  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 25  
  * ANY  WAY  OUT OF  THE  USE OF  THIS  SOFTWARE, EVEN  IF  ADVISED OF  THE
 26  
  * POSSIBILITY OF SUCH DAMAGE.
 27  
  *
 28  
  * $Id: TextBox.java 381 2005-12-30 07:44:33Z mat007 $
 29  
  */
 30  
 
 31  
 package palmed.edit;
 32  
 
 33  
 import java.io.IOException;
 34  
 import java.io.InputStream;
 35  
 import java.io.OutputStream;
 36  
 import palmed.edit.scrollbar.HorizontalScrollbar;
 37  
 import palmed.edit.scrollbar.VerticalScrollbar;
 38  
 import palmed.edit.text.IText;
 39  
 import palmed.edit.text.Text;
 40  
 import palmed.edit.util.Coordinate;
 41  
 import palmed.edit.view.IView;
 42  
 import palmed.edit.view.Viewport;
 43  
 import palmed.ui.Container;
 44  
 
 45  
 /**
 46  
  * This class implements a custom text box component.
 47  
  *
 48  
  * @author Mathieu Champlon
 49  
  * @version $Revision: 381 $ $Date: 2005-12-30 16:44:33 +0900 (ven., 30 déc. 2005) $
 50  
  */
 51  
 public final class TextBox extends Container implements IView, ITextBox
 52  
 {
 53  
     /**
 54  
      * The size of each text chunk in bytes.
 55  
      */
 56  
     // private static final int TEXT_CHUNKS = 20000; // FIXME use Runtime.freeMemory() / totalMemory() ?
 57  
     /**
 58  
      * The value of the 'enter' key.
 59  
      */
 60  
     private static final int KEY_ENTER = 10;
 61  
     /**
 62  
      * The value of the 'backspace' key.
 63  
      */
 64  
     private static final int KEY_BACKSPACE = -11;
 65  
     // /**
 66  
     // * The value of the 'tab' key.
 67  
     // */
 68  
     // private static final int KEY_TAB = -10;
 69  
     /**
 70  
      * The text.
 71  
      */
 72  
     private final IText text_;
 73  
     /**
 74  
      * The text view omponent.
 75  
      */
 76  
     private final TextArea textArea_;
 77  
     /**
 78  
      * The viewport.
 79  
      */
 80  
     private final Viewport viewport_;
 81  
     /**
 82  
      * The vertical scrollbar.
 83  
      */
 84  
     private final VerticalScrollbar verticalScrollbar_;
 85  
     /**
 86  
      * The horizontal scrollbar.
 87  
      */
 88  
     private final HorizontalScrollbar horizontalScrollbar_;
 89  
     /**
 90  
      * The current modification status.
 91  
      */
 92  
     private boolean hasBeenModified_;
 93  
     /**
 94  
      * Create a text box.
 95  
      */
 96  
     public TextBox()
 97  0
     {
 98  0
         text_ = new Text();
 99  
         // text_ = new LargeText( new Cache( new RecordFactory( "palmed.cache" ), 3 ), TEXT_CHUNKS );
 100  0
         viewport_ = new Viewport( new Content( text_ ) );
 101  0
         textArea_ = new TextArea( viewport_ );
 102  0
         verticalScrollbar_ = new VerticalScrollbar( viewport_ );
 103  0
         horizontalScrollbar_ = new HorizontalScrollbar( viewport_ );
 104  0
         final ModificationIndicator indicator = new ModificationIndicator();
 105  0
         text_.register( indicator );
 106  0
         viewport_.register( this );
 107  0
         add( textArea_ );
 108  0
         add( verticalScrollbar_ );
 109  0
         add( horizontalScrollbar_ );
 110  0
         add( indicator );
 111  0
     }
 112  
 
 113  
     /**
 114  
      * {@inheritDoc}
 115  
      */
 116  
     protected void keyPressed( final int keyCode )
 117  
     {
 118  0
         switch( getGameAction( keyCode ) )
 119  
         {
 120  
             case UP :
 121  0
                 viewport_.scroll( 0, -1 );
 122  0
                 break;
 123  
             case DOWN :
 124  0
                 viewport_.scroll( 0, 1 );
 125  0
                 break;
 126  
             case LEFT :
 127  0
                 viewport_.scroll( -1, 0 );
 128  0
                 break;
 129  
             case RIGHT :
 130  0
                 viewport_.scroll( 1, 0 );
 131  0
                 break;
 132  
             case FIRE :
 133  
             case KEY_NUM0 :
 134  
             case KEY_NUM1 :
 135  
             case KEY_NUM2 :
 136  
             case KEY_NUM3 :
 137  
             case KEY_NUM4 :
 138  
             case KEY_NUM5 :
 139  
             case KEY_NUM6 :
 140  
             case KEY_NUM7 :
 141  
             case KEY_NUM8 :
 142  
             case KEY_STAR :
 143  
             case KEY_POUND :
 144  0
                 break;
 145  
             default :
 146  0
                 switch( keyCode )
 147  
                 {
 148  
                     case KEY_BACKSPACE :
 149  0
                         viewport_.backspace();
 150  0
                         break;
 151  
                     case KEY_ENTER :
 152  0
                         viewport_.enter();
 153  0
                         break;
 154  
                     default :
 155  0
                         viewport_.type( keyCode );
 156  
                 }
 157  
                 break;
 158  
         }
 159  0
     }
 160  
 
 161  
     /**
 162  
      * {@inheritDoc}
 163  
      */
 164  
     protected void keyRepeated( final int keyCode )
 165  
     {
 166  0
         keyPressed( keyCode );
 167  0
     }
 168  
 
 169  
     /**
 170  
      * {@inheritDoc}
 171  
      */
 172  
     public void update( final int columns, final int lines )
 173  
     {
 174  0
         verticalScrollbar_.update( textArea_.getLines(), lines );
 175  0
         horizontalScrollbar_.update( textArea_.getColumns(), columns );
 176  0
         repaint();
 177  0
     }
 178  
 
 179  
     /**
 180  
      * {@inheritDoc}
 181  
      */
 182  
     public void update( final Coordinate position )
 183  
     {
 184  0
         textArea_.update( position );
 185  0
         repaint();
 186  0
     }
 187  
 
 188  
     /**
 189  
      * {@inheritDoc}
 190  
      */
 191  
     public void unmarshall( final InputStream stream ) throws IOException
 192  
     {
 193  0
         viewport_.unmarshall( stream );
 194  0
     }
 195  
 
 196  
     /**
 197  
      * {@inheritDoc}
 198  
      */
 199  
     public void marshall( final OutputStream stream ) throws IOException
 200  
     {
 201  0
         viewport_.marshall( stream );
 202  0
     }
 203  
 
 204  
     /**
 205  
      * {@inheritDoc}
 206  
      */
 207  
     public void read( final InputStream stream ) throws IOException
 208  
     {
 209  0
         text_.read( stream );
 210  0
     }
 211  
 
 212  
     /**
 213  
      * {@inheritDoc}
 214  
      */
 215  
     public void write( final OutputStream stream ) throws IOException
 216  
     {
 217  0
         text_.write( stream );
 218  0
     }
 219  
 
 220  
     /**
 221  
      * {@inheritDoc}
 222  
      */
 223  
     public boolean hasBeenModified()
 224  
     {
 225  0
         return hasBeenModified_;
 226  
     }
 227  
 
 228  
     /**
 229  
      * {@inheritDoc}
 230  
      */
 231  
     public void clear()
 232  
     {
 233  0
         viewport_.clear();
 234  0
     }
 235  
 
 236  
     /**
 237  
      * {@inheritDoc}
 238  
      */
 239  
     public void copy( final OutputStream stream ) throws IOException
 240  
     {
 241  0
         viewport_.copy( stream );
 242  0
     }
 243  
 
 244  
     /**
 245  
      * {@inheritDoc}
 246  
      */
 247  
     public void cut( final OutputStream stream ) throws IOException
 248  
     {
 249  0
         viewport_.cut( stream );
 250  0
     }
 251  
 
 252  
     /**
 253  
      * {@inheritDoc}
 254  
      */
 255  
     public void paste( final InputStream stream ) throws IOException
 256  
     {
 257  0
         viewport_.paste( stream );
 258  0
     }
 259  
 
 260  
     /**
 261  
      * {@inheritDoc}
 262  
      */
 263  
     public void modified( final boolean status )
 264  
     {
 265  0
         hasBeenModified_ = status;
 266  0
         repaint();
 267  0
     }
 268  
 
 269  
     /**
 270  
      * {@inheritDoc}
 271  
      */
 272  
     public void delete()
 273  
     {
 274  0
         text_.delete();
 275  0
     }
 276  
 
 277  
     /**
 278  
      * {@inheritDoc}
 279  
      */
 280  
     public void undo()
 281  
     {
 282  0
         viewport_.undo();
 283  0
     }
 284  
 
 285  
     /**
 286  
      * {@inheritDoc}
 287  
      */
 288  
     public void redo()
 289  
     {
 290  0
         viewport_.redo();
 291  0
     }
 292  
 
 293  
     /**
 294  
      * {@inheritDoc}
 295  
      */
 296  
     public void setLineSeparator( final String separator )
 297  
     {
 298  0
         text_.setLineSeparator( separator );
 299  0
     }
 300  
 
 301  
     /**
 302  
      * {@inheritDoc}
 303  
      */
 304  
     public void setFont( final String name )
 305  
     {
 306  0
         textArea_.setFont( name );
 307  0
         repaint();
 308  0
     }
 309  
 }