Hello Foppers,

I have the problem that I want to specify other inline related properties 
than color ( like text-decoration="underline" ) to basic-link. These are 
currently not supported by BasicLink. BasicLink currently extends FObjMixed.

I have changed BasicLink to "extends Inline" and removed double code. This 
results in visual properties handled by Inline and the LinkSet is set up by 

I have attached the complete file.


GMX - Die Kommunikationsplattform im Internet.
 * $Id: BasicLink.java,v 1.7 2001/08/06 09:12:59 keiron Exp $
 * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
 * For details on use and redistribution please refer to the
 * LICENSE file included with these sources.

package org.apache.fop.fo.flow;

// FOP
import org.apache.fop.fo.*;
import org.apache.fop.apps.FOPException;
import org.apache.fop.fo.properties.*;
import org.apache.fop.layout.*;
import org.apache.fop.datatypes.ColorType;

// Java
import java.util.Enumeration;
import java.awt.Rectangle;

public class BasicLink extends Inline {

    public static class Maker extends Inline.Maker {
        public FObj make(FObj parent,
                         PropertyList propertyList) throws FOPException {
            return new BasicLink(parent, propertyList);


    public static FObj.Maker maker() {
        return new BasicLink.Maker();

        public BasicLink(FObj parent,
                     PropertyList propertyList) throws FOPException {
        super(parent, propertyList);
        this.name = "fo:basic-link";

    public Status layout(Area area) throws FOPException {
        String destination;
        int linkType;

                if (!(destination =
                this.properties.get("internal-destination").getString()).equals("")) {
            linkType = LinkSet.INTERNAL;
        } else if (!(destination =
        this.properties.get("external-destination").getString()).equals("")) {
            linkType = LinkSet.EXTERNAL;
        } else {
            throw new FOPException("internal-destination or external-destination must 
be specified in basic-link");

        if (this.marker == START) {
            // initialize id
            String id = this.properties.get("id").getString();
            area.getIDReferences().initializeID(id, area);
            this.marker = 0;

        // new LinkedArea to gather up inlines
        LinkSet ls = new LinkSet(destination, area, linkType);

        Page p = area.getPage();

        AreaContainer ac = p.getBody().getCurrentColumnArea();
        if (ac == null) {
            throw new FOPException("Couldn't get ancestor AreaContainer when 
processing basic-link");

        int numChildren = this.children.size();
        for (int i = this.marker; i < numChildren; i++) {
            FONode fo = (FONode)children.elementAt(i);

            Status status;
            if ((status = fo.layout(area)).isIncomplete()) {
                this.marker = i;
                return status;

        ls.applyAreaContainerOffsets(ac, area);

        // pass on command line
        String mergeLinks = System.getProperty("links.merge");
        if ((null != mergeLinks) &&!mergeLinks.equalsIgnoreCase("no")) {


        return new Status(Status.OK);

To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to