]> source.dussan.org Git - poi.git/commitdiff
Add getter/setter for ReadingOrder to XSSF, closes issue #73
authorDominik Stadler <centic@apache.org>
Wed, 18 Oct 2017 18:26:41 +0000 (18:26 +0000)
committerDominik Stadler <centic@apache.org>
Wed, 18 Oct 2017 18:26:41 +0000 (18:26 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1812558 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/usermodel/ReadingOrder.java [new file with mode: 0644]
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java

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 (file)
index 0000000..0544cb1
--- /dev/null
@@ -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];
+    }
+}
index c561499d7804c182525799544054af8cffb4e6e4..e990cb7736e2b983a2988d885db1f241ddfd5d42 100644 (file)
@@ -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.
index d10c031c8b231b89e10799fd308712c91e74d667..9fed1a8cf0b81a4deecec75fae16322a3285975d 100644 (file)
@@ -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
      *
index 39ff3715d7b7d23868b2082e3981e3e8991c4f08..0aaa2b6785eb7d88df97de765ccab7f45179a7a4 100644 (file)
@@ -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