summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDominik Stadler <centic@apache.org>2017-10-18 18:26:41 +0000
committerDominik Stadler <centic@apache.org>2017-10-18 18:26:41 +0000
commit63bf8e8ba53335df9f003d669dc733ab1272fee6 (patch)
treee2ba656186eb5b1a27405ef4ff483d28df4ac4d2 /src
parent112a7c14804254995f25d9bea4c57f2286b8ae66 (diff)
downloadpoi-63bf8e8ba53335df9f003d669dc733ab1272fee6.tar.gz
poi-63bf8e8ba53335df9f003d669dc733ab1272fee6.zip
Add getter/setter for ReadingOrder to XSSF, closes issue #73
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1812558 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/poi/ss/usermodel/ReadingOrder.java50
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java19
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java26
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java18
4 files changed, 112 insertions, 1 deletions
diff --git a/src/java/org/apache/poi/ss/usermodel/ReadingOrder.java b/src/java/org/apache/poi/ss/usermodel/ReadingOrder.java
new file mode 100644
index 0000000000..0544cb1542
--- /dev/null
+++ b/src/java/org/apache/poi/ss/usermodel/ReadingOrder.java
@@ -0,0 +1,50 @@
+/* ====================================================================
+ 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.ss.usermodel;
+
+/**
+ * The enumeration value indicating reading order of a cell,
+ * i.e., whether the reading order is Context(Default), Left To Right or Right To Left
+ */
+public enum ReadingOrder {
+ /**
+ * The reading order is Context(Default).
+ */
+ CONTEXT,
+
+ /**
+ * The reading order is Left To Right.
+ */
+ LEFT_TO_RIGHT,
+
+ /**
+ * The reading order is Right To Left.
+ */
+ RIGHT_TO_LEFT;
+
+ public short getCode() {
+ return (short) ordinal();
+ }
+
+ public static ReadingOrder forLong(long code) {
+ if (code < 0 || code >= values().length) {
+ throw new IllegalArgumentException("Invalid ReadingOrder code: " + code);
+ }
+ return values()[(int)code];
+ }
+}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
index c561499d78..e990cb7736 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
@@ -26,6 +26,7 @@ import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.ReadingOrder;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.util.Internal;
import org.apache.poi.xssf.model.StylesTable;
@@ -1003,6 +1004,24 @@ public class XSSFCellStyle implements CellStyle {
}
return ct;
}
+
+ /**
+ * Set reading order for the cell
+ *
+ * @param order - the reading order
+ */
+ public void setReadingOrder(ReadingOrder order) {
+ getCellAlignment().setReadingOrder(order);
+ }
+
+ /**
+ * Get reading order of the cell
+ *
+ * @return ReadingOrder - the reading order
+ */
+ public ReadingOrder getReadingOrder() {
+ return getCellAlignment().getReadingOrder();
+ }
/**
* Get a <b>copy</b> of the currently used CTBorder, if none is used, return a new instance.
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
index d10c031c8b..9fed1a8cf0 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
@@ -17,6 +17,7 @@
package org.apache.poi.xssf.usermodel.extensions;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.ReadingOrder;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
@@ -84,7 +85,30 @@ public class XSSFCellAlignment {
public void setHorizontal(HorizontalAlignment align) {
cellAlignement.setHorizontal(STHorizontalAlignment.Enum.forInt(align.ordinal() + 1));
}
-
+
+ /**
+ * Set the type of reading order for the cell
+ *
+ * @param order - the type of reading order
+ * @see ReadingOrder
+ */
+ public void setReadingOrder(ReadingOrder order) {
+ cellAlignement.setReadingOrder(order.getCode());
+ }
+
+ /**
+ * Get the reading order for the cell
+ *
+ * @return the value of reading order
+ * @see ReadingOrder
+ */
+ public ReadingOrder getReadingOrder() {
+ if(cellAlignement != null && cellAlignement.isSetReadingOrder()) {
+ return ReadingOrder.forLong(cellAlignement.getReadingOrder());
+ }
+ return ReadingOrder.CONTEXT;
+ }
+
/**
* Get the number of spaces to indent the text in the cell
*
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
index 39ff3715d7..0aaa2b6785 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java
@@ -698,6 +698,24 @@ public class TestXSSFCellStyle {
assertEquals(HorizontalAlignment.CENTER, cellStyle.getAlignmentEnum());
assertEquals(STHorizontalAlignment.CENTER, cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal());
}
+
+ @Test
+ public void testGetSetReadingOrder() {
+ assertEquals(ReadingOrder.CONTEXT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.CONTEXT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.LEFT_TO_RIGHT);
+ assertEquals(ReadingOrder.LEFT_TO_RIGHT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.LEFT_TO_RIGHT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.RIGHT_TO_LEFT);
+ assertEquals(ReadingOrder.RIGHT_TO_LEFT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.RIGHT_TO_LEFT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.CONTEXT);
+ assertEquals(ReadingOrder.CONTEXT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.CONTEXT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+ }
@SuppressWarnings("deprecation")
@Test