git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1292295 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_8_FINAL
<changes> | <changes> | ||||
<release version="3.8-beta6" date="2012-??-??"> | <release version="3.8-beta6" date="2012-??-??"> | ||||
<action dev="poi-developers" type="fix">52716 - tolerate hyperlinks that have neither location nor relation </action> | |||||
<action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action> | <action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action> | ||||
<action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action> | <action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action> | ||||
<action dev="poi-developers" type="fix">51731 - fixed painting shape outlines in HSLF</action> | <action dev="poi-developers" type="fix">51731 - fixed painting shape outlines in HSLF</action> |
// the relation to see how | // the relation to see how | ||||
if (_externalRel == null) { | if (_externalRel == null) { | ||||
if (ctHyperlink.getId() != null) { | if (ctHyperlink.getId() != null) { | ||||
throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() + " references relation " + ctHyperlink.getId() + ", but that didn't exist!"); | |||||
throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() + | |||||
" references relation " + ctHyperlink.getId() + ", but that didn't exist!"); | |||||
} | |||||
// hyperlink is internal and is not related to other parts | |||||
_type = Hyperlink.LINK_DOCUMENT; | |||||
} else { | |||||
URI target = _externalRel.getTargetURI(); | |||||
_location = target.toString(); | |||||
// Try to figure out the type | |||||
if (_location.startsWith("http://") || _location.startsWith("https://") | |||||
|| _location.startsWith("ftp://")) { | |||||
_type = Hyperlink.LINK_URL; | |||||
} else if (_location.startsWith("mailto:")) { | |||||
_type = Hyperlink.LINK_EMAIL; | |||||
} else { | |||||
_type = Hyperlink.LINK_FILE; | |||||
} | } | ||||
throw new IllegalStateException("A sheet hyperlink must either have a location, or a relationship. Found:\n" + ctHyperlink); | |||||
} | } | ||||
URI target = _externalRel.getTargetURI(); | |||||
_location = target.toString(); | |||||
// Try to figure out the type | |||||
if (_location.startsWith("http://") || _location.startsWith("https://") | |||||
|| _location.startsWith("ftp://")) { | |||||
_type = Hyperlink.LINK_URL; | |||||
} else if (_location.startsWith("mailto:")) { | |||||
_type = Hyperlink.LINK_EMAIL; | |||||
} else { | |||||
_type = Hyperlink.LINK_FILE; | |||||
} | |||||
} | } | ||||
} | } | ||||
public void setLastRow(int row) { | public void setLastRow(int row) { | ||||
setFirstRow(row); | setFirstRow(row); | ||||
} | } | ||||
/** | |||||
* @return additional text to help the user understand more about the hyperlink | |||||
*/ | |||||
public String getTooltip() { | |||||
return _ctHyperlink.getTooltip(); | |||||
} | |||||
/** | |||||
* @param text additional text to help the user understand more about the hyperlink | |||||
*/ | |||||
public void setTooltip(String text) { | |||||
_ctHyperlink.setTooltip(text); | |||||
} | |||||
} | } |
assertEquals("mailto:dev@poi.apache.org?subject=XSSF%20Hyperlinks", | assertEquals("mailto:dev@poi.apache.org?subject=XSSF%20Hyperlinks", | ||||
sheet.getRow(16).getCell(2).getHyperlink().getAddress()); | sheet.getRow(16).getCell(2).getHyperlink().getAddress()); | ||||
} | } | ||||
public void test52716() { | |||||
XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("52716.xlsx"); | |||||
XSSFSheet sh1 = wb1.getSheetAt(0); | |||||
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1); | |||||
XSSFSheet sh2 = wb2.getSheetAt(0); | |||||
assertEquals(sh1.getNumberOfComments(), sh2.getNumberOfComments()); | |||||
XSSFHyperlink l1 = sh1.getHyperlink(0, 1); | |||||
assertEquals(XSSFHyperlink.LINK_DOCUMENT, l1.getType()); | |||||
assertEquals("B1", l1.getCellRef()); | |||||
assertEquals("Sort on Titel", l1.getTooltip()); | |||||
XSSFHyperlink l2 = sh2.getHyperlink(0, 1); | |||||
assertEquals(l1.getTooltip(), l2.getTooltip()); | |||||
assertEquals(XSSFHyperlink.LINK_DOCUMENT, l2.getType()); | |||||
assertEquals("B1", l2.getCellRef()); | |||||
} | |||||
} | } |