You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/09/30 17:11:26 UTC

svn commit: r700493 - in /poi/trunk/src/scratchpad: examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java src/org/apache/poi/hslf/model/TextShape.java src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java

Author: yegor
Date: Tue Sep 30 08:11:26 2008
New Revision: 700493

URL: http://svn.apache.org/viewvc?rev=700493&view=rev
Log:
initial support for creating hyperlinks in HSLF, units test are still to do

Added:
    poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java   (with props)
Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java

Added: poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java?rev=700493&view=auto
==============================================================================
--- poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java (added)
+++ poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java Tue Sep 30 08:11:26 2008
@@ -0,0 +1,59 @@
+/* ====================================================================
+   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.
+==================================================================== */
+package org.apache.poi.hslf.examples;
+
+import org.apache.poi.hslf.usermodel.SlideShow;
+import org.apache.poi.hslf.usermodel.RichTextRun;
+import org.apache.poi.hslf.model.*;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.awt.*;
+
+/**
+ * Demonstrates how to create hyperlinks in PowerPoint presentations
+ *
+ * @author Yegor Kozlov
+ */
+public class CreateHyperlink {
+
+    public static void main(String[] args) throws Exception {
+        SlideShow ppt = new SlideShow();
+
+        Slide slide = ppt.createSlide();
+
+        TextBox shape = new TextBox();
+        shape.setText("Apache POI");
+        Rectangle anchor = new Rectangle(100, 100, 200, 50);
+        shape.setAnchor(anchor);
+
+        String text = shape.getText();
+        Hyperlink link = new Hyperlink();
+        link.setAddress("http://www.apache.org");
+        link.setTitle(shape.getText());
+        int linkId = ppt.addHyperlink(link);
+
+        shape.setHyperlink(linkId, 0, text.length());
+
+        slide.addShape(shape);
+
+        FileOutputStream out = new FileOutputStream("hyperlink.ppt");
+        ppt.write(out);
+        out.close();
+
+   }
+}

Propchange: poi/trunk/src/scratchpad/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java?rev=700493&r1=700492&r2=700493&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java Tue Sep 30 08:11:26 2008
@@ -547,4 +547,31 @@
         return (OEPlaceholderAtom)getClientDataRecord(RecordTypes.OEPlaceholderAtom.typeID);
     }
 
+    /**
+     *
+     * Assigns a hyperlink to this text shape
+     *
+     * @param linkId    id of the hyperlink, @see org.apache.poi.hslf.usermodel.SlideShow#addHyperlink(Hyperlink)
+     * @param      beginIndex   the beginning index, inclusive.
+     * @param      endIndex     the ending index, exclusive.
+     * @see org.apache.poi.hslf.usermodel.SlideShow#addHyperlink(Hyperlink)
+     */
+    public void setHyperlink(int linkId, int beginIndex, int endIndex){
+        //TODO validate beginIndex and endIndex and throw IllegalArgumentException
+
+        InteractiveInfo info = new InteractiveInfo();
+        InteractiveInfoAtom infoAtom = info.getInteractiveInfoAtom();
+        infoAtom.setAction(InteractiveInfoAtom.ACTION_HYPERLINK);
+        infoAtom.setHyperlinkType(InteractiveInfoAtom.LINK_Url);
+        infoAtom.setHyperlinkID(linkId);
+
+        _txtbox.appendChildRecord(info);
+
+        TxInteractiveInfoAtom txiatom = new TxInteractiveInfoAtom();
+        txiatom.setStartIndex(beginIndex);
+        txiatom.setEndIndex(endIndex);
+        _txtbox.appendChildRecord(txiatom);
+
+    }
+
 }

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java?rev=700493&r1=700492&r2=700493&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TxInteractiveInfoAtom.java Tue Sep 30 08:11:26 2008
@@ -40,7 +40,7 @@
     /**
      * Constructs a brand new link related atom record.
      */
-    protected TxInteractiveInfoAtom() {
+    public TxInteractiveInfoAtom() {
         _header = new byte[8];
         _data = new byte[8];
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org