Author: yegor
Date: Wed Oct 24 12:11:31 2012
New Revision: 1401642
URL: http://svn.apache.org/viewvc?rev=1401642&view=rev
Log:
support links to slides in HSLF
Modified:
poi/trunk/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlink.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
Modified:
poi/trunk/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java?rev=1401642&r1=1401641&r2=1401642&view=diff
==============================================================================
---
poi/trunk/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
(original)
+++
poi/trunk/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
Wed Oct 24 12:11:31 2012
@@ -33,22 +33,39 @@ public final class CreateHyperlink {
public static void main(String[] args) throws Exception {
SlideShow ppt = new SlideShow();
- Slide slide = ppt.createSlide();
+ Slide slideA = ppt.createSlide();
+ Slide slideB = ppt.createSlide();
+ Slide slideC = ppt.createSlide();
+
+ // link to a URL
+ TextBox textBox1 = new TextBox();
+ textBox1.setText("Apache POI");
+ textBox1.setAnchor(new Rectangle(100, 100, 200, 50));
- TextBox shape = new TextBox();
- shape.setText("Apache POI");
- Rectangle anchor = new Rectangle(100, 100, 200, 50);
- shape.setAnchor(anchor);
-
- String text = shape.getText();
+ String text = textBox1.getText();
Hyperlink link = new Hyperlink();
link.setAddress("http://www.apache.org");
- link.setTitle(shape.getText());
+ link.setTitle(textBox1.getText());
int linkId = ppt.addHyperlink(link);
- shape.setHyperlink(linkId, 0, text.length());
+ // apply link to the text
+ textBox1.setHyperlink(linkId, 0, text.length());
+
+ slideA.addShape(textBox1);
+
+ // link to another slide
+ TextBox textBox2 = new TextBox();
+ textBox2.setText("Go to slide #3");
+ textBox2.setAnchor(new Rectangle(100, 300, 200, 50));
+
+ Hyperlink link2 = new Hyperlink();
+ link2.setAddress(slideC);
+ ppt.addHyperlink(link2);
+
+ // apply link to the whole shape
+ textBox2.setHyperlink(link2);
- slide.addShape(shape);
+ slideA.addShape(textBox2);
FileOutputStream out = new FileOutputStream("hyperlink.ppt");
ppt.write(out);
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java?rev=1401642&r1=1401641&r2=1401642&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java Wed
Oct 24 12:11:31 2012
@@ -37,6 +37,7 @@ public final class Hyperlink {
public static final byte LINK_PREVIOUSSLIDE =
InteractiveInfoAtom.LINK_PreviousSlide;
public static final byte LINK_FIRSTSLIDE =
InteractiveInfoAtom.LINK_FirstSlide;
public static final byte LINK_LASTSLIDE =
InteractiveInfoAtom.LINK_LastSlide;
+ public static final byte LINK_SLIDENUMBER =
InteractiveInfoAtom.LINK_SlideNumber;
public static final byte LINK_URL = InteractiveInfoAtom.LINK_Url;
public static final byte LINK_NULL = InteractiveInfoAtom.LINK_NULL;
@@ -76,6 +77,8 @@ public final class Hyperlink {
title = "LAST";
address = "1,-1,LAST";
break;
+ case LINK_SLIDENUMBER:
+ break;
default:
title = "";
address = "";
@@ -92,6 +95,13 @@ public final class Hyperlink {
return address;
}
+ public void setAddress(Slide slide) {
+ String href = slide._getSheetNumber() +
","+slide.getSlideNumber()+",Slide " + slide.getSlideNumber();
+ setAddress(href);;
+ setTitle("Slide " + slide.getSlideNumber());
+ setType(Hyperlink.LINK_SLIDENUMBER);
+ }
+
public void setAddress(String str) {
address = str;
}
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java?rev=1401642&r1=1401641&r2=1401642&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java Wed
Oct 24 12:11:31 2012
@@ -401,7 +401,12 @@ public abstract class SimpleShape extend
infoAtom.setJump(InteractiveInfoAtom.JUMP_NONE);
infoAtom.setHyperlinkType(InteractiveInfoAtom.LINK_Url);
break;
- }
+ case Hyperlink.LINK_SLIDENUMBER:
+ infoAtom.setAction(InteractiveInfoAtom.ACTION_HYPERLINK);
+ infoAtom.setJump(InteractiveInfoAtom.JUMP_NONE);
+
infoAtom.setHyperlinkType(InteractiveInfoAtom.LINK_SlideNumber);
+ break;
+ }
infoAtom.setHyperlinkID(link.getId());
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlink.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlink.java?rev=1401642&r1=1401641&r2=1401642&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlink.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlink.java
Wed Oct 24 12:11:31 2012
@@ -67,6 +67,13 @@ public class ExHyperlink extends RecordC
linkDetailsB.setText(url);
}
}
+ public void setLinkURL(String url, int options) {
+ if(linkDetailsB != null) {
+ linkDetailsB.setText(url);
+ linkDetailsB.setOptions(options);
+ }
+ }
+
public void setLinkTitle(String title) {
if(linkDetailsA != null) {
linkDetailsA.setText(title);
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java?rev=1401642&r1=1401641&r2=1401642&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
Wed Oct 24 12:11:31 2012
@@ -1062,7 +1062,11 @@ public final class SlideShow {
ExHyperlink ctrl = new ExHyperlink();
ExHyperlinkAtom obj = ctrl.getExHyperlinkAtom();
obj.setNumber(objectId);
- ctrl.setLinkURL(link.getAddress());
+ if(link.getType() == Hyperlink.LINK_SLIDENUMBER) {
+ ctrl.setLinkURL(link.getAddress(), 0x30);
+ } else {
+ ctrl.setLinkURL(link.getAddress());
+ }
ctrl.setLinkTitle(link.getTitle());
lst.addChildAfter(ctrl, objAtom);
link.setId(objectId);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]