Explorar el Código

changes to support named destination

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@524602 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_94
Jay Bryant hace 17 años
padre
commit
b95c8c02da

+ 79
- 0
src/java/org/apache/fop/fo/extensions/destination/Destination.java Ver fichero

@@ -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";
}
}

+ 70
- 0
src/java/org/apache/fop/fo/extensions/destination/DestinationElementMapping.java Ver fichero

@@ -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());
}
}

+ 22
- 0
src/java/org/apache/fop/fo/extensions/destination/package.html Ver fichero

@@ -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>

Cargando…
Cancelar
Guardar