1 /** 2 * Copyright (c) 2004, www.pdfbox.org 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * 3. Neither the name of pdfbox; nor the names of its 14 * contributors may be used to endorse or promote products derived from this 15 * software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * http://www.pdfbox.org 29 * 30 */ 31 package org.pdfbox.pdmodel.interactive.action; 32 33 import org.pdfbox.cos.COSDictionary; 34 35 import org.pdfbox.pdmodel.interactive.action.type.PDAction; 36 import org.pdfbox.pdmodel.interactive.action.type.PDActionGoTo; 37 import org.pdfbox.pdmodel.interactive.action.type.PDActionJavaScript; 38 import org.pdfbox.pdmodel.interactive.action.type.PDActionLaunch; 39 import org.pdfbox.pdmodel.interactive.action.type.PDActionRemoteGoTo; 40 import org.pdfbox.pdmodel.interactive.action.type.PDActionURI; 41 42 /** 43 * This class will take a dictionary and determine which type of action to create. 44 * 45 * @author <a HREF="mailto:ben@benlitchfield.com">Ben Litchfield</a> 46 * @version $Revision: 1.5 $ 47 */ 48 public class PDActionFactory 49 { 50 /** 51 * Utility Class. 52 */ 53 private PDActionFactory() 54 { 55 //utility class 56 } 57 58 /** 59 * This will create the correct type of action based on the type specified 60 * in the dictionary. 61 * 62 * @param action An action dictionary. 63 * 64 * @return An action of the correct type. 65 */ 66 public static PDAction createAction( COSDictionary action ) 67 { 68 PDAction retval = null; 69 if( action != null ) 70 { 71 String type = action.getNameAsString( "S" ); 72 if( PDActionJavaScript.SUB_TYPE.equals( type ) ) 73 { 74 retval = new PDActionJavaScript( action ); 75 } 76 else if( PDActionGoTo.SUB_TYPE.equals( type ) ) 77 { 78 retval = new PDActionGoTo( action ); 79 } 80 else if( PDActionLaunch.SUB_TYPE.equals( type ) ) 81 { 82 retval = new PDActionLaunch( action ); 83 } 84 else if( PDActionRemoteGoTo.SUB_TYPE.equals( type ) ) 85 { 86 retval = new PDActionRemoteGoTo( action ); 87 } 88 else if( PDActionURI.SUB_TYPE.equals( type ) ) 89 { 90 retval = new PDActionURI( action ); 91 } 92 } 93 return retval; 94 } 95 96 }