From 863b004ced6770aa53e1c327e2a2a84586a4bf27 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Fri, 14 Mar 2008 18:05:55 +0000 Subject: [PATCH] Add accessors to horizontal and vertical alignment in HSSFTextbox git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@637189 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 3 +- src/documentation/content/xdocs/status.xml | 3 +- .../apache/poi/hssf/model/TextboxShape.java | 4 +- .../poi/hssf/usermodel/HSSFTextbox.java | 56 +++++++++++++++++++ .../poi/hssf/usermodel/TestHSSFTextbox.java | 52 +++++++++++++++++ 5 files changed, 114 insertions(+), 4 deletions(-) create mode 100755 src/testcases/org/apache/poi/hssf/usermodel/TestHSSFTextbox.java diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 8c1a63ceb..e6f5251d8 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,7 +36,8 @@ - 44593 - Improved handling of short DVRecords + Add accessors to horizontal and vertical alignment in HSSFTextbox + 44593 - Improved handling of short DVRecords 28627 / 44580 - Fix Range.delete() in HWPF 44539 - Support for area references in formulas of rows >= 32768 44536 - Improved support for detecting read-only recommended files diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 9213e0184..36aee6a5d 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,7 +33,8 @@ - 44593 - Improved handling of short DVRecords + Add accessors to horizontal and vertical alignment in HSSFTextbox + 44593 - Improved handling of short DVRecords 28627 / 44580 - Fix Range.delete() in HWPF 44539 - Support for area references in formulas of rows >= 32768 44536 - Improved support for detecting read-only recommended files diff --git a/src/java/org/apache/poi/hssf/model/TextboxShape.java b/src/java/org/apache/poi/hssf/model/TextboxShape.java index 4b1027809..e55fcacbc 100644 --- a/src/java/org/apache/poi/hssf/model/TextboxShape.java +++ b/src/java/org/apache/poi/hssf/model/TextboxShape.java @@ -133,8 +133,8 @@ public class TextboxShape HSSFTextbox shape = hssfShape; TextObjectRecord obj = new TextObjectRecord(); - obj.setHorizontalTextAlignment( TextObjectRecord.HORIZONTAL_TEXT_ALIGNMENT_LEFT_ALIGNED ); - obj.setVerticalTextAlignment( TextObjectRecord.VERTICAL_TEXT_ALIGNMENT_TOP ); + obj.setHorizontalTextAlignment( hssfShape.getHorizontalAlignment() ); + obj.setVerticalTextAlignment( hssfShape.getVerticalAlignment()); obj.setTextLocked( true ); obj.setTextOrientation( TextObjectRecord.TEXT_ORIENTATION_NONE ); int frLength = ( shape.getString().numFormattingRuns() + 1 ) * 8; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java b/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java index 51c4c25b5..f994f3646 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java @@ -17,6 +17,9 @@ package org.apache.poi.hssf.usermodel; +import org.apache.poi.util.BitField; +import org.apache.poi.util.BitFieldFactory; + /** * A textbox is a shape that may hold a rich text string. * @@ -27,7 +30,25 @@ public class HSSFTextbox { public final static short OBJECT_TYPE_TEXT = 6; + /** + * How to align text horizontally + */ + public final static short HORIZONTAL_ALIGNMENT_LEFT = 1; + public final static short HORIZONTAL_ALIGNMENT_CENTERED = 2; + public final static short HORIZONTAL_ALIGNMENT_RIGHT = 3; + public final static short HORIZONTAL_ALIGNMENT_JUSTIFIED = 4; + + /** + * How to align text vertically + */ + public final static short VERTICAL_ALIGNMENT_TOP = 1; + public final static short VERTICAL_ALIGNMENT_CENTER = 2; + public final static short VERTICAL_ALIGNMENT_BOTTOM = 3; + public final static short VERTICAL_ALIGNMENT_JUSTIFY = 4; + + int marginLeft, marginRight, marginTop, marginBottom; + short halign, valign; HSSFRichTextString string = new HSSFRichTextString(""); @@ -40,6 +61,9 @@ public class HSSFTextbox { super( parent, anchor ); setShapeType(OBJECT_TYPE_TEXT); + + halign = HORIZONTAL_ALIGNMENT_LEFT; + valign = VERTICAL_ALIGNMENT_TOP; } /** @@ -121,4 +145,36 @@ public class HSSFTextbox { this.marginBottom = marginBottom; } + + /** + * Gets the horizontal alignment. + */ + public short getHorizontalAlignment() + { + return halign; + } + + /** + * Sets the horizontal alignment. + */ + public void setHorizontalAlignment( short align ) + { + this.halign = align; + } + + /** + * Gets the vertical alignment. + */ + public short getVerticalAlignment() + { + return valign; + } + + /** + * Sets the vertical alignment. + */ + public void setVerticalAlignment( short align ) + { + this.valign = align; + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFTextbox.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFTextbox.java new file mode 100755 index 000000000..f7ce61faf --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFTextbox.java @@ -0,0 +1,52 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.apache.poi.hssf.usermodel; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +import junit.framework.TestCase; + +/** + * Test HSSFTextbox. + * + * @author Yegor Kozlov (yegor at apache.org) + */ +public final class TestHSSFTextbox extends TestCase{ + + /** + * Test that accessors to horizontal and vertical alignment work properly + */ + public void testAlignment() { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sh1 = wb.createSheet(); + HSSFPatriarch patriarch = sh1.createDrawingPatriarch(); + + HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor(0, 0, 0, 0, (short) 1, 1, (short) 6, 4)); + HSSFRichTextString str = new HSSFRichTextString("Hello, World"); + textbox.setString(str); + textbox.setHorizontalAlignment(HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED); + textbox.setVerticalAlignment(HSSFTextbox.VERTICAL_ALIGNMENT_CENTER); + + assertEquals(HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED, textbox.getHorizontalAlignment()); + assertEquals(HSSFTextbox.VERTICAL_ALIGNMENT_CENTER, textbox.getVerticalAlignment()); + } + + }