Example usage for org.apache.poi.xslf.usermodel XSLFSheet getPackagePart

List of usage examples for org.apache.poi.xslf.usermodel XSLFSheet getPackagePart

Introduction

In this page you can find the example usage for org.apache.poi.xslf.usermodel XSLFSheet getPackagePart.

Prototype

public final PackagePart getPackagePart() 

Source Link

Document

Provides access to the underlying PackagePart

Usage

From source file:de.kiwiwings.jasperreports.exporter.PptxShapeExporter.java

License:Open Source License

protected void setHyperlinkURL(JRCommonElement jrShape, XSLFShape hyperlinkTarget) {
    if (hyperlinkTarget == null || !(jrShape instanceof JRPrintHyperlink))
        return;/*w  w w .j a  va  2 s.  c  o m*/

    // http://openxmldeveloper.org/discussions/formats/f/15/t/304.aspx

    JRPrintHyperlink link = (JRPrintHyperlink) jrShape;
    JRHyperlinkProducer customHandler = getHyperlinkProducer(link);
    PackageRelationship rel = null;
    String action = null;

    if (customHandler != null) {
        String href = customHandler.getHyperlink(link);
        if (href != null) {
            rel = slide.getPackagePart().addExternalRelationship(href, XSLFRelation.HYPERLINK.getRelation());
        }
    }

    switch (link.getHyperlinkTypeValue()) {
    case REFERENCE: {
        String href = link.getHyperlinkReference();
        if (href != null) {
            rel = slide.getPackagePart().addExternalRelationship(href, XSLFRelation.HYPERLINK.getRelation());
        }
        break;
    }
    case LOCAL_PAGE: {
        XSLFSheet targetSlide = slideList.get(link.getHyperlinkPage());
        rel = slide.getPackagePart().addRelationship(targetSlide.getPackagePart().getPartName(),
                TargetMode.INTERNAL, XSLFRelation.SLIDE.getRelation());
        action = "ppaction://hlinksldjump";
        break;
    }
    case REMOTE_PAGE: {
        String href = link.getHyperlinkReference();
        if (href != null) {
            rel = slide.getPackagePart().addExternalRelationship(href, XSLFRelation.HYPERLINK.getRelation());
        }
        Integer page = link.getHyperlinkPage();
        if (page != null) {
            action = "ppaction://hlinkpres?slideindex=" + page;
            if (link.getHyperlinkParameters() != null) {
                List<JRPrintHyperlinkParameter> plist = link.getHyperlinkParameters().getParameters();
                if (plist != null) {
                    for (JRPrintHyperlinkParameter p : plist) {
                        if ("slidetitle".equals(p.getName())) {
                            action += "&slidetitle=" + p.getValue().toString();
                            break;
                        }
                    }
                }
            }
        }
        break;
    }

    case NONE:
    default:
    case LOCAL_ANCHOR:
    case REMOTE_ANCHOR:
        // not implemented ... only pages (not elements) can be referenced in powerpoint
        break;
    }

    if (rel != null) {
        CTHyperlink hlink = XSLFSimpleShapeHelper.addHyperlink(hyperlinkTarget);
        if (hlink == null) {
            slide.getPackagePart().removeRelationship(rel.getId());
        } else {
            hlink.setId(rel.getId());
            if (action != null) {
                hlink.setAction(action);
            }
        }
    }
}