]> source.dussan.org Git - poi.git/commitdiff
try to make CommentsTable more extensible
authorPJ Fanning <fanningpj@apache.org>
Thu, 18 Nov 2021 11:38:56 +0000 (11:38 +0000)
committerPJ Fanning <fanningpj@apache.org>
Thu, 18 Nov 2021 11:38:56 +0000 (11:38 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895146 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/main/java/org/apache/poi/xssf/model/Comments.java
poi-ooxml/src/main/java/org/apache/poi/xssf/model/CommentsTable.java
poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFComment.java

index 1341de656105f8062977d390e41a5b65058a6129..d40be0f5db013724d2bf5ae685a8aaa8f2b165cf 100644 (file)
@@ -17,7 +17,9 @@
 package org.apache.poi.xssf.model;
 
 import org.apache.poi.ss.util.CellAddress;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFComment;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
 
 import java.util.Iterator;
 
@@ -58,4 +60,28 @@ public interface Comments {
      * @since 4.0.0
      */
     Iterator<CellAddress> getCellAddresses();
+
+    /**
+     * @return iterator of comments (without their VML Shapes set)
+     * @since POI 5.2.0
+     */
+    Iterator<XSSFComment> commentIterator();
+
+    /**
+     * Create a new comment and add to the CommentTable.
+     * @param sheet sheet to add comment to
+     * @param clientAnchor the anchor for this comment
+     * @return new XSSFComment
+     * @since POI 5.2.0
+     */
+    XSSFComment createNewComment(XSSFSheet sheet, XSSFClientAnchor clientAnchor);
+
+    /**
+     * Called after the reference is updated, so that
+     *  we can reflect that in our cache
+     * @param oldReference the comment to remove from the commentRefs map
+     * @param comment the comment to replace in the commentRefs map
+     * @since POI 5.2.0
+     */
+    void referenceUpdated(CellAddress oldReference, XSSFComment comment);
 }
index 876028a579720b1fc799ef00dfa8580b28371739..a47557013a65cf42e738592770f772277860687c 100644 (file)
@@ -100,6 +100,7 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
      * @return iterator of comments (without their VML Shapes set)
      * @since POI 5.2.0
      */
+    @Override
     public Iterator<XSSFComment> commentIterator() {
         final CommentsTable table = this;
         return new Iterator<XSSFComment>() {
@@ -142,6 +143,7 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
      * @param comment the comment to replace in the commentRefs map
      * @since POI 5.2.0
      */
+    @Override
     public void referenceUpdated(CellAddress oldReference, XSSFComment comment) {
         if(commentRefs != null) {
             commentRefs.remove(oldReference);
@@ -239,6 +241,7 @@ public class CommentsTable extends POIXMLDocumentPart implements Comments {
      * @return new XSSFComment
      * @since POI 5.2.0
      */
+    @Override
     public XSSFComment createNewComment(XSSFSheet sheet, XSSFClientAnchor clientAnchor) {
         XSSFVMLDrawing vml = sheet.getVMLDrawing(true);
         com.microsoft.schemas.vml.CTShape vmlShape = vml.newCommentShape();
index 96920c2345752a7ff8ab7e52ee673c277dd6ed27..93ae75fa6919f978c802e88701653f8ac7e26e22 100644 (file)
@@ -25,6 +25,7 @@ import org.apache.poi.ss.usermodel.Comment;
 import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.util.CellAddress;
 import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.xssf.model.Comments;
 import org.apache.poi.xssf.model.CommentsTable;
 import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalseBlank;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment;
@@ -36,7 +37,7 @@ import com.microsoft.schemas.vml.CTShape;
 public class XSSFComment implements Comment {
     
     private final CTComment _comment;
-    private final CommentsTable _comments;
+    private final Comments _comments;
     private final CTShape _vmlShape;
 
     /**
@@ -49,6 +50,15 @@ public class XSSFComment implements Comment {
      *  low level comment object.
      */
     public XSSFComment(CommentsTable comments, CTComment comment, CTShape vmlShape) {
+        this((Comments)comments, comment, vmlShape);
+    }
+
+    /**
+     * Creates a new XSSFComment, associated with a given
+     *  low level comment object.
+     * @since POI 5.2.0
+     */
+    public XSSFComment(Comments comments, CTComment comment, CTShape vmlShape) {
         _comment = comment;
         _comments = comments;
         _vmlShape = vmlShape;
@@ -60,7 +70,7 @@ public class XSSFComment implements Comment {
             CTClientData clientData = vmlShape.getClientDataArray(0);
             clientData.setRowArray(0, new BigInteger(String.valueOf(ref.getRow())));
             clientData.setColumnArray(0, new BigInteger(String.valueOf(ref.getCol())));
-            
+
             avoidXmlbeansCorruptPointer(vmlShape);
         }
     }