git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@524602 13f79535-47bb-0310-9956-ffa450edef68tags/fop-0_94
@@ -0,0 +1,79 @@ | |||
package org.apache.fop.fo.extensions.destination; | |||
import org.apache.fop.fo.ValidationException; | |||
import org.apache.fop.apps.FOPException; | |||
import org.apache.fop.fo.PropertyList; | |||
import org.apache.fop.fo.FOEventHandler; | |||
import org.apache.fop.fo.FONode; | |||
import org.apache.fop.fo.FObj; | |||
import org.apache.fop.fo.pagination.Root; | |||
import org.apache.fop.fo.extensions.ExtensionElementMapping; | |||
import org.xml.sax.Attributes; | |||
import org.xml.sax.Locator; | |||
/** | |||
* Class for named destinations in PDF. | |||
*/ | |||
public class Destination extends FObj { | |||
String internalDestination; | |||
Root root; | |||
/** | |||
* Constructs a Destination object (called by Maker). | |||
* | |||
* @param parent the parent formatting object | |||
*/ | |||
public Destination(FONode parent) { | |||
super(parent); | |||
root = parent.getRoot(); | |||
} | |||
/** | |||
* @see org.apache.fop.fo.FObj#bind(PropertyList) | |||
*/ | |||
public void bind(PropertyList pList) throws FOPException { | |||
internalDestination = pList.get(PR_INTERNAL_DESTINATION).getString(); | |||
if (internalDestination.length() == 0) { | |||
attributeError("Missing attribute: internal-destination must be specified."); | |||
} | |||
} | |||
/** | |||
* @see org.apache.fop.fo.FONode#endOfNode | |||
*/ | |||
protected void endOfNode() throws FOPException { | |||
root.addDestination(this); | |||
} | |||
/** | |||
* @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String) | |||
XSL/FOP: empty | |||
*/ | |||
protected void validateChildNode(Locator loc, String nsURI, String localName) | |||
throws ValidationException { | |||
invalidChildError(loc, nsURI, localName); | |||
} | |||
public String getInternalDestination() { | |||
return internalDestination; | |||
} | |||
/** @see org.apache.fop.fo.FONode#getNamespaceURI() */ | |||
public String getNamespaceURI() { | |||
return ExtensionElementMapping.URI; | |||
} | |||
/** @see org.apache.fop.fo.FONode#getNormalNamespacePrefix() */ | |||
public String getNormalNamespacePrefix() { | |||
return "fox"; | |||
} | |||
/** @see org.apache.fop.fo.FONode#getLocalName() */ | |||
public String getLocalName() { | |||
return "destination"; | |||
} | |||
} | |||
@@ -0,0 +1,70 @@ | |||
package org.apache.fop.fo.extensions.destination; | |||
import java.util.HashMap; | |||
import java.util.Set; | |||
import org.apache.fop.fo.FONode; | |||
import org.apache.fop.fo.ElementMapping; | |||
import org.apache.fop.fo.extensions.ExtensionElementMapping; | |||
import org.apache.fop.util.QName; | |||
import org.apache.fop.fo.extensions.destination.Destination; | |||
/** | |||
* Set up the destination element mapping. | |||
*/ | |||
public class DestinationElementMapping extends ElementMapping { | |||
/** | |||
* The FOP extension namespace URI | |||
*/ | |||
public static final String URI = ExtensionElementMapping.URI; | |||
private static final Set propertyAttributes = new java.util.HashSet(); | |||
static { | |||
//The extension property (fox:*) for named destinations | |||
propertyAttributes.add("internal-destination"); | |||
} | |||
/** | |||
* Constructor. | |||
*/ | |||
public DestinationElementMapping() { | |||
namespaceURI = URI; | |||
} | |||
/** | |||
* @see org.apache.fop.fo.ElementMapping#initialize() | |||
*/ | |||
protected void initialize() { | |||
if (foObjs == null) { | |||
foObjs = new HashMap(); | |||
foObjs.put("destination", new DestinationMaker()); | |||
} | |||
} | |||
static class DestinationMaker extends ElementMapping.Maker { | |||
public FONode make(FONode parent) { | |||
return new Destination(parent); | |||
} | |||
} | |||
/** | |||
* @see org.apache.fop.fo.ElementMapping#getStandardPrefix() | |||
*/ | |||
public String getStandardPrefix() { | |||
return "fox"; | |||
} | |||
/** | |||
* @see org.apache.fop.fo.ElementMapping#isAttributeProperty(org.apache.fop.util.QName) | |||
*/ | |||
public boolean isAttributeProperty(QName attributeName) { | |||
if (!URI.equals(attributeName.getNamespaceURI())) { | |||
throw new IllegalArgumentException("The namespace URIs don't match"); | |||
} | |||
return propertyAttributes.contains(attributeName.getLocalName()); | |||
} | |||
} |
@@ -0,0 +1,22 @@ | |||
<!-- | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
this work for additional information regarding copyright ownership. | |||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||
(the "License"); you may not use this file except in compliance with | |||
the License. You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
Unless required by applicable law or agreed to in writing, software | |||
distributed under the License is distributed on an "AS IS" BASIS, | |||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
--> | |||
<HTML> | |||
<TITLE>org.apache.fop.destination Package</TITLE> | |||
<BODY> | |||
<P>Classes to support named destinations (only relevant for PDF output)</P> | |||
</BODY> | |||
</HTML> |