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: FileOverwriteListener.java 359 2005-12-23 14:26:53Z mat007 $ 29 */ 30 31 package palmed; 32 33 import javax.microedition.lcdui.Display; 34 import javax.microedition.lcdui.Displayable; 35 import palmed.file.IFile; 36 import palmed.file.IFileBrowserListener; 37 import palmed.ui.ConfirmationDialog; 38 import palmed.ui.IConfirmationListener; 39 40 /*** 41 * This class wraps a file browser listener to prompt the user for confirmation. 42 * 43 * @author Mathieu Champlon 44 * @version $Revision: 359 $ $Date: 2005-12-23 23:26:53 +0900 (ven., 23 déc. 2005) $ 45 */ 46 public final class FileOverwriteListener implements IFileBrowserListener 47 { 48 /*** 49 * The confirmation dialog title. 50 */ 51 private static final String TITLE = "File Overwrite Confirmation"; 52 /*** 53 * The confirmation dialog question. 54 */ 55 private static final String QUESTION = "Are you sure you want to overwrite it ?"; 56 /*** 57 * The display. 58 */ 59 private final Display display_; 60 /*** 61 * The displayable to show upon cancelation. 62 */ 63 private final Displayable next_; 64 /*** 65 * The wrapped listener. 66 */ 67 private final IFileBrowserListener listener_; 68 69 /*** 70 * Create a file overwrite listener. 71 * 72 * @param display the display 73 * @param next the displayable to show upon cancelation 74 * @param listener the wrapped listener 75 */ 76 public FileOverwriteListener( final Display display, final Displayable next, final IFileBrowserListener listener ) 77 { 78 if( display == null ) 79 throw new IllegalArgumentException( "parameter 'display' is null" ); 80 if( next == null ) 81 throw new IllegalArgumentException( "parameter 'next' is null" ); 82 if( listener == null ) 83 throw new IllegalArgumentException( "parameter 'listener' is null" ); 84 display_ = display; 85 next_ = next; 86 listener_ = listener; 87 } 88 89 /*** 90 * {@inheritDoc} 91 */ 92 public void select( final IFile file ) 93 { 94 if( !file.exists() ) 95 listener_.select( file ); 96 else 97 { 98 final IConfirmationListener listener = new IConfirmationListener() 99 { 100 public void accept() 101 { 102 listener_.select( file ); 103 } 104 105 public void refuse() 106 { 107 display_.setCurrent( next_ ); 108 } 109 }; 110 final String description = "The file " + file.toString() + " already exists."; 111 display_.setCurrent( new ConfirmationDialog( TITLE, description, QUESTION, listener ) ); 112 } 113 } 114 }