support links to slides in HSLF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1401642 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
04b9f9dff9
commit
a88447b0e4
@ -33,22 +33,39 @@ public final class CreateHyperlink {
|
|||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
SlideShow ppt = new SlideShow();
|
SlideShow ppt = new SlideShow();
|
||||||
|
|
||||||
Slide slide = ppt.createSlide();
|
Slide slideA = ppt.createSlide();
|
||||||
|
Slide slideB = ppt.createSlide();
|
||||||
|
Slide slideC = ppt.createSlide();
|
||||||
|
|
||||||
TextBox shape = new TextBox();
|
// link to a URL
|
||||||
shape.setText("Apache POI");
|
TextBox textBox1 = new TextBox();
|
||||||
Rectangle anchor = new Rectangle(100, 100, 200, 50);
|
textBox1.setText("Apache POI");
|
||||||
shape.setAnchor(anchor);
|
textBox1.setAnchor(new Rectangle(100, 100, 200, 50));
|
||||||
|
|
||||||
String text = shape.getText();
|
String text = textBox1.getText();
|
||||||
Hyperlink link = new Hyperlink();
|
Hyperlink link = new Hyperlink();
|
||||||
link.setAddress("http://www.apache.org");
|
link.setAddress("http://www.apache.org");
|
||||||
link.setTitle(shape.getText());
|
link.setTitle(textBox1.getText());
|
||||||
int linkId = ppt.addHyperlink(link);
|
int linkId = ppt.addHyperlink(link);
|
||||||
|
|
||||||
shape.setHyperlink(linkId, 0, text.length());
|
// apply link to the text
|
||||||
|
textBox1.setHyperlink(linkId, 0, text.length());
|
||||||
|
|
||||||
slide.addShape(shape);
|
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);
|
||||||
|
|
||||||
|
slideA.addShape(textBox2);
|
||||||
|
|
||||||
FileOutputStream out = new FileOutputStream("hyperlink.ppt");
|
FileOutputStream out = new FileOutputStream("hyperlink.ppt");
|
||||||
ppt.write(out);
|
ppt.write(out);
|
||||||
|
@ -37,6 +37,7 @@ public final class Hyperlink {
|
|||||||
public static final byte LINK_PREVIOUSSLIDE = InteractiveInfoAtom.LINK_PreviousSlide;
|
public static final byte LINK_PREVIOUSSLIDE = InteractiveInfoAtom.LINK_PreviousSlide;
|
||||||
public static final byte LINK_FIRSTSLIDE = InteractiveInfoAtom.LINK_FirstSlide;
|
public static final byte LINK_FIRSTSLIDE = InteractiveInfoAtom.LINK_FirstSlide;
|
||||||
public static final byte LINK_LASTSLIDE = InteractiveInfoAtom.LINK_LastSlide;
|
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_URL = InteractiveInfoAtom.LINK_Url;
|
||||||
public static final byte LINK_NULL = InteractiveInfoAtom.LINK_NULL;
|
public static final byte LINK_NULL = InteractiveInfoAtom.LINK_NULL;
|
||||||
|
|
||||||
@ -76,6 +77,8 @@ public final class Hyperlink {
|
|||||||
title = "LAST";
|
title = "LAST";
|
||||||
address = "1,-1,LAST";
|
address = "1,-1,LAST";
|
||||||
break;
|
break;
|
||||||
|
case LINK_SLIDENUMBER:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
title = "";
|
title = "";
|
||||||
address = "";
|
address = "";
|
||||||
@ -92,6 +95,13 @@ public final class Hyperlink {
|
|||||||
return address;
|
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) {
|
public void setAddress(String str) {
|
||||||
address = str;
|
address = str;
|
||||||
}
|
}
|
||||||
|
@ -401,7 +401,12 @@ public abstract class SimpleShape extends Shape {
|
|||||||
infoAtom.setJump(InteractiveInfoAtom.JUMP_NONE);
|
infoAtom.setJump(InteractiveInfoAtom.JUMP_NONE);
|
||||||
infoAtom.setHyperlinkType(InteractiveInfoAtom.LINK_Url);
|
infoAtom.setHyperlinkType(InteractiveInfoAtom.LINK_Url);
|
||||||
break;
|
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());
|
infoAtom.setHyperlinkID(link.getId());
|
||||||
|
|
||||||
|
@ -67,6 +67,13 @@ public class ExHyperlink extends RecordContainer {
|
|||||||
linkDetailsB.setText(url);
|
linkDetailsB.setText(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void setLinkURL(String url, int options) {
|
||||||
|
if(linkDetailsB != null) {
|
||||||
|
linkDetailsB.setText(url);
|
||||||
|
linkDetailsB.setOptions(options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setLinkTitle(String title) {
|
public void setLinkTitle(String title) {
|
||||||
if(linkDetailsA != null) {
|
if(linkDetailsA != null) {
|
||||||
linkDetailsA.setText(title);
|
linkDetailsA.setText(title);
|
||||||
|
@ -1062,7 +1062,11 @@ public final class SlideShow {
|
|||||||
ExHyperlink ctrl = new ExHyperlink();
|
ExHyperlink ctrl = new ExHyperlink();
|
||||||
ExHyperlinkAtom obj = ctrl.getExHyperlinkAtom();
|
ExHyperlinkAtom obj = ctrl.getExHyperlinkAtom();
|
||||||
obj.setNumber(objectId);
|
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());
|
ctrl.setLinkTitle(link.getTitle());
|
||||||
lst.addChildAfter(ctrl, objAtom);
|
lst.addChildAfter(ctrl, objAtom);
|
||||||
link.setId(objectId);
|
link.setId(objectId);
|
||||||
|
Loading…
Reference in New Issue
Block a user