From 63ff9839aecfd3254e8fdc308d5f01a083c4e818 Mon Sep 17 00:00:00 2001 From: Evgeniy Berlog Date: Thu, 19 Jul 2012 20:29:42 +0000 Subject: [PATCH] implemented removing of all shape types git-svn-id: https://svn.apache.org/repos/asf/poi/branches/gsoc2012@1363524 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/HSSFComment.java | 3 +- .../poi/hssf/usermodel/HSSFPatriarch.java | 11 +- .../poi/hssf/usermodel/HSSFPolygon.java | 1 + .../poi/hssf/usermodel/HSSFShapeGroup.java | 17 +++ .../poi/hssf/usermodel/HSSFSimpleShape.java | 4 + .../poi/hssf/usermodel/HSSFTextbox.java | 39 +++-- .../poi/hssf/model/TestDrawingShapes.java | 141 ++++++++++++++++++ 7 files changed, 194 insertions(+), 22 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java b/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java index 8bafa3b507..4922529e6d 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java @@ -210,8 +210,7 @@ public class HSSFComment extends HSSFTextbox implements Comment { } public void afterRemove(HSSFPatriarch patriarch){ - patriarch._getBoundAggregate().removeShapeToObjRecord(getEscherContainer().getChildById(EscherClientDataRecord.RECORD_ID)); - patriarch._getBoundAggregate().removeShapeToObjRecord(getEscherContainer().getChildById(EscherTextboxRecord.RECORD_ID)); + super.afterRemove(patriarch); patriarch._getBoundAggregate().removeTailRecord(getNoteRecord()); } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java index 96d12adaa7..8f40651205 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java @@ -88,10 +88,13 @@ public final class HSSFPatriarch implements HSSFShapeContainer, Drawing { * * @param shape to be removed */ - public void removeShape(HSSFShape shape) { - _mainSpgrContainer.removeChildRecord(shape.getEscherContainer()); - shape.afterRemove(this); - _shapes.remove(shape); + public boolean removeShape(HSSFShape shape) { + boolean isRemoved = _mainSpgrContainer.removeChildRecord(shape.getEscherContainer()); + if (isRemoved){ + shape.afterRemove(this); + _shapes.remove(shape); + } + return isRemoved; } void afterCreate() { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java index e145b9fe50..0d15030c96 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java @@ -114,6 +114,7 @@ public class HSSFPolygon extends HSSFSimpleShape { @Override protected void afterRemove(HSSFPatriarch patriarch) { + patriarch._getBoundAggregate().removeShapeToObjRecord(getEscherContainer().getChildById(EscherClientDataRecord.RECORD_ID)); } public int[] getXPoints() { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java b/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java index 548b45b75d..7cf6803fd0 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java @@ -124,6 +124,14 @@ public class HSSFShapeGroup extends HSSFShape implements HSSFShapeContainer { @Override protected void afterRemove(HSSFPatriarch patriarch) { + patriarch._getBoundAggregate().removeShapeToObjRecord(getEscherContainer().getChildContainers().get(0) + .getChildById(EscherClientDataRecord.RECORD_ID)); + for ( int i=0; i